Revision: 201025
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 14:17:22 +0300
changeset 12 993ab30e92fc
parent 11 773be20e0a25
child 14 4a4ca69db308
child 17 7d8c8d8f5eab
Revision: 201025 Kit: 2010127
browserplugin/cpixnpplugin/group/cpixnpplugin.mmp
harvesterplugins/bookmarks/src/bookmarksplugin.cpp
harvesterplugins/contacts/inc/ccontactsplugin.h
harvesterplugins/contacts/src/ccontactsplugin.cpp
harvesterplugins/group/bld.inf
harvesterplugins/media/mediautils/src/cpixdocfetcher.cpp
harvesterplugins/media/video/src/cpixmediavideodoc.cpp
harvesterplugins/messaging/email/qtemailfetcher/bwins/qtemailfetcheru.def
harvesterplugins/messaging/email/qtemailfetcher/eabi/qtemailfetcheru.def
harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.cpp
harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.h
harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.pro
harvesterplugins/messaging/group/bld.inf
harvesterplugins/messaging/smsmms/inc/cmessagedatahandler.h
harvesterplugins/messaging/smsmms/inc/cmessageharvester.h
harvesterplugins/messaging/smsmms/inc/cmessagemonitor.h
harvesterplugins/messaging/smsmms/inc/cmessageplugin.h
harvesterplugins/messaging/smsmms/src/cmessagedatahandler.cpp
harvesterplugins/messaging/smsmms/src/cmessageplugin.cpp
harvesterplugins/messaging/smsmms/traces/cmessagedatahandlerTraces.h
harvesterplugins/messaging/smsmms/traces/cmessagemonitorTraces.h
harvesterplugins/messaging/smsmms/traces/cmessagepluginTraces.h
harvesterplugins/messaging/smsmms/traces/fixed_id.definitions
harvesterplugins/tsrc/harvesterplugintester/conf/harvesterplugintester.cfg
harvesterplugins/tsrc/harvesterplugintester/group/harvesterplugintester.mmp
harvesterplugins/tsrc/harvesterplugintester/inc/harvesterplugintester.h
harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe.mmp
harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe_nrm.mmp
harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp
layers.sysdef.xml
onlinesearchproviders/bwins/isengineu.def
onlinesearchproviders/bwins/isproviderdbmanageru.def
onlinesearchproviders/common/inc/serviceprovider.h
onlinesearchproviders/common/resources/baidu_logo.svg
onlinesearchproviders/common/resources/bing_logo.svg
onlinesearchproviders/common/resources/google_logo.svg
onlinesearchproviders/common/resources/issearch_icons.qrc
onlinesearchproviders/common/resources/yandex_logo.svg
onlinesearchproviders/eabi/isengineu.def
onlinesearchproviders/eabi/isproviderdbmanageru.def
onlinesearchproviders/isengine/inc/isengine.h
onlinesearchproviders/isengine/isengine.pro
onlinesearchproviders/isengine/src/isengine.cpp
onlinesearchproviders/isproviderdbmanager/inc/isproviderdbconstants.h
onlinesearchproviders/isproviderdbmanager/inc/isproviderdbmanager.h
onlinesearchproviders/isproviderdbmanager/isproviderdbmanager.pro
onlinesearchproviders/isproviderdbmanager/src/isproviderdbmanager.cpp
onlinesearchproviders/onlinesearchproviders.pro
onlinesearchproviders/rom/issearch.iby
rom/cpix_app.iby
search.pro
search_plat/onlinesearchplugin_api/inc/onlinesearchplugin.h
search_plat/onlinesearchplugin_api/inc/onlinesearchpluginfactory.h
search_plat/onlinesearchplugin_api/onlinesearchplugin_api.metaxml
search_plat/onlinesearchplugin_api/onlinesearchplugin_api.pri
search_plat/onlinesearchproviders_api/inc/isengine.h
search_plat/onlinesearchproviders_api/inc/isproviderdbmanager.h
search_plat/onlinesearchproviders_api/inc/serviceprovider.h
search_plat/onlinesearchproviders_api/onlinesearchproviders_api.metaxml
search_plat/onlinesearchproviders_api/onlinesearchproviders_api.pri
search_plat/search_plat.pro
searchui/Searchapplication/inc/Search.h
searchui/Searchapplication/src/Search.cpp
searchui/Searchapplication/src/main.cpp
searchui/bwins/searchonlinehandleru.def
searchui/eabi/searchonlinehandleru.def
searchui/indevicehandler/tsrc/t_src.pro
searchui/indevicehandler/tsrc/tsrc.pro
searchui/onlinehandler/inc/onlinehandler.h
searchui/onlinehandler/inc/searchbasepath.h
searchui/onlinehandler/inc/searchutility.h
searchui/onlinehandler/onlinehandler.pri
searchui/onlinehandler/onlinehandler.pro
searchui/onlinehandler/src/onlinehandler.cpp
searchui/onlinehandler/src/searchutility.cpp
searchui/onlinehandler/tsrc/t_baiduplugin/resource/t_baiduplugin.manifest
searchui/onlinehandler/tsrc/t_baiduplugin/src/t_baiduplugin.cpp
searchui/onlinehandler/tsrc/t_baiduplugin/src/t_baidupluginfactory.cpp
searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin.pri
searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin.pro
searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin_installs_symbian.pri
searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin_installs_unix.pri
searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin_installs_win32.pri
searchui/onlinehandler/tsrc/t_bingplugin/inc/onlinesearchplugin.h
searchui/onlinehandler/tsrc/t_bingplugin/inc/t_bingplugin.h
searchui/onlinehandler/tsrc/t_bingplugin/inc/t_bingpluginfactory.h
searchui/onlinehandler/tsrc/t_bingplugin/resource/t_bingplugin.manifest
searchui/onlinehandler/tsrc/t_bingplugin/src/t_bingplugin.cpp
searchui/onlinehandler/tsrc/t_bingplugin/src/t_bingpluginfactory.cpp
searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin.pri
searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin.pro
searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin_installs_symbian.pri
searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin_installs_unix.pri
searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin_installs_win32.pri
searchui/onlinehandler/tsrc/t_googleplugin/inc/onlinesearchplugin.h
searchui/onlinehandler/tsrc/t_googleplugin/inc/t_googleplugin.h
searchui/onlinehandler/tsrc/t_googleplugin/inc/t_googlepluginfactory.h
searchui/onlinehandler/tsrc/t_googleplugin/resource/t_googleplugin.manifest
searchui/onlinehandler/tsrc/t_googleplugin/src/t_googleplugin.cpp
searchui/onlinehandler/tsrc/t_googleplugin/src/t_googlepluginfactory.cpp
searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin.pri
searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin.pro
searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin_installs_symbian.pri
searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin_installs_unix.pri
searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin_installs_win32.pri
searchui/onlinehandler/tsrc/t_onlinehandler/inc/t_onlinehandler.h
searchui/onlinehandler/tsrc/t_onlinehandler/src/t_onlinehandler.cpp
searchui/onlinehandler/tsrc/t_onlinehandler/t_onlinehandler.pri
searchui/onlinehandler/tsrc/t_onlinehandler/t_onlinehandler.pro
searchui/onlinehandler/tsrc/testdb/providerdatabase.sq
searchui/onlinehandler/tsrc/tsrc.pro
searchui/rom/search.iby
searchui/runtimeproviders/searchruntimeprovider/src/searchruntime.cpp
searchui/searchapplication/inc/searchapplication.h
searchui/searchapplication/src/searchapplication.cpp
searchui/searchui.pro
searchui/stateproviders/searchstateprovider/inc/searchonlinestate.h
searchui/stateproviders/searchstateprovider/inc/searchprogressivestate.h
searchui/stateproviders/searchstateprovider/inc/searchsettingsstate.h
searchui/stateproviders/searchstateprovider/inc/settingswidget.h
searchui/stateproviders/searchstateprovider/resources/searchstateprovider.docml
searchui/stateproviders/searchstateprovider/searchstateprovider.pro
searchui/stateproviders/searchstateprovider/src/searchonlinestate.cpp
searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp
searchui/stateproviders/searchstateprovider/src/searchsettingsstate.cpp
searchui/stateproviders/searchstateprovider/src/searchstateprovider.cpp
searchui/stateproviders/searchstateprovider/src/settingswidget.cpp
searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/inc/t_searchstateprovider.h
searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchprogressivestate.cpp
searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchstateprovider.cpp
searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/t_searchstateprovider.pro
searchui/tsrc/indexdb/data/bluesky.jpg
searchui/tsrc/indexdb/data/jungle.jpg
searchui/tsrc/indexdb/data/mountain.jpg
searchui/tsrc/indexdb/data/rock.jpg
searchui/tsrc/indexdb/data/sea.jpg
searchui/tsrc/indexdb/data/snow.jpg
searchui/tsrc/indexdb/data/tree.jpg
searchui/tsrc/indexdb/data/water.jpg
searchui/tsrc/indexdb/indexdb.pro
searchui/tsrc/tsrc.pro
--- a/browserplugin/cpixnpplugin/group/cpixnpplugin.mmp	Wed Jun 23 18:13:49 2010 +0300
+++ b/browserplugin/cpixnpplugin/group/cpixnpplugin.mmp	Tue Jul 06 14:17:22 2010 +0300
@@ -38,8 +38,6 @@
 APP_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE   /epoc32/include/libc
 SYSTEMINCLUDE   /epoc32/include/ecom
-SYSTEMINCLUDE   /epoc32/include/CPixSearch
-//SYSTEMINCLUDE   /epoc32/include/domain/middleware
 
 USERINCLUDE ../inc
 USERINCLUDE ../inc/idl
--- a/harvesterplugins/bookmarks/src/bookmarksplugin.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/bookmarks/src/bookmarksplugin.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -69,7 +69,8 @@
 	{
 	if (iAsynchronizer)
         iAsynchronizer->CancelCallback();
-	iFavoritesNotifier->Cancel();
+	if ( iFavoritesNotifier )
+	    iFavoritesNotifier->Cancel();
 	delete iFavoritesNotifier;
 	delete iAsynchronizer;
 	delete iIndexer;
--- a/harvesterplugins/contacts/inc/ccontactsplugin.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/contacts/inc/ccontactsplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -142,6 +142,11 @@
 	// CPix database 
     CCPixIndexer* iIndexer;
 
+//for helping with testing.
+#ifdef HARVESTERPLUGINTESTER_FRIEND
+    friend class CHarvesterPluginTester;
+#endif
+    
 #ifdef __PERFORMANCE_DATA
     TTime iStartTime;
     TTime iCompleteTime;
--- a/harvesterplugins/contacts/src/ccontactsplugin.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/contacts/src/ccontactsplugin.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -78,16 +78,15 @@
 //
 CContactsPlugin::~CContactsPlugin()
 	{
-    if (iAsynchronizer)
-        iAsynchronizer->CancelCallback();
+    if( iAsynchronizer ) iAsynchronizer->CancelCallback(); 
 	delete iAsynchronizer;
 	iContacts = NULL;
 	delete iChangeNotifier;
 	delete iDatabase;
 	delete iIndexer;
-	
-	if (iExcerpt)
-		delete iExcerpt;
+	//delete NULL is safe - so no need to test nullity of iExceprt (which routinely
+	//keeps getting deleted in the plugin).
+	delete iExcerpt;
 	}
 	
 // -----------------------------------------------------------------------------
@@ -342,6 +341,8 @@
 //	    
 void CContactsPlugin::CreateContactIndexItemL(TInt aContentId, TCPixActionType aActionType )
     {
+    //indexer is created only when StartPlugin() is called. Don't create contact 
+    //if index is not ready. 
 	if (!iIndexer)
     	return;
     
@@ -483,8 +484,9 @@
 void CContactsPlugin::GetDateL(const TDesC& aTime, TDes& aDateString)
     {
     TTime time;
-    //sort the date string to the requried format dd/mm/yyyy from returned
-    //format yyyy/mm/dd as parse API is currently not supporting japanese date format
+    //aTime is of the form yyyy-mm-dd.
+    //aDateString is of the form dd Month(spelled out) Year.
+    //example: i/p: 2010-10-10; o/p: 10 October 2010.
     if( aTime.Length() >= KDateFieldLength)
         {
         aDateString.Copy(aTime.Mid( KDayPosition, KDayLength ));
@@ -499,6 +501,7 @@
             }
         }
     }
+
 // ---------------------------------------------------------------------------
 // CContactsPlugin::UpdatePerformaceDataL
 // ---------------------------------------------------------------------------
--- a/harvesterplugins/group/bld.inf	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/group/bld.inf	Tue Jul 06 14:17:22 2010 +0300
@@ -18,7 +18,7 @@
 #include "../messaging/group/bld.inf"
 #include "../file/group/bld.inf"
 #include "../calendar/group/bld.inf"
-#include "../bookmarks/group/bld.inf"
+//#include "../bookmarks/group/bld.inf"
 #include "../applications/group/bld.inf"
 #include "../notes/group/bld.inf"
 #include "../media/group/bld.inf"
--- a/harvesterplugins/media/mediautils/src/cpixdocfetcher.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/media/mediautils/src/cpixdocfetcher.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -38,7 +38,6 @@
 _LIT(KMediaIdField, "MediaId");
 _LIT(KExtensionField, "Extension");
 _LIT(KExcerptDelimiter, " ");
-_LIT(KFormatDateTime, "%04d %02d %02d %02d %02d");    // yyyy mm dd hh mm
 
 // -----------------------------------------------------------------------------
 // CCPIXDocFetcher::NewL()
--- a/harvesterplugins/media/video/src/cpixmediavideodoc.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/media/video/src/cpixmediavideodoc.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -97,9 +97,17 @@
     ResetExcerpt(); //Reset excerpt initially
     TInt slashpos = GetUri().LocateReverse('\\');
     TPtrC name = GetUri().Mid( (slashpos+1) );
-    AddToFieldExcerptL(name); //Add name to excerpt field
+
+    CMdEProperty* property(NULL);
+    //Add Name field to document excerpt, ONLY if title field is not empty.
+    CMdEPropertyDef& titlePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KTitleProperty );
+    if(aObject.Property( titlePropDef, property ) != KErrNotFound)
+        {
+        CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+        if( textProperty->Value().Compare(KNullDesC) > 0 )AddToFieldExcerptL(name); //Add name to excerpt field
+        }
+
     //URI and Excerpt is done add additional properties here 
-    CMdEProperty* property(NULL);
     CMdEPropertyDef& descriptionPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KDescriptionProperty );
     if(aObject.Property( descriptionPropDef, property ) != KErrNotFound)
        {
--- a/harvesterplugins/messaging/email/qtemailfetcher/bwins/qtemailfetcheru.def	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/email/qtemailfetcher/bwins/qtemailfetcheru.def	Tue Jul 06 14:17:22 2010 +0300
@@ -1,28 +1,26 @@
 EXPORTS
-	?handlemailboxEvent@QEmailFetcher@@QAEXW4NmApiMailboxEvent@EmailClientApi@@V?$QList@_K@@@Z @ 1 NONAME ; void QEmailFetcher::handlemailboxEvent(enum EmailClientApi::NmApiMailboxEvent, class QList<unsigned long long>)
-	?processMessages@QEmailFetcher@@QAEXH@Z @ 2 NONAME ; void QEmailFetcher::processMessages(int)
-	?tr@QEmailFetcher@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString QEmailFetcher::tr(char const *, char const *)
-	?StartHarvesting@QEmailFetcher@@QAEXXZ @ 4 NONAME ; void QEmailFetcher::StartHarvesting(void)
+	?processMessages@QEmailFetcher@@QAEXH@Z @ 1 NONAME ; void QEmailFetcher::processMessages(int)
+	?tr@QEmailFetcher@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString QEmailFetcher::tr(char const *, char const *)
+	?StartHarvesting@QEmailFetcher@@QAEXXZ @ 3 NONAME ; void QEmailFetcher::StartHarvesting(void)
+	?initialize@QEmailFetcher@@AAEXXZ @ 4 NONAME ; void QEmailFetcher::initialize(void)
 	?getStaticMetaObject@QEmailFetcher@@SAABUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const & QEmailFetcher::getStaticMetaObject(void)
 	??1QEmailFetcher@@UAE@XZ @ 6 NONAME ; QEmailFetcher::~QEmailFetcher(void)
-	?processNextMailbox@QEmailFetcher@@AAEXXZ @ 7 NONAME ; void QEmailFetcher::processNextMailbox(void)
-	?trUtf8@QEmailFetcher@@SA?AVQString@@PBD0H@Z @ 8 NONAME ; class QString QEmailFetcher::trUtf8(char const *, char const *, int)
-	??_EQEmailFetcher@@UAE@I@Z @ 9 NONAME ; QEmailFetcher::~QEmailFetcher(unsigned int)
-	?NotifyHarvestingComplete@QEmailFetcher@@AAEXXZ @ 10 NONAME ; void QEmailFetcher::NotifyHarvestingComplete(void)
-	?handleMessageEvent@QEmailFetcher@@QAEXW4NmApiMessageEvent@EmailClientApi@@_K1V?$QList@_K@@@Z @ 11 NONAME ; void QEmailFetcher::handleMessageEvent(enum EmailClientApi::NmApiMessageEvent, unsigned long long, unsigned long long, class QList<unsigned long long>)
-	?initialize@QEmailFetcher@@CAXPAV1@@Z @ 12 NONAME ; void QEmailFetcher::initialize(class QEmailFetcher *)
+	?getSearchDocumentL@QEmailFetcher@@AAEPAVCSearchDocument@@ABVNmApiMessageEnvelope@EmailClientApi@@_K1@Z @ 7 NONAME ; class CSearchDocument * QEmailFetcher::getSearchDocumentL(class EmailClientApi::NmApiMessageEnvelope const &, unsigned long long, unsigned long long)
+	?processNextMailbox@QEmailFetcher@@AAEXXZ @ 8 NONAME ; void QEmailFetcher::processNextMailbox(void)
+	?trUtf8@QEmailFetcher@@SA?AVQString@@PBD0H@Z @ 9 NONAME ; class QString QEmailFetcher::trUtf8(char const *, char const *, int)
+	??_EQEmailFetcher@@UAE@I@Z @ 10 NONAME ; QEmailFetcher::~QEmailFetcher(unsigned int)
+	?NotifyHarvestingComplete@QEmailFetcher@@AAEXXZ @ 11 NONAME ; void QEmailFetcher::NotifyHarvestingComplete(void)
+	?handleMessageEvent@QEmailFetcher@@QAEXW4NmApiMessageEvent@EmailClientApi@@_K1V?$QList@_K@@@Z @ 12 NONAME ; void QEmailFetcher::handleMessageEvent(enum EmailClientApi::NmApiMessageEvent, unsigned long long, unsigned long long, class QList<unsigned long long>)
 	?trUtf8@QEmailFetcher@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString QEmailFetcher::trUtf8(char const *, char const *)
 	?qt_metacall@QEmailFetcher@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 14 NONAME ; int QEmailFetcher::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?tr@QEmailFetcher@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString QEmailFetcher::tr(char const *, char const *, int)
 	?staticMetaObject@QEmailFetcher@@2UQMetaObject@@B @ 16 NONAME ; struct QMetaObject const QEmailFetcher::staticMetaObject
-	?getSearchDocument@QEmailFetcher@@AAEPAVCSearchDocument@@ABVNmApiMessageEnvelope@EmailClientApi@@_K1@Z @ 17 NONAME ; class CSearchDocument * QEmailFetcher::getSearchDocument(class EmailClientApi::NmApiMessageEnvelope const &, unsigned long long, unsigned long long)
-	?handleMailboxesListed@QEmailFetcher@@QAEXH@Z @ 18 NONAME ; void QEmailFetcher::handleMailboxesListed(int)
+	?handleMailboxesListed@QEmailFetcher@@QAEXH@Z @ 17 NONAME ; void QEmailFetcher::handleMailboxesListed(int)
+	?emailServiceIntialized@QEmailFetcher@@QAEX_N@Z @ 18 NONAME ; void QEmailFetcher::emailServiceIntialized(bool)
 	?processNextFolder@QEmailFetcher@@AAEXXZ @ 19 NONAME ; void QEmailFetcher::processNextFolder(void)
-	?emailServiceIntialized@QEmailFetcher@@QAEX_N@Z @ 20 NONAME ; void QEmailFetcher::emailServiceIntialized(bool)
-	?qt_metacast@QEmailFetcher@@UAEPAXPBD@Z @ 21 NONAME ; void * QEmailFetcher::qt_metacast(char const *)
-	?newInstance@QEmailFetcher@@SAPAV1@AAVMEmailItemObserver@@@Z @ 22 NONAME ; class QEmailFetcher * QEmailFetcher::newInstance(class MEmailItemObserver &)
-	?handleMailFoldersListed@QEmailFetcher@@QAEXH@Z @ 23 NONAME ; void QEmailFetcher::handleMailFoldersListed(int)
+	?qt_metacast@QEmailFetcher@@UAEPAXPBD@Z @ 20 NONAME ; void * QEmailFetcher::qt_metacast(char const *)
+	?newInstance@QEmailFetcher@@SAPAV1@AAVMEmailItemObserver@@@Z @ 21 NONAME ; class QEmailFetcher * QEmailFetcher::newInstance(class MEmailItemObserver &)
+	?handleMailFoldersListed@QEmailFetcher@@QAEXH@Z @ 22 NONAME ; void QEmailFetcher::handleMailFoldersListed(int)
+	?metaObject@QEmailFetcher@@UBEPBUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const * QEmailFetcher::metaObject(void) const
 	??0QEmailFetcher@@AAE@AAVMEmailItemObserver@@@Z @ 24 NONAME ; QEmailFetcher::QEmailFetcher(class MEmailItemObserver &)
-	?metaObject@QEmailFetcher@@UBEPBUQMetaObject@@XZ @ 25 NONAME ; struct QMetaObject const * QEmailFetcher::metaObject(void) const
-	?getMailboxorfolderSearchDocument@QEmailFetcher@@AAEPAVCSearchDocument@@_K0W4TEmailDocType@@VQString@@@Z @ 26 NONAME ; class CSearchDocument * QEmailFetcher::getMailboxorfolderSearchDocument(unsigned long long, unsigned long long, enum TEmailDocType, class QString)
 
--- a/harvesterplugins/messaging/email/qtemailfetcher/eabi/qtemailfetcheru.def	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/email/qtemailfetcher/eabi/qtemailfetcheru.def	Tue Jul 06 14:17:22 2010 +0300
@@ -1,28 +1,26 @@
 EXPORTS
-	_ZN13QEmailFetcher10initializeEPS_ @ 1 NONAME
+	_ZN13QEmailFetcher10initializeEv @ 1 NONAME
 	_ZN13QEmailFetcher11newInstanceER18MEmailItemObserver @ 2 NONAME
 	_ZN13QEmailFetcher11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
 	_ZN13QEmailFetcher11qt_metacastEPKc @ 4 NONAME
 	_ZN13QEmailFetcher15StartHarvestingEv @ 5 NONAME
 	_ZN13QEmailFetcher15processMessagesEi @ 6 NONAME
 	_ZN13QEmailFetcher16staticMetaObjectE @ 7 NONAME DATA 16
-	_ZN13QEmailFetcher17getSearchDocumentERKN14EmailClientApi20NmApiMessageEnvelopeEyy @ 8 NONAME
-	_ZN13QEmailFetcher17processNextFolderEv @ 9 NONAME
+	_ZN13QEmailFetcher17processNextFolderEv @ 8 NONAME
+	_ZN13QEmailFetcher18getSearchDocumentLERKN14EmailClientApi20NmApiMessageEnvelopeEyy @ 9 NONAME
 	_ZN13QEmailFetcher18handleMessageEventEN14EmailClientApi17NmApiMessageEventEyy5QListIyE @ 10 NONAME
-	_ZN13QEmailFetcher18handlemailboxEventEN14EmailClientApi17NmApiMailboxEventE5QListIyE @ 11 NONAME
-	_ZN13QEmailFetcher18processNextMailboxEv @ 12 NONAME
-	_ZN13QEmailFetcher19getStaticMetaObjectEv @ 13 NONAME
-	_ZN13QEmailFetcher21handleMailboxesListedEi @ 14 NONAME
-	_ZN13QEmailFetcher22emailServiceIntializedEb @ 15 NONAME
-	_ZN13QEmailFetcher23handleMailFoldersListedEi @ 16 NONAME
-	_ZN13QEmailFetcher24NotifyHarvestingCompleteEv @ 17 NONAME
-	_ZN13QEmailFetcherC1ER18MEmailItemObserver @ 18 NONAME
-	_ZN13QEmailFetcherC2ER18MEmailItemObserver @ 19 NONAME
-	_ZN13QEmailFetcherD0Ev @ 20 NONAME
-	_ZN13QEmailFetcherD1Ev @ 21 NONAME
-	_ZN13QEmailFetcherD2Ev @ 22 NONAME
-	_ZNK13QEmailFetcher10metaObjectEv @ 23 NONAME
-	_ZTI13QEmailFetcher @ 24 NONAME
-	_ZTV13QEmailFetcher @ 25 NONAME
-	_ZN13QEmailFetcher32getMailboxorfolderSearchDocumentEyy13TEmailDocType7QString @ 26 NONAME
+	_ZN13QEmailFetcher18processNextMailboxEv @ 11 NONAME
+	_ZN13QEmailFetcher19getStaticMetaObjectEv @ 12 NONAME
+	_ZN13QEmailFetcher21handleMailboxesListedEi @ 13 NONAME
+	_ZN13QEmailFetcher22emailServiceIntializedEb @ 14 NONAME
+	_ZN13QEmailFetcher23handleMailFoldersListedEi @ 15 NONAME
+	_ZN13QEmailFetcher24NotifyHarvestingCompleteEv @ 16 NONAME
+	_ZN13QEmailFetcherC1ER18MEmailItemObserver @ 17 NONAME
+	_ZN13QEmailFetcherC2ER18MEmailItemObserver @ 18 NONAME
+	_ZN13QEmailFetcherD0Ev @ 19 NONAME
+	_ZN13QEmailFetcherD1Ev @ 20 NONAME
+	_ZN13QEmailFetcherD2Ev @ 21 NONAME
+	_ZNK13QEmailFetcher10metaObjectEv @ 22 NONAME
+	_ZTI13QEmailFetcher @ 23 NONAME
+	_ZTV13QEmailFetcher @ 24 NONAME
 
--- a/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -17,30 +17,30 @@
 
 #include "qtemailfetcher.h"
 #include <csearchdocument.h>
-#include <cpixmaindefs.h>
 #include <nmapiemailaddress.h>
 #include <nmapimessagebody.h>
 #include <nmapimailbox.h>
 #include <QTimer>
 #include <QDebug>
-//#include <QThread> //If we happen to use QThread::yieldCurrentThread()
+#include <qdatetime.h>
 
 //Symbian specific details; picked up from cemailplugin.cpp. 
 //Refactor it to cpixmaindefs.h
 _LIT(KMsgBaseAppClassGeneric, "root msg email");
 
 _LIT(KMsgSubject, "Subject");
+_LIT(KMsgSender, "Sender");
 _LIT(KMsgRecipients, "Recipients");
 _LIT(KMsgBody, "Body");
 _LIT(KMailBoxId, "MailBoxId");
 _LIT(KFolderId, "FolderId");
 _LIT(KHasAttachment, "HasAttachment");
 _LIT(KMailBoxName, "MailBoxName");
-_LIT(KFolderName, "FolderName");
+//_LIT(KFolderName, "FolderName");
 _LIT(KMimeTypeField, CPIX_MIMETYPE_FIELD);
 _LIT(KMimeTypeMsg, "Messages");
-
-
+_LIT(KAttachment, "Attachment");
+_LIT(KSentTime, "SentTime");
 
 //------------------------------------------------------------------------------
 QEmailFetcher::QEmailFetcher( MEmailItemObserver& aObserver )
@@ -59,11 +59,15 @@
 //------------------------------------------------------------------------------
 QEmailFetcher::~QEmailFetcher()
     {
-    iEmailEventNotifier->cancel();
+    if ( iEmailEventNotifier )
+       iEmailEventNotifier->cancel();
+    iMailBoxes.clear();
+    iFolders.clear();
     delete iEmailEventNotifier;
     delete iEmailService;
-    delete iMailBoxListings;
+    delete iEnvelopeListing;
     delete iMailFolderList;
+    delete iMailBoxListings;    
     }
 
 //------------------------------------------------------------------------------
@@ -76,7 +80,7 @@
         emailFetcher->iEmailService = new NmApiEmailService( emailFetcher );
         emailFetcher->iEmailEventNotifier =  new NmApiEventNotifier( emailFetcher );
         emailFetcher->iMailBoxListings = new NmApiMailboxListing( emailFetcher );
-        initialize( emailFetcher ); //Do the rest of the init.
+        emailFetcher->initialize( ); //Do the rest of the init.
     }catch(...){ //cleanup.
     qDebug() << "QEmailFetcher::newInstance ( Catch Block)";
         delete emailFetcher; 
@@ -93,24 +97,19 @@
 }
 
 //------------------------------------------------------------------------------
-void QEmailFetcher::initialize( QEmailFetcher* aThis ){
-    //The use of 'aThis' is because the current function is static.
+void QEmailFetcher::initialize( ){    
     qDebug() << "QEmailFetcher::initialize :START";
-    connect( aThis->iEmailService, SIGNAL(initialized(bool)), 
-             aThis, SLOT(emailServiceIntialized(bool)) );
-    aThis->iEmailService->initialise();
+    connect( iEmailService, SIGNAL(initialized(bool)), 
+             this, SLOT(emailServiceIntialized(bool)) );
+    iEmailService->initialise();
     //Monitor for Message changes
-    aThis->connect( aThis->iEmailEventNotifier, 
-                    SIGNAL(messageEvent(MessageEvent, quint64, quint64, QList<quint64>)),
-                    aThis, 
-                    SLOT(handleMessageEvent(MessageEvent, quint64, quint64, QList<quint64>)) );
-    //Monitor for Mailbox changes
-    aThis->connect( aThis->iEmailEventNotifier, 
-                    SIGNAL(mailboxEvent(MailboxEvent, QList<quint64>)),
-                    aThis, 
-                    SLOT(handlemailboxEvent(MailboxEvent, QList<quint64>)));
+    connect( iEmailEventNotifier, 
+             SIGNAL(messageEvent(EmailClientApi::NmApiMessageEvent, quint64, quint64, QList<quint64>)),
+             this, 
+             SLOT(handleMessageEvent(EmailClientApi::NmApiMessageEvent, quint64, quint64, QList<quint64>)) );
     //Start the monitoring
-    aThis->iEmailEventNotifier->start();
+    iEmailEventNotifier->start();
+    qDebug() << "QEmailFetcher::Started monitoring for Email message event";
     qDebug() << "QEmailFetcher::initialize :END";
 }
 
@@ -144,28 +143,12 @@
 }
 
 //------------------------------------------------------------------------------
-// TODO Remove this code if qt_QString2TPtrC works.
-// TODO If this function is used, remember to release memory.
-// Ownership with caller.
-//HBufC* qt_QString2HBufC(const QString& aString)
-//{
-//    HBufC *buffer;
-//#ifdef QT_NO_UNICODE
-//    TPtrC8 ptr(reinterpret_cast<const TUint8*>(aString.toLocal8Bit().constData()));
-//#else
-//    TPtrC16 ptr(qt_QString2TPtrC(aString));
-//#endif
-//    buffer = q_check_ptr(HBufC::New(ptr.Length()));
-//    buffer->Des().Copy(ptr);
-//    return buffer;
-//}
-
-CSearchDocument* getPartialSearchDocument( const NmApiMessageEnvelope& aEnvelope ) {
+CSearchDocument* getPartialSearchDocument( quint64 aEnvelopeId ) {
     qDebug() << "getPartialSearchDocument :START";
     CSearchDocument* doc = 0;
     QT_TRAP_THROWING(
         //Use qt_Qstring2TPtrC since we are working with <b>const</b> EmailMessageEnvelope.
-        doc = CSearchDocument::NewL( qt_QString2TPtrC( QString().setNum( aEnvelope.id() ) ), 
+        doc = CSearchDocument::NewL( qt_QString2TPtrC( QString().setNum( aEnvelopeId ) ), 
                                      KMsgBaseAppClassGeneric );        
         );
     qDebug() << "getPartialSearchDocument :END";
@@ -174,56 +157,95 @@
 } //anonymous namespace
 //------------------------------------------------------------------------------
 
-CSearchDocument* QEmailFetcher::getSearchDocument( const NmApiMessageEnvelope& aEnvelope ,quint64 aMailboxId, quint64 aFolderId ){
+CSearchDocument* QEmailFetcher::getSearchDocumentL( const NmApiMessageEnvelope& aEnvelope ,quint64 aMailboxId, quint64 aFolderId ){
     QList<NmApiEmailAddress> toList;
-    qDebug() << "QEmailFetcher::getSearchDocument :START";
+    qDebug() << "QEmailFetcher::getSearchDocumentL :START";
+    //We need ALL the recipients in a SINGLE field.
+    
     //Need to cast away const-ness since the get method is unfortunately not const.
     const_cast<NmApiMessageEnvelope&>(aEnvelope).getToRecipients( toList );
-
-    //We need ALL the recipients in a SINGLE field.
     QString recipients = "";
     for( int i=0; i<toList.length(); i++ )
-        recipients += toList.at( i ).displayName() + " "; //or should we get address?
-
+        {
+        qDebug() << "QEmailFetcher::To receipient displayname :"<< toList.at( i ).displayName() << "Address : "<<toList.at( i ).address();
+        recipients += toList.at( i ).displayName() + " ";
+        recipients += toList.at( i ).address() + " ";
+        }
+    // Get CC receipents
+    const_cast<NmApiMessageEnvelope&>(aEnvelope).getCcRecipients( toList );
+    for( int i=0; i<toList.length(); i++ )
+        {
+        qDebug() << "QEmailFetcher::CC receipient displayname :"<< toList.at( i ).displayName() << "Address : "<<toList.at( i ).address();
+        recipients += toList.at( i ).displayName() + " ";
+        recipients += toList.at( i ).address() + " ";
+        }
+    
     NmApiMessageBody body;
     //Cast away const-ness since the get method is unfortunately not const.
     //Returns void. Cannot check for success/failure.
     const_cast<NmApiMessageEnvelope&>(aEnvelope).getPlainTextBody( body ); 
     QString msgBody = body.content();
-
+    qDebug() << "QEmailFetcher::Body of mail using paintextAPI:"<< aEnvelope.plainText() ;
     CSearchDocument* doc = 0;
     QT_TRAP_THROWING(
     //Use qt_Qstring2TPtrC since we are working with <b>const</b> EmailMessageEnvelope.
     doc = CSearchDocument::NewL( qt_QString2TPtrC( QString().setNum( aEnvelope.id() ) ), 
                                  KMsgBaseAppClassGeneric );
-    doc->AddFieldL( KMimeTypeField, KMimeTypeMsg, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized | CDocumentField::EAggregateNo);
-    doc->AddFieldL( KMsgSubject, qt_QString2TPtrC( aEnvelope.subject() ), CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
-    doc->AddFieldL( KMsgRecipients, qt_QString2TPtrC( recipients ), CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
-    doc->AddFieldL( KMsgBody, qt_QString2TPtrC( msgBody ), CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
-    doc->AddFieldL( KMailBoxId, qt_QString2TPtrC( QString().setNum( aMailboxId ) ), CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized | CDocumentField::EAggregateNo );
-    doc->AddFieldL( KFolderId, qt_QString2TPtrC( QString().setNum( aFolderId ) ), CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized | CDocumentField::EAggregateNo );
-    doc->AddFieldL( KHasAttachment, qt_QString2TPtrC( QString().setNum( aEnvelope.hasAttachments() ) ), CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized | CDocumentField::EAggregateNo);
-//    NmApiMailbox aMailBox;
-//    iEmailService->getMailbox( aMailboxId, aMailBox );
-//    doc->AddFieldL( KMailBoxName, qt_QString2TPtrC(aMailBox.name()) , CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
-    //TODO : Add folder name field
-    //_LIT(KFolderName, "FolderName");
+    //Add the sender details
+    doc->AddFieldL( KMsgSender, qt_QString2TPtrC( const_cast<NmApiMessageEnvelope&>(aEnvelope).sender() ), 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
+    //Add the Mimetype
+    doc->AddFieldL( KMimeTypeField, KMimeTypeMsg, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
+    //Add the Subject field
+    doc->AddFieldL( KMsgSubject, qt_QString2TPtrC( aEnvelope.subject() ), 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
+    //Add the recipients list (Includes To and CC fields)
+    doc->AddFieldL( KMsgRecipients, qt_QString2TPtrC( recipients ), 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText );
+    //Add the email body
+    doc->AddFieldL( KMsgBody, qt_QString2TPtrC( msgBody ), 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
+    //Add the mailboxid
+    doc->AddFieldL( KMailBoxId, qt_QString2TPtrC( QString().setNum( aMailboxId ) ), 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized | CDocumentField::EAggregateNo );
+    //Add the folder Id
+    doc->AddFieldL( KFolderId, qt_QString2TPtrC( QString().setNum( aFolderId ) ), 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized | CDocumentField::EAggregateNo );
+    //Add the attachment field. This field will be added only if there is any attachment.Details of the attachment
+    //are not added due to lack of email application support.
+    if ( aEnvelope.hasAttachments() )
+       doc->AddFieldL( KHasAttachment, KAttachment, CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
+    //Add mailbox name
+    NmApiMailbox aMailBox;
+    iEmailService->getMailbox( aMailboxId, aMailBox );
+    doc->AddFieldL( KMailBoxName, qt_QString2TPtrC(aMailBox.name()) , 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText );
+    
+    // Sent date time  KSentTime
+    QDateTime time = aEnvelope.sentTime();    
+    doc->AddFieldL( KSentTime, qt_QString2TPtrC(time.toString ()) , 
+                        CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
+    //TODO : Foldername is not harvested as there is no API exposed from email application to get the foldername based on folderID.
+    //This feature will be implemented as soon as we get supporting API's from Email team
+    
     //Adding subject and body to the excerpt. 
     QString excerpt ;
     excerpt = aEnvelope.subject();
     excerpt += msgBody ;
     doc->AddExcerptL( qt_QString2TPtrC(excerpt) );
     );
-    qDebug() << "QEmailFetcher::getSearchDocument :END";
+    qDebug() << "QEmailFetcher::getSearchDocumentL :END";
     return doc;
 }
 
 
 //------------------------------------------------------------------------------
-//Just to avoid duplication of the following two lines.
 void QEmailFetcher::NotifyHarvestingComplete(){
     qDebug() << "QEmailFetcher::NotifyHarvestingComplete :START";
     iCurrentMailboxIndex = iCurrentFolderIndex = 0;
+    //Free the iMailBoxes and iFolders
+    iMailBoxes.clear();
+    iFolders.clear();
     QT_TRAP_THROWING( iEmailObserver.HarvestingCompleted() );
     qDebug() << "QEmailFetcher::NotifyHarvestingComplete :END";
     return;
@@ -272,13 +294,14 @@
         qDebug() << "QEmailFetcher::processNextMailbox :END (harvesting completed)";
         return;
     }
-    
     //More mailboxes available.
     delete iMailFolderList; iMailFolderList = NULL;
     iMailFolderList = new NmApiFolderListing( this, iMailBoxes.at( iCurrentMailboxIndex++ ).id() );
     connect( iMailFolderList, SIGNAL(foldersListed( qint32 )), this, SLOT(handleMailFoldersListed( qint32)) );
-    const int waitForSeconds = 30; //TODO Move this constant out of here if needed elsewhere
-    QTimer::singleShot( waitForSeconds, iMailFolderList, SLOT( start()) );
+    iMailFolderList->start();
+   
+//    const int waitForSeconds = 30; //TODO Move this constant out of here if needed elsewhere
+//    QTimer::singleShot( waitForSeconds, iMailFolderList, SLOT( start()) );
     qDebug() << "QEmailFetcher::processNextMailbox :END (goto next mailbox)";
 }
 
@@ -310,7 +333,6 @@
         processNextMailbox();
         return;//Don't proceed futher.
     }
-    
     //More folders to process.
     //Already set to NULL in constructor, so safe to call delete first time.
     delete iEnvelopeListing; iEnvelopeListing = NULL; 
@@ -337,15 +359,15 @@
         for( int i=0; i<envelopes.count(); i++ ) {
             const NmApiMessageEnvelope &envelope = envelopes.at( i );
             //Create document and call back observer.
-            QT_TRAP_THROWING( iEmailObserver.HandleDocumentL( getSearchDocument( envelope, iFolders.at( iCurrentFolderIndex -1 ).id(), iMailBoxes.at( iCurrentMailboxIndex-1 ).id() ), 
-                                                              ECPixAddAction ) );
+            QT_TRAP_THROWING( iEmailObserver.HandleDocumentL( getSearchDocumentL( envelope, iFolders.at( iCurrentFolderIndex -1 ).id(), 
+                                                                                 iMailBoxes.at( iCurrentMailboxIndex-1 ).id() ), ECPixAddAction ) );
         }
     }
     qDebug() << "QEmailFetcher::processMessages :END";
 }
 
 //------------------------------------------------------------------------------
-void QEmailFetcher::handleMessageEvent( NmApiMessageEvent aEvent, quint64 aMailboxId, quint64 aFolderId, QList<quint64> aMessageList){
+void QEmailFetcher::handleMessageEvent( EmailClientApi::NmApiMessageEvent aEvent, quint64 aMailboxId, quint64 aFolderId, QList<quint64> aMessageList){
     NmApiMessageEnvelope envelope;
     qDebug() << "QEmailFetcher::handleMessageEvent :START";
     const int messageCount = aMessageList.count();
@@ -356,7 +378,7 @@
             if( iEmailService->getEnvelope( aMailboxId, aFolderId, aMessageList.at( i ), envelope ) ){
                qDebug() << "QEmailFetcher::handleMessageEvent :HandleDocumentL";
                 QT_TRAP_THROWING( 
-                   iEmailObserver.HandleDocumentL( getSearchDocument( envelope, aMailboxId, aFolderId ), 
+                   iEmailObserver.HandleDocumentL( getSearchDocumentL( envelope, aMailboxId, aFolderId ), 
                            //Doing this simply avoids *duplicate* code for update action.
                            aEvent == MessageCreated ? ECPixAddAction : ECPixUpdateAction ) );
             }
@@ -364,56 +386,11 @@
     }
     else if( aEvent == MessageDeleted ) {
         qDebug() << "QEmailFetcher::handleMessageEvent :MessageDeleted";
-        //TODO We can do better. For delete, we dont have to create full document. Just the ID should be enough.
-        //We can have another function called getPartialSearchDocument so deletes will be faster.
         for( int i=0; i<messageCount; i++ ){
-            if( iEmailService->getEnvelope( aMailboxId, aFolderId, aMessageList.at( i ), envelope ) ){
                 qDebug() << "QEmailFetcher::handleMessageEvent :MessageDeleted : HandleDocumentL";
                 QT_TRAP_THROWING( 
-                iEmailObserver.HandleDocumentL( getPartialSearchDocument( envelope ), ECPixRemoveAction ) );
+                iEmailObserver.HandleDocumentL( getPartialSearchDocument( aMessageList.at( i ) ), ECPixRemoveAction ) );
             }
         }
     }
-    }
 }
-
-//--------------------------------------------------------------------------------------
-void QEmailFetcher::handlemailboxEvent( EmailClientApi::NmApiMailboxEvent event, QList<quint64> idlist ){
-    const int mailboxCount = idlist.count();    
-    if( event == MailboxCreated )
-        {
-        //New mailbox is created.Harvest the Mailbox name and all the folder names
-        }
-    else
-        {
-        //MailBox is deleted so delete the document related to all the mailbox and folders in the mailbox
-        }
-}
-
-CSearchDocument* QEmailFetcher::getMailboxorfolderSearchDocument( quint64 aMailboxId, quint64 aFolderId, TEmailDocType aDocType, QString aFoldername ){
-    
-    CSearchDocument* doc = 0;
-    QT_TRAP_THROWING(
-    //Use qt_Qstring2TPtrC since we are working with <b>const</b> EmailMessageEnvelope.
-            if ( aDocType == EEmailTypeFolder)
-                {
-                doc = CSearchDocument::NewL( qt_QString2TPtrC( QString().setNum( aFolderId ) ), 
-                                 KMsgBaseAppClassGeneric );
-                doc->AddFieldL( KFolderName, qt_QString2TPtrC(aFoldername) , CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
-                doc->AddFieldL( KFolderId, qt_QString2TPtrC( QString().setNum( aFolderId ) ), CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
-                }
-            else if ( aDocType == EEmailTypeMailBox )
-                {
-                doc = CSearchDocument::NewL( qt_QString2TPtrC( QString().setNum( aMailboxId ) ), 
-                                             KMsgBaseAppClassGeneric );
-                NmApiMailbox aMailBox;
-                iEmailService->getMailbox( aMailboxId, aMailBox );
-                doc->AddFieldL( KMailBoxName, qt_QString2TPtrC(aMailBox.name()) , CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
-                }
-            doc->AddFieldL( KMimeTypeField, KMimeTypeMsg, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
-            doc->AddFieldL( KMailBoxId, qt_QString2TPtrC( QString().setNum( aMailboxId ) ), CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
-
-    );
-    qDebug() << "QEmailFetcher::getSearchDocument :END";
-    return doc;
-}
--- a/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.h	Tue Jul 06 14:17:22 2010 +0300
@@ -37,13 +37,6 @@
 
 using namespace EmailClientApi;
 
-enum TEmailDocType
-        {
-        EEmailTypeMail = 0,
-        EEmailTypeFolder,
-        EEmailTypeMailBox
-        };
-
 //How this works:
 //1. List all mail boxes.
 //2. In each mail box, list the folders
@@ -64,22 +57,19 @@
     
 private:
     QEmailFetcher(MEmailItemObserver& aObserver );
-    static void initialize(QEmailFetcher* aThis); //helper (2nd phase constructor).
+    void initialize(); //helper (2nd phase constructor).
     void processNextMailbox();
     void processNextFolder();
     void processNextEnvelope();
     void NotifyHarvestingComplete();
-    CSearchDocument* getSearchDocument( const NmApiMessageEnvelope& aEnvelope ,quint64 aMailboxId, quint64 aFolderId );
-    CSearchDocument* getMailboxorfolderSearchDocument( quint64 aMailboxId, quint64 aFolderId, TEmailDocType aDocType, QString aFoldername );
+    CSearchDocument* getSearchDocumentL( const NmApiMessageEnvelope& aEnvelope ,quint64 aMailboxId, quint64 aFolderId );
 public slots: //public since they need to be called by *other* objects.
     void emailServiceIntialized( bool );
     void handleMailboxesListed( qint32 );
     void handleMailFoldersListed( qint32 );
     void processMessages( qint32 );
     //Connect to messageEvent signal
-    void handleMessageEvent( NmApiMessageEvent aEvent, quint64 mailboxId, quint64 folderId, QList<quint64> messageList ); 
-    //Connect to Mailbox event signal
-    void handlemailboxEvent(EmailClientApi::NmApiMailboxEvent event, QList<quint64> id);
+    void handleMessageEvent( EmailClientApi::NmApiMessageEvent aEvent, quint64 mailboxId, quint64 folderId, QList<quint64> messageList );
     
 private:
     MEmailItemObserver& iEmailObserver;     //The parent/creator. Not owned.
@@ -88,7 +78,6 @@
     NmApiMailboxListing* iMailBoxListings;     //owned.
     NmApiFolderListing* iMailFolderList;       //owned.
     NmApiEnvelopeListing* iEnvelopeListing;    //owned.
-    NmApiMessageEnvelope* iMessageListing;     //owned.
     
     //These are needed to asynchronously process *all* mailboxes/folders.
     int iCurrentMailboxIndex;
--- a/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.pro	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -31,7 +31,7 @@
     TARGET.VID = VID_DEFAULT
     TARGET.CAPABILITY = CAP_GENERAL_DLL -DRM
     VERSION = 1.0.0
-    
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
     INCLUDEPATH += ../inc
     
     HEADERS += ../inc/memailitemobserver.h
--- a/harvesterplugins/messaging/group/bld.inf	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/group/bld.inf	Tue Jul 06 14:17:22 2010 +0300
@@ -16,4 +16,5 @@
 */
 
 PRJ_MMPFILES
-#include "../smsmms/group/bld.inf"
\ No newline at end of file
+#include "../smsmms/group/bld.inf"
+#include "../email/group/bld.inf"
\ No newline at end of file
--- a/harvesterplugins/messaging/smsmms/inc/cmessagedatahandler.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/inc/cmessagedatahandler.h	Tue Jul 06 14:17:22 2010 +0300
@@ -35,7 +35,7 @@
 
 class CMessageDataHandler : public CActive
 	{
-public:
+public:    
 	/**
 	 * Construction
 	 * @return Harvester image plugin
@@ -163,6 +163,9 @@
 	CPop3ClientMtm*				iPop3Mtm;                   // client for opening pop3
 	CImap4ClientMtm*			iImap4Mtm;                  // client for opening imap4
 	RFs							iFs;
+#ifdef HARVESTERPLUGINTESTER_FRIEND
+    friend class CHarvesterPluginTester;
+#endif
 	};
 
 #endif // CMESSAGEDATAHANDLER_H
--- a/harvesterplugins/messaging/smsmms/inc/cmessageharvester.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/inc/cmessageharvester.h	Tue Jul 06 14:17:22 2010 +0300
@@ -128,7 +128,11 @@
         // UID of current folder searched
         TMsvId iCurrentFolder;
         // Current folder message items 
-        CMsvEntrySelection* iChildren;         
+        CMsvEntrySelection* iChildren;
+        
+#ifdef HARVESTERPLUGINTESTER_FRIEND
+    friend class CHarvesterPluginTester;
+#endif
     };
 
 #endif // CMESSAGEHARVESTER_H
--- a/harvesterplugins/messaging/smsmms/inc/cmessagemonitor.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/inc/cmessagemonitor.h	Tue Jul 06 14:17:22 2010 +0300
@@ -114,7 +114,6 @@
 			TCPixActionType iAction;
 			TMsvId iFolderId;
 		};
-	
 	private:
 		// Queue of documents to be indexed
 		RArray<TMessageRecord> iMessages; 
@@ -127,6 +126,9 @@
 		
 		CMsvSession&		iMsvSession;
 		CMessagePlugin&      iMessagePlugin;
+#ifdef HARVESTERPLUGINTESTER_FRIEND
+    friend class CHarvesterPluginTester;
+#endif
 	};
 
 #endif //  CMESSAGEMONITOR_H
--- a/harvesterplugins/messaging/smsmms/inc/cmessageplugin.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/inc/cmessageplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -141,6 +141,10 @@
     TInt     iCurrentDrive;
     // CPix indexer 
     CCPixIndexer* iIndexer[EDriveZ+1]; // EDriveZ enum value is 25, so add 1.
+    
+#ifdef HARVESTERPLUGINTESTER_FRIEND
+    friend class CHarvesterPluginTester;
+#endif
 
 #ifdef __PERFORMANCE_DATA
     TTime iStartTime;
--- a/harvesterplugins/messaging/smsmms/src/cmessagedatahandler.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/src/cmessagedatahandler.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -198,16 +198,7 @@
 		if (iMessagePlugin.GetIndexer())
 			{
 			TRAPD(err, iMessagePlugin.GetIndexer()->DeleteL(docid_str));
-			if (err == KErrNone)
-				{
-				OstTrace0( TRACE_NORMAL, DUP1_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Document deleted." );
-				CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): Document deleted.");
-				}
-			else
-				{
-				OstTrace1( TRACE_NORMAL, DUP2_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in deleting the doc=%d", err );
-				CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in deleting the document.", err);				
-				}
+			OstTrace1( TRACE_NORMAL, DUP7_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL():DeleteL;err=%d", err );			
 			}
 		return;
 		}
@@ -224,52 +215,17 @@
 		case EMsgTypeSms:
 			{
 			TRAPD(err, index_item = CreateSmsDocumentL(aMsvId, aFolderId));
-			if (err == KErrNone)
-				{
-				OstTrace0( TRACE_NORMAL, DUP3_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): SMS document created." );
-				CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): SMS document created.");
-				}
-			else
-				{
-				OstTrace1( TRACE_NORMAL, DUP4_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in creating the sms doc=%d", err );
-				CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in creating SMS document.", err);
-				}
+			OstTrace1( TRACE_NORMAL, DUP1_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): SMS document creation;err=%d", err );
 			break;
 			}
 		case EMsgTypeMms:
 			{
 			TRAPD(err, index_item = CreateMmsDocumentL(aMsvId, aFolderId));
-			if (err == KErrNone)
-				{
-				OstTrace0( TRACE_NORMAL, DUP5_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): MMS document created." );
-				CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): MMS document created.");
-				}
-			else
-				{
-				OstTrace1( TRACE_NORMAL, DUP6_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in creating the mms doc=%d", err );
-				CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in creating MMS document.", err);
-				}
-			break;
-			}
-		case EMsgTypeEmailPop3:
-		case EMsgTypeEmailImap4:
-		case EMsgTypeEmailSmtp:
-			{
-			TRAPD(err, index_item = CreateEmailDocumentL(aMsvId, aFolderId));
-			if (err == KErrNone)
-				{
-				OstTrace0( TRACE_NORMAL, DUP7_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): E-mail document created." );
-				CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): E-mail document created.");
-				}
-			else
-				{
-				OstTrace1( TRACE_NORMAL, DUP8_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in ccreating the email doc=%d", err );
-				CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in creating e-mail document.", err);
-				}
+			OstTrace1( TRACE_NORMAL, DUP2_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): MMS document created;err=%d", err );
 			break;
 			}
 		case EMsgTypeInvalid:
-		// For EMsgTypeDraft there is no way to tell if it was a SMS, MMS or email,
+		// For EMsgTypeDraft there is no way to tell if it was a SMS, MMS ,
 		// so don't create index_item.
 		case EMsgTypeDraft:
 		default:
@@ -302,30 +258,12 @@
 		if (aActionType == ECPixAddAction)
 			{
 			TRAPD(err, iMessagePlugin.GetIndexer()->AddL(*index_item));
-			if (err == KErrNone)
-				{
-				OstTrace0( TRACE_NORMAL, DUP10_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Added." );
-				CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): Added.");
-				}
-			else
-				{
-				OstTrace1( TRACE_NORMAL, DUP11_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in Adding=%d", err );
-				CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in adding.", err);
-				}
+			OstTrace1( TRACE_NORMAL, DUP3_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Added;err=%d", err );
 			}
 		else if (aActionType == ECPixUpdateAction)
 			{
 			TRAPD(err, iMessagePlugin.GetIndexer()->UpdateL(*index_item));
-			if (err == KErrNone)
-				{
-				OstTrace0( TRACE_NORMAL, DUP12_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Updated." );
-				CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): Updated.");
-				}
-			else
-				{
-				OstTrace1( TRACE_NORMAL, DUP13_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in Updating=%d", err );
-				CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in updating.", err);
-				}
+			OstTrace1( TRACE_NORMAL, DUP4_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Updated;err=%d", err );
 			}
 		}
 	else
@@ -540,94 +478,6 @@
     CleanupStack::Pop(index_item);
     return index_item;
     }
-
-// ---------------------------------------------------------------------------
-// CMessageDataHandler::CreateEmailDocumentL
-// ---------------------------------------------------------------------------
-//
-CSearchDocument* CMessageDataHandler::CreateEmailDocumentL(const TMsvId& aMsvId, const TMsvId& aFolderId)
-	{
-	// creating CSearchDocument object with unique ID for this application
-	TBuf<KMaxDocId> docid_str;
-	docid_str.AppendNum(aMsvId);
-	CSearchDocument* index_item = CSearchDocument::NewLC(docid_str, _L(EMAILAPPCLASS));
-
-	// Open the message entry
-	CMsvEntry* message_entry = CMsvEntry::NewL(iMsvSession, aMsvId, TMsvSelectionOrdering());
-	CleanupStack::PushL(message_entry);
-	
-	// Get body
-	CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL();
-	CleanupStack::PushL(paraFormatLayer);
-	CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL();
-	CleanupStack::PushL(charFormatLayer);
-	CRichText* richtext = CRichText::NewL(paraFormatLayer, charFormatLayer);
-	CleanupStack::PushL(richtext);
-	CImEmailMessage* message_body = CImEmailMessage::NewLC(*message_entry);
-	message_body->GetBodyTextL(aMsvId, CImEmailMessage::EThisMessageOnly, *richtext, *paraFormatLayer, *charFormatLayer);
-	
-	// Read the message header
-	CMsvStore* message_store = message_entry->ReadStoreL();
-	CleanupStack::PushL(message_store);
-	CImHeader* header = CImHeader::NewLC();
-	header->RestoreL(*message_store);
-	
-	// Add from field
-	index_item->AddFieldL(KFromField, header->From());
-
-	// Add the ToRecipients as content items
-	TBuf<64> to_field;
-	for (TInt i = 0; i < header->ToRecipients().MdcaCount(); i++)
-		{
-		to_field = KToField;
-		if (i>0)
-			to_field.AppendNum(i);
-		index_item->AddFieldL(to_field, header->ToRecipients().MdcaPoint(i));
-		}
-
-	// Add the CcRecipients as content items
-	TBuf<64> cc_field;
-	for (TInt i = 0; i < header->CcRecipients().MdcaCount(); i++)
-		{
-		cc_field = KCcField;
-		if (i>0)
-			cc_field.AppendNum(i);
-		index_item->AddFieldL(cc_field, header->CcRecipients().MdcaPoint(i));
-		}
-
-	// Add the BccRecipients as content items
-	TBuf<64> bcc_field;
-	for (TInt i = 0; i < header->BccRecipients().MdcaCount(); i++)
-		{
-		bcc_field = KBccField;
-		if (i>0)
-			bcc_field.AppendNum(i);
-		index_item->AddFieldL(bcc_field, header->BccRecipients().MdcaPoint(i));
-		}
-
-	const TInt richTxtLen = (richtext->DocumentLength() < KMaxDocumentSize) ? richtext->DocumentLength() : KMaxDocumentSize;
-	HBufC* body_text = richtext->Read(0).Left(richTxtLen).AllocLC();
-
-	// Add subject
-	TPtrC subject(header->Subject());
-	index_item->AddFieldL(KSubjectField, subject);
-	
-	// Add message body
-	index_item->AddFieldL(KBodyField, *body_text);
-	
-	// Add excerpt
-    HBufC* excerpt = CreateExcerptLC(header->From(), header->ToRecipients(), subject, *body_text, aFolderId);
-    index_item->AddExcerptL(*excerpt);
-	CleanupStack::PopAndDestroy(excerpt);
-
-	// Cleanup everything last item message entry
-	CleanupStack::PopAndDestroy(8, message_entry);
-
-	// Pop the item
-	CleanupStack::Pop(index_item);
-	return index_item;	
-	}
-
 // ---------------------------------------------------------------------------
 // CMessageDataHandler::CreateExcerptLC
 // ---------------------------------------------------------------------------
--- a/harvesterplugins/messaging/smsmms/src/cmessageplugin.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/src/cmessageplugin.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -252,11 +252,8 @@
     iObserver->RemoveHarvestingQueue(this, baseAppClass);   
     
     // Delete the index object
-    if (iIndexer[aMedia])
-        {
-        delete iIndexer[aMedia];
-        iIndexer[aMedia] = NULL;
-        }
+    delete iIndexer[aMedia];
+    iIndexer[aMedia] = NULL;
     
     // if the aActionType is EFFMmcDismount, then the
     // parameter aFilename is the baseAppClass of the Index database
@@ -450,14 +447,15 @@
 			{
 			User::Panic(_L("CMessagePlugin PANIC"), KErrServerTerminated);
 			break;				
-			}			
-		case EMsvMtmGroupInstalled:
-		case EMsvMtmGroupDeInstalled:
-		case EMsvGeneralError: // not used after v5
-		case EMsvServerReady:
-		case EMsvCorruptedIndexRebuilt:
-		case EMsvMediaIncorrect:
-		case EMsvCorruptedIndexRebuilding:
+			}	
+			// Following commented only for decision coverage
+//		case EMsvMtmGroupInstalled:
+//		case EMsvMtmGroupDeInstalled:
+//		case EMsvGeneralError: // not used after v5
+//		case EMsvServerReady:
+//		case EMsvCorruptedIndexRebuilt:
+//		case EMsvMediaIncorrect:
+//		case EMsvCorruptedIndexRebuilding:
 		default:
 			{
 			break;
@@ -485,24 +483,6 @@
         CPIXLOGSTRING("CMessagePlugin:CalculateMessageType  ###  Mms Message ###");
         ret = EMsgTypeMms;
         }
-    else if( aEntry.iMtm.iUid  == KUidMsgTypeSMTP.iUid )
-		{
-		OstTrace0( TRACE_NORMAL, DUP2_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE, "CMessagePlugin:CalculateMessageType  ### ESmtpEmail ###" );
-		CPIXLOGSTRING("CMessagePlugin:CalculateMessageType  ### ESmtpEmail ###");
-        ret = EMsgTypeEmailSmtp;
-		}
-	else if( aEntry.iMtm.iUid  == KUidMsgTypePOP3.iUid )
-		{
-		OstTrace0( TRACE_NORMAL, DUP3_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE, "CMessagePlugin:CalculateMessageType  ### EPop3Email ###" );
-		CPIXLOGSTRING("CMessagePlugin:CalculateMessageType  ### EPop3Email ###");
-        ret = EMsgTypeEmailPop3;
-		}
-	else if( aEntry.iMtm.iUid  == KUidMsgTypeIMAP4.iUid )
-		{
-		OstTrace0( TRACE_NORMAL, DUP4_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE, "CMessagePlugin:CalculateMessageType  ### EImap4Email ###" );
-		CPIXLOGSTRING("CMessagePlugin:CalculateMessageType  ### EImap4Email ###");
-        ret = EMsgTypeEmailImap4;
-		}
 	// Add J.J	
 #ifndef __SERIES60_30__ // Not supported before S60 3d FP1
    	else if ( aEntry.iMtm.iUid == KSenduiMtmUniMessageUid.iUid )
--- a/harvesterplugins/messaging/smsmms/traces/cmessagedatahandlerTraces.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/traces/cmessagedatahandlerTraces.h	Tue Jul 06 14:17:22 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CMESSAGEDATAHANDLERTRACES_H__
@@ -19,15 +19,8 @@
 #define DUP2_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860007
 #define DUP3_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860008
 #define DUP4_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860009
-#define DUP5_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x86000a
-#define DUP6_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x86000b
 #define DUP7_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x86000c
-#define DUP8_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x86000d
 #define DUP9_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x86000e
-#define DUP10_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x86000f
-#define DUP11_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860010
-#define DUP12_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860011
-#define DUP13_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860012
 #define DUP14_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML 0x860013
 #define CMESSAGEDATAHANDLER_RUNL 0x860014
 #define CMESSAGEDATAHANDLER_RUNERROR 0x860015
--- a/harvesterplugins/messaging/smsmms/traces/cmessagemonitorTraces.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/traces/cmessagemonitorTraces.h	Tue Jul 06 14:17:22 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CMESSAGEMONITORTRACES_H__
--- a/harvesterplugins/messaging/smsmms/traces/cmessagepluginTraces.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/traces/cmessagepluginTraces.h	Tue Jul 06 14:17:22 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CMESSAGEPLUGINTRACES_H__
@@ -27,9 +27,6 @@
 #define DUP3_CMESSAGEPLUGIN_HANDLESESSIONEVENTL 0x860025
 #define CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x860026
 #define DUP1_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x860027
-#define DUP2_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x860028
-#define DUP3_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x860029
-#define DUP4_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x86002a
 #define DUP5_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x86002b
 #define DUP6_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x86002c
 #define DUP7_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE 0x86002d
--- a/harvesterplugins/messaging/smsmms/traces/fixed_id.definitions	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/messaging/smsmms/traces/fixed_id.definitions	Tue Jul 06 14:17:22 2010 +0300
@@ -40,10 +40,6 @@
 [TRACE]TRACE_NORMAL[0x86]_CMESSAGEPLUGIN_HANDLESESSIONEVENTL=0x22
 [TRACE]TRACE_NORMAL[0x86]_CMESSAGEPLUGIN_MOUNTL=0x21
 [TRACE]TRACE_NORMAL[0x86]_CMESSAGEPLUGIN_STARTPLUGINL=0x20
-[TRACE]TRACE_NORMAL[0x86]_DUP10_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xf
-[TRACE]TRACE_NORMAL[0x86]_DUP11_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x10
-[TRACE]TRACE_NORMAL[0x86]_DUP12_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x11
-[TRACE]TRACE_NORMAL[0x86]_DUP13_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x12
 [TRACE]TRACE_NORMAL[0x86]_DUP14_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x13
 [TRACE]TRACE_NORMAL[0x86]_DUP1_CMESSAGEDATAHANDLER_CONSTRUCTL=0x2
 [TRACE]TRACE_NORMAL[0x86]_DUP1_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x6
@@ -53,22 +49,26 @@
 [TRACE]TRACE_NORMAL[0x86]_DUP1_CMESSAGEPLUGIN_HANDLESESSIONEVENTL=0x23
 [TRACE]TRACE_NORMAL[0x86]_DUP2_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x7
 [TRACE]TRACE_NORMAL[0x86]_DUP2_CMESSAGEMONITOR_HANDLEMSGCREATEDCHANGEDL=0x19
-[TRACE]TRACE_NORMAL[0x86]_DUP2_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x28
 [TRACE]TRACE_NORMAL[0x86]_DUP2_CMESSAGEPLUGIN_HANDLESESSIONEVENTL=0x24
 [TRACE]TRACE_NORMAL[0x86]_DUP3_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x8
-[TRACE]TRACE_NORMAL[0x86]_DUP3_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x29
 [TRACE]TRACE_NORMAL[0x86]_DUP3_CMESSAGEPLUGIN_HANDLESESSIONEVENTL=0x25
 [TRACE]TRACE_NORMAL[0x86]_DUP4_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x9
 [TRACE]TRACE_NORMAL[0x86]_DUP4_CMESSAGEMONITOR_HANDLEMSGCREATEDCHANGEDL=0x1a
-[TRACE]TRACE_NORMAL[0x86]_DUP4_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x2a
-[TRACE]TRACE_NORMAL[0x86]_DUP5_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xa
 [TRACE]TRACE_NORMAL[0x86]_DUP5_CMESSAGEMONITOR_HANDLEMSGCREATEDCHANGEDL=0x1b
 [TRACE]TRACE_NORMAL[0x86]_DUP5_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x2b
-[TRACE]TRACE_NORMAL[0x86]_DUP6_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xb
 [TRACE]TRACE_NORMAL[0x86]_DUP6_CMESSAGEMONITOR_HANDLEMSGCREATEDCHANGEDL=0x1c
 [TRACE]TRACE_NORMAL[0x86]_DUP6_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x2c
 [TRACE]TRACE_NORMAL[0x86]_DUP7_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xc
 [TRACE]TRACE_NORMAL[0x86]_DUP7_CMESSAGEMONITOR_HANDLEMSGCREATEDCHANGEDL=0x1d
 [TRACE]TRACE_NORMAL[0x86]_DUP7_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x2d
-[TRACE]TRACE_NORMAL[0x86]_DUP8_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xd
 [TRACE]TRACE_NORMAL[0x86]_DUP9_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xe
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP10_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xf
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP11_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x10
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP12_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x11
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP13_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0x12
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x28
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x29
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP4_CMESSAGEPLUGIN_CALCULATEMESSAGETYPE=0x2a
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP5_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xa
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP6_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xb
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP8_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML=0xd
--- a/harvesterplugins/tsrc/harvesterplugintester/conf/harvesterplugintester.cfg	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/conf/harvesterplugintester.cfg	Tue Jul 06 14:17:22 2010 +0300
@@ -91,6 +91,111 @@
 [Endtest]
 
 [Test]
+title TestMessageMountNoIndexerL
+create HarvesterPluginTester foobar
+foobar TestMessageMountNoIndexerL
+delete foobar
+[Endtest]
+
+[Test]
+title TestMessageIsMediaRemovableL
+create HarvesterPluginTester foobar
+foobar TestMessageIsMediaRemovableL 0 1 2 3
+delete foobar
+[Endtest]
+
+[Test]
+title TestMessageRunErrorL
+create HarvesterPluginTester foobar
+foobar TestMessageRunErrorL
+delete foobar
+[Endtest]
+
+[Test]
+title TestQualifiedBaseAppClass
+create HarvesterPluginTester foobar
+foobar TestQualifiedBaseAppClass
+delete foobar
+[Endtest]
+
+[Test]
+title TestHandleMsgMoved
+create HarvesterPluginTester foobar
+foobar TestHandleMsgMoved
+delete foobar
+[Endtest]
+
+[Test]
+title TestMessageDataHandler
+create HarvesterPluginTester foobar
+foobar TestMessageDataHandler
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgUnMount
+create HarvesterPluginTester foobar
+foobar TestMsgUnMount
+delete foobar
+[Endtest]
+
+[Test]
+title TestFormFormBaseAppClass
+create HarvesterPluginTester foobar
+foobar TestFormFormBaseAppClass
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgDelete
+create HarvesterPluginTester foobar
+foobar TestMsgDelete
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgHandlesession
+create HarvesterPluginTester foobar
+foobar TestMsgHandlesession
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgHandlesessionPanic
+create HarvesterPluginTester foobar
+foobar TestMsgHandlesessionPanic 0
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgHandlesessionPanic
+create HarvesterPluginTester foobar
+foobar TestMsgHandlesessionPanic 1
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgHandlesessionPanic
+create HarvesterPluginTester foobar
+foobar TestMsgHandlesessionPanic 2
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgOverwriteOrAddToQuere
+create HarvesterPluginTester foobar
+foobar TestMsgOverwriteOrAddToQuere
+delete foobar
+[Endtest]
+
+[Test]
+title TestMsgMessageHarvester
+create HarvesterPluginTester foobar
+foobar TestMsgMessageHarvester
+delete foobar
+[Endtest]
+
+[Test]
 title TestAddBookmarkL
 create HarvesterPluginTester foobar
 foobar TestAddBookmarkL TestBookmark http:\/\/testbookmark.com testbookmark.com
@@ -214,6 +319,48 @@
 [Endtest]
 
 [Test]
+title TestCreateContactIndexItemNoIndexerL
+create HarvesterPluginTester foobar
+foobar TestCreateContactIndexItemNoIndexerL
+delete foobar
+[Endtest]
+
+[Test]
+title TestContactGetDateL
+create HarvesterPluginTester foobar
+foobar TestContactGetDateL 2010-11-30
+delete foobar
+[Endtest]
+
+[Test]
+title TestContactDelayedErrorL
+create HarvesterPluginTester foobar
+foobar TestContactDelayedErrorL
+delete foobar
+[Endtest]
+
+[Test]
+title TestContactDelayedCallbackNoIContactsL
+create HarvesterPluginTester foobar
+foobar TestContactDelayedCallbackNoIContactsL
+delete foobar
+[Endtest]
+
+[Test]
+title TestContactDelayedCallbackNoIObserverL
+create HarvesterPluginTester foobar
+foobar TestContactDelayedCallbackNoIObserverL
+delete foobar
+[Endtest]
+
+[Test]
+title TestContactDelayedCallbackWrongCountL
+create HarvesterPluginTester foobar
+foobar TestContactDelayedCallbackWrongCountL
+delete foobar
+[Endtest]
+
+[Test]
 title TestCreateContactGroup
 create HarvesterPluginTester foobar
 foobar TestCreateContactGroup TestGroup
@@ -359,3 +506,17 @@
 foobar TestImageMMCEventL 2 1
 delete foobar
 [Endtest]
+
+[Test]
+title TestStartEmailPlugin
+create HarvesterPluginTester foobar 
+foobar TestStartEmailPlugin
+delete foobar
+[Endtest]
+
+[Test]
+title TestHandleEmailDoc
+create HarvesterPluginTester foobar 
+foobar TestHandleEmailDoc
+delete foobar
+[Endtest]
--- a/harvesterplugins/tsrc/harvesterplugintester/group/harvesterplugintester.mmp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/group/harvesterplugintester.mmp	Tue Jul 06 14:17:22 2010 +0300
@@ -39,6 +39,7 @@
 OS_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE /epoc32/include/ecom
 SYSTEMINCLUDE /epoc32/include/mmf/common
+SYSTEMINCLUDE /epoc32/include/mw
 
 SOURCEPATH      ../src
 
@@ -77,6 +78,13 @@
 // DEFFILE ?filename
 // AIF ?filename
 
+//Used for adding friend classes for unit testing
+//Example (in class header file):
+//#ifdef HARVESTERPLUGINTESTER_FRIEND
+// friend class CHarvesterPluginTester
+//#endif
+MACRO HARVESTERPLUGINTESTER_FRIEND
+
 //------------------------Added for testing FilePlugin-------------------
 USERINCLUDE ./../../../file/inc
 USERINCLUDE ./../../../file/inc/monitorplugin
@@ -206,6 +214,29 @@
 SOURCE        imageplugin.cpp
 //------------------End for image plugin -----------------------------
 
+//---------------Additions for Email plugin----------------------------
+USERINCLUDE ./../../../messaging/email/inc
+USERINCLUDE ./../../../messaging/email/qtemailfetcher
+SOURCEPATH  ./../../../messaging/email/src
+
+SOURCE        cemailplugin.cpp
+
+SYSTEMINCLUDE		/epoc32/include/mw/QtCore
+SYSTEMINCLUDE		/epoc32/include/stdapis
+SYSTEMINCLUDE		/epoc32/include/stdapis/sys
+SYSTEMINCLUDE		.
+SYSTEMINCLUDE		/epoc32/include/stdapis/stlport
+
+
+LIBRARY       qtemailfetcher.lib
+LIBRARY       qtcore.lib
+LIBRARY       libstdcpp.lib
+
+OPTION CW -wchar_t on
+MACRO _WCHAR_T_DECLARED
+//EPOCALLOWDLLDATA
+//------------------End for Eail plugin -----------------------------
+
 USERINCLUDE ../../../applications/traces 
 USERINCLUDE ../../../bookmarks/traces 
 USERINCLUDE ../../../calendar/traces 
--- a/harvesterplugins/tsrc/harvesterplugintester/inc/harvesterplugintester.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/inc/harvesterplugintester.h	Tue Jul 06 14:17:22 2010 +0300
@@ -51,7 +51,7 @@
 // FORWARD DECLARATIONS
 //class ?FORWARD_CLASSNAME;
 class CHarvesterPluginTester;
-
+class CSearchDocument;
 // DATA TYPES
 //enum ?declaration
 //typedef ?declaration
@@ -186,6 +186,12 @@
          */
         virtual TInt TestMessageHarvesterChangeDriveL( CStifItemParser& aItem );
         
+        virtual TInt TestMessageRunErrorL( CStifItemParser& aItem );
+        
+        virtual TInt TestMessageIsMediaRemovableL( CStifItemParser& aItem );
+        
+        virtual TInt TestMessageMountNoIndexerL( CStifItemParser& aItem );
+        
         virtual TInt TestStartBookmarksHarvesterL( CStifItemParser& aItem );
         
         virtual TInt TestAddBookmarkL( CStifItemParser& aItem );
@@ -215,8 +221,20 @@
                         
         virtual TInt TestCreateContactIndexItemL( CStifItemParser& aItem );
         
-        virtual TInt TestCreateAllContactFieldsL( CStifItemParser& aItem );
+        virtual TInt TestCreateContactIndexItemNoIndexerL( CStifItemParser& aItem );
+        
+        virtual TInt TestContactGetDateL( CStifItemParser& aItem );
+        
+        virtual TInt TestContactDelayedErrorL( CStifItemParser& aItem );
         
+        virtual TInt TestContactDelayedCallbackNoIContactsL( CStifItemParser& aItem );
+        
+        virtual TInt TestContactDelayedCallbackNoIObserverL( CStifItemParser& aItem );
+        
+        virtual TInt TestContactDelayedCallbackWrongCountL( CStifItemParser& aItem );
+        
+		virtual TInt TestCreateAllContactFieldsL( CStifItemParser& aItem );
+		
         virtual TInt TestCreateContactGroupL( CStifItemParser& aItem );
         
         virtual TInt TestStartCalenderHarvesterL( CStifItemParser& aItem );
@@ -256,6 +274,32 @@
 		virtual TInt TestVideoMMCEventL( CStifItemParser& aItem );
 		
 		virtual TInt TestImageMMCEventL( CStifItemParser& aItem );
+		
+		virtual TInt TestStartEmailPluginL( CStifItemParser& aItem );
+		
+		CSearchDocument* prepareemaildocument();
+		
+		virtual TInt TestHandleEmailDocL( CStifItemParser& aItem );
+		
+		virtual TInt TestQualifiedBaseAppClassL( CStifItemParser& );
+		
+		virtual TAny TestHandleMsgMovedL( CStifItemParser& );
+		
+		virtual TAny TestMessageDataHandlerL( CStifItemParser& );
+		
+		virtual TInt TestMsgUnMountL( CStifItemParser& );
+		
+		virtual TInt TestFormFormBaseAppClassL( CStifItemParser& );
+		
+		virtual TInt TestMsgDeleteL( CStifItemParser& );
+		
+		virtual TInt TestMsgHandlesessionL( CStifItemParser& );
+		
+		virtual TInt TestMsgHandlesessionPanicL( CStifItemParser& aItem );
+		
+		virtual TInt TestMsgOverwriteOrAddToQuereL( CStifItemParser& aItem );
+		
+		virtual TInt TestMsgMessageHarvesterL( CStifItemParser& aItem );
         /**
          * Method used to log version of test class
          */
--- a/harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe.mmp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe.mmp	Tue Jul 06 14:17:22 2010 +0300
@@ -32,20 +32,14 @@
 
 #ifdef SBSV2
 	#if defined(__S60_)
-	    OS_LAYER_SYSTEMINCLUDE
-	#else // __S60_ not defined
-	    SYSTEMINCLUDE   /epoc32/include 
-	    SYSTEMINCLUDE   /epoc32/include/internal
+	    OS_LAYER_SYSTEMINCLUDE	
 	#endif // __S60_
 
 	/* Source files */
 	SOURCEPATH      ../src
 #else // SBSV2 not defined
 	#if defined(__S60_)
-	    MW_LAYER_SYSTEMINCLUDE
-	#else // __S60_ not defined
-	    SYSTEMINCLUDE   /epoc32/include 
-	    SYSTEMINCLUDE   /epoc32/include/internal
+	    MW_LAYER_SYSTEMINCLUDE	
 	#endif // __S60_
 
 	/* Source files */
--- a/harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe_nrm.mmp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe_nrm.mmp	Tue Jul 06 14:17:22 2010 +0300
@@ -32,20 +32,14 @@
 
 #ifdef SBSV2
 	#if defined(__S60_)
-	    OSEXT_LAYER_SYSTEMINCLUDE
-	#else // __S60_ not defined
-	    SYSTEMINCLUDE   /epoc32/include 
-	    SYSTEMINCLUDE   /epoc32/include/internal
+	    OSEXT_LAYER_SYSTEMINCLUDE	
 	#endif // __S60_
 
 	/* Source files */
 	SOURCEPATH      ../src
 #else // SBSV2 not defined
 	#if defined(__S60_)
-	    MW_LAYER_SYSTEMINCLUDE
-	#else // __S60_ not defined
-	    SYSTEMINCLUDE   /epoc32/include 
-	    SYSTEMINCLUDE   /epoc32/include/internal
+	    MW_LAYER_SYSTEMINCLUDE	    
 	#endif // __S60_
 
 	/* Source files */
--- a/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -29,8 +29,11 @@
 #include <favouritesdb.h>
 #include <msvapi.h>
 #include <bautils.h>
+#include <csearchdocument.h>
 #include "harvesterobserver.h"
 #include "cmessageplugin.h"
+#include "cmessagemonitor.h"
+#include "cmessageharvester.h"
 #include "cmessagesessionobserver.h" //For CMsvSession
 #include "ccpixsearcher.h"
 #include "bookmarksplugin.h"
@@ -43,11 +46,12 @@
 #include "mdsitementity.h"
 #include "cpixmdedbmanager.h"
 #include "cfolderrenamedharvester.h"
-//#include "CBlacklistMgr.h"
 #include "videoplugin.h"
 #include "imageplugin.h"
-
+#include "cemailplugin.h"
+#include "cmessagedatahandler.h"
 _LIT(KAppBasePath,"@c:root file content");
+_LIT(KEmailAppBasePath,"@c:root msg email");
 _LIT(KAppBaseFolderFilePath,"@c:root file folder");
 const TInt KMsgPluginBaseAppClassMaxLen = 64;
 
@@ -56,10 +60,8 @@
 #include <utf.h>
 #include "notesplugin.h"
 
-//Test Uid for testing Blacklist manager
-
-//const TUid KTestUid = { 0x101D6348 };
-
+_LIT( KemailId, "1" );
+_LIT(KMsgBaseAppClassGeneric, "root msg email");
 #define MEDIA_QBASEAPPCLASS   "@c:root media audio"
 #define LMEDIA_QBASEAPPCLASS  L"@c:root media audio"
 #define VIDEO_QBASEAPPCLASS   "@c:root media video"
@@ -100,6 +102,19 @@
         ENTRY( "TestMessaging", CHarvesterPluginTester::TestMessageHarvesterL ),
         ENTRY( "TestMessageHarvesting", CHarvesterPluginTester::TestMessageHarvesterWithMessageL ),
         ENTRY( "TestMessageDriveChange", CHarvesterPluginTester::TestMessageHarvesterChangeDriveL ),
+        ENTRY( "TestMessageRunErrorL", CHarvesterPluginTester::TestMessageRunErrorL ),
+        ENTRY( "TestMessageIsMediaRemovableL", CHarvesterPluginTester::TestMessageIsMediaRemovableL ),
+        ENTRY( "TestMessageMountNoIndexerL", CHarvesterPluginTester::TestMessageMountNoIndexerL ),        
+        ENTRY( "TestQualifiedBaseAppClass", CHarvesterPluginTester::TestQualifiedBaseAppClassL ),
+        ENTRY( "TestHandleMsgMoved", CHarvesterPluginTester::TestHandleMsgMovedL ),
+        ENTRY( "TestMessageDataHandler", CHarvesterPluginTester::TestMessageDataHandlerL ),
+        ENTRY( "TestMsgUnMount", CHarvesterPluginTester::TestMsgUnMountL ),
+        ENTRY( "TestFormBaseAppClass", CHarvesterPluginTester::TestFormFormBaseAppClassL ),
+        ENTRY( "TestMsgDelete", CHarvesterPluginTester::TestMsgDeleteL ),
+        ENTRY( "TestMsgHandlesession", CHarvesterPluginTester::TestMsgHandlesessionL ),
+        ENTRY( "TestMsgHandlesessionPanic", CHarvesterPluginTester::TestMsgHandlesessionPanicL ),
+        ENTRY( "TestMsgOverwriteOrAddToQuere", CHarvesterPluginTester::TestMsgOverwriteOrAddToQuereL ),
+        ENTRY( "TestMsgMessageHarvester", CHarvesterPluginTester::TestMsgMessageHarvesterL ),
         ENTRY( "TestStartBookmarksHarvesterL", CHarvesterPluginTester::TestStartBookmarksHarvesterL ),
         ENTRY( "TestAddBookmarkL", CHarvesterPluginTester::TestAddBookmarkL ),
         ENTRY( "TestAddGetDomainL", CHarvesterPluginTester::TestAddGetDomainL ),
@@ -116,6 +131,12 @@
         ENTRY( "TestCreateAllContactFields", CHarvesterPluginTester::TestCreateAllContactFieldsL ),
         ENTRY( "TestCreateContactIndexItemL_Edit", CHarvesterPluginTester::TestCreateContactIndexItemL ),
         ENTRY( "TestCreateContactIndexItemL_Delete", CHarvesterPluginTester::TestCreateContactIndexItemL ),
+        ENTRY( "TestCreateContactIndexItemL_NoIndexer", CHarvesterPluginTester::TestCreateContactIndexItemNoIndexerL ),
+        ENTRY( "TestContactGetDateL", CHarvesterPluginTester::TestContactGetDateL ),
+        ENTRY( "TestContactDelayedErrorL", CHarvesterPluginTester::TestContactDelayedErrorL ),
+        ENTRY( "TestContactDelayedCallbackNoIContactsL", CHarvesterPluginTester::TestContactDelayedCallbackNoIContactsL ),        
+        ENTRY( "TestContactDelayedCallbackNoIObserverL", CHarvesterPluginTester::TestContactDelayedCallbackNoIObserverL ),        
+        ENTRY( "TestContactDelayedCallbackWrongCountL", CHarvesterPluginTester::TestContactDelayedCallbackWrongCountL ),        
         ENTRY( "TestCreateContactGroup", CHarvesterPluginTester::TestCreateContactGroupL ),
         ENTRY( "TestCalenderHarvesting", CHarvesterPluginTester::TestStartCalenderHarvesterL ),
         ENTRY( "TestCalenderEntry",CHarvesterPluginTester::TestCalenderEntryL ),
@@ -136,6 +157,8 @@
 		ENTRY( "TestAudioMMCEventL",CHarvesterPluginTester::TestAudioMMCEventL ),
 		ENTRY( "TestVideoMMCEventL",CHarvesterPluginTester::TestVideoMMCEventL ),
 		ENTRY( "TestImageMMCEventL",CHarvesterPluginTester::TestImageMMCEventL ),
+		ENTRY( "TestStartEmailPlugin",CHarvesterPluginTester::TestStartEmailPluginL ),
+		ENTRY( "TestHandleEmailDoc",CHarvesterPluginTester::TestHandleEmailDocL ),
         //ADD NEW ENTRY HERE
         // [test cases entries] - Do not remove
         };
@@ -156,6 +179,12 @@
     else logger->Log( errorString );
     }
 
+CSearchDocument* CHarvesterPluginTester::prepareemaildocument()
+    {    
+    CSearchDocument* doc = CSearchDocument::NewL( KemailId, 
+            KMsgBaseAppClassGeneric ); 
+    return doc;
+    }
 // Example test method function.
 // -----------------------------------------------------------------------------
 TInt CHarvesterPluginTester::TestStartHarvesterL( CStifItemParser& /*aItem*/ )
@@ -576,6 +605,224 @@
     return error;
     }
 
+//Only for coverage.
+TInt CHarvesterPluginTester::TestMessageRunErrorL( CStifItemParser& /*aItem */)
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    plugin->iMessageMonitor->RunError( KErrNone );
+    delete plugin;
+    return KErrNone;
+    }
+TInt CHarvesterPluginTester::TestQualifiedBaseAppClassL( CStifItemParser& )
+    {
+    //For coverage
+    TDriveNumber drive ( EDriveA ); 
+    _LIT( appcls1 ,"@c:root media image" );
+    _LIT( appcls2 ,"@*:root media image" );
+    _LIT( appcls3 ,"d:root media image" );    
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );    
+    plugin->MountL( EDriveC );
+    TRAPD(err, plugin->StartHarvestingL(appcls1));
+    delete plugin->iIndexer[EDriveC];
+    plugin->iIndexer[EDriveC] = NULL;
+    TRAP(err, plugin->StartHarvestingL(appcls1));
+    TRAP(err, plugin->StartHarvestingL(appcls2));
+    TRAP(err, plugin->StartHarvestingL(appcls3));
+    delete plugin;
+    delete iPluginTester;
+    return err;
+    }
+TInt CHarvesterPluginTester::TestMsgUnMountL( CStifItemParser& )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->MountL(EDriveC);
+    plugin->UnMount( EDriveC );
+    plugin->MountL(EDriveC);
+    plugin->UnMount( EDriveC , EFalse);
+    delete plugin;
+    delete iPluginTester;
+    return KErrNone;
+    }
+
+TAny CHarvesterPluginTester::TestHandleMsgMovedL( CStifItemParser& )
+    {
+    const TMsvId id1 = 1;
+    CMsvEntrySelection* selection = new( ELeave ) CMsvEntrySelection;
+    // Current entry will be the one to send
+    selection->AppendL( id1 );
+//    CMsvEntrySelection entry;
+    const long int ref = 2;
+    
+    const TMsvId id2 = 2;
+//    entry.AppendL(id1);
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    plugin->iMessageMonitor->HandleMsgMovedL(id1, id2, *selection);
+    selection->Reset();
+    delete plugin;
+    }
+
+TAny CHarvesterPluginTester::TestMessageDataHandlerL( CStifItemParser& )
+    {
+    CMessagePlugin* plugin3 = CMessagePlugin::NewL();
+    _LIT8(Des1, "0xFFFFF");
+    _LIT8(Des2, "0xF");
+    _LIT8(Des3, "FFx0");
+    _LIT8(Des4, "F");
+    _LIT8(Des5, "0xFEFF");
+    _LIT8(Des6, "0xFFFE");
+    const TMsvId id1 = 1;
+    const TMsvId id2 = 2;
+    CMessageDataHandler* idatahandler = CMessageDataHandler::NewL( *plugin3, *(plugin3->iMsvSession) );
+    idatahandler->CreateMessageIndexItemL(id1,ECPixAddAction,id1);
+    idatahandler->IsTextUcs2(Des1);
+    idatahandler->IsTextUcs2(Des2);
+    idatahandler->IsTextUcs2(Des3);
+    idatahandler->IsTextUcs2(Des4);
+    idatahandler->IsTextUcs2(Des5);
+    idatahandler->IsTextUcs2(Des6);
+    const TInt KUtf8BomLength = 3;
+    const TUint8 KUtf8Bom[KUtf8BomLength] = {0xEF, 0xBB, 0xBF};
+    const TUint8 KUtf8Bom1[KUtf8BomLength+1] = {0xEF, 0x5, 0xF, 0xE};
+    TPtrC8 ptr(KUtf8Bom, KUtf8BomLength);
+    TPtrC8 ptr1(KUtf8Bom1, KUtf8BomLength+1); 
+    idatahandler->TextContainsUtf8Bom(ptr);
+    idatahandler->TextContainsUtf8Bom(ptr1);
+    idatahandler->DoCancel();
+    idatahandler->RunError(0);
+    delete plugin3;
+
+    }
+TInt CHarvesterPluginTester::TestMessageMountNoIndexerL( CStifItemParser& )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    RSearchServerSession session;
+    User::LeaveIfError( session.Connect() );
+    plugin->iIndexer[EDriveA] = CCPixIndexer::NewL( session );
+    TRAPD( err, plugin->MountL( EDriveA, EFalse ) );
+    TRAP( err, plugin->MountL( EDriveA, EFalse ) ); //For coverage
+    delete plugin->iIndexer[EDriveA];
+    plugin->iIndexer[EDriveA] = NULL;
+    delete plugin;      
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestMessageIsMediaRemovableL( CStifItemParser& aItem )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    TInt error;
+    TInt driveNumber = 0;
+    //TODO add a while loop.
+    while( aItem.GetNextInt( driveNumber ) == KErrNone )
+        {
+        error = 0;
+        TDriveNumber number(static_cast<TDriveNumber>(driveNumber) );
+        TRAP( error, plugin->IsMediaRemovableL( number ) );
+        if( error ) break;
+        }
+    delete plugin;
+    return error;
+    }
+
+TInt CHarvesterPluginTester::TestFormFormBaseAppClassL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    TBuf<20> appclass;
+    //To test proper case
+    plugin->FormBaseAppClass( EDriveA , appclass);
+    //To test failure case
+    plugin->FormBaseAppClass( (TDriveNumber)29 , appclass);
+    //cleanup
+    delete plugin;
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestMsgDeleteL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CMessageDataHandler* idatahandler = CMessageDataHandler::NewL( *plugin, *(plugin->iMsvSession) );
+    const TMsvId id1 = 1;
+    RSearchServerSession session;
+    User::LeaveIfError( session.Connect() );
+    plugin->iIndexer[plugin->iCurrentDrive] = CCPixIndexer::NewL( session );       
+    idatahandler->CreateMessageIndexItemL( id1, ECPixRemoveAction, id1 );
+    delete idatahandler;
+    delete plugin;
+    session.Close();
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestMsgHandlesessionL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->StartPluginL();
+    TMsvId id = 1;
+    TDriveNumber drive1 = EDriveB;
+    TDriveNumber drive2 = EDriveC;
+    CMsvEntrySelection* selection = new( ELeave ) CMsvEntrySelection;
+    // Current entry will be the one to send
+    selection->AppendL( id );    
+    TRAPD(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesDeleted , (TAny*)selection ,NULL , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , (TAny*)selection ,NULL , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , (TAny*)selection ,(TAny*)selection , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , (TAny*)selection ,(TAny*)selection , (TAny*)selection));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , NULL ,(TAny*)selection , (TAny*)selection));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvMediaChanged , (TAny*)&drive1 ,(TAny*)&drive2 , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvMediaUnavailable , (TAny*)&drive2 ,NULL , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvMediaAvailable , (TAny*)&drive1 ,NULL , NULL));
+    selection->Reset();
+    delete plugin;
+    delete iPluginTester;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestMsgHandlesessionPanicL( CStifItemParser& aItem )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->StartPluginL();
+    TInt num = 0;
+    TInt err = KErrNone;
+    aItem.GetNextInt( num );
+    if ( num == 0)
+        {
+        TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvServerFailedToStart , NULL ,NULL , NULL));
+        }
+    else if ( num ==1 )
+        {
+        TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvCloseSession , NULL ,NULL , NULL));
+        }
+    else
+        TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvServerTerminated , NULL ,NULL , NULL));
+    
+    delete plugin;
+    delete iPluginTester;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestMsgOverwriteOrAddToQuereL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    plugin->iMessageMonitor->OverwriteOrAddToQuereL( 1 , ECPixAddAction , 1 );
+    plugin->iMessageMonitor->OverwriteOrAddToQuereL( 1 , ECPixAddAction , 1 );
+    plugin->iMessageMonitor->RunL();
+    delete plugin;
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestMsgMessageHarvesterL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CMessageHarvester* messageHarvester = CMessageHarvester::NewL( *plugin, *(plugin->iMsvSession) );
+    messageHarvester->RunError(KErrNone);
+    messageHarvester->HandleNextRequest();
+    delete messageHarvester;
+    delete plugin;
+    return KErrNone;
+    }
+
 TInt CHarvesterPluginTester::SearchForTextL(const TDesC& aQueryString, const TDesC& aBaseAppclass,const TDesC& aDefaultField)
     {
     TInt DocumentCount(KErrNotFound);
@@ -916,6 +1163,70 @@
     return contactId;
     }
 
+TInt CHarvesterPluginTester::TestContactDelayedCallbackNoIContactsL( CStifItemParser& /*aItem*/ )
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    //for coverage
+    delete plugin->iContacts;
+    plugin->iContacts = NULL;
+    TRAPD( err, plugin->DelayedCallbackL( KErrNone ) );
+    delete plugin;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestContactDelayedCallbackNoIObserverL( CStifItemParser& /*aItem*/ )
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    //for coverage
+    delete plugin->iObserver;
+    plugin->iObserver = NULL;
+    TRAPD( err, plugin->DelayedCallbackL( KErrNone ) );
+    delete plugin;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestContactDelayedCallbackWrongCountL( CStifItemParser& /*aItem*/ )
+    {
+    //This case can happen if a contact was deleted while harvesting is going on.
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    plugin->iCurrentIndex = plugin->iContacts->Count()+1;
+    TRAPD( err, plugin->DelayedCallbackL( KErrNone ) );
+    delete plugin;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestContactDelayedErrorL(CStifItemParser& /*aItem*/)
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    plugin->DelayedError( KErrGeneral );
+    delete plugin;
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestContactGetDateL( CStifItemParser& aItem )
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    
+    TPtrC dateString;
+    TInt error = 0;
+    if( aItem.GetNextString ( dateString ) == KErrNone )
+        {
+        TBuf<30> date; //Picked up 30 from contactsplugin.cpp file.
+        TRAP(error, plugin->GetDateL(dateString, date) );
+        }
+    delete plugin;
+    return error;
+    }
+
+TInt CHarvesterPluginTester::TestCreateContactIndexItemNoIndexerL( CStifItemParser& /*aItem*/ )
+    {
+    //Create contact plugin, call CreateContactIndexItemL without creating indexer.
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    TRAPD(err, plugin->CreateContactIndexItemL(0, ECPixUpdateAction) );
+    delete plugin;
+    return err;
+    }
+
 TInt CHarvesterPluginTester::TestCreateContactIndexItemL( CStifItemParser& aItem )
     {
     TInt error = KErrNone;
@@ -1856,4 +2167,41 @@
     return err;
     }
 
+TInt CHarvesterPluginTester::TestStartEmailPluginL( CStifItemParser& /*aItem*/ )
+    {
+    _LIT( KHarvesterPluginTester, "HarvesterPluginTester: %S" );
+    _LIT( KExample, "In TestStartEmailPluginL" );
+    TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+
+    // Print to log file
+    iLog->Log( KExample );
+    CEmailPlugin* emailPlugin = CEmailPlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( emailPlugin );    
+    emailPlugin->StartPluginL(); //Calls Add
+    emailPlugin->StartHarvestingL( KEmailAppBasePath );
+    delete emailPlugin;
+    delete iPluginTester;
+    doLog( iLog, KErrNone, KNoErrorString );
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestHandleEmailDocL( CStifItemParser& /*aItem*/ )
+    {
+    _LIT( KHarvesterPluginTester, "HarvesterPluginTester: %S" );
+    _LIT( KExample, "In TestHandleEmailDocL" );
+    TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+
+    // Print to log file
+    iLog->Log( KExample );
+    CEmailPlugin* emailPlugin = CEmailPlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( emailPlugin );   
+    CSearchDocument* doc = prepareemaildocument();
+    TRAPD(err , emailPlugin->HandleDocumentL( doc , ECPixAddAction));
+    iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+    delete emailPlugin;
+    delete iPluginTester;
+    doLog( iLog, err, KNoErrorString );
+    return err;
+    }
+
 //  [End of File] - Do not remove
--- a/layers.sysdef.xml	Wed Jun 23 18:13:49 2010 +0300
+++ b/layers.sysdef.xml	Tue Jul 06 14:17:22 2010 +0300
@@ -6,8 +6,9 @@
   <systemModel>
     <layer name="app_layer">
     	<module name="search">
-				<unit unitID="orgdo.search.bldinf" mrp="" bldFile="&layer_real_source_path;/group" name="search_bldinf"/>
-				<unit unitID="orgdo.search.pro" mrp="" bldFile="&layer_real_source_path;/searchui" name="search_pro" proFile="searchui.pro"/>
+    	<unit unitID="orgdo.search.pro" mrp="" bldFile="&layer_real_source_path;" name="search_pro" proFile="search.pro"/>
+		<unit unitID="orgdo.search.bldinf" mrp="" bldFile="&layer_real_source_path;/group" name="search_bldinf"/>
+		
       </module>
     </layer>
   </systemModel>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/bwins/isengineu.def	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,19 @@
+EXPORTS
+	?qt_metacall@IsEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1 NONAME ; int IsEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacast@IsEngine@@UAEPAXPBD@Z @ 2 NONAME ; void * IsEngine::qt_metacast(char const *)
+	?trUtf8@IsEngine@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString IsEngine::trUtf8(char const *, char const *, int)
+	?trUtf8@IsEngine@@SA?AVQString@@PBD0@Z @ 4 NONAME ; class QString IsEngine::trUtf8(char const *, char const *)
+	?SelectedProvider@IsEngine@@QAEPAVServiceProvider@@XZ @ 5 NONAME ; class ServiceProvider * IsEngine::SelectedProvider(void)
+	??0IsEngine@@QAE@PAVQObject@@@Z @ 6 NONAME ; IsEngine::IsEngine(class QObject *)
+	??_EIsEngine@@UAE@I@Z @ 7 NONAME ; IsEngine::~IsEngine(unsigned int)
+	?tr@IsEngine@@SA?AVQString@@PBD0@Z @ 8 NONAME ; class QString IsEngine::tr(char const *, char const *)
+	??1IsEngine@@UAE@XZ @ 9 NONAME ; IsEngine::~IsEngine(void)
+	?getStaticMetaObject@IsEngine@@SAABUQMetaObject@@XZ @ 10 NONAME ; struct QMetaObject const & IsEngine::getStaticMetaObject(void)
+	?staticMetaObject@IsEngine@@2UQMetaObject@@B @ 11 NONAME ; struct QMetaObject const IsEngine::staticMetaObject
+	?PerformWebSearch@IsEngine@@QAEXABVQString@@@Z @ 12 NONAME ; void IsEngine::PerformWebSearch(class QString const &)
+	?Providers@IsEngine@@QAE_NAAV?$QList@VServiceProvider@@@@@Z @ 13 NONAME ; bool IsEngine::Providers(class QList<class ServiceProvider> &)
+	?SetSelectedProvider@IsEngine@@QAE_NH@Z @ 14 NONAME ; bool IsEngine::SetSelectedProvider(int)
+	?metaObject@IsEngine@@UBEPBUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const * IsEngine::metaObject(void) const
+	?PerformInDeviceSearch@IsEngine@@QBEXABVQString@@@Z @ 16 NONAME ; void IsEngine::PerformInDeviceSearch(class QString const &) const
+	?tr@IsEngine@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString IsEngine::tr(char const *, char const *, int)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/bwins/isproviderdbmanageru.def	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,21 @@
+EXPORTS
+	?getStaticMetaObject@IsProviderDBManager@@SAABUQMetaObject@@XZ @ 1 NONAME ; struct QMetaObject const & IsProviderDBManager::getStaticMetaObject(void)
+	??_EIsProviderDBManager@@UAE@I@Z @ 2 NONAME ; IsProviderDBManager::~IsProviderDBManager(unsigned int)
+	?GetCountryList@IsProviderDBManager@@QAE_NAAVQStringList@@@Z @ 3 NONAME ; bool IsProviderDBManager::GetCountryList(class QStringList &)
+	?SelectedProvider@IsProviderDBManager@@QAEPAVServiceProvider@@XZ @ 4 NONAME ; class ServiceProvider * IsProviderDBManager::SelectedProvider(void)
+	?SetSelectedProvider@IsProviderDBManager@@QAE_NH@Z @ 5 NONAME ; bool IsProviderDBManager::SetSelectedProvider(int)
+	?OpenDatabase@IsProviderDBManager@@AAE_NXZ @ 6 NONAME ; bool IsProviderDBManager::OpenDatabase(void)
+	?GetCountryCode@IsProviderDBManager@@AAE?AVQString@@XZ @ 7 NONAME ; class QString IsProviderDBManager::GetCountryCode(void)
+	?GetProviders@IsProviderDBManager@@QAE_NAAV?$QList@VServiceProvider@@@@@Z @ 8 NONAME ; bool IsProviderDBManager::GetProviders(class QList<class ServiceProvider> &)
+	??0IsProviderDBManager@@QAE@PAVQObject@@@Z @ 9 NONAME ; IsProviderDBManager::IsProviderDBManager(class QObject *)
+	?qt_metacast@IsProviderDBManager@@UAEPAXPBD@Z @ 10 NONAME ; void * IsProviderDBManager::qt_metacast(char const *)
+	?metaObject@IsProviderDBManager@@UBEPBUQMetaObject@@XZ @ 11 NONAME ; struct QMetaObject const * IsProviderDBManager::metaObject(void) const
+	?trUtf8@IsProviderDBManager@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString IsProviderDBManager::trUtf8(char const *, char const *)
+	??1IsProviderDBManager@@UAE@XZ @ 13 NONAME ; IsProviderDBManager::~IsProviderDBManager(void)
+	?staticMetaObject@IsProviderDBManager@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const IsProviderDBManager::staticMetaObject
+	?CloseDatabase@IsProviderDBManager@@AAEXXZ @ 15 NONAME ; void IsProviderDBManager::CloseDatabase(void)
+	?qt_metacall@IsProviderDBManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 16 NONAME ; int IsProviderDBManager::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@IsProviderDBManager@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString IsProviderDBManager::trUtf8(char const *, char const *, int)
+	?tr@IsProviderDBManager@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString IsProviderDBManager::tr(char const *, char const *, int)
+	?tr@IsProviderDBManager@@SA?AVQString@@PBD0@Z @ 19 NONAME ; class QString IsProviderDBManager::tr(char const *, char const *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/common/inc/serviceprovider.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef SERVICEPROVIDER_H
+#define SERVICEPROVIDER_H
+
+#include <QList>
+#include <QObject>
+#include <HbIcon>
+
+
+class ServiceProvider
+{
+public:
+    ServiceProvider() {}
+    virtual ~ServiceProvider() {}
+    QString Name() const {return m_name;}
+    void SetName(const QString& aName) { m_name = aName; }
+    int Id() const {return m_providerId;}
+    void SetId(const int providerId) { m_providerId = providerId; }
+    HbIcon Icon() const {return m_icon;}
+    void SetIcon(const HbIcon& icon) { m_icon = icon; }
+    QString Description() const {return m_description;}
+    void SetDescription(const QString& description) { m_description = description; }
+    QString ProviderUrl() const {return m_providerUrl;}
+    void SetProviderUrl(const QString& providerUrl) { m_providerUrl = providerUrl; }
+    QString PluginName() const {return m_pluginName;}
+    void SetPluginName(const QString& pluginName) { m_pluginName = pluginName; }
+    
+private:
+	int m_providerId;
+    QString m_name;
+    HbIcon m_icon;
+    QString m_description;
+    QString m_providerUrl;
+    QString m_pluginName;
+};
+
+#endif  // SERVICEPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/common/resources/baidu_logo.svg	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+	<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+	<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+	<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+	<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+	<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="88px" height="72px" viewBox="0 0 88 72" xml:space="preserve">
+<switch>
+	<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+		<i:pgfRef  xlink:href="#adobe_illustrator_pgf">
+		</i:pgfRef>
+	</foreignObject>
+	<g i:extraneous="self">
+		<path fill="#FFFFFF" stroke="#CCCCCC" d="M78.813,61.402c0,3.808-3.084,6.892-6.89,6.892H19.491c-3.806,0-6.89-3.084-6.89-6.892
+			V8.969c0-3.805,3.084-6.889,6.89-6.889h52.434c3.807,0,6.891,3.084,6.891,6.889v52.434H78.813z"/>
+		<g>
+			<path fill="#2319DC" d="M62.116,44.868c0,0-6.046-4.631-9.574-9.638c-4.779-7.377-11.585-4.376-13.855-0.621
+				c-2.259,3.756-5.788,6.129-6.293,6.752c-0.506,0.624-7.302,4.256-5.79,10.89c1.506,6.627,6.803,6.5,6.803,6.5
+				s3.906,0.377,8.432-0.62c4.534-0.998,8.435,0.247,8.435,0.247s10.584,3.508,13.479-3.249
+				C66.646,48.377,62.116,44.868,62.116,44.868z M68.038,31.727c0-1.497-1.262-6.002-5.922-6.002c-4.664,0-5.289,4.25-5.289,7.263
+				c0,2.865,0.24,6.877,6.045,6.75C68.667,39.611,68.038,33.233,68.038,31.727z M52.542,26.476c3.91,0.498,6.42-3.629,6.92-6.759
+				c0.509-3.123-2.01-6.752-4.779-7.383c-2.774-0.623-6.229,3.77-6.549,6.634C47.763,22.477,48.646,25.977,52.542,26.476z
+				 M39.955,25.983c2.919,0,5.284-3.332,5.284-7.448c0-4.121-2.365-7.451-5.284-7.451c-2.923,0-5.292,3.33-5.292,7.451
+				C34.663,22.651,37.032,25.983,39.955,25.983z M30.127,36.485c5.289-1.125,4.57-7.392,4.41-8.761
+				c-0.256-2.11-2.766-5.794-6.168-5.504c-4.288,0.376-4.911,6.51-4.911,6.51C22.876,31.559,24.847,37.613,30.127,36.485z"/>
+			<path fill="#FFFFFF" d="M40.836,52.226h-2.772c0,0-1.928-0.095-2.52-2.301c-0.301-0.977,0.048-2.105,0.202-2.542
+				c0.146-0.443,0.785-1.471,2.125-1.869h2.965V52.226z M40.886,38.417v4.458h-3.659c0,0-3.663,0.291-4.944,4.408
+				c-0.447,2.743,0.391,4.356,0.541,4.703c0.147,0.344,1.333,2.354,4.302,2.937h6.881V38.461L40.886,38.417z"/>
+			<path fill="#FFFFFF" d="M45.692,43.264v8.671c0,0,0.143,2.156,3.215,2.944h7.917V43.264h-3.418v8.723h-3.266
+				c0,0-1.041-0.15-1.233-0.981v-7.794L45.692,43.264z"/>
+		</g>
+	</g>
+</switch>
+<i:pgf  id="adobe_illustrator_pgf">
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	O0aVZtUAM9vL7Q55Fck+fi2gSJZf4gNdXPYiWX6JpazVcKOCimT5JWlG14YMpiCaK/6v3WKq7ltQ
+kezdoopk7xZSJHu3qCLZO9YXXdtzB2llZO4XXdtSIBjzl8h0nnWPF12jorAbf43GnNprq8ubM1fI
+uyiPUGssuUKzFuUZa0N18BdTlGdsT1d6ymKL8mb1PacsyqME7xddlBfyf8XEoorysCcdaDQyWIyu
+NyTbhAJ2cS25EPj2e2Qvz/D2e7qd1hot6JVwOtEWFHjGZXS0FzJOb9mUUvSQJjWeSWYNOcrpAsIl
+gW8eRqWQhg60JLSfugiQbjCmALYw0679kxEsOwldpefJ1fo64BtER2+RZP+yEUncPh+ie92fAU0k
+eZI/jICDU0Kf6trF7/BnD13GfhJJHFyV0B90ZWl+xVzVNceg9U+2OjR1xK+q9sitvexOWhIKee8C
+uK2lNb+yu1SSZBpnsV98S3i7JKWGrSgMXUb+QCu7++F3hd7PgGK/1+81KlZ0GXmbhrXjVREWsu4p
+LNaI6TrK7tDt3CZW57Vy6HZuc67OK/TqfsV+QORterEfV85z3ylYM8srV5/CM73Yr+5b7DeS6Fgr
+iZdbKlZ04+57iFbstxVJ+WGtrlOxqqObnYgDa8gq9sssR/aekte2pVXyBn78SV+MWOlH55Ol3/Pk
+s2/LIKZ0zSx/PR/enweClN917tOVKap6ety3TFQjnmYEdaLutzOWJ/Tbohjye13Grccp08NB0D0H
+bMVFmGgX62VKnGrKO9CoKTO0jC56cZHdQGasOHRHB+e+Xo8YkxmLsmTawq7Xmzlsd8CeiRmQZ4Nu
+itugOmUeuYN+d+G5s7WDwnbT3axHnWEo4C685GJm6GGqz1wVu0nPYTWCKcyED8zRZt83mwF3UHim
+1jrqie1VfbpTuMjCvvljNkyFfV5eglfYbs7CPtvk9Ko+bxt6rsI+ryiildS3sMI+u6A6NN6iuOjC
+PurbeRZb2EcJdy+6sG/Ol5mwFvYFZEIuqrDP65zH8xR3vsI+srNR1Uc9WJm9sM8rJBMi39e5mMI+
+L2Eb+rbwwj6md3TNX9hndCar+ryOV+cs7PNSTmTi2IIK+7zGZB19L6ywz6uqj8zoWlBhn9ca6vtm
+kYV99MPihRb2MdzAvIjCvtmINnVhny/RFlfYx1TmM39hH3ul11yFfV42KelJL6iwzwuAmWezuMI+
+r8MWLdC10MI+EoDrJaeLK+zzKmOjHKzMU9jnVdVH1zczF/Z5kcM7qj5XYZ9XVZ+xPX1d1+kK+7ym
+ZJrqNHsVDUue20fEByujVsp+dns85Tun6Hea9SMON2rmmj7Pbe9jcizoFj9fk2Nxt/h5XeHnNjkY
+SbU+TZQlRu4bJ6mCrQ1GPnhnuRfXNiz6mHyFgleCv8+wpirXJcbkTBlBwwqyCljHJE8pbPxIVZUe
+WYUNqVHsLtP22OkyodKuoMRud8zM0/d03f83S/Gc7fI/7zwbVnud+fK/0LfgSPPnydyX/4XQBYKB
+9/+x1PT55lww5kPPe/mfYaf53/839+V/0wUhZ778zyMI6XH/31T1Ul6X/4UcLzz3vv9v6uOnU0d0
+ITTTO7rAaKW/DGvaGg9x9ybLUJDLUNyE6wimyTimTS7mPznjjCCwps87w3G67G5YeN/SJtaaPqrE
+dSTABNU7slTlBpXHnfomN06TpIYqHm3GNZWh/e4bI0uamo11V0lTs+HkiFDAW61oB0aoVtEe3psx
+Jf7ic2GpVrgKb2GpVhefrKlW/tUhzcasN2eGHIWYsei8SgdD2QhkAUZA0x3sUBLHEKDEQuaVZCtg
+ZkgcQ9ACktnI41WGat+Y+zjl/nqRrzcEaHPc++xKIr9mFGykMqNSs7MmpNnWhnQ2fSyLdfy2aWcJ
+xcZ+wS93cIpgYeV2wGDXBxfGgL4LuCCJIapvRgcBGpMkYbnccfThTIycSQq4Xus8eyHmnDaGAcU3
+fXQaQIt4jQEGNPMN3xYUo46AejQ3VVosStDgvEIHMx8Wr3u8gxkVBZY8aTh98H6me//cmSmOq/9m
+3I8mKGF6mTb7vX9Mpvr89/6FzELMBexH+r1/07m4M9/751Jrzqv/Zp8XuRlD9PsIGKpTmO/9IwPE
+vrUbs937x/r6dlSCdcXwEqKAsjCMZlHVvndU4ydkvkWRvdr3bnrf2yujC2i+gGpffilpld6HZn5H
+FwbEGvzyy+jSAC2iwBTVESyg2hcA+RyKJIpRy4ZmqaVCtwgGVt97FVJZlo1zPzZU936EttnCYK48
+G1Qo90B9E87elIVUhSjvp9aotVQUajZUf++eqL9hcPAB2mzevef2bKhM8W2GQqpCNLMw3xNW8zbg
+1nG770kRYve+9cQsFqMt/ICGxXiLHpPFKBTv60lsMdrRODM+ZvXgWiOHjHLkckxZd1tnuAzT/c57
+v8q0D3+/KeDEx0m0L4ZKWabLMIv341WHZTNz3W2d6dVazBcIznMZpvWKCXRP36LqbmFMHkW3RA4U
+c92tZc2jXN7qyAOhbhOiUqnIxukmOpPGBYOoyrAWSTQ615GN6/0M+nSh1xmeNmQuff+R1RXR9uCD
+JJoRi7KXb0UdlXl6KYl5NV2aI6lqq8wbra8MhqTms11NF22tXH3QLv97BDR+JYHPnoWIeo1cMXNO
+wZpZXumLmw2bf2MvCXz2wVqJyHSslYpaN7E66wEBzfJXZvJIq5HzqczLXe6RNyzaa+Tim70boh4w
+pN0eRxB5Y+9uY0i7EK/uV5n3xlGxon1TfjqilT9mllc/0rctGtam3+V/XMEe6HKWBL6dLFOxRh6X
+Mzc0CieoWAENTPd4zbG0aI8mMX78ySgJnXSY+p0vK45+uiJwdV06344wgFQnjY9VQnGiWbvMUdjB
+hrCBnyeijgiMn391fuWh/ujZmSHtkrpPx4mSFXNly5Ci3y42dBpQwdlI9LKovYCcOd0jYBhWQG69
+/1kZoQgeDuZO3DLH5ExkpUVuGUqFNvYvIqzLp60NlVTrLDlujOVx0yVu+ZTHxaljMuNp7Fy1mZh+
+hp7hblRsx5obGjSmVOC+YS8ADMwBC31bZRyWZ3x5pn3jlwZ2fuOdh+twwOuJvlNuodh0KKCgjE10
+1RP0im32yO3h3LEwgmjPh4s6BK8nlxyTm+WY6HD6V+x6Oez1xJCb9yWUqFCO8K6NWOcMU5omIk3P
+UkUliXO/XRcIw163FujVIGj0HDCmeJqjlNf9vrsyQx0vo7BpLt1TXyQ0rSddnucM3VX7ZxOnznSe
+6V7UVfZ98T8RzAnpxX7BEZi4OyOhUwl8M4RupBAOO7XOLke/0Zi1oM04kHRFOOe4qc7j9RCE6Jyy
+BIr1SlxDdPoMa7x7QtNygaa68741u/ifoS7RLEpcYXi/AHNdYj/gKhuvNfTOGqowlAqxc0Sl1g8F
+XbMzBTSfi4T0fIFpoNm1zLxEC6ommmJgDefVyHNB8zkBnYFoClVauKqY7YfFs5ckspqNZv3NbCWJ
+5Pb0q0ckzwhmKElkrUe0mYPTlySy1iNqCf4zlyQGOVnU+6SnK0lkrUf0y7mlrNIsFw06sx+mLEn0
+JKmHBAnRK71YShKD3UPn8epMJYms9YgUT1ofkXteM15WaEmBP+llhSFKkeyCLyv0Dz8s7LLC0DdW
++THXZYV2mfYnu6zQcSD5p7qsUFsbn2Et5rJCLUWRuVh51ssKrcz7P+llhR7hBzwsH7taG05AxbLj
+tsOQda3bAt5qRb3tcLpsO58LD6d+q9VsFx5SJqffdjhXai954eHsOVBTXXjof9thUBCS+cJD/6hF
+KPCtVowXHjLUey7iwkODQN5BDxdDz3rhof9th4bjMfeFh1MVlC0oJ9J126GXvpnpwkP/yYXo93tO
+d+EhbSQRbgGXn1gXHvpPCZ9GLeLCQ78dPDwN+b++nZ02DNl2i7jw0H8b66b6/Bce+ms+uxs1x4WH
+1om5122Hbv9mxgsP/fOyzLTreS889E27rmEpsIgLDxdSkR984eFU9xTOfuEhCcU3o2u+Cw9dUGzF
+vCGfItmpLjz0P48JaRcIzn/hIb06Bt12SJwRzFut5nfboSXT5rzw0PecJ+44wpv9wkP/FG/vyO0M
+Fx567H3itkNTdM5ecnHDcFZmSYE5LzxklgLzXXhoFkd63nboiNnMfuHh1HVrykwXHnpCcb5Ic/4L
+D92uMHnazJLay3ThoX8OrT1yO8eFh/5vHgkZV4fNe+Hhju9thyGzaGnOCw/9z67paQlTXnhIWVf9
+tsM5TXXrwsN5y7EZLzwMdHEXc+Gh/22HDrU25YWHLFcU+hTJznDhIb00GGV/6Ptm/gsPveq1rJWY
+Q6bZLzz0N37MmM28Fx76Gz9G9sPcFx4aBPe+7XC66KDPhYdT1uLOeuGh/22HPhUr0114OGtGl8eF
+h7OX6qMk8oVceGjtR6/bDrWMrgVceBj3ve1Qy+hawIWHXqaB5Y9rRFvAhYf+3r1GtAVceGgMzPu2
+Q9ZYZ+CFh7P6nlNeeEirkNRuO1xMiiIak+9thyHy1frzXHjobzEaKYpzX3joX6TrpaRnuvCQQk39
+tkN/O22KCw/9s4/tlk3QW7h8Ljyc3rKZ6cJDymo2XJn3ftAoG7XuqwOdeZ2LuPDQX1dYwXtTXbhf
+sFyCtjd6wbm2g91pJEOHZfMS4zwiwg9+EeGAfH97EWXZIdM0slghr5fVnk0AIFPOTFnWxLROhBih
+R3fki4FFUndyEqrCO8olI2uTw7viXQTaakO9f0Mpqeq2UNy5eapHI6v9rBRZL3DlyMagdhkRCrWz
++GavUIzvbKt78ZvT93Xu8PtQ5Mr5wz2u/PSEagq5SmJyxVWzxQeu+vCjzZ1tjFJcbXNd5mqN3SJ3
+87PV4W7X++/cbZX/4m6HJyvc3W7rgHs6/zjlnsape65xnOxzLxtXq9zL1nNMVb8n19XR/lNGHQ3W
+jtVJYYxu+R0tD4uvKbGam+jVpm+Di53MeuTsprgqZKPNdeVi+fbH9c5KX02X1wSp8X39pVbILV2f
+tJPx6/LF+s7llpKJm0WJ60fK42EyW137CcsSL6PqO/Tuh4jafUqvnnfPrrAz4CEAyJLXWLeXj8R7
+0qXtgkx03aYUq8e3tpIFB70wsRDRMEVgzmvcy1n00jFdx1zjm20Jfs7t7nDl67syV1keXKij3F0H
+17aa5arX8e10El/VuWRWSB4e/kyro8fBJmpedhj02m6xttHO9pAwhzUbQ4/SVvPkmY6NEiH94s3I
+RlM+3c1NUj+PrrYOWrvnn8kiwmod8K1ptosy3svhddj/HFRH+6d3d8/xg8TqpBw9Oj4G3/PzsdyI
+PZzClq3LyLZYQRIkoTH0clJzmXbkxxH6mtZFrXy0bn6KohsLeygghO4LOtrQaoxBNSfQ14T+tZRK
+oa8p82fp+OHtPWJoNKJHcfd2WCx1m2meS+9IUXOoT1wnGi0YDwob1gP+8LmwZTzYSw==
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	1QaNwJ4ykpWoWx4ZMyB9Mjm0K6BFgG0ELbkUD1aERj8B+FvQGuUMJ+N15ERd7Mq5LGIASROaqCWf
+y4jaD80Z6I1Vr2lVMTWwOsMPc7JGOy4nalM222CeoOqqGk9mhUzG3gbaLoMkPxovbDS0ytkcojta
+bj6Tw1RAOkSU85g0UhY0DNIFfFYU8YByGWQpIHUkYErpegYrn7wmOVAjn8mjOYOIlmVEPsTonIDp
+kkF6F8l4OZvFxo8E7CpzmZzVWCUb0URhaUzSkLOvmnyCeQTpHj4vSHiGgpjB5LEa0WAzsmbBcIgE
+Mh4Z8KSAhY7EIdUJg8Aq8NaQ5hLRWCUbDSRVTQbn0QbzbjTIhBuB1+GPoxHYMJ/XGjMZiSfHA0Il
+L2vjMRsRllyeN6Zin7RGFSBKPhyNhdF1ndWibriDHY9N62QSN4iaJV9SB0Pw3ScjRe2AuRVOoyf9
+AWo+a6ofo/BHf/BrP9wfjMP/1GZ2T/D/NSs7XHEaTob1DCvpYT+LUjaFbFugAuZigTO/wgRq0CJn
+UIss6R20r0LW7EDOcGIAhFUlAWpfSYCiZAMIm5IGUJJFEqCUcwKUMCgToP41CKA5ZQ0gOWUNgjll
+/StlyuTnfxbuvuorCkusr+fq6kXzTblWm90ectTeRs1flHCzD8vYHCtDeBR+U5XReKAq4dH74FfU
+gn5k/gDcvvNy6Nv/AfM48J4=
+	]]>
+</i:pgf>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/common/resources/bing_logo.svg	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,906 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+	<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+	<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+	<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+	<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+	<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="88px" height="88px"
+	 viewBox="0 0 88 88" enable-background="new 0 0 88 88" xml:space="preserve">
+<switch>
+	<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+		<i:pgfRef  xlink:href="#adobe_illustrator_pgf">
+		</i:pgfRef>
+	</foreignObject>
+	<g i:extraneous="self">
+		<g id="Layer_2">
+			<rect x="-0.167" y="0.167" fill="#FFFFFF" stroke="#CCCCCC" width="88.333" height="88.333"/>
+		</g>
+		<g id="Layer_1">
+			<path fill="#FFA615" d="M59.229,45.021c0,6.426-6.864,11.609-15.312,11.609c-8.466,0-15.312-5.184-15.312-11.609
+				c0-6.417,6.846-11.625,15.312-11.625C52.365,33.396,59.229,38.605,59.229,45.021z"/>
+			<path fill="#006DD4" d="M43.918,71.541c19.541,0,35.369-11.881,35.369-26.523c0-14.661-15.828-26.53-35.369-26.53
+				c-19.541,0-35.369,11.869-35.369,26.53C8.549,59.66,24.377,71.541,43.918,71.541z M43.918,65.168
+				c-13.583,0-24.584-9.023-24.584-20.15c0-11.143,11.001-20.166,24.584-20.166c13.583,0,24.584,9.023,24.584,20.166
+				C68.502,56.145,57.501,65.168,43.918,65.168z"/>
+		</g>
+	</g>
+</switch>
+<i:pgf  id="adobe_illustrator_pgf">
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	AR0twp8kOLmEpHsynq2yNBjrEtplRtqUfhCJTO+jZnYUK4DR2zIyZFBzjo5TR0IB8zKqIyT8RzAn
+FRwKJ4NUuiOC3vpMoQ5Z1vlcJMY1RVlIJWa+2hTPeMFaqzFv2vkjuBpgkh4h7NIKH+DsWxhXunMc
+VCGo+Q53EJItMfiLqmzHStjgT5rmJKXJYGNTkJJ9R8BVnUlOyxif8oApPEYwhy5B91QQ7hrVL4m9
+Pi0GOCnSBBBzjjpqhcuEePJjvLYhcKmYdDe2AuY4gJY3hUKDVebK9LbmNjTs6BPYclbYmJiW31yu
+giJcjaQkPunWEHViKhcjM0TUf7T5eTmGjsSUXWXayKI5wJZX2hBsUluLyRZ5Mbo75uW9vmX/2WCw
+muKeJvmugLdWtUsTRcO1hQNegDnmLpwrLAWrdWJSNCk3W+1xI8Pb8pIbD29afKN7kzF1HG+Cy80l
+KHmqMWjblNjJuhsPJbM6/xqnVhdPms0igh5Bwr3PHgQtnDKoSkd8eMDAKVO6Ic13xKPeqxoVwFgl
+NWvYnCOY4jwyQUIBU46qBBoxugBm9SJL2Ahm9tL6dKIQc3jsNDS1hqW2My0sKnXVArRZR+5M+Y+S
+sC389cB5SASzpErmH0FNK4svJxRqrr7nfuiAurT85znljaAve4zzRigAnuIhPRKGcar3F1ljvQ6g
+E7XhpeqIQNo0ypR1rxBTCBpMRM5oIUgb3PLkEAp1UH+yspkAZTDFA2EXGM8t9OoScBksgRbDttwJ
+oRCSYyupP6GQskS8u4VAcgFFGaW4G3FxzwtehrRWCG3gIIdKRbkPPpcTIEw5cWF7q8/TaC/3Iadz
+Qw6IAM9zudEt4YA3aX20mLZBvleA1J8ECFa2KsTuIgG9sdUVYSoQOUlvDGlxUFQdUtaVJ17VNlo1
+S2CNiwyj9zyPxxPoMkFrdCRyPoAyWiPtGq0icS/YKaHuJjUnUSiA4KXpbDN1QSAbXZ1XeCqBimmS
+PHiTTa4orvomAi7NWKMy0qRyoZQxRDDW2tbCaFITmhQgs2nAmytNGkUJyWyZHW2zq0OVzmpxYpUo
+KFFZn6L7jAoCLeq97/mIToy+zMqcimnZy3fGAQJWW2l9mjjqFs2b+t6tyh0aQp0mVjepEK7Lrk7X
+SYhsTKqFE4NEoeCjKSjQtjQZd5lsLdbvJ9WiBGjbPjehkIU2OUvgNvGCEYF5uotrCGBVq6PepLQ4
+4jalUIJkqGyb1qFwoUChqFLX5FDVUiZVdYjWpSCsNl7nA0bL6gzIqh2Cscg+arfqKhV+OC2TQ5CN
+hOewUyCnuiZokRHCPpNkIOfsgmT3atlwmocvPe0kiyslM+XLcw6tzt6CL5M8xfPugOs9jO5C4Hsl
+Q4OtkqSuL1YqCHdOb9ZCBYTVufe64mKw5lKWYXzKCFAhpr4tLwURbrQk00q6DEFJhXvVR7jJQmoE
+UN83bSZQV07sQJ3tKZ7r6FoxnaquaUeGmqJW8sK14V3xYk+jz5Rd0KRd0yYfqzZc/SDMZGuCr0sC
+ri4SUk55npDWBRAHPayztOLEVI1rpKnTQdpmuThUepc8mVp2b3LvMCxj0JhsEr1gmmrwxfIIEZbI
+wfNug5OEp6hG8//0tnrJKawt75fKZj1Rzl6dFEIYrWeVpmnfglR/edb5iUATtG9W0v9UfBm9ekLs
+/CHVlEduU/SD9QxpHVAWB4lq2+rbHPvyVCahmqIUdyxbVOHR/CdVGanPLTWxRmsDuLc2FG0ogv+g
+pQaGShdSiIz5kYRrYaBLnp6WubFVzG2marLIicpkfvDmxul6umSa8JZUVxi5kBLBNtWPlQKPBYKa
+yHCBLTY206iHI+v/CNLmjzScQsClRFMxci55Q44zugj6ImNXCk+Zlo+yYkFqRHWEwa0NfKcuxGEg
+nuJ/Gl1V35TzlNfJorfnQWTQVUYoFGkXopD0FxfGIEh7YbuT3vOCREwRSaJAJ6uIm5S6bHIumasX
+qWEuJTHS2jLdnHwJzTiQR6yeqabqVZ1mMFHQfK3TehsEtdYbVwO1XY1RsXaFNABeJV+vFjWOujSk
+7AxH8PgqrwG4bjYluDWJAO3QYbBJ6R3VwBgMJPciL4/AzVqiJJVjAjq1cVwTw1hQlZFXEpGwrFR5
+XgE4UbwKVodYd3oTrgW+njNnQkRWs/2BF0SX9mQfQXqdFhij3SqoNpUaGA3MkKpkT9WfqTGqUt40
+qeYUcXXUkqHH46zawsWRt0fNEFFaNLcqrULr/gNsU0qpRVmXQKptipNiW/SrScmJpNLxdU3K/AQW
+sIYXUXlGpCp6xHOaSGpsEaythqFpRjTF3Mm1M4g3KeRMprtJqwHiFCCIKzzKWZMTc4ibbJh4WayO
+fLBAxzBF3jwmkp+c6zryd/50DUBTrNm0kirD7qZp4mMbcyd8q8G0kYQSgBAfpyRtBpOCLJZhkD2+
+Sksa0SeeaemXuOeI4aJ85HIwWxBwMRW2cx0UtStqKa3GOQCqIZeNIYmCOo6pUo0o5MoKSS4i6LSy
+otRNDbOP8brSYdO6tlROg2D2tahSIg1F8KmeIIomi1xpKuayUgrOp8jShEIaWqO6RSqYIYjhbGdX
+plvevccGLBu7trDkFEAB6KpyiaBhQ+OqwiQVOVagkJdD+XAKAhuTLGCU2dqmXBtGGinXhhSk2M2n
+1TC8ORWUadCLYJuSQ1WlbcDDX2POXXE9ATY4tktaHruW8u2kznMbvKbEZNhcmc3UKgUEjdbj0ppz
+aoLPZk1yKK4q6l5V5eCdVdqqlIs18GChyieJZMPocsShtZOI5QoiCk2EAJ0lqm6SLKo4y1O34305
+y8faCYUkDbjDXRfHB/w77aWOqUKSQeu0bNInS0sb6VNhtaQukEDQKamRvJNSeW5n9uZd9jZr1lgn
+iudMFJ05hyBJcSqs5snucIKmZfGUEsR7m0aLztO+FLrd6Qt9VLq5CFsXyxEM2jdKWSTCubrWi+Z2
+sujILRPfDe90WmRP5zIkCq7RvhlZEMHjD6wWFFOdPYNtKs6lcvhEIRp9HTVYOudTpVwt570QSPWW
+fDMbbMBal1zurCERr7WIinJUQjgkkZTNIxk3MXWRvXQX+MjLmCrVGXSNVuPSiXrpjbHWXWoxVQIi
+HrzuCqqkPgSI5AJ0E7R7EEClDSguFoRTla5UFSOo2bpUKIwgYEqhMgUFVeFYrC6Ts+SmbDahxjqV
+btqSkyjkAp5K9CS2IWidr5GVDmyDZy1nObBOFLRc1GryB5sgxslyDlvAYNKNbVsQkOoZy8slIiee
+c82WT7xhUOsAbJmUcp5PquLX+VanTGt0uyZlUlRclbt5JyLhXjdwpte5tFPO6p4bmhqyF6zbBrR0
+uv6mBR+uTtvqLO8GEUUjuynTviwE6QTFWGwjQBDiZmmt4V0LpDaM7jXJRbd0c9SFWIqKBQw6kakI
+VTSXLOrhnaZoA53hxa8TC43qz6X9DS4rUK+7JtOpoKKZnS2GWKaKbBxlIqorSzBJuuXkLIPZtQIr
+olbaZgVo0p6DAqzYgjKYHSPEG90VSuH6STKRaQdoil/R8Frd7KkRXsunnXDbXCisdMENZ5OjKxGD
+HgtDIB1Hy3dWdeH2Va2pC8pPOGQxiUKb4/VGZdLlpS+MwbxuKoa5oIUSFOzq7EyUJR0Yix3IHC7r
+RuiYa07rcibqwp66KUw2atYgiJm2vOEn5R00I2/TIiAp6UrkvVZXrE6OiWUPL6eMos4ZOhMqJdRo
+x3bEvegtl7hgPq1RHSGVIZgrlIpG4WTKFTbpfVq1gtnGqnE666OmIMG26axNmzI49aoDqsXCAFa2
+kdGsNSjEYx+D9i1XaGFaWbJINqXDME8u2+/wbAZOcmBK3nplmcvrpjE5KIaj1Ce8GOR8UFamtTrN
+s0tpbl6cFFfXsnMvWX2X6mEML+Q+4WVar8NZSf2DxdNyajktIKd7LM7hRlpBiZITxTWUtalC1Bo+
+6FQ4IYvFeESJUcI5I4fr257ZqceqEKjyY5JjaOV7evnOYjGmSiVWlk+OFlDSmyathsIIhSBcKzQ+
+VTZYwel4UwbVKzQcYj+Ragn2rQ0XRiQKuoPIpG9fYpz6L52WQhsEowiQRhNIWZIqtlztwmIOcQEN
+JyQZzNPIyEw2MW3OM8Waimk4jGcCEoiakBLFJuX98Uge2Q9cHM3KeBNl5HTRnc5g5SYY3t/JoJGt
+niYfeUSFPaFSCrpGSaVBba2SloqYNJwojmdmvFLGBwkZi+KkLoXKJTlL2o8qoXQK0ILDe8jWtQ4m
+1ekJhTpt2DfJEBibjE4hJnLYfhI+IVClFWSTnIgqsqskjNS6YDrxh7Fc6553wshxmVL5GnjJkxum
+VbkhpaQtHyPxhEqpWxeEQq6/xAprCYaN7sBEUIuAaG+xYDQo3IJiI4BP9tvwMRdPuCa9aVS/4HoJ
+g5WrkzAl/Yt4qzMlaCm0S8WIRk5sYbBpGp3FucI619YbruFiUFPEWUwrm3bkFCeZ814CrzOI1h0Z
+BLkQUNemK5smleW9x4mC9+pjWcOLA3hok1eJDEYqrFEzqk+QKzMqy1/YILBUQotGEJFOTdAVZMNn
+UAuFKu28tXlDjpxBzjxzsuEqlu3Ku5LbptADbdoTpFuz0a9rdcOVrv3JcT+JgJ4VYPlcdgGt1U7I
+9tpiz5cpsh2IG8ncyrnfvGtM90fKqYoM5pEodvnSAVFB1Z5uxQqpgNnmfUlynJpo2MZnClqBJmdc
+8W62FF1I9TqCerILHzslz3s+LzB7FCeK6wKF4fU+3i6YQycJEHB3om4PKNQAbVdtdKpQab1sgW5V
+TMnNe0K7w3X10ZRbz3BLvmz7ApwXHegoBql8NGmjctMUUka7WJhCAyG2VwOiu0oRrJSTfFYhnxEh
+W51NPoOO8KZKes/qURdNlkiXzq5oKu1EdrWJcFAZ4WIJOhSjVSGTOIJAqX4zxb4SOvSjUXdAlocr
+PQtXOlzpKSW6acwUhe+Iq0NsdO8EgZJTTr4WUYhJw1a5DXhqsbopdYplCHeVjDGttiS8qXQ80qkm
+ePy+ttlGPkagMWmZwhQuOJ4wQyV50VJxBfMYj+a2Tg23nCOAZws1ysy8jQRxXY4zHOsiaFOuy2ii
+t+IvY1AKRu0NHpykmQaTNoL7Bt11UVxWj1gqD68irSEUfFqyTWF+z+FNf5dznTCb0xRZCGv1zKnA
+Hk0sziii/JHsQLasleTOlOgvKnkQD0bTBbLJAF8X1ZuTOd7ThlFqHlappDpvK9/fw7hPG2Ok8J5y
+zKnQWpsHYKp493mlFynkynJJfhcp4lx1hmDQIkifa0dc3s3vcnKLamW0Er7VDP5SJ1L/6ljU49PZ
+zecJb3QJSBsCUbiWbcgCG4Oa0sDUfC4hWKF8kl7aJJZ4zn2eK26tVntYryszVqy8521bT2SBygYF
+fbHKpo6gT3vPaCmp0SofKc5bbcKoaJ3GdVI4k1qXN2A0qSFVqk2m74d7QlmFNpUZFg==
+	]]>
+	<![CDATA[
+	uxF5UUxXNnQhtUmn5PiDKi1dLbUgN67m737gHuJgnCfcGK0vq7R6onEmVa00CmoVJi3cpvBf11OL
+ihHZ1RK5BslpxchSA3LbckmN12ahT9LoinSV8gd0tDeD4m1TCieXWKflFVQ5qZymksw13ZxqHDSB
+kE9D8Hym9Gi1WUkGaQelrq+QBjxXh7lKhcy01Jg2S1apPJkyDic30NFX4HkJenKaY7/rXPG8Ti37
+WunYhlQ7l8+Y0OxouT+YCAcl4NkXJaoh7yF0esbEUhN0tPAgGN1eWLNff57wNp25oSeWMh715A/6
+6eQGOid6TuMHn8cYPvQ8xlT2gH2DmeSTxkTwZAmkjeIhLRLx472gPt75QjoTScTwUEWwcZabimEB
+JtRxY4J8jCud4E/kQxc7raRoUtdQtZW8F8pq9TWdpJTKQmUdAGvPg1+B8cFYr8IVflmV63ZrCfSq
+ODs0SHmRWrCoNULMt9tGF0WKFi6x7DWyqtKjKSsDBPAHsFm4togca5VRrUEQ74KJDV6ecIw6URdd
+5sGNmAWgfGfBiRLujmSmchOeyby+6/CCfx3V/VJuiSg2/BV6HeaWwliORdmLG/GSzA28wGMTgi5F
+5SGqMEvQuBvnRQk2yecvKPR1M2varjif3yi2P5STqaY/AzxYLuISpCmFBVgOIB5x6mnbeUVlpuBi
+CNPxYKZAjkQhIWU3y7lS9r5mI/UertwkZctvTN1f6el7JnkBli0p8O4kr3Uv1w1zv9OWn5G3oBzP
+Hj8Kn+oA3eajKuxYoc8lR5MkLhUgJr99WoiRx3vBQmFXg+ckYOBVgJmTBmLYjTs7cG+0/GD41Nxf
+oDsG2m2g3VgF//tjzkRShBbxxHZaIDnXXKYUmls9Eoe3X3JzcV1RNhp7rRqxUh9xqindipPbiEtt
+Ne2o5OF3eiYfbZ7ktQpsAgx3IkCHRADsU96f0r+NgK1uocYIjjJauGiBSuxU+yB761B8JD+J+1p5
+Ky7u0/KNbsWVpV4rFX+naqvkSFJbp7VpzOjW5Ohay1umpA1c5mktr9SnXkj1ps0rRKbhohEi66VS
+hY+21zagQhIKMQlJ4PPC+GbKhkU8659qIKUNnG2g3TJB+VAZTQTiTg8rp+3ImVEZ/O3xoxf49b3f
+HF5cHU1Pr6aL+fjij8FfEPvqCR1VCRrz68E3L64upvM3g6+Gw8PT0+vz54urMd789eDPeOu3+E+S
+IZYtqjho6xXZUkerI1zorYsvnYWLaodiuyJctRTAdISLinKq2BUuqoaIYUW6cJEupuUJk6J7k7YX
+i3BRsrONK8JFuWBrusKF+cOuZFH1CLxnWbKortC5rmRRxaSpu5JFoaBxK5KFoaOUl2XJqp0m7grJ
+oiIPEJtlycLMh0p3kizcrOJl1SVJVl1x6u8eJSvp3mrwPaowXLRrGzEelNITy+z4q0pyO9L+Vbmf
+Uka29JdkXqfOcCETW6bcmZtuXm3Jfz9+dIla9/Cd6nCrDarkW5o7aCOSUKR8qpQsoHImliUBT5O/
+KgV9xc1OVydLsiVILRAKGY/pLI5MFnUMnwZetEHB06UcVXmzdqwgusSBU2IQy53nhXD8CCf9+Squ
+O31BcunQBuqxViWaljOTGeSm4ZZuOW8q34xDxdUnBdkOSG04TRIjeEz1Opksrp/Lslpug4JpqkmD
+y5tz1zLZVT4oi+gcS95x0mFRF0+nqZl0/FfqNZ31aCq/zCJcBrBS71Lc7PgraLtkSzCzqMRTXwqy
+uddFGzosKhpc3py7VpBd4QOzqKJppi6OI+2A55o3fMxWx8FBXPbSJwenom99M10HB0HDG1o7Dg5m
+uaHDXQcHQVk2zw4OgZxvKx0chGWdMjs4dDp7rLoODjYh65Xs4FAf+BST7ODgme1UC1U6OAhKsqzj
+4NAB73xOUXZwEDS8BJsdHGID78bpODh0Sj2vDGcHh865l7FMDg4dis/VzB0Hh07Q73g3SFN20Gfv
+hpjQVPWyd0NnJxtTaugVEfkU3k0hWB3vphCs7N0UkpW9m0KyOt5NIVnZuykkK3s3hWR1vJtCtLJ3
+U4hW8m4Kyep4N4VkZe+mkCzxbgqx6ng3hVhl76YQq+zdFGLV8W4KscreTSFW2bspxKrj3ahYZdem
+EKvs2hRi1XFt7kesllwbXAfLkU12bfgbQMKKa1Pc33FtcC1LZ3TuDNYt8npHx7Xpv3m1JV3XBmPZ
+ug2laT9fxcUPQbCVjEzyWKo6yr7w0rnBVuoKSb4Vd0tYs0S0A2bnpsSTH1KQzf5KakHHtSkaW96a
+u1UQXeFBst34HZumVX8x2+4OrkYW10prZY+a45APLOnYbvo+zMYv3Uzn0ddLZEuwsN0Fno1sJluY
+49yGru3ODS5vzl0ryK7wgVn0vpyNR/TlD4v5M5hCVzCLnjwRnHI55SePH/3wjj4zFX/44u/fPZ3O
+gNTjR9+kn3F6fvPL9yc/LM4m9HN35r7no28HX/37fDaHD59AAy+mr66vJpc0h0EBXIyX7zl9O52d
+XUx4ltvBN3+bX+UP8Z+rP95N6MOvTFX9CdTEz/PpKeCqLcp7fxvPruXm36dnV2/ffzcmtOhmaI7c
+/udt6NrbyfTN26v1+6b331fnNujav9fv1b/vr0OHf3t5OHv3dvzSrN2x6Vlh4G7qEt60BYP0x/qD
+9Mf9dWjx6l+T06vh4np+Bk0cLm4RraJ/r0kDwr1Xl+v3tPPQn9fr2ENTsFfXF6+uZ5P56WRtXvHD
+6zIpvereurd2xy4ml9ezDZSs3n9v8xf8h7U792p8OXl6Mfk/1zDWG8zmpcfuq6t27X7Or89/PL0a
+/zbZYCKXz9xXD+eLF1fTq9Nb/Jeio5d0+0/T2SY97Ty0psq6qT/mff3pt3ylxp38VKqeWxr+/lF5
++KplOr9Fgjs+Ad58X3L4YnF9cTr57mL87u30dIP+bdK9++vdbe0surR4N7kYXy0u1u9YfuKeZ9Zo
+cf5ucTm9Wm9ifaJWkHN0ewO+OZq8Hny7j0P3cegncZF2Ng51+zh0H4fuThz6+mIMHvjsh8X0ch+J
+bmEkun5abLsD0fXV7j4Q3QeiD0+z7APRfSC6D0T7GrAlgajb3UB0k65tWyD6xO5iKDqc/DaZvXg7
+Plv8vksLoxsN1sYh6TaGZ2yMKfOwc6b41ez6Ftu6xZHZ+vHK5dXZ0eS3qdTfre/Hl0/ds7vx3fj6
+8nI6ng95RLfPlV9/tM42sBFn92gkNujRBor07B4zABupi23RgYvXry8nV8PPpAnvU0f8SD3dSu2w
+k5I3Q78cq1dPF7PFxV9+f8vR4ro264/ZBhlguf2+unr5bnL64/UtU2aLfY31i5Eury9ej08nL07H
+Gw1f56l7C1Or9bsJA349G18c//vdYj6ZbzCUq0/eW3c37u1oMb+8Gt+lt/nJLQ2TIHCEP2tz7D/r
+s+g/9xgN+036tB25iydmo4H6JDH+p/Jwni2m86sTSY/dW9Z18kIm9YkY+K10ue6W99iWJZZNHZJt
+8Sl33dHaLx49fM2xvnH59ZYcSTk4eO99Sd0GPbrFaez0yGyDb/trvUGP6q3o0QZG6tetslHbYn13
+u8BhNr16Np7eFgVusREeX0yv3p5PrjYYu70x3s6w/g7Z8TtM0/sc3u8nF28myNet9LU21jU7PTqf
+tBX7Qq6P5amZfSHXn7exkMuv37ftyIUe/u3laLGYDS8mk/+sv/T28Iu4NpHC/b6inp7uwr4ic7D+
+0QEX47Pp9Qb80fvvN4DczaK8DXp0tkGP7lEfrd+jbYuEz6az8QZFG1scBX+/uHj3djFbvPljK+Ok
+XVaGu6cCN9jUtSUqcHc3wO5V4JaowCc7WJC8e5pvw71E26D61u/SvrD6cw/Ozh8+scmE2hYdsb4r
+uzU6YgPvfMv8o2qDyGO7DwhZvwh+f0DI+/dq7A8I+UgDdkvtUjlSG27IuN+dGJuYgK2pCtpFU72+
+AG6NqV6/S9tmqg/XXzQbvR3P55PZi8lscrpRNmP1yfvq7fP1F3Pv3NvVJ+/Znh1NL9/NxqeT88n8
+6vvxu600audjILf+Aug2RWvVQK/Byo+m8+Pa3acfN/C+9P4t0K9bYwU3PLF1G6zg+l3a0qTWCDel
+f6+qZvu05CZCty3zaP0Ie2vm0fpd2jZvcoPt45/v/KGHNktfb1Z693o6m21UxTW7R1/mFqejzPvh
+N9NtkO/j2x++YL++WJxvMFx09331an1FdLXYwJ1e3GOP1hfAs9v2d3RWfK/vMWodz34f/7F+x8AI
+XI0vNrMa/MB9dXB9Y1B0M7XhB+rKup1deuy+ujybzifj9TcYnY5np98vzjboZ37ivro4X8zXt3Jj
+/ELg69vLajpDWTxzX528mFBuZf1+np1Nr6a/bdLL9MS9Rkfj+fR8fL9HO2//iY9P4r4e6cGHnKe7
+V4+0QZe2NHWzr0d6uBnuTSbUtuiI3atH2qBL25aW+oK+OneD8yr3FUn7iqTPMmDrO73bVZG0iRHY
+moqkXTTWu1eRtEGXts1Y7yuS+nu7r0h6UEbtS6pIMl9cRdImJmNbrODuVSRt0KUtTWtte0XSJkK3
+LfNo9yqSNujStnmTD7IiaRvWx7axsmqTqbm5trnPkd3uEzs3KeLcj8uOnKKzPcPySVtxny3YqSNU
+D//28ojO3Xm5YTpvTc9rGw3eBlnALTvga7ePy98fILVXhB9BEYa9IpT+rc+JvSLcK8K9ItwVRXh8
+AcjeIdw7hFuuBycox3s1uFeDH6IG9+7g3h3cq8G9Gvxi1WC5/vVyw3KHHdaG63PiS1wD3c+tzedW
+s59b0r/1ObGfW/u5dcPcejb992T2bDb+4+WGW08fclGRrwZ+/QJRHtPnm9SIFo/cVx/3X9G2Mcsu
+JueL244/2J9+tNSv+z79aIOe7Y/VSamC+z5WxwzMt7YaGA//VgP4+y38DP//Fj4Y7Gzp/nR+Nnk9
+nU83WFa6mLybjK+ONpHc4pH76uiaJnNnjky6fIeHJq3d2f2RSX1DuT8y6WEemfTQ3LRd/rbZV7Pb
+NP0W7uHYqFPbtotjn2XZPt2x+RrVthyRsJn+2BKleLo4f7e4BK/5x+tbFMMW65HbBmM3FhdHOpRb
+qT3Wzxn+esvCVjk4eO+95YXW79Et+d9Oj8w9ZhbW79EtFWmdHtVb0aMNzNSv92il7ubBb4sNvpO5
+2kZb/FlO7ryf/OvF9Ort+eRqAx9xb5S3c9HnbgK933R611bsF+c/xeL8hme+PuRs0X5xfr8438Oy
+/eL8n/eL89qv/eL8J9fAuDxvq28308b7Bfn+Ad0vyO+/w2i/IH8nq79fkF889LT4fkF+vyD/cHJ3
++wX5bdIdO7lgfTZ9/fp6g29M2ha9sWm/tk11rJ//FU6MFnOI1eYbdHHlwYffVx6VF5t9/0nnofvq
+4x+T2Wzx+9odnU3fvL2CG56c4tHW6/d1+bl7i9vXt3zXF6/Brd5wTLtPrWn5HprB2Q==
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+</i:pgf>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/common/resources/google_logo.svg	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="88px" height="72px" viewBox="0 0 88 72" xml:space="preserve">
+<path fill="#0066CC" d="M78.046,61.925c0,3.808-3.084,6.892-6.89,6.892H18.724c-3.805,0-6.889-3.084-6.889-6.892V9.491
+	c0-3.805,3.084-6.889,6.889-6.889h52.434c3.807,0,6.891,3.084,6.891,6.889v52.434H78.046z"/>
+<path fill="#FFFFFF" d="M54.366,9.872c1.655,1.371,5.118,4.253,5.118,9.734c0,5.334-3.027,7.858-6.057,10.237
+	c-0.938,0.938-2.021,1.948-2.021,3.533c0,1.586,1.083,2.452,1.875,3.101l2.597,2.019c3.172,2.667,6.057,5.12,6.057,10.095
+	c0,6.777-6.563,13.627-18.962,13.627c-10.453,0-15.502-4.976-15.502-10.311c0-2.597,1.299-6.273,5.555-8.8
+	c4.469-2.736,10.525-3.098,13.769-3.313c-1.01-1.299-2.163-2.669-2.163-4.902c0-1.226,0.361-1.947,0.724-2.812
+	c-0.793,0.069-1.586,0.146-2.31,0.146c-7.642,0-11.967-5.699-11.967-11.322c0-3.314,1.514-6.994,4.614-9.66
+	c4.108-3.389,9.013-3.965,12.903-3.965h14.854l-4.614,2.595L54.366,9.872L54.366,9.872z M49.247,41.884
+	c-0.577-0.071-0.938-0.071-1.656-0.071c-0.647,0-4.545,0.146-7.572,1.154c-1.586,0.576-6.199,2.307-6.199,7.428
+	c0,5.115,4.975,8.793,12.688,8.793c6.924,0,10.602-3.314,10.602-7.783C57.104,47.725,54.729,45.777,49.247,41.884z M51.339,28.187
+	c1.656-1.66,1.804-3.967,1.804-5.265c0-5.19-3.103-13.266-9.086-13.266c-1.873,0-3.893,0.938-5.047,2.381
+	c-1.225,1.514-1.586,3.459-1.586,5.333c0,4.83,2.812,12.835,9.013,12.835C48.236,30.205,50.184,29.34,51.339,28.187z"/>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/common/resources/issearch_icons.qrc	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,8 @@
+<RCC>
+    <qresource prefix="/">
+        <file>google_logo.svg</file>
+        <file>bing_logo.svg</file>
+        <file>baidu_logo.svg</file>
+        <file>yandex_logo.svg</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/common/resources/yandex_logo.svg	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="88px" height="88px" viewBox="0 0 88 88" enable-background="new 0 0 88 88" xml:space="preserve">
+<path fill="#FFFFFF" stroke="#BCBEC0" stroke-width="2" d="M83.223,43.183c0.264,0.461,0.264,1.214,0,1.678L61.998,81.624
+	c-0.27,0.462-0.918,0.836-1.455,0.836H4.947c-0.534,0-0.969-0.434-0.969-0.968l0-74.94c0-0.533,0.436-0.969,0.97-0.969h55.596
+	c0.537,0,1.186,0.377,1.455,0.839L83.223,43.183z"/>
+<path fill="#ED1C24" d="M42.917,17.242h-8.12c-7.973,0-14.736,6.071-14.736,17.854c0,7.071,3.275,12.28,9.111,14.855L18.284,69.657
+	c-0.356,0.65,0,1.144,0.567,1.144h5.056c0.425,0,0.709-0.143,0.852-0.493l9.898-19.357h3.561v19.357
+	c0,0.211,0.213,0.493,0.493,0.493h4.414c0.428,0,0.574-0.211,0.574-0.569V17.958C43.699,17.457,43.412,17.242,42.917,17.242z
+	 M38.218,46.381h-2.992c-4.703,0-9.253-3.427-9.253-11.999c0-8.927,4.267-12.571,8.611-12.571h3.634V46.381z"/>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/eabi/isengineu.def	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,19 @@
+EXPORTS
+	_ZN8IsEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN8IsEngine11qt_metacastEPKc @ 2 NONAME
+	_ZN8IsEngine16PerformWebSearchERK7QString @ 3 NONAME
+	_ZN8IsEngine16SelectedProviderEv @ 4 NONAME
+	_ZN8IsEngine16staticMetaObjectE @ 5 NONAME DATA 16
+	_ZN8IsEngine19SetSelectedProviderEi @ 6 NONAME
+	_ZN8IsEngine19getStaticMetaObjectEv @ 7 NONAME
+	_ZN8IsEngine9ProvidersER5QListI15ServiceProviderE @ 8 NONAME
+	_ZN8IsEngineC1EP7QObject @ 9 NONAME
+	_ZN8IsEngineC2EP7QObject @ 10 NONAME
+	_ZN8IsEngineD0Ev @ 11 NONAME
+	_ZN8IsEngineD1Ev @ 12 NONAME
+	_ZN8IsEngineD2Ev @ 13 NONAME
+	_ZNK8IsEngine10metaObjectEv @ 14 NONAME
+	_ZNK8IsEngine21PerformInDeviceSearchERK7QString @ 15 NONAME
+	_ZTI8IsEngine @ 16 NONAME
+	_ZTV8IsEngine @ 17 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/eabi/isproviderdbmanageru.def	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,21 @@
+EXPORTS
+	_ZN19IsProviderDBManager11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN19IsProviderDBManager11qt_metacastEPKc @ 2 NONAME
+	_ZN19IsProviderDBManager12GetProvidersER5QListI15ServiceProviderE @ 3 NONAME
+	_ZN19IsProviderDBManager12OpenDatabaseEv @ 4 NONAME
+	_ZN19IsProviderDBManager13CloseDatabaseEv @ 5 NONAME
+	_ZN19IsProviderDBManager14GetCountryCodeEv @ 6 NONAME
+	_ZN19IsProviderDBManager14GetCountryListER11QStringList @ 7 NONAME
+	_ZN19IsProviderDBManager16SelectedProviderEv @ 8 NONAME
+	_ZN19IsProviderDBManager16staticMetaObjectE @ 9 NONAME DATA 16
+	_ZN19IsProviderDBManager19SetSelectedProviderEi @ 10 NONAME
+	_ZN19IsProviderDBManager19getStaticMetaObjectEv @ 11 NONAME
+	_ZN19IsProviderDBManagerC1EP7QObject @ 12 NONAME
+	_ZN19IsProviderDBManagerC2EP7QObject @ 13 NONAME
+	_ZN19IsProviderDBManagerD0Ev @ 14 NONAME
+	_ZN19IsProviderDBManagerD1Ev @ 15 NONAME
+	_ZN19IsProviderDBManagerD2Ev @ 16 NONAME
+	_ZNK19IsProviderDBManager10metaObjectEv @ 17 NONAME
+	_ZTI19IsProviderDBManager @ 18 NONAME
+	_ZTV19IsProviderDBManager @ 19 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isengine/inc/isengine.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef ISENGINE_H
+#define ISENGINE_H
+
+#include <qglobal.h>
+#include <QObject>
+#include <QtCore/QStringList.h>
+
+#if defined(ISENGINESERVICES_LIB)
+#  define ISENGINELIB_EXPORT Q_DECL_EXPORT
+#else
+#  define ISENGINELIB_EXPORT Q_DECL_IMPORT
+#endif
+
+class ServiceProvider;
+class IsProviderDBManager;
+
+/*!
+ * Internet Search Engine
+ *
+ */
+class ISENGINELIB_EXPORT IsEngine : public QObject
+{
+    Q_OBJECT
+
+    
+public:
+	IsEngine( QObject *parent = 0 );
+	~IsEngine();
+
+	ServiceProvider* SelectedProvider();
+	bool SetSelectedProvider(const int providerId);
+    bool Providers(QList<ServiceProvider>& providers);
+    void PerformWebSearch(const QString& searchParam);
+    void PerformInDeviceSearch(const QString& searchParam) const;
+	
+private:
+	/*!< Provider database handler*/
+	IsProviderDBManager* m_dbHandler;
+    /*!< Activity manager*/
+    QObject *m_activityManager;
+	
+};
+
+#endif // ISENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isengine/isengine.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+# 
+#
+
+
+TEMPLATE = lib
+TARGET = isengine    
+TARGET.EPOCALLOWDLLDATA = 1
+TARGET.CAPABILITY = CAP_GENERAL_DLL
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+DEFINES += ISENGINESERVICES_LIB
+
+#INCLUDEPATH += . ../inc
+
+QT += sql
+
+symbian {
+    TARGET.UID3 = 0x2000F875
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+    defBlock = \      
+	"$${LITERAL_HASH}if defined(EABI)" 	\
+	"DEFFILE  ../eabi/" 				\
+    "$${LITERAL_HASH}else" 				\
+    "DEFFILE  ../bwins/" 				\
+    "$${LITERAL_HASH}endif"
+	
+	MMP_RULES += defBlock
+}
+
+
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+
+LIBS += -lxqutils -lisproviderdbmanager
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isengine/src/isengine.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,120 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <QDesktopServices>
+#include <xqapplicationmanager.h>
+#include <QUrl>
+#include <qservicemanager.h>
+#include "isengine.h"
+#include "isproviderdbmanager.h"
+QTM_USE_NAMESPACE
+const QString KAppUid = "0x2002C377";
+
+IsEngine::IsEngine(QObject *parent) :
+    QObject(parent), m_activityManager(0)
+    {
+    QServiceManager serviceManager;
+    m_activityManager = serviceManager.loadInterface(
+            "com.nokia.qt.activities.ActivityManager");
+    
+    m_dbHandler = new IsProviderDBManager;
+    }
+
+IsEngine::~IsEngine()
+    {
+    if (m_activityManager)
+        {
+        delete m_activityManager;
+        }
+    
+    delete m_dbHandler; 
+    }
+
+/*!
+ * \brief   Sets selected provider
+ *          Returns false if something goes wrong with the database access
+ */
+bool IsEngine::SetSelectedProvider(const int providerId)
+    {    
+    return m_dbHandler->SetSelectedProvider(providerId);    
+    }
+
+/*!
+ * \brief   Gets selected provider
+ */
+ServiceProvider* IsEngine::SelectedProvider()
+    {    
+    return m_dbHandler->SelectedProvider();    
+    }
+
+/*!
+ * \brief   Gets list of providers allowed in the current country.
+ *          Returns false if something goes wrong with the database access
+ */
+bool IsEngine::Providers(QList<ServiceProvider>& providers)
+    {    
+    return m_dbHandler->GetProviders(providers);    
+    }
+
+/*!
+ * \brief   Performs internet search by creating search url and opening the browser
+ *          with it.
+ */
+void IsEngine::PerformWebSearch(const QString &searchParam)
+    {
+    ServiceProvider* provider = SelectedProvider();
+    
+    if (provider)
+        {
+        QString url;
+        if ( searchParam.length() )
+            {
+            // add search param to url
+            url.append((provider->ProviderUrl().arg(searchParam)));        
+            }
+        else
+            {
+            // search with empty param
+            url.append((provider->ProviderUrl().arg("")));
+            }
+        
+
+        // Launch the browser
+        QDesktopServices::openUrl(QUrl(url));
+        }
+    }
+
+/*!
+ * \brief   Performs in device search
+ * 
+ * \param searchParam a const QString & argument.
+ */
+void IsEngine::PerformInDeviceSearch(const QString &searchParam) const
+    {
+    QUrl url;
+    url.setScheme("appto");
+    url.setHost(KAppUid);
+    url.addQueryItem("activityname", "SearchDeviceQueryView");
+
+    url.addQueryItem("query", searchParam);
+
+    QString debugString = url.toString();
+    bool ok = QMetaObject::invokeMethod(m_activityManager, "launchActivity",
+            Q_ARG(QUrl, url));
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isproviderdbmanager/inc/isproviderdbconstants.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef ISPROVIDERDBCONSTANTS_H_
+#define ISPROVIDERDBCONSTANTS_H_
+
+// Database info
+#ifdef __WINSCW__
+const QString databaseName = "c:\\private\\20022f35\\providerdatabase.sq";
+#else
+const QString databaseName = "z:\\private\\20022f35\\providerdatabase.sq";
+#endif
+const QString connectionName = "providerdatabase.sq";
+const QString databaseType = "QSQLITE";
+
+// SQL Queries
+const QString providerQuery = "SELECT p.ProviderId, Name, Description, Iconpath FROM Providers p INNER JOIN CountryProviderMap map ON p.ProviderId = map.ProviderId JOIN Countries ON map.CountryId = Countries.CountryId WHERE Countries.CountryCode = \'";
+const QString selectedProviderQuery = "SELECT ProviderId, Name, Description, Iconpath, ProviderUrl FROM Providers WHERE Selected = 1";
+const QString resetProviderSelection = "UPDATE Providers SET Selected = 0";
+const QString setSelectedProvider = "UPDATE Providers SET Selected = 1 WHERE ProviderId = ";
+const QString countryQuery = "SELECT Country FROM Countries";
+
+
+#endif /* ISPROVIDERDBCONSTANTS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isproviderdbmanager/inc/isproviderdbmanager.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef ISPROVIDERDBMANAGER_H
+#define ISPROVIDERDBMANAGER_H
+
+#include <qglobal.h>
+#include <QObject>
+#include <QtCore/QStringList.h>
+#include <QSqlDatabase>
+#include "serviceprovider.h"
+
+#if defined(ISPROVIDERDBSERVICES_LIB)
+#define ISPROVIDERDBLIB_EXPORT Q_DECL_EXPORT
+#else
+#define ISPROVIDERDBLIB_EXPORT Q_DECL_IMPORT
+#endif
+
+
+
+class QSqlDatabase;
+
+/*!
+ *
+ *
+ */
+class ISPROVIDERDBLIB_EXPORT IsProviderDBManager : public QObject
+{
+    Q_OBJECT
+    
+public:
+    IsProviderDBManager( QObject *parent = 0 );
+	~IsProviderDBManager();
+
+	bool GetProviders(QList<ServiceProvider>& providers);
+	bool GetCountryList(QStringList& countryList);
+	ServiceProvider* SelectedProvider();
+	bool SetSelectedProvider(int providerId);
+	
+private:
+	bool OpenDatabase();
+	void CloseDatabase();
+	QString GetCountryCode();
+	
+private:
+	QSqlDatabase  m_db;
+};
+
+#endif // ISPROVIDERDBMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isproviderdbmanager/isproviderdbmanager.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+
+TEMPLATE = lib
+TARGET = isproviderdbmanager
+TARGET.CAPABILITY = CAP_GENERAL_DLL
+TARGET.EPOCALLOWDLLDATA = 1
+DEPENDPATH += . inc src
+INCLUDEPATH += . ../common/inc
+CONFIG += hb mobility
+MOBILITY = systeminfo
+DEFINES += ISPROVIDERDBSERVICES_LIB
+
+QT += sql network
+
+RESOURCES += ../common/resources/issearch_icons.qrc
+
+# Input
+HEADERS += inc/isproviderdbmanager.h inc/isproviderdbconstants.h
+SOURCES += src/isproviderdbmanager.cpp
+
+symbian: {
+	
+	TARGET.UID3 = 0xE47ae51a
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+defBlock = \      
+	"$${LITERAL_HASH}if defined(EABI)" 	\
+	"DEFFILE  ../eabi/" 				\
+    "$${LITERAL_HASH}else" 				\
+    "DEFFILE  ../bwins/" 				\
+    "$${LITERAL_HASH}endif"
+	
+	MMP_RULES += defBlock
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/isproviderdbmanager/src/isproviderdbmanager.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,229 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: 
+ *
+ */
+
+#include <QSqlQuery>
+#include <QSqlError>
+#include <qsysteminfo.h>
+using namespace QtMobility;
+#include <QVariant>
+#include <QStringList.h>
+
+#include "isproviderdbmanager.h"
+#include "isproviderdbconstants.h"
+
+
+/*!
+ * \brief Constructor
+ */
+IsProviderDBManager::IsProviderDBManager( QObject *parent ) :  QObject(parent)
+    {    
+    }
+
+/*!
+ * \brief Destructor
+ */
+IsProviderDBManager::~IsProviderDBManager()
+    {
+    }
+
+/*!
+ * \brief Opens the database
+ */
+bool IsProviderDBManager::OpenDatabase()
+    {
+    m_db = QSqlDatabase::addDatabase(databaseType, connectionName);
+    m_db.setDatabaseName(databaseName);
+    
+    if ( !m_db.isValid())
+        {
+        CloseDatabase();
+        return false;
+        }
+    
+    if (!m_db.isOpen())
+        {
+        if (!m_db.open())
+            {
+            CloseDatabase();
+            return false;
+            }
+        }
+    return true;
+    }
+
+/*!
+ * \brief Closes the database
+ */
+void IsProviderDBManager::CloseDatabase()
+    {    
+  //  if (m_db.isValid() && m_db.isOpen())
+  //      {
+        m_db.close();
+   //     }
+    }
+
+/*!
+ * \brief Reads providers allowed in the current country
+ */
+bool IsProviderDBManager::GetProviders(QList<ServiceProvider>& providers)
+    {
+    bool ok = OpenDatabase();
+
+    if (ok)
+        {
+        // Create query that gets providers allowed this country
+        QString queryString(providerQuery);        
+        // get country code and append to query
+        queryString.append(GetCountryCode());
+        queryString.append("\'");
+    
+        QSqlQuery query(QSqlDatabase::database(connectionName));    
+        query.prepare(queryString);
+        query.exec();
+        // read all found providers
+        while (query.next())
+            {
+            ServiceProvider* provider = new ServiceProvider();
+
+            int providerId = query.value(0).toInt();
+            provider->SetId(providerId);
+            
+            QString providerName = query.value(1).toString();
+            provider->SetName(providerName);
+            
+            QString providerDescription = query.value(2).toString();
+            provider->SetDescription(providerDescription);
+
+            HbIcon icon(query.value(3).toString());            
+            provider->SetIcon(icon);
+            
+            QString pluginName = query.value(10).toString();
+            provider->SetPluginName(pluginName);
+            providers.append(*provider);
+            }    
+        }
+    
+    CloseDatabase();
+    
+    return ok;
+    }
+
+/*!
+ * \brief Gets selected provider
+ */
+ServiceProvider* IsProviderDBManager::SelectedProvider()
+    {
+    ServiceProvider* provider = NULL;
+    
+    bool ok = OpenDatabase();
+    if (ok)
+        {
+        // Create query that gets providers allowed this country       
+        QSqlQuery query(QSqlDatabase::database(connectionName));    
+        query.prepare(selectedProviderQuery);
+        query.exec();  
+
+        // read all found providers
+        while (query.next())
+            {
+            provider = new ServiceProvider();
+            
+            int providerId = query.value(0).toInt();
+            provider->SetId(providerId);
+            
+            QString providerName = query.value(1).toString();
+            provider->SetName(providerName);
+            
+            QString providerDescription = query.value(2).toString();
+            provider->SetDescription(providerDescription);
+
+            HbIcon icon(query.value(3).toString());            
+            provider->SetIcon(icon);           
+            
+            QString providerUrl = query.value(4).toString();
+            provider->SetProviderUrl(providerUrl);
+            }    
+        }
+    
+    CloseDatabase();
+    
+    return provider;
+    }
+
+/*!
+ * \brief Sets selected provider
+ */
+bool IsProviderDBManager::SetSelectedProvider(int providerId)
+    {    
+    bool ok = OpenDatabase();
+    if (ok)
+        {
+        // Clear selection status from all providers
+        QSqlQuery query(QSqlDatabase::database(connectionName));    
+        query.prepare(resetProviderSelection);
+        ok = query.exec();
+        
+        if (ok)
+            {
+            // Set selection status to selected provider    
+            QString queryString(setSelectedProvider);
+            queryString.append( QString::number(providerId));        
+       
+            query.clear();
+            query.prepare(queryString);
+            ok = query.exec();        
+            }
+        }
+    
+    CloseDatabase();
+    
+    return ok;
+    }
+
+/*!
+ * \brief Reads country list from database
+ */
+bool IsProviderDBManager::GetCountryList(QStringList& countryList)
+    {
+    bool ok = OpenDatabase();
+    if (ok)
+        {
+        // Create query that gets country list   
+        QSqlQuery query(QSqlDatabase::database(connectionName));    
+        query.prepare(countryQuery);
+        ok = query.exec();
+
+        // read all found providers
+        while (query.next())
+            {
+                countryList << query.value(0).toString();
+            }     
+        }
+    
+    CloseDatabase();   
+    
+    return ok;
+    }
+
+/*!
+ * \brief Return current country code retrieved from system
+ */
+QString IsProviderDBManager::GetCountryCode()
+    {
+    QSystemInfo *sysInfo = new QSystemInfo(this);
+    return "FI";//sysInfo->currentCountryCode();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/onlinesearchproviders.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS = isproviderdbmanager \
+		  isengine 
+
+CONFIG += ordered
+
+symbian: {	
+		BLD_INF_RULES.prj_exports += "rom/issearch.iby CORE_APP_LAYER_IBY_EXPORT_PATH(issearch.iby)"		
+	 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/onlinesearchproviders/rom/issearch.iby	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef ISSEARCH_IBY
+#define ISSEARCH_IBY
+#ifdef FF_SEARCH_SW
+#include <data_caging_paths_for_iby.hrh>
+
+//ENGINE
+file = ABI_DIR\BUILD_DIR\isengine.dll    SHARED_LIB_DIR\isengine.dll
+file = ABI_DIR\BUILD_DIR\isproviderdbmanager.dll    SHARED_LIB_DIR\isproviderdbmanager.dll
+data=ZPRIVATE\20022F35\providerdatabase.sq    private\20022F35\providerdatabase.sq
+data=ZPRIVATE\20022F35\providerdatabase.sq    c:\private\20022F35\providerdatabase.sq
+
+#endif //FF_SEARCH_SW
+#endif // ISSEARCH_IBY
--- a/rom/cpix_app.iby	Wed Jun 23 18:13:49 2010 +0300
+++ b/rom/cpix_app.iby	Tue Jul 06 14:17:22 2010 +0300
@@ -52,6 +52,11 @@
 // Notes plugin
 ECOM_PLUGIN( cpixnotesplugin.dll, cpixnotesplugin.rsc)
 
+// Email plugin
+ECOM_PLUGIN( cpixemailplugin.dll, cpixemailplugin.rsc)
+file=ABI_DIR\BUILD_DIR\qtemailfetcher.dll 	SHARED_LIB_DIR\qtemailfetcher.dll 
+	
+
 data=DATAZ_\private\10202be9\20029ac7.cre       private\10202be9\20029ac7.cre
 
 data=ZSYSTEM\install\cpixsearchapp_stub.sis    System\Install\cpixsearchapp_stub.sis
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  SEARCH project file
+#
+TEMPLATE = subdirs
+
+SUBDIRS  += search_plat \
+            onlinesearchproviders \ 
+	        searchui \
+            harvesterplugins/messaging/email/qtemailfetcher			
+           
+
+CONFIG += ordered
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchplugin_api/inc/onlinesearchplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,121 @@
+ /*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: OnlineSearchPlugin class definition
+ *
+ */
+
+#ifndef ONLINESEARCHPLUGIN_H
+#define ONLINESEARCHPLUGIN_H
+
+#include <QObject>
+
+/**
+ * @ingroup group_onlinesearchpluginmodel
+ * @brief Represents a plugin plugin in the framework.
+ *
+ * OnlineSearchPlugin is an interface through which setting plugin plugin can be 
+ * executed in the search handlers.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+
+class OnlineSearchPlugin : public QObject
+    {
+Q_OBJECT
+public:
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~OnlineSearchPlugin()
+        {
+        }
+
+    /**
+     * Called by the search handlers during initialize cycle of the plugin, it is during
+     * this phase the plugin widget
+     * usually creates its initial view.
+     * Once the initialization is done, pluginInitialized signal must be 
+     * emitted.
+     * @since S60 ?S60_version.
+     */
+    virtual void initializePlugin() = 0;
+
+    /**
+     * Called by the search handlers when the plugin becomes the current plugin.  
+     * @since S60 ?S60_version.
+     */
+    virtual void activatePlugin() = 0;
+    /**
+     * Called by the search handlers when the plugin becomes the current plugin.  
+     * @since S60 ?S60_version.
+     */
+    virtual void activatePlugin(const QString &searchQuery) = 0;
+
+    /**
+     * Called by the search handlers when the plugin is no longer being displayed.  
+     */
+    virtual void deactivatePlugin() = 0;
+
+    /**
+     * Called by the search handlers before the plugin destructor is called.
+     * @param reason The reason why the search handlers is being killed. 
+     */
+    virtual void shutdownPlugin() = 0;    
+
+protected:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     */
+    OnlineSearchPlugin()
+        {
+        }
+
+signals:
+
+    /**
+     * Emit this signal when changing the view inside the plugin.
+     * @param caller The calling plugin plugin instance.
+     * @param viewWidget The new plugin view widget to be shown.
+     */
+    void viewChanged();
+
+    /**
+     * Emit this signal to indicate initialization is done. 
+     * @param caller The calling plugin plugin instance.
+     * @param success True if succeeded, false otherwise.
+     */
+    void pluginInitialized(bool success);
+
+    /**
+     * Emit this signal to indicate that the plugin plugin can be deleted. 
+     * Note that this signal does not need to be emitted if true is returned
+     * from shutdownPlugin.
+     * @param caller The calling plugin plugin instance.
+     */
+    void shutdownCompleted(bool success);
+
+    /**
+     * Called by search handlers when back button is clicked in the plugin view.
+     * In this method the plugin plugin can implement internally showing and
+     * hiding GUI elements if the plugin has multiple 'views'.
+     */
+    void handleBackEvent();
+    };
+
+#endif // ONLINESEARCHPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchplugin_api/inc/onlinesearchpluginfactory.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  OnlineSearchPluginFactory class definition
+ *
+ */
+
+#ifndef ONLINESEARCHPLUGINFACTORY_H
+#define ONLINESEARCHPLUGINFACTORY_H
+
+
+class OnlineSearchPlugin;
+
+/**
+ * @ingroup group_onlinesearchpluginmodel
+ * @brief A factory class through which the wizard plugin can be instantiated.
+ *
+ * OnlineSearchPluginFactory contains a factory method to create a wizard plugin instance.
+ * 
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+
+class OnlineSearchPluginFactory
+{
+public:
+    /**
+     * Instantiates a wizard plugin object.
+     * @return The constructed wizard plugin object.
+     * @since S60 ?S60_version.
+     */    
+	   virtual OnlineSearchPlugin* createPlugin() const = 0;
+};
+
+Q_DECLARE_INTERFACE(OnlineSearchPluginFactory, "com.nokia.search.OnlineSearchPluginFactory/1.0");
+
+#endif // ONLINESEARCHPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchplugin_api/onlinesearchplugin_api.metaxml	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" ?>
+<api id="ece024acf429cde33ecf84e4538a7a32" dataversion="1.0">
+<name>onlinesearchplugin_api</name>
+<description>Online search plugin API for search framework. This is UI plugin for in device search application to launch the user chosen internet search provider. This exposes API based on qt plugin mechanism.</description>
+<type>c++</type>
+<subsystem>search</subsystem>
+<libs></libs>
+<release category="platform" sinceversion="5.0"/>
+<attributes>
+<htmldocprovided>no</htmldocprovided>
+<adaptation>no</adaptation>
+</attributes>
+</api>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchplugin_api/onlinesearchplugin_api.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,18 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+PLATFORM_HEADERS += onlinesearchplugin_api/inc/onlinesearchplugin.h \
+                    onlinesearchplugin_api/inc/onlinesearchpluginfactory.h  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchproviders_api/inc/isengine.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef ISENGINE_H
+#define ISENGINE_H
+
+#include <qglobal.h>
+#include <QObject>
+#include <QtCore/QStringList.h>
+
+#if defined(ISENGINESERVICES_LIB)
+#  define ISENGINELIB_EXPORT Q_DECL_EXPORT
+#else
+#  define ISENGINELIB_EXPORT Q_DECL_IMPORT
+#endif
+
+class ServiceProvider;
+class IsProviderDBManager;
+
+/*!
+ * Internet Search Engine
+ *
+ */
+class ISENGINELIB_EXPORT IsEngine : public QObject
+{
+    Q_OBJECT
+
+    
+public:
+	IsEngine( QObject *parent = 0 );
+	~IsEngine();
+
+	ServiceProvider* SelectedProvider();
+	bool SetSelectedProvider(const int providerId);
+    bool Providers(QList<ServiceProvider>& providers);
+    void PerformWebSearch(const QString& searchParam);
+    void PerformInDeviceSearch(const QString& searchParam) const;
+	
+private:
+	/*!< Provider database handler*/
+	IsProviderDBManager* m_dbHandler;
+    /*!< Activity manager*/
+    QObject *m_activityManager;
+	
+};
+
+#endif // ISENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchproviders_api/inc/isproviderdbmanager.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef ISPROVIDERDBMANAGER_H
+#define ISPROVIDERDBMANAGER_H
+
+#include <qglobal.h>
+#include <QObject>
+#include <QtCore/QStringList.h>
+#include <QSqlDatabase>
+#include "serviceprovider.h"
+
+#if defined(ISPROVIDERDBSERVICES_LIB)
+#define ISPROVIDERDBLIB_EXPORT Q_DECL_EXPORT
+#else
+#define ISPROVIDERDBLIB_EXPORT Q_DECL_IMPORT
+#endif
+
+
+
+class QSqlDatabase;
+
+/*!
+ *
+ *
+ */
+class ISPROVIDERDBLIB_EXPORT IsProviderDBManager : public QObject
+{
+    Q_OBJECT
+    
+public:
+    IsProviderDBManager( QObject *parent = 0 );
+	~IsProviderDBManager();
+
+	bool GetProviders(QList<ServiceProvider>& providers);
+	bool GetCountryList(QStringList& countryList);
+	ServiceProvider* SelectedProvider();
+	bool SetSelectedProvider(int providerId);
+	
+private:
+	bool OpenDatabase();
+	void CloseDatabase();
+	QString GetCountryCode();
+	
+private:
+	QSqlDatabase  m_db;
+};
+
+#endif // ISPROVIDERDBMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchproviders_api/inc/serviceprovider.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef SERVICEPROVIDER_H
+#define SERVICEPROVIDER_H
+
+#include <QList>
+#include <QObject>
+#include <HbIcon>
+
+
+class ServiceProvider
+{
+public:
+    ServiceProvider() {}
+    virtual ~ServiceProvider() {}
+    QString Name() const {return m_name;}
+    void SetName(const QString& aName) { m_name = aName; }
+    int Id() const {return m_providerId;}
+    void SetId(const int providerId) { m_providerId = providerId; }
+    HbIcon Icon() const {return m_icon;}
+    void SetIcon(const HbIcon& icon) { m_icon = icon; }
+    QString Description() const {return m_description;}
+    void SetDescription(const QString& description) { m_description = description; }
+    QString ProviderUrl() const {return m_providerUrl;}
+    void SetProviderUrl(const QString& providerUrl) { m_providerUrl = providerUrl; }
+    QString PluginName() const {return m_pluginName;}
+    void SetPluginName(const QString& pluginName) { m_pluginName = pluginName; }
+    
+private:
+	int m_providerId;
+    QString m_name;
+    HbIcon m_icon;
+    QString m_description;
+    QString m_providerUrl;
+    QString m_pluginName;
+};
+
+#endif  // SERVICEPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchproviders_api/onlinesearchproviders_api.metaxml	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="8bfff0a255f33f33c8272f378eb5e2af" dataversion="2.0">
+  <name>onlinesearchproviders_api</name>
+  <description>This API provides interface to read the internet search providers and a way to set the default user selected internet search provider. The backend implementation uses SQL db to store the list. Each provider entity provide the name, description and suitable icon for display.</description>
+  <type>c++</type>
+  <collection>onlinesearchproviders</collection>
+  <libs>
+    <lib name="isengine.lib"/>
+  </libs>
+  <release category="platform" sinceversion="5.2"/>
+  <attributes>
+    <htmldocprovided>no</htmldocprovided>
+    <adaptation>no</adaptation>
+  </attributes>
+</api>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/onlinesearchproviders_api/onlinesearchproviders_api.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+PLATFORM_HEADERS += onlinesearchproviders_api/inc/serviceprovider.h \
+                    onlinesearchproviders_api/inc/isengine.h \      
+		    onlinesearchproviders_api/inc/isproviderdbmanager.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/search_plat/search_plat.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(onlinesearchplugin_api/onlinesearchplugin_api.pri)
+include(onlinesearchproviders_api/onlinesearchproviders_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "$$filename APP_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
\ No newline at end of file
--- a/searchui/Searchapplication/inc/Search.h	Wed Jun 23 18:13:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  search application main class.
- *
- */
-
-#ifndef SEARCHAPPLICATION_H
-#define SEARCHAPPLICATION_H
-
-#include "search_global.h"
-
-#include <qobject.h>
-
-class QStateMachine;
-
-/**
- * @ingroup group_searchsearchlication
- * @brief Search application main class.
- * 
- * Loads a runtime from a runtime provider plugin. Manages 
- * the runtime execution.
- *
- * @lib ?library
- * @since S60 ?S60_version
- */
-class Search : public QObject
-    {
-Q_OBJECT
-
-public:
-
-    /**
-     * Constructor.
-     * @since S60 ?S60_version.     
-     * @param aParent Parent object.
-     */
-    Search(QObject* aParent = 0);
-
-    /**
-     * Destructor.
-     * @since S60 ?S60_version.     
-     */
-    virtual ~Search();
-
-private:   
-    
-    Q_DISABLE_COPY(Search)
-
-signals:
-
-    /**
-     * Emitted when the search application needs to exit.
-     * @since S60 ?S60_version.     
-     */
-    void exit();
-
-public slots:
-
-    /**
-     * Starts the runtime.
-     * @since S60 ?S60_version. 
-     */
-    void start();
-
-    /**
-     * Stops the runtime.
-     * @since S60 ?S60_version.     
-     */
-    void stop();
-
-private slots:
-
-    /**
-     * Called after the runtime has started.
-     * @since S60 ?S60_version.     
-     */
-    void handleRuntimeStarted();
-
-    /**
-     * Called after the runtime has stopped.
-     * @since S60 ?S60_version.     
-     */
-    void handleRuntimeStopped();
-
-    /**
-     * Called after the runtime has faulted.
-     * @since S60 ?S60_version.     
-     */
-    void handleRuntimeFaulted();
-
-private:
-
-    /**
-     * Runtime.
-     */
-    QStateMachine* mRuntime;
-    };
-
-#endif//SEARCHAPPLICATION_H
--- a/searchui/Searchapplication/src/Search.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Search application main class.
- *
- */
-
-#include "search.h"
-#include <qstatemachine.h>
-#include <searchruntimeprovider.h>
-#include <searchruntime.h>
-
-// ---------------------------------------------------------------------------
-// Search::Search
-// ---------------------------------------------------------------------------
-//
-Search::Search(QObject* aParent) :
-    QObject(aParent), mRuntime(NULL)
-    {
-    SEARCH_FUNC_ENTRY("SEARCH::Search::Search");
-
-    SearchRuntimeProvider *interface = new SearchRuntimeProvider();
-    mRuntime = interface->createPlugin();
-    if (mRuntime)
-        {
-        mRuntime->setParent(this);
-        connect(mRuntime, SIGNAL(started()), SLOT(handleRuntimeStarted()));
-        connect(mRuntime, SIGNAL(stopped()), SLOT(handleRuntimeStopped()));
-        connect(mRuntime, SIGNAL(faulted()), SLOT(handleRuntimeFaulted()));
-        } 
-		SEARCH_FUNC_EXIT("SEARCH::Search::Search");
-    }
-
-// ---------------------------------------------------------------------------
-// Search::~Search()
-// ---------------------------------------------------------------------------
-//
-Search::~Search()
-    {
-    if (mRuntime)
-        {
-        disconnect(mRuntime, SIGNAL(started()), this,
-                SLOT(handleRuntimeStarted()));
-        disconnect(mRuntime, SIGNAL(stopped()), this,
-                SLOT(handleRuntimeStopped()));
-        disconnect(mRuntime, SIGNAL(faulted()), this,
-                SLOT(handleRuntimeFaulted()));
-
-        delete mRuntime;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Search::start()
-// ---------------------------------------------------------------------------
-//
-void Search::start()
-    {
-    SEARCH_FUNC_ENTRY("SEARCH::Search::start");
-
-    if (mRuntime)
-        {
-        mRuntime->start();
-        }
-    else
-        {
-        emit exit();
-        }
-
-    SEARCH_FUNC_EXIT("SEARCH::Search::start");
-    }
-
-// ---------------------------------------------------------------------------
-// Search::stop()
-// ---------------------------------------------------------------------------
-//
-void Search::stop()
-    {
-    SEARCH_FUNC_ENTRY("SEARCH::Search::stop");
-    if (mRuntime)
-        {
-        mRuntime->stop();
-        }
-
-    SEARCH_FUNC_EXIT("SEARCH::Search::stop");
-    }
-
-// ---------------------------------------------------------------------------
-// Search::handleRuntimeStarted()
-// ---------------------------------------------------------------------------
-//
-void Search::handleRuntimeStarted()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Search::handleRuntimeStopped()
-// ---------------------------------------------------------------------------
-//
-void Search::handleRuntimeStopped()
-    {
-    emit exit();
-    }
-
-// ---------------------------------------------------------------------------
-// Search::handleRuntimeFaulted()
-// ---------------------------------------------------------------------------
-//
-void Search::handleRuntimeFaulted()
-    {
-    emit exit();
-    }
--- a/searchui/Searchapplication/src/main.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/Searchapplication/src/main.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -15,7 +15,7 @@
  *
  */
 
-#include "search.h"
+#include "searchapplication.h"
 #include "search_global.h"
 
 #include <QtGui>
@@ -59,7 +59,7 @@
     notesTranslator.load("notes_" + lang, path);
     app.installTranslator(&notesTranslator);
     PERF_APP_LAUNCH_END("Search Component Cunstructions starts");
-    Search search;
+    SearchApplication search;
     PERF_APP_LAUNCH_END("Search Component Cunstructions Ends");
 #ifdef ROM
     QDir::setCurrent("Z:/");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/bwins/searchonlinehandleru.def	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,32 @@
+EXPORTS
+	?getStaticMetaObject@OnlineHandler@@SAABUQMetaObject@@XZ @ 1 NONAME ; struct QMetaObject const & OnlineHandler::getStaticMetaObject(void)
+	?backEventTriggered@OnlineHandler@@IAEXXZ @ 2 NONAME ; void OnlineHandler::backEventTriggered(void)
+	?metaObject@OnlineHandler@@UBEPBUQMetaObject@@XZ @ 3 NONAME ; struct QMetaObject const * OnlineHandler::metaObject(void) const
+	?qt_metacast@OnlineHandler@@UAEPAXPBD@Z @ 4 NONAME ; void * OnlineHandler::qt_metacast(char const *)
+	?pluginShutdown@OnlineHandler@@IAEX_N@Z @ 5 NONAME ; void OnlineHandler::pluginShutdown(bool)
+	?activatePlugin@OnlineHandler@@QAE_NXZ @ 6 NONAME ; bool OnlineHandler::activatePlugin(void)
+	??1OnlineHandler@@UAE@XZ @ 7 NONAME ; OnlineHandler::~OnlineHandler(void)
+	?isShutdownCompleted@OnlineHandler@@QAEX_N@Z @ 8 NONAME ; void OnlineHandler::isShutdownCompleted(bool)
+	??0OnlineHandler@@QAE@PAVQObject@@@Z @ 9 NONAME ; OnlineHandler::OnlineHandler(class QObject *)
+	?loadSearchPlugin@OnlineHandler@@AAEPAVOnlineSearchPlugin@@ABVQString@@@Z @ 10 NONAME ; class OnlineSearchPlugin * OnlineHandler::loadSearchPlugin(class QString const &)
+	?setDefaultProvider@OnlineHandler@@QAEXH@Z @ 11 NONAME ; void OnlineHandler::setDefaultProvider(int)
+	?pluginIntialized@OnlineHandler@@IAEX_N@Z @ 12 NONAME ; void OnlineHandler::pluginIntialized(bool)
+	?defaultProvider@OnlineHandler@@IAEXH@Z @ 13 NONAME ; void OnlineHandler::defaultProvider(int)
+	?backEvent@OnlineHandler@@QAEXXZ @ 14 NONAME ; void OnlineHandler::backEvent(void)
+	?providerDetails@OnlineHandler@@IAEXVQString@@VHbIcon@@H@Z @ 15 NONAME ; void OnlineHandler::providerDetails(class QString, class HbIcon, int)
+	?initializePlugin@OnlineHandler@@QAEXXZ @ 16 NONAME ; void OnlineHandler::initializePlugin(void)
+	?staticMetaObject@OnlineHandler@@2UQMetaObject@@B @ 17 NONAME ; struct QMetaObject const OnlineHandler::staticMetaObject
+	?trUtf8@OnlineHandler@@SA?AVQString@@PBD0@Z @ 18 NONAME ; class QString OnlineHandler::trUtf8(char const *, char const *)
+	?trUtf8@OnlineHandler@@SA?AVQString@@PBD0H@Z @ 19 NONAME ; class QString OnlineHandler::trUtf8(char const *, char const *, int)
+	?readSettings@OnlineHandler@@QAEXXZ @ 20 NONAME ; void OnlineHandler::readSettings(void)
+	?writeSettings@OnlineHandler@@QAEXH@Z @ 21 NONAME ; void OnlineHandler::writeSettings(int)
+	??_EOnlineHandler@@UAE@I@Z @ 22 NONAME ; OnlineHandler::~OnlineHandler(unsigned int)
+	?isPluginIntialized@OnlineHandler@@QAEX_N@Z @ 23 NONAME ; void OnlineHandler::isPluginIntialized(bool)
+	?unloadPluginandExit@OnlineHandler@@QAEXXZ @ 24 NONAME ; void OnlineHandler::unloadPluginandExit(void)
+	?unloadPlugin@OnlineHandler@@QAEXXZ @ 25 NONAME ; void OnlineHandler::unloadPlugin(void)
+	?tr@OnlineHandler@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString OnlineHandler::tr(char const *, char const *, int)
+	?qt_metacall@OnlineHandler@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int OnlineHandler::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?loadISPlugin@OnlineHandler@@QAEXHVQString@@@Z @ 28 NONAME ; void OnlineHandler::loadISPlugin(int, class QString)
+	?tr@OnlineHandler@@SA?AVQString@@PBD0@Z @ 29 NONAME ; class QString OnlineHandler::tr(char const *, char const *)
+	?activatePlugin@OnlineHandler@@QAE_NABVQString@@@Z @ 30 NONAME ; bool OnlineHandler::activatePlugin(class QString const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/eabi/searchonlinehandleru.def	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,32 @@
+EXPORTS
+	_ZN13OnlineHandler11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN13OnlineHandler11qt_metacastEPKc @ 2 NONAME
+	_ZN13OnlineHandler12loadISPluginEi7QString @ 3 NONAME
+	_ZN13OnlineHandler12readSettingsEv @ 4 NONAME
+	_ZN13OnlineHandler12unloadPluginEv @ 5 NONAME
+	_ZN13OnlineHandler13writeSettingsEi @ 6 NONAME
+	_ZN13OnlineHandler14activatePluginERK7QString @ 7 NONAME
+	_ZN13OnlineHandler14activatePluginEv @ 8 NONAME
+	_ZN13OnlineHandler14pluginShutdownEb @ 9 NONAME
+	_ZN13OnlineHandler15defaultProviderEi @ 10 NONAME
+	_ZN13OnlineHandler15providerDetailsE7QString6HbIconi @ 11 NONAME
+	_ZN13OnlineHandler16initializePluginEv @ 12 NONAME
+	_ZN13OnlineHandler16loadSearchPluginERK7QString @ 13 NONAME
+	_ZN13OnlineHandler16pluginIntializedEb @ 14 NONAME
+	_ZN13OnlineHandler16staticMetaObjectE @ 15 NONAME DATA 16
+	_ZN13OnlineHandler18backEventTriggeredEv @ 16 NONAME
+	_ZN13OnlineHandler18isPluginIntializedEb @ 17 NONAME
+	_ZN13OnlineHandler18setDefaultProviderEi @ 18 NONAME
+	_ZN13OnlineHandler19getStaticMetaObjectEv @ 19 NONAME
+	_ZN13OnlineHandler19isShutdownCompletedEb @ 20 NONAME
+	_ZN13OnlineHandler19unloadPluginandExitEv @ 21 NONAME
+	_ZN13OnlineHandler9backEventEv @ 22 NONAME
+	_ZN13OnlineHandlerC1EP7QObject @ 23 NONAME
+	_ZN13OnlineHandlerC2EP7QObject @ 24 NONAME
+	_ZN13OnlineHandlerD0Ev @ 25 NONAME
+	_ZN13OnlineHandlerD1Ev @ 26 NONAME
+	_ZN13OnlineHandlerD2Ev @ 27 NONAME
+	_ZNK13OnlineHandler10metaObjectEv @ 28 NONAME
+	_ZTI13OnlineHandler @ 29 NONAME
+	_ZTV13OnlineHandler @ 30 NONAME
+
--- a/searchui/indevicehandler/tsrc/t_src.pro	Wed Jun 23 18:13:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS  = t_indevicehandler
-           
-CONFIG  += ordered
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/indevicehandler/tsrc/tsrc.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS  = t_indevicehandler
+           
+CONFIG  += ordered
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/inc/onlinehandler.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Onlinehandler.
+ *
+ */
+
+#ifndef ONLINEHANDLER_H
+#define ONLINEHANDLER_H
+
+#include <QObject>
+#include <QVector>
+#include <QDir>
+#include <hbicon.h>
+#include "search_global.h"
+class HbMainWindow;
+class HbView;
+class OnlineSearchPlugin;
+class IsEngine;
+class ServiceProvider;
+class HbIcon;
+
+#ifdef SEARCHONLINEHANDLER_LIB
+#define ONLINEHANDLER_EXPORT Q_DECL_EXPORT
+#else
+#define ONLINEHANDLER_EXPORT Q_DECL_IMPORT
+#endif
+
+SEARCH_CLASS(SearchOnlineHandlerTest)
+/**
+ * @ingroup group_OnlineHandler
+ * @brief Loads and connects onlinesearchprovider plugins
+ *
+ * This service is responsible for loading onlinesearchprovider plugins.
+ *
+ * @since S60 ?S60_version.
+ */
+class ONLINEHANDLER_EXPORT OnlineHandler : public QObject
+    {
+Q_OBJECT
+
+public:
+    /**
+     * Default constructor.
+     *
+     * @since S60 ?S60_version.
+     */
+    OnlineHandler(QObject* = 0);
+
+    /**
+     * Destructor.
+     *
+     * @since S60 ?S60_version.
+     */
+    virtual ~OnlineHandler();
+    void setDefaultProvider(const int);
+
+    void isProvidersAvailable();
+    void initializePlugin();    
+    bool activatePlugin();
+    bool activatePlugin(const QString &str);
+
+    void readSettings();
+    void writeSettings(const int);
+    
+    void loadISPlugin(int id, QString query);
+
+    void unloadPlugin();
+    void unloadPluginandExit();
+public slots:
+    void isPluginIntialized(bool);
+    void isShutdownCompleted(bool);
+    void backEvent();
+
+signals:
+    void providerDetails(QString, HbIcon, int);
+    void defaultProvider(const int);
+    void pluginIntialized(bool);
+    void pluginShutdown(bool);
+    void backEventTriggered();
+private:
+    OnlineSearchPlugin *loadSearchPlugin(const QString &pluginFile);
+
+private:
+    QString mDefaultPluginName;
+    OnlineSearchPlugin *mOnlinePlugin;
+    IsEngine* mEng;
+    ServiceProvider* mCurrentProvider;
+    QList<ServiceProvider> mAvailableProviders;
+    bool mLoadSuggestion;
+    QString mLoadSuggestionLink;
+SEARCH_FRIEND_CLASS    (SearchOnlineHandlerTest)
+    };
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/inc/searchbasepath.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0""
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+
+#ifndef SEARCHBASEPATH_H
+#define SEARCHBASEPATH_H
+
+#ifdef Q_OS_SYMBIAN
+        #define SEARCH_PLUGIN_PATH QString("/resource/qt/plugins/onlinesearch")
+        #define SEARCH_PLUGIN_CONFIG_PATH QString("/resource/qt/plugins/onlinesearch/config")
+#else 
+	#ifdef _DEBUG
+		#define SEARCH_PLUGIN_PATH QString("/onlinesearch/debug/bin")
+		#define SEARCH_PLUGIN_CONFIG_PATH QString("/onlinesearch/debug/bin/config")
+	#else
+		#define SEARCH_PLUGIN_PATH QString("/onlinesearch/release/bin")
+		#define SEARCH_PLUGIN_CONFIG_PATH QString("/onlinesearch/release/bin/config")
+	#endif
+#endif 
+
+#endif /* SEARCHBASEPATH_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/inc/searchutility.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0""
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  
+ *
+ */
+#ifndef SEARCH_UTILITY_H
+#define SEARCH_UTILITY_H
+
+#include <QStringList>
+
+class SearchUtility
+    {
+public:
+    static QStringList drives();
+    static QStringList pluginDirs();
+    static QStringList SearchcfgDirs();
+
+private:
+    SearchUtility();
+    };
+
+#endif //SEARCH_UTILITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/onlinehandler.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  online handler list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+RESOURCES += 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/onlinehandler.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  SEARCH online handler project file
+#
+
+TEMPLATE = lib
+TARGET = searchonlinehandler   
+
+CONFIG += hb    
+CONFIG += console
+
+LIBS += -lhbcore
+LIBS += -lxqsettingsmanager
+LIBS += -lisproviderdbmanager
+LIBS += -lisengine
+   
+QT -= webkit
+QT += xml
+   
+DEFINES += SEARCHONLINEHANDLER_LIB 
+
+DEPENDPATH += ./inc \
+              ./src
+
+INCLUDEPATH += ./inc \
+               ../inc
+
+symbian {
+    TARGET.UID2 = 0x20004C45
+    TARGET.UID3 = 0x2002C37C
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB -DRM
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE 
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE   
+
+defBlock = \      
+	"$${LITERAL_HASH}if defined(EABI)" 	\
+	"DEFFILE  ../eabi/" 				\
+    "$${LITERAL_HASH}else" 				\
+    "DEFFILE  ../bwins/" 				\
+    "$${LITERAL_HASH}endif"
+	
+	MMP_RULES += defBlock
+}
+include(onlinehandler.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/src/onlinehandler.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,292 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Online Handler.
+ *
+ */
+#include "onlinehandler.h"
+#include "searchutility.h"
+#include "onlinesearchplugin.h"  // after export should be included as systeminc
+#include "onlinesearchpluginfactory.h"  // after export should be included as systeminc
+#include <QDebug>
+#include <QPluginLoader>
+#ifdef Q_OS_SYMBIAN
+#include <QLibraryInfo>
+#else
+#include <QCoreApplication>
+#endif
+#include <QDir>
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hbinstance.h>
+#include <hbicon.h>
+#include <serviceprovider.h>
+#include <isengine.h>
+
+#ifdef WIN32
+#define PLUGINFILE_SUFFIX "dll"
+#else
+#define PLUGINFILE_SUFFIX "qtplugin"
+#endif
+
+// ---------------------------------------------------------------------------
+// OnlineHandler::OnlineHandler
+// ---------------------------------------------------------------------------
+//
+OnlineHandler::OnlineHandler(QObject* parent) :
+    QObject(parent), mOnlinePlugin(NULL), mEng(NULL), mCurrentProvider(NULL)
+    {
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::~OnlineHandler
+// ---------------------------------------------------------------------------
+//
+OnlineHandler::~OnlineHandler()
+    {
+    if (mOnlinePlugin)
+        delete mOnlinePlugin;
+    if (mEng)
+        delete mEng;
+    if (mCurrentProvider)
+        delete mCurrentProvider;
+    }
+void OnlineHandler::setDefaultProvider(const int id)
+    {
+    if (mEng)
+        mEng->SetSelectedProvider(id);
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::readSettings
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::readSettings()
+    {
+    if (!mEng)
+        mEng = new IsEngine();
+    mAvailableProviders.clear();
+    mEng->Providers(mAvailableProviders);
+    for (int i = 0; i < mAvailableProviders.count(); i++)
+        {
+        emit providerDetails(mAvailableProviders.at(i).Name(),
+                mAvailableProviders.at(i).Icon(),
+                mAvailableProviders.at(i).Id());
+        }
+    mCurrentProvider = mEng->SelectedProvider(); // default provider
+    if (mCurrentProvider)
+        {
+        mDefaultPluginName = mCurrentProvider->Name();
+        emit defaultProvider(mCurrentProvider->Id());
+        }
+    else
+        {
+        mDefaultPluginName = QString();
+        }
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::writeSettings
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::writeSettings(const int providerId)
+    {
+    if (mEng && mEng->SetSelectedProvider(providerId) && mCurrentProvider)
+        {
+        mCurrentProvider = mEng->SelectedProvider(); // default provider
+        emit defaultProvider(mCurrentProvider->Id());
+        }
+    return;
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::initializePlugin
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::initializePlugin()
+    {
+    /* Below assumes, only default plugins are handled now. If user selects different plugin some more logic needed here. */
+
+    if (mOnlinePlugin)
+        {
+        delete mOnlinePlugin;
+        mOnlinePlugin = NULL;
+        }
+    mOnlinePlugin = loadSearchPlugin(mDefaultPluginName);
+    if (mOnlinePlugin)
+        {
+        connect(mOnlinePlugin, SIGNAL(pluginInitialized(bool)), this,
+                SLOT(isPluginIntialized(bool)));
+
+        connect(mOnlinePlugin, SIGNAL(shutdownCompleted(bool)), this,
+                SLOT(isShutdownCompleted(bool)));
+
+        connect(mOnlinePlugin, SIGNAL(handleBackEvent()), this,
+                SLOT(backEvent()));
+
+        mOnlinePlugin->initializePlugin();
+        }
+    }
+void OnlineHandler::loadISPlugin(int id, QString query)
+    {
+    if (!mEng)
+        mEng = new IsEngine();
+    mLoadSuggestion = true;
+    mLoadSuggestionLink = query;
+    QList<ServiceProvider> iAvailableProviders;
+    mEng->Providers(iAvailableProviders);
+    for (int i = 0; i < iAvailableProviders.count(); i++)
+        {
+        if (iAvailableProviders.at(i).Id() == id)
+            {
+            mDefaultPluginName = iAvailableProviders.at(i).Name();
+            break;
+            }
+        }
+    initializePlugin();
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::isPluginIntialized
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::isPluginIntialized(bool success)
+    {
+    if (mLoadSuggestion)
+        {
+        activatePlugin(mLoadSuggestionLink);
+        mLoadSuggestion = false;
+        }
+    else
+        {
+        emit pluginIntialized(success);
+        }
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::isShutdownCompleted
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::isShutdownCompleted(bool success)
+    {
+    mOnlinePlugin->deleteLater();
+    emit pluginShutdown(success);
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::backEvent
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::backEvent()
+    {
+    emit backEventTriggered();
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::activatePlugin
+// ---------------------------------------------------------------------------
+//
+bool OnlineHandler::activatePlugin()
+    {
+    if (mOnlinePlugin)
+        mOnlinePlugin->activatePlugin();
+    return true;
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::activatePlugin
+// ---------------------------------------------------------------------------
+//
+bool OnlineHandler::activatePlugin(const QString &str)
+    {
+    if (mOnlinePlugin)
+        mOnlinePlugin->activatePlugin(str);
+    return true;
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::unloadPlugin
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::unloadPlugin()
+    {
+    if (mOnlinePlugin)
+        {
+        disconnect(mOnlinePlugin, SIGNAL(pluginInitialized(bool)), this,
+                SLOT(isPluginIntialized(bool)));
+
+        disconnect(mOnlinePlugin, SIGNAL(shutdownCompleted(bool)), this,
+                SLOT(isShutdownCompleted(bool)));
+
+        disconnect(mOnlinePlugin, SIGNAL(handleBackEvent()), this,
+                SLOT(backEvent()));
+
+        mOnlinePlugin->deactivatePlugin();
+        }
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::unloadPluginandExit
+// ---------------------------------------------------------------------------
+//
+void OnlineHandler::unloadPluginandExit()
+    {
+    if (mOnlinePlugin)
+        {
+        disconnect(mOnlinePlugin, SIGNAL(pluginInitialized(bool)), this,
+                SLOT(isPluginIntialized(bool)));
+
+        disconnect(mOnlinePlugin, SIGNAL(shutdownCompleted(bool)), this,
+                SLOT(isShutdownCompleted(bool)));
+
+        disconnect(mOnlinePlugin, SIGNAL(handleBackEvent()), this,
+                SLOT(backEvent()));
+
+        mOnlinePlugin->deactivatePlugin();
+        mOnlinePlugin->shutdownPlugin();
+        }
+    }
+// ---------------------------------------------------------------------------
+// OnlineHandler::loadSearchPlugin
+// ---------------------------------------------------------------------------
+//
+OnlineSearchPlugin *OnlineHandler::loadSearchPlugin(const QString &pluginFile)
+    {
+    //   CpLogger logger;
+    //   logger << "loading plugin:" << pluginFile << "\r\n";
+
+    QFileInfo fileInfo(pluginFile);
+
+    if (!fileInfo.isAbsolute())
+        {
+        QString fileName = fileInfo.fileName();
+        if (fileInfo.suffix().compare(PLUGINFILE_SUFFIX, Qt::CaseInsensitive))
+            {
+            fileName = fileInfo.baseName() + '.' + PLUGINFILE_SUFFIX;
+            }
+
+        QStringList pluginDirs = SearchUtility::pluginDirs();
+        foreach(const QString &pluginDir,pluginDirs)
+                {
+                fileInfo.setFile(pluginDir + fileName);
+                if (fileInfo.exists() && QLibrary::isLibrary(
+                        fileInfo.absoluteFilePath()))
+                    {
+                    break;
+                    }
+                }
+        }
+
+    QPluginLoader loader(fileInfo.absoluteFilePath());
+    OnlineSearchPluginFactory *pluginFactory = qobject_cast<
+            OnlineSearchPluginFactory*> (loader.instance());
+    OnlineSearchPlugin *plugin = pluginFactory->createPlugin();
+    /*
+     * why unload?
+     if (!plugin) {
+     loader.unload();
+     }
+     */
+    //   logger << (plugin ? "load plugin succeed." : "load plugin failed.") << "\r\n";    
+    return plugin;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/src/searchutility.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0""
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+#include "searchutility.h"
+#include <qstring>
+#include <qdir>
+#include <qfileinfo>
+#include "searchbasepath.h"
+
+#if 0
+
+#include "Searchpluginloader.h"
+#include <Searchpluginplatinterface.h>
+#include <Searchsettingformentryitemdata.h>
+#include "Searchcategorysettingformitemdata.h"
+#include "Searchpluginconfigreader.h"
+
+void SearchUtility::buildConfigPluginItems(HbDataFormModelItem *parent,
+									   const QString &configFile,
+									   SearchItemDataHelper &itemDataHelper)
+{
+    if (!parent) {
+        return;
+    }
+
+	QString configPath(configFile);
+	QFileInfo fi(configFile);
+	if (!fi.isAbsolute()) {
+		QStringList dirs = SearchUtility::SearchcfgDirs();
+		foreach(const QString &dir,dirs) {
+			configPath = dir + fi.fileName();
+			if (QFileInfo(configPath).exists()) {
+				break;		
+			}
+		}
+	}
+    	
+    QList<SearchPluginConfig> SearchPluginConfigs = SearchPluginConfigReader(configPath).readSearchPluginConfigs();
+		
+	foreach(const SearchPluginConfig &SearchPluginConfig, SearchPluginConfigs)  {
+		SearchPluginPlatInterface *plugin = SearchPluginLoader().loadSearchPlugin(SearchPluginConfig.mPluginFile);
+
+		if (plugin) {
+			SearchSettingFormItemData *itemData = plugin->createSettingFormItemData(itemDataHelper);
+			if (itemData) {
+				//append the new created setting form item to its parent item.
+				parent->appendChild(itemData);
+
+				if (SearchCategorySettingFormItemData *categoryItemData 
+					= qobject_cast<SearchCategorySettingFormItemData*>(itemData)) {
+					categoryItemData->initialize(itemDataHelper);
+				}
+
+				//set the description from config if it is empty.
+				if (SearchSettingFormEntryItemData *SearchEntryItemData
+					= qobject_cast<SearchSettingFormEntryItemData*>(itemData)) {
+						if (SearchEntryItemData->text().isEmpty()) {
+							SearchEntryItemData->setText(SearchPluginConfig.mDisplayName);
+						}
+						if (SearchEntryItemData->description().isEmpty()) {
+							SearchEntryItemData->setDescription(SearchPluginConfig.mDescription);
+						}
+				}
+
+			}
+		}
+
+	} //end foreach
+}
+
+#endif
+
+QStringList SearchUtility::drives()
+{
+	static QStringList drives;
+
+	if (drives.empty()) {
+#ifdef WIN32
+		drives.append("C:");
+#else
+		QFileInfoList fileInfoList = QDir::drives();
+		foreach(const QFileInfo &fileInfo,fileInfoList) {
+			QString str = fileInfo.filePath();
+			if (str.length() > 2) {
+				str = str.left(2);
+			}
+			drives.append(str);
+		}
+#endif
+	}
+
+	return drives;
+}
+
+static QStringList listDirs(const QString &baseDir)
+{
+	QStringList dirs;
+
+	QStringList drives = SearchUtility::drives();
+	foreach(const QString &drive,drives) {
+		QString dir = drive + baseDir + QDir::separator();
+		if (QFileInfo(dir).exists()) {
+			dirs.append(dir);
+		}
+	}
+
+	return dirs;
+}
+
+QStringList SearchUtility::pluginDirs()
+{
+	static QStringList dirs;
+	if (dirs.empty()) {
+		dirs = listDirs(SEARCH_PLUGIN_PATH);
+	}
+	return dirs;
+}
+
+QStringList SearchUtility::SearchcfgDirs()
+{
+	static QStringList dirs;
+	if (dirs.empty()) {
+		dirs = listDirs(SEARCH_PLUGIN_CONFIG_PATH);
+	}
+	return dirs;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/resource/t_baiduplugin.manifest	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<plugin>
+    <runtime library="Baidu.dll"
+             uri="com.nokia.search/plugin/Baidu"/>
+</plugin>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/src/t_baiduplugin.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   t_baidplugin
+ *
+ */
+
+#include "t_baiduplugin.h"
+
+#include <QDebug>
+#include <QGraphicsLayout>
+#include <QWidget>
+#include <QtWebKit/QGraphicsWebView>
+#include <QtGui/QApplication>
+#include <QGraphicsWidget>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <qdesktopservices.h>
+// ---------------------------------------------------------------------------
+// baiduplugin::baiduplugin()
+// ---------------------------------------------------------------------------
+//
+baiduplugin::baiduplugin()
+    {
+    // Set up plugin settings 
+    }
+
+// ---------------------------------------------------------------------------
+// baiduplugin::~baiduplugin()
+// ---------------------------------------------------------------------------
+//
+baiduplugin::~baiduplugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// baiduplugin::initialize()
+// ---------------------------------------------------------------------------
+//
+void baiduplugin::initializePlugin()
+    {
+    emit pluginInitialized(true);
+    }
+
+// ---------------------------------------------------------------------------
+// baiduplugin::activate()
+// ---------------------------------------------------------------------------
+//
+void baiduplugin::activatePlugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// baiduplugin::activate(const QString &)
+// ---------------------------------------------------------------------------
+//
+void baiduplugin::activatePlugin(const QString &searchQuery)
+    {
+#ifdef __WINSCW__
+    HbDialog* popup = new HbDialog();
+    popup->setDismissPolicy(HbDialog::NoDismiss);
+    popup->setTimeout(HbDialog::NoTimeout);
+    QString str("Baidu Search  ");
+    str.append(searchQuery);
+    HbLabel *label = new HbLabel(str);
+    popup->setHeadingWidget(label);
+    HbAction * action = new HbAction(hbTrId("Back"), popup);
+    connect(action, SIGNAL(triggered()), this, SLOT(BackEvent()));
+    popup->setPrimaryAction(action);
+    popup->show();
+#else
+    QString url("http://www.baidu.com/s?wd=");
+    url.append(searchQuery);
+    QDesktopServices::openUrl(url);
+#endif    
+    }
+void baiduplugin::BackEvent()
+    {
+    emit handleBackEvent();
+    }
+// ---------------------------------------------------------------------------
+// baiduplugin::deactivate()
+// ---------------------------------------------------------------------------
+//
+void baiduplugin::deactivatePlugin()
+    {
+    // Destroy everything but the initial view and data that takes a long time
+    // to reacquire when the plugin is deactivated
+    }
+
+// ---------------------------------------------------------------------------
+// baiduplugin::shutdown()
+// ---------------------------------------------------------------------------
+//
+void baiduplugin::shutdownPlugin()
+    {
+    // Destroy all views
+    emit shutdownCompleted(true);
+
+    //return true;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/src/t_baidupluginfactory.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   Implementation of the search google online factory.
+ *
+ */
+
+#include <QtGui> // For Q_EXPORT_PLUGIN2
+
+#include "t_baidupluginfactory.h"
+#include "t_baiduplugin.h"
+
+
+OnlineSearchPlugin* baidupluginFactory::createPlugin() const
+{
+	return new baiduplugin(); 
+}
+
+Q_EXPORT_PLUGIN2(Baidu,baidupluginFactory)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+# Template version: 4.2
+HEADERS += ./inc/*.h
+
+
+SOURCES += ./src/*.cpp
+
+// HEADERS += onlinesearchplugin.h  how to solve meta object problem?
+
+RESOURCES += 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  search test online project file
+#
+
+TEMPLATE      	= lib
+CONFIG       	+= plugin hb
+TARGET        	= Baidu
+
+plugin.sources 	= Baidu.dll
+plugin.path 	= \resource\qt\plugins\onlinesearch
+ 
+DEPLOYMENT 	+= plugin
+
+CONFIG(debug, debug|release) {
+    DESTDIR = debug
+} else {
+    DESTDIR = release
+}
+
+win32 {
+    
+    LIBS += -L$$PWD/../../../../bin/debug
+}
+
+
+
+CONFIG += plugin debug_and_release
+
+QT += xml sql webkit network
+
+
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH +=   ./inc \
+                ./src
+
+INCLUDEPATH += ./inc/ \	       
+       
+symbian: {
+    TARGET.UID3 = 0x2002A532
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB -DRM
+	INCLUDEPATH +=  $$APP_LAYER_SYSTEMINCLUDE
+CONFIG += symbian_test
+}    
+
+include(t_baiduplugin.pri)
+symbian:include(t_baiduplugin_installs_symbian.pri)
+win32:include(t_baiduplugin_installs_win32.pri)
+symbian:unix:include(t_baiduplugin_installs_unix.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin_installs_symbian.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+
+
+export.sources = resource/*.manifest
+export.path = /searchresources/plugins/onlineproviders
+
+pluginstub.sources = Baidu.dll
+pluginstub.path = /resource/qt/plugins/search
+
+DEPLOYMENT += export pluginstub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin_installs_unix.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+
+
+
+
+
+#
+# Release
+#
+
+r01.path = ../../../bin/release/resource/qt/plugins/search
+r01.files = ./release/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../../bin/debug/resource/qt/plugins/search
+d01.files = ./debug/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_baiduplugin/t_baiduplugin_installs_win32.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+# Release
+#
+r01.path = $$PWD/../../../../bin/release/resource/qt/plugins/search           
+r01.files = ./release/*.dll
+            
+r02.path = $$PWD/../../../../bin/release/searchresources/plugins/onlineproviders            
+r02.files =  ./resource/*.manifest
+
+INSTALLS += r01 r02
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../../../bin/debug/resource/qt/plugins/search           
+d01.files = ./debug/*.dll
+
+d02.path = $$PWD/../../../../bin/debug/searchresources/plugins/onlineproviders            
+d02.files =  ./resource/*.manifest
+
+INSTALLS += d01 d02
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/inc/onlinesearchplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  OnlineSearchPlugin class definition
+ *
+ */
+
+#ifndef ONLINESEARCHPLUGIN_H
+#define ONLINESEARCHPLUGIN_H
+
+#include <QObject>
+
+/**
+ * @ingroup group_onlinesearchpluginmodel
+ * @brief Represents a plugin plugin in the framework.
+ *
+ * OnlineSearchPlugin is an interface through which setting plugin plugin can be 
+ * executed in the search handlers.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+
+class OnlineSearchPlugin : public QObject
+    {
+Q_OBJECT
+public:
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~OnlineSearchPlugin()
+        {
+        }
+
+    /**
+     * Called by the search handlers during initialize cycle of the plugin, it is during
+     * this phase the plugin widget
+     * usually creates its initial view.
+     * Once the initialization is done, pluginInitialized signal must be 
+     * emitted.
+     * @since S60 ?S60_version.
+     */
+    virtual void initializePlugin() = 0;
+
+    /**
+     * Called by the search handlers when the plugin becomes the current plugin.  
+     * @since S60 ?S60_version.
+     */
+    virtual void activatePlugin() = 0;
+    /**
+     * Called by the search handlers when the plugin becomes the current plugin.  
+     * @since S60 ?S60_version.
+     */
+    virtual void activatePlugin(const QString &searchQuery) = 0;
+
+    /**
+     * Called by the search handlers when the plugin is no longer being displayed.  
+     */
+    virtual void deactivatePlugin() = 0;
+
+    /**
+     * Called by the search handlers before the plugin destructor is called.
+     * @param reason The reason why the search handlers is being killed. 
+     */
+    virtual void shutdownPlugin() = 0;    
+
+protected:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     */
+    OnlineSearchPlugin()
+        {
+        }
+
+signals:
+
+    /**
+     * Emit this signal when changing the view inside the plugin.
+     * @param caller The calling plugin plugin instance.
+     * @param viewWidget The new plugin view widget to be shown.
+     */
+    void viewChanged();
+
+    /**
+     * Emit this signal to indicate initialization is done. 
+     * @param caller The calling plugin plugin instance.
+     * @param success True if succeeded, false otherwise.
+     */
+    void pluginInitialized(bool success);
+
+    /**
+     * Emit this signal to indicate that the plugin plugin can be deleted. 
+     * Note that this signal does not need to be emitted if true is returned
+     * from shutdownPlugin.
+     * @param caller The calling plugin plugin instance.
+     */
+    void shutdownCompleted(bool success);
+
+    /**
+     * Called by search handlers when back button is clicked in the plugin view.
+     * In this method the plugin plugin can implement internally showing and
+     * hiding GUI elements if the plugin has multiple 'views'.
+     */
+    void handleBackEvent();
+    };
+
+#endif // ONLINESEARCHPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/inc/t_bingplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   Declaration of the search google plugin.
+ *
+ */
+
+#ifndef T_BINGLUGIN_H
+#define T_BINGLUGIN_H
+
+#include <onlinesearchplugin.h>
+
+#include <QPointer>
+#include <QDate>
+
+class bingplugin : public OnlineSearchPlugin
+    {
+Q_OBJECT
+
+public:
+
+    // Default Constructor
+    bingplugin();
+    // Destructor
+    ~bingplugin();
+
+protected:
+
+    // Overrides from OnlineSearchPlugin
+    void initializePlugin();
+    void activatePlugin();
+    void activatePlugin(const QString &searchQuery);
+    void deactivatePlugin();
+    void shutdownPlugin();
+
+private slots:
+    void BackEvent();
+private:
+    };
+
+#endif // T_BINGLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/inc/t_bingpluginfactory.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   Declaration of the search google online factory.
+ *
+ */
+
+#ifndef BINGPLUGINFACTORY_H
+#define BINGPLUGINFACTORY_H
+
+#include <QObject>
+
+#include <OnlineSearchPluginfactory.h>
+
+class OnlineSearchPlugin;
+
+
+class bingpluginFactory : public QObject, public OnlineSearchPluginFactory
+{
+	Q_OBJECT
+	Q_INTERFACES(OnlineSearchPluginFactory)
+
+public:
+    
+     // Wizard factory
+	OnlineSearchPlugin* createPlugin() const;
+};
+
+#endif // BINGPLUGINFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/resource/t_bingplugin.manifest	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<plugin>
+    <runtime library="Bing.dll"
+             uri="com.nokia.search/plugin/Bing"/>
+</plugin>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/src/t_bingplugin.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  bingplugin.
+ *
+ */
+
+#include "t_bingplugin.h"
+
+#include <QDebug>
+#include <QGraphicsLayout>
+#include <QWidget>
+#include <QtWebKit/QGraphicsWebView>
+#include <QtGui/QApplication>
+#include <QGraphicsWidget>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <qdesktopservices.h>
+// ---------------------------------------------------------------------------
+// bingplugin::bingplugin()
+// ---------------------------------------------------------------------------
+//
+bingplugin::bingplugin()
+    {
+    // Set up plugin settings 
+    }
+
+// ---------------------------------------------------------------------------
+// bingplugin::~bingplugin()
+// ---------------------------------------------------------------------------
+//
+bingplugin::~bingplugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// bingplugin::initialize()
+// ---------------------------------------------------------------------------
+//
+void bingplugin::initializePlugin()
+    {
+    emit pluginInitialized(true);
+    }
+
+// ---------------------------------------------------------------------------
+// bingplugin::activate()
+// ---------------------------------------------------------------------------
+//
+void bingplugin::activatePlugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// bingplugin::activate(const QString &)
+// ---------------------------------------------------------------------------
+//
+void bingplugin::activatePlugin(const QString &searchQuery)
+    {
+#ifdef __WINSCW__
+    HbDialog* popup = new HbDialog();
+    popup->setDismissPolicy(HbDialog::NoDismiss);
+    popup->setTimeout(HbDialog::NoTimeout);
+    QString str;
+    str.append("bing Search  ");
+    str.append(searchQuery);
+    HbLabel *label = new HbLabel(str);
+    popup->setHeadingWidget(label);
+    HbAction * action = new HbAction(hbTrId("Back"), popup);
+    connect(action, SIGNAL(triggered()), this, SLOT(BackEvent()));
+    popup->setPrimaryAction(action);
+    popup->show();
+#else
+    QString url("http://www.bing.com/search?q=");
+    url.append(searchQuery);
+    url.append("&form=QBLH&qs=n&sk=");
+    QDesktopServices::openUrl(url);
+#endif
+    }
+void bingplugin::BackEvent()
+    {
+    emit handleBackEvent();
+    }
+// ---------------------------------------------------------------------------
+// bingplugin::deactivate()
+// ---------------------------------------------------------------------------
+//
+void bingplugin::deactivatePlugin()
+    {
+    // Destroy everything but the initial view and data that takes a long time
+    // to reacquire when the plugin is deactivated
+    }
+
+// ---------------------------------------------------------------------------
+// bingplugin::shutdown()
+// ---------------------------------------------------------------------------
+//
+void bingplugin::shutdownPlugin()
+    {
+    // Destroy all views
+    emit shutdownCompleted(true);
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/src/t_bingpluginfactory.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:Implementation of the search google online factory.
+ *
+ */
+
+#include <QtGui> // For Q_EXPORT_PLUGIN2
+
+#include "t_bingpluginfactory.h"
+#include "t_bingplugin.h"
+
+
+OnlineSearchPlugin* bingpluginFactory::createPlugin() const
+{
+	return new bingplugin(); 
+}
+
+Q_EXPORT_PLUGIN2(Bing,bingpluginFactory)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: search how-to verification online
+#
+
+HEADERS += ./inc/*.h
+
+
+SOURCES += ./src/*.cpp
+
+// HEADERS += onlinesearchplugin.h  how to solve meta object problem?
+
+RESOURCES += 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  search test online project file
+#
+
+TEMPLATE      	= lib
+CONFIG       	+= plugin hb
+TARGET        	= Bing
+
+plugin.sources 	= Bing.dll
+plugin.path 	= \resource\qt\plugins\onlinesearch
+ 
+DEPLOYMENT 	+= plugin
+
+CONFIG(debug, debug|release) {
+    DESTDIR = debug
+} else {
+    DESTDIR = release
+}
+
+win32 {
+    
+    LIBS += -L$$PWD/../../../../bin/debug
+}
+
+
+
+CONFIG += plugin debug_and_release
+
+QT += xml sql webkit network
+
+
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH +=   ./inc \
+                ./src
+
+INCLUDEPATH += ./inc/ \	       
+       
+symbian: {
+    TARGET.UID3 = 0x2002A532
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB -DRM
+	INCLUDEPATH +=  $$APP_LAYER_SYSTEMINCLUDE
+CONFIG += symbian_test
+}    
+
+include(t_bingplugin.pri)
+symbian:include(t_bingplugin_installs_symbian.pri)
+win32:include(t_bingplugin_installs_win32.pri)
+symbian:unix:include(t_bingplugin_installs_unix.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin_installs_symbian.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,23 @@
+
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+export.sources = resource/*.manifest
+export.path = /searchresources/plugins/onlineproviders
+
+pluginstub.sources = Bing.dll
+pluginstub.path = /resource/qt/plugins/search
+
+DEPLOYMENT += export pluginstub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin_installs_unix.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+#
+# Release
+#
+
+r01.path = ../../../bin/release/resource/qt/plugins/search
+r01.files = ./release/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../../bin/debug/resource/qt/plugins/search
+d01.files = ./debug/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_bingplugin/t_bingplugin_installs_win32.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+# Release
+#
+r01.path = $$PWD/../../../../bin/release/resource/qt/plugins/search           
+r01.files = ./release/*.dll
+            
+r02.path = $$PWD/../../../../bin/release/searchresources/plugins/onlineproviders            
+r02.files =  ./resource/*.manifest
+
+INSTALLS += r01 r02
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../../../bin/debug/resource/qt/plugins/search           
+d01.files = ./debug/*.dll
+
+d02.path = $$PWD/../../../../bin/debug/searchresources/plugins/onlineproviders            
+d02.files =  ./resource/*.manifest
+
+INSTALLS += d01 d02
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/inc/onlinesearchplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   OnlineSearchPlugin class definition
+ *
+ */
+
+#ifndef ONLINESEARCHPLUGIN_H
+#define ONLINESEARCHPLUGIN_H
+
+#include <QObject>
+
+/**
+ * @ingroup group_onlinesearchpluginmodel
+ * @brief Represents a plugin plugin in the framework.
+ *
+ * OnlineSearchPlugin is an interface through which setting plugin plugin can be 
+ * executed in the search handlers.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+
+class OnlineSearchPlugin : public QObject
+    {
+Q_OBJECT
+public:
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~OnlineSearchPlugin()
+        {
+        }
+
+    /**
+     * Called by the search handlers during initialize cycle of the plugin, it is during
+     * this phase the plugin widget
+     * usually creates its initial view.
+     * Once the initialization is done, pluginInitialized signal must be 
+     * emitted.
+     * @since S60 ?S60_version.
+     */
+    virtual void initializePlugin() = 0;
+
+    /**
+     * Called by the search handlers when the plugin becomes the current plugin.  
+     * @since S60 ?S60_version.
+     */
+    virtual void activatePlugin() = 0;
+    /**
+     * Called by the search handlers when the plugin becomes the current plugin.  
+     * @since S60 ?S60_version.
+     */
+    virtual void activatePlugin(const QString &searchQuery) = 0;
+
+    /**
+     * Called by the search handlers when the plugin is no longer being displayed.  
+     */
+    virtual void deactivatePlugin() = 0;
+
+    /**
+     * Called by the search handlers before the plugin destructor is called.
+     * @param reason The reason why the search handlers is being killed. 
+     */
+    virtual void shutdownPlugin() = 0;    
+
+protected:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.
+     */
+    OnlineSearchPlugin()
+        {
+        }
+
+signals:
+
+    /**
+     * Emit this signal when changing the view inside the plugin.
+     * @param caller The calling plugin plugin instance.
+     * @param viewWidget The new plugin view widget to be shown.
+     */
+    void viewChanged();
+
+    /**
+     * Emit this signal to indicate initialization is done. 
+     * @param caller The calling plugin plugin instance.
+     * @param success True if succeeded, false otherwise.
+     */
+    void pluginInitialized(bool success);
+
+    /**
+     * Emit this signal to indicate that the plugin plugin can be deleted. 
+     * Note that this signal does not need to be emitted if true is returned
+     * from shutdownPlugin.
+     * @param caller The calling plugin plugin instance.
+     */
+    void shutdownCompleted(bool success);
+
+    /**
+     * Called by search handlers when back button is clicked in the plugin view.
+     * In this method the plugin plugin can implement internally showing and
+     * hiding GUI elements if the plugin has multiple 'views'.
+     */
+    void handleBackEvent();
+    };
+
+#endif // ONLINESEARCHPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/inc/t_googleplugin.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   Declaration of the search google plugin
+ *
+ */
+
+#ifndef T_GOOGLEPLUGIN_H
+#define T_GOOGLEPLUGIN_H
+
+#include <onlinesearchplugin.h>
+
+#include <QPointer>
+#include <QDate>
+
+
+class googleplugin : public OnlineSearchPlugin
+{
+	Q_OBJECT
+	
+public:
+    
+	// Default Constructor
+	googleplugin();
+	// Destructor
+	~googleplugin();
+    
+protected:
+        
+    // Overrides from OnlineSearchPlugin
+    void initializePlugin();
+    void activatePlugin();
+    void activatePlugin(const QString &searchQuery);
+    void deactivatePlugin();
+    void shutdownPlugin();      
+private slots:
+    void BackEvent();
+
+    
+private:
+}; 
+
+#endif // T_GOOGLEPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/inc/t_googlepluginfactory.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:    Declaration of the search google online factory.
+ *
+ */
+
+#ifndef GOOGLEPLUGINFACTORY_H
+#define GOOGLEPLUGINFACTORY_H
+
+#include <QObject>
+
+#include <OnlineSearchPluginfactory.h>
+
+class OnlineSearchPlugin;
+
+
+class googlepluginFactory : public QObject, public OnlineSearchPluginFactory
+{
+	Q_OBJECT
+	Q_INTERFACES(OnlineSearchPluginFactory)
+
+public:
+    
+     // Wizard factory
+	OnlineSearchPlugin* createPlugin() const;
+};
+
+#endif // GOOGLEPLUGINFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/resource/t_googleplugin.manifest	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<plugin>
+    <runtime library="google.dll"
+             uri="com.nokia.search/plugin/google"/>
+</plugin>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/src/t_googleplugin.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: googleplugin.
+ *
+ */
+
+#include "t_googleplugin.h"
+
+#include <QDebug>
+#include <QGraphicsLayout>
+#include <QWidget>
+#include <QtWebKit/QGraphicsWebView>
+#include <QtGui/QApplication>
+#include <QGraphicsWidget>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <qdesktopservices.h>
+// ---------------------------------------------------------------------------
+// googleplugin::googleplugin()
+// ---------------------------------------------------------------------------
+//
+googleplugin::googleplugin()
+    {
+    qDebug() << "googleplugin";
+    // Set up plugin settings 
+    }
+
+// ---------------------------------------------------------------------------
+// googleplugin::~googleplugin()
+// ---------------------------------------------------------------------------
+//
+googleplugin::~googleplugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// googleplugin::initialize()
+// ---------------------------------------------------------------------------
+//
+void googleplugin::initializePlugin()
+    {
+    emit pluginInitialized(true);
+    }
+
+// ---------------------------------------------------------------------------
+// googleplugin::activate()
+// ---------------------------------------------------------------------------
+//
+void googleplugin::activatePlugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// googleplugin::activate(const QString &)
+// ---------------------------------------------------------------------------
+//
+void googleplugin::activatePlugin(const QString &searchQuery)
+    {
+    qDebug() << "search:activatePlugin" ;
+#ifdef __WINSCW__
+    qDebug() << "search:activatePlugin winscw" ;
+    HbDialog* popup = new HbDialog();
+    popup->setDismissPolicy(HbDialog::NoDismiss);
+    popup->setTimeout(HbDialog::NoTimeout);
+    QString str;
+    str.append(QString("google Search  "));
+    str.append(searchQuery);
+    HbLabel *label = new HbLabel(str);
+    popup->setHeadingWidget(label);
+    HbAction * action = new HbAction(hbTrId("Back"), popup);
+    connect(action, SIGNAL(triggered()), this, SLOT(BackEvent()));
+    popup->setPrimaryAction(action);
+    popup->show();
+#else
+    qDebug() << "search:activatePlugin armvs" ;
+    QString url("http://www.google.co.in/search?hl=en&source=hp&q=");
+    url.append(searchQuery);
+    url.append("&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=");
+    QDesktopServices::openUrl(url);
+#endif
+    
+    }
+void googleplugin::BackEvent()
+    {
+    emit handleBackEvent();
+    }
+// ---------------------------------------------------------------------------
+// googleplugin::deactivate()
+// ---------------------------------------------------------------------------
+//
+void googleplugin::deactivatePlugin()
+    {
+    // Destroy everything but the initial view and data that takes a long time
+    // to reacquire when the plugin is deactivated
+    }
+
+// ---------------------------------------------------------------------------
+// googleplugin::shutdown()
+// ---------------------------------------------------------------------------
+//
+void googleplugin::shutdownPlugin()
+    {
+    // Destroy all views
+    emit shutdownCompleted(true);
+    //return true;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/src/t_googlepluginfactory.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Implementation of the search google online factory.
+ *
+ */
+
+#include <QtGui> // For Q_EXPORT_PLUGIN2
+
+#include "t_googlepluginfactory.h"
+#include "t_googleplugin.h"
+
+
+OnlineSearchPlugin* googlepluginFactory::createPlugin() const
+{
+    qDebug() << "googlepluginFactory";
+	return new googleplugin(); 
+}
+
+Q_EXPORT_PLUGIN2(Google,googlepluginFactory)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  search how-to verification online
+#
+
+
+HEADERS += ./inc/*.h
+
+
+SOURCES += ./src/*.cpp
+
+// HEADERS += onlinesearchplugin.h  how to solve meta object problem?
+
+RESOURCES += 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  search test online project file
+#
+
+
+TEMPLATE      	= lib
+CONFIG       	+= plugin hb
+TARGET        	= Google
+
+plugin.sources 	= Google.dll
+plugin.path 	= \resource\qt\plugins\onlinesearch
+ 
+DEPLOYMENT 	+= plugin
+
+CONFIG(debug, debug|release) {
+    DESTDIR = debug
+} else {
+    DESTDIR = release
+}
+
+win32 {
+    
+    LIBS += -L$$PWD/../../../../bin/debug
+}
+
+
+
+CONFIG += plugin debug_and_release
+
+QT += xml sql webkit network
+
+
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH +=   ./inc \
+                ./src
+
+INCLUDEPATH += ./inc/ \	       
+       
+symbian: {
+    TARGET.UID3 = 0x2002A532
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB -DRM
+	INCLUDEPATH +=  $$APP_LAYER_SYSTEMINCLUDE
+CONFIG += symbian_test
+}    
+
+include(t_googleplugin.pri)
+symbian:include(t_googleplugin_installs_symbian.pri)
+win32:include(t_googleplugin_installs_win32.pri)
+symbian:unix:include(t_googleplugin_installs_unix.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin_installs_symbian.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+export.sources = resource/*.manifest
+export.path = /searchresources/plugins/onlineproviders
+
+pluginstub.sources = Google.dll
+pluginstub.path = /resource/qt/plugins/search
+
+DEPLOYMENT += export pluginstub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin_installs_unix.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+#
+# Release
+#
+
+r01.path = ../../../bin/release/resource/qt/plugins/search
+r01.files = ./release/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../../bin/debug/resource/qt/plugins/search
+d01.files = ./debug/*.so* \
+            ./resource/*.manifest
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_googleplugin/t_googleplugin_installs_win32.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,41 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#
+# Release
+#
+
+#
+# Release
+#
+r01.path = $$PWD/../../../../bin/release/resource/qt/plugins/search           
+r01.files = ./release/*.dll
+            
+r02.path = $$PWD/../../../../bin/release/searchresources/plugins/onlineproviders            
+r02.files =  ./resource/*.manifest
+
+INSTALLS += r01 r02
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../../../bin/debug/resource/qt/plugins/search           
+d01.files = ./debug/*.dll
+
+d02.path = $$PWD/../../../../bin/debug/searchresources/plugins/onlineproviders            
+d02.files =  ./resource/*.manifest
+
+INSTALLS += d01 d02
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_onlinehandler/inc/t_onlinehandler.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Tests for Onlinehandler class.
+ *
+ */
+
+#include <QtTest/QtTest>
+#include "onlinehandler.h"
+
+/**
+ * @test Test class for Onlinehandler modules.
+ */
+class SearchOnlineHandlerTest : public QObject
+    {
+Q_OBJECT
+
+public:
+    SearchOnlineHandlerTest();
+    ~SearchOnlineHandlerTest();
+
+private slots:
+    void init();
+    void initTestCase();
+    void cleanupTestCase();
+    void testsetDefaultProvider();
+    void testinitializePlugin();
+    void testactivatePlugin();
+    void testactivatePlugin1();
+    void testwriteSettings();
+    void testloadISPlugin();
+    void testunloadPlugin();
+    void testunloadPluginandExit();
+    void testbackEvent();
+
+    //IsEngine
+    /* 
+     void testSelectedProvider();
+     void testSetSelectedProvider();
+     void testProviders();*///covered in above funtions
+    void testPerformWebSearch();
+    void testPerformInDeviceSearch();
+
+    //IsProviderdbManager & serviceprovider
+    /*   
+     void testGetProviders();
+     void testGetCountryList();
+     void testSelectedProvider();
+     void testSetSelectedProvider();//covered in above funtions
+     */
+    };
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_onlinehandler/src/t_onlinehandler.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  test searchonlinehandler.
+ *
+ */
+#include "t_onlinehandler.h"
+#include "onlinehandler.h"
+#include <qsignalspy.h>
+#include "serviceprovider.h"
+#include "isengine.h"
+#include "isproviderdbmanager.h"
+
+SearchOnlineHandlerTest::SearchOnlineHandlerTest()
+    {
+    }
+SearchOnlineHandlerTest::~SearchOnlineHandlerTest()
+    {
+    }
+void SearchOnlineHandlerTest::init()
+    {
+    }
+void SearchOnlineHandlerTest::initTestCase()
+    {
+    }
+void SearchOnlineHandlerTest::cleanupTestCase()
+    {
+    }
+void SearchOnlineHandlerTest::testsetDefaultProvider()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    if (onlinetestobj->mAvailableProviders.count())
+        {
+        onlinetestobj->mAvailableProviders.at(0);
+        int i = onlinetestobj->mAvailableProviders.at(0).Id();
+        onlinetestobj->setDefaultProvider(i);
+        onlinetestobj->mEng->SelectedProvider();
+        QCOMPARE(i,onlinetestobj->mEng->SelectedProvider()->Id());
+        }
+    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testinitializePlugin()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    QSignalSpy spy(onlinetestobj, SIGNAL(pluginIntialized(bool)));
+    onlinetestobj->initializePlugin();
+    QCOMPARE(spy.count(), 1);
+    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testactivatePlugin()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    onlinetestobj->initializePlugin();
+    onlinetestobj->activatePlugin();
+   /* delete onlinetestobj->mOnlinePlugin;
+    onlinetestobj->mOnlinePlugin = NULL;
+    onlinetestobj->activatePlugin();*/
+    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testactivatePlugin1()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    onlinetestobj->initializePlugin();
+    onlinetestobj->activatePlugin("ab");
+    /*delete onlinetestobj->mOnlinePlugin;
+    onlinetestobj->mOnlinePlugin = NULL;
+    onlinetestobj->activatePlugin("ab");
+*/    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testwriteSettings()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    if (onlinetestobj->mAvailableProviders.count())
+        {
+        onlinetestobj->writeSettings(
+                onlinetestobj->mAvailableProviders.at(0).Id());
+        }
+    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testloadISPlugin()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    if (onlinetestobj->mAvailableProviders.count())
+        {
+        QSignalSpy spy(onlinetestobj, SIGNAL(pluginIntialized(bool)));
+        onlinetestobj->loadISPlugin(
+                onlinetestobj->mAvailableProviders.at(0).Id(), "ab");
+        QCOMPARE(spy.count(), 0);
+        }
+    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testunloadPlugin()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    onlinetestobj->initializePlugin();
+    onlinetestobj->unloadPlugin();
+    delete onlinetestobj;
+    }
+void SearchOnlineHandlerTest::testunloadPluginandExit()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    onlinetestobj->initializePlugin();
+    QSignalSpy spy(onlinetestobj, SIGNAL(pluginShutdown(bool)));
+    onlinetestobj->unloadPluginandExit();
+    QCOMPARE(spy.count(), 1);
+    delete onlinetestobj;
+    }
+
+void SearchOnlineHandlerTest::testbackEvent()
+    {
+    OnlineHandler* onlinetestobj = new OnlineHandler();
+    QSignalSpy spy(onlinetestobj, SIGNAL(backEventTriggered()));
+    onlinetestobj->backEvent();
+    QCOMPARE(spy.count(), 1);
+    delete onlinetestobj;
+    }
+
+void SearchOnlineHandlerTest::testPerformWebSearch()
+    {
+   /* OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    if (onlinetestobj->mEng)
+        {
+        onlinetestobj->mEng->PerformWebSearch("string");
+        }
+    delete onlinetestobj;*/
+    }
+void SearchOnlineHandlerTest::testPerformInDeviceSearch()
+    {
+    /*OnlineHandler* onlinetestobj = new OnlineHandler();
+    onlinetestobj->readSettings();
+    if (onlinetestobj->mEng)
+        {
+        onlinetestobj->mEng->PerformInDeviceSearch("string");
+        }
+    delete onlinetestobj;*/
+    }
+
+#ifdef Q_OS_SYMBIAN
+
+//QTEST_MAIN corrected since crashes if TRAP not in correct place.
+//Will be corrected in later (estimate 4.6.0) Qt release for Symbian.
+int main(int argc, char *argv[])
+    {
+    QApplication app(argc, argv);
+    int error = 0;
+    TRAPD(err,
+            QTEST_DISABLE_KEYPAD_NAVIGATION
+            SearchOnlineHandlerTest tc;
+            error = QTest::qExec(&tc, argc, argv););
+    Q_UNUSED(err);
+    return error;
+    }
+#else //Q_OS_SYMBIAN
+QTEST_MAIN(SearchOnlineHandlerTest)
+#endif //Q_OS_SYMBIAN    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_onlinehandler/t_onlinehandler.pri	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#Header files
+HEADERS += ./inc/*.h 
+
+#Source files
+SOURCES += ./src/*.cpp 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/t_onlinehandler/t_onlinehandler.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  Search onlinehandler unit test project file
+#
+
+TEMPLATE = app
+
+
+LIBS += -lsearchonlinehandler
+LIBS += -lisengine
+LIBS += -lisproviderdbmanager
+    
+INCLUDEPATH += . 
+INCLUDEPATH += ../../inc \
+              ../../../inc 
+
+
+CONFIG += qtestlib 
+CONFIG += hb
+
+QT += xml \
+      sql
+DEFINES += SEARCH_UNITTESTING
+
+symbian { 
+CONFIG += symbian_test     
+TARGET.UID2 = 0x100039CE
+TARGET.CAPABILITY = ALL -TCB -DRM
+TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+TARGET.EPOCHEAPSIZE = 0x20000 0x800000 // 128kB - 16MB
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+}
+
+include(t_onlinehandler.pri)
+
Binary file searchui/onlinehandler/tsrc/testdb/providerdatabase.sq has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/onlinehandler/tsrc/tsrc.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS  += t_onlinehandler \
+t_baiduplugin \ 
+t_bingplugin \
+t_googleplugin	   
+           
+CONFIG  += ordered
+
+symbian: {
+    CONFIG += symbian_test
+BLD_INF_RULES.prj_exports += "testdb/providerdatabase.sq /epoc32/winscw/c/private/20022F35/providerdatabase.sq" \
+								 "testdb/providerdatabase.sq /epoc32/data/z/private/20022F35/providerdatabase.sq"
+}
--- a/searchui/rom/search.iby	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/rom/search.iby	Tue Jul 06 14:17:22 2010 +0300
@@ -32,6 +32,9 @@
 //SearchIndevice handler
 file=/epoc32/release/armv5/urel/searchindevicehandler.dll SHARED_LIB_DIR/searchindevicehandler.dll
 
+//Searchonline handler
+file=/epoc32/release/armv5/urel/searchonlinehandler.dll SHARED_LIB_DIR/searchonlinehandler.dll
+
 
 
 //runtime provider dll
--- a/searchui/runtimeproviders/searchruntimeprovider/src/searchruntime.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/runtimeproviders/searchruntimeprovider/src/searchruntime.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -33,13 +33,14 @@
         "search.nokia.com/state/wizardprogressivestate";
 const char wizardSettingStateUri[] =
         "search.nokia.com/state/wizardsettingstate";
-
+const char wizardOnlineStateUri[] =
+        "search.nokia.com/state/wizardonlinestate";
 // ---------------------------------------------------------------------------
 // searchRuntime::SearchRuntime
 // ---------------------------------------------------------------------------
 //
 SearchRuntime::SearchRuntime(QObject* aParent) :
-QStateMachine(aParent),mWindow(0)
+    QStateMachine(aParent), mWindow(0)
     {
     createGuiServiceParts();
     createStates();
@@ -52,7 +53,7 @@
 SearchRuntime::~SearchRuntime()
     {
     delete mWindow;
-  //  delete mStateMachine;
+    //  delete mStateMachine;
     }
 
 // ---------------------------------------------------------------------------
@@ -61,7 +62,7 @@
 //
 void SearchRuntime::handleStateMachineStarted()
     {
-   // emit started();
+    // emit started();
     }
 
 // ---------------------------------------------------------------------------
@@ -91,7 +92,7 @@
     {
 
     SearchStateProvider stateProvider;
-    
+
     QFinalState* finalState = new QFinalState();
     this->addState(finalState);
 
@@ -105,32 +106,55 @@
 
     QState* searchRootState = new QState(guiRootState);
 
-
-    QState* wizardProgressiveState = stateProvider.createState(wizardProgressiveStateUri);
+    QState* wizardProgressiveState = stateProvider.createState(
+            wizardProgressiveStateUri);
     // set state specific data
     wizardProgressiveState->setParent(searchRootState);
     wizardProgressiveState->setObjectName(wizardProgressiveStateUri);
 
-
-    QState* wizardSettingState = stateProvider.createState(wizardSettingStateUri);
+    QState* wizardSettingState = stateProvider.createState(
+            wizardSettingStateUri);
     wizardSettingState->setParent(searchRootState);
     wizardSettingState->setObjectName(wizardSettingStateUri);
 
+    QState* wizardOnlineState = stateProvider.createState(
+            wizardOnlineStateUri);
+    wizardOnlineState->setParent(searchRootState);
+    wizardOnlineState->setObjectName(wizardOnlineStateUri);
+
+    // progressive to settings
     wizardProgressiveState->addTransition(wizardProgressiveState,
-            SIGNAL(settingsState()), wizardSettingState);
+            SIGNAL(switchProToSettingsState()), wizardSettingState);
 
-    // From activated back to menu
+    // settings to progressive 
     wizardSettingState->addTransition(wizardSettingState,
-            SIGNAL(backEventTriggered()), wizardProgressiveState);
-    
+            SIGNAL(switchToProState()), wizardProgressiveState);
+
+    // online to settings
+    wizardOnlineState->addTransition(wizardOnlineState,
+            SIGNAL(switchOnlineToSettingsState()), wizardSettingState);
+
+    // settings to online 
+    wizardSettingState->addTransition(wizardSettingState,
+            SIGNAL(switchToOnlineState()), wizardOnlineState);
+
     connect(wizardSettingState, SIGNAL(clickstatus(bool)),
-                wizardProgressiveState, SLOT(settingsaction(bool)));
+            wizardProgressiveState, SLOT(settingsaction(bool)));
 
     connect(wizardSettingState, SIGNAL(publishSelectedCategory(int,bool)),
             wizardProgressiveState, SLOT(getSettingCategory(int,bool)));
+    
+    connect(wizardSettingState, SIGNAL(publishISProviderIcon(int,HbIcon)),
+            wizardProgressiveState, SLOT(slotISProvidersIcon(int,HbIcon)));
 
-    connect(wizardSettingState, SIGNAL(customizeGoButton(bool)),
-            wizardProgressiveState, SLOT(_customizeGoButton(bool)));
+    connect(wizardProgressiveState, SIGNAL(inDeviceSearchQuery(QString)),
+            wizardOnlineState, SLOT(slotIndeviceQuery(QString)));
+    
+    connect(wizardProgressiveState, SIGNAL(launchLink(int,QString)),
+            wizardOnlineState, SLOT(slotlaunchLink(int,QString)));
+
+    connect(wizardOnlineState, SIGNAL(onlineSearchQuery(QString)),
+            wizardProgressiveState, SLOT(slotOnlineQuery(QString)));
 
     // set initial state for statemachine
     if (hbApp->activateReason() == Hb::ActivationReasonActivity)
@@ -146,27 +170,24 @@
         else if (var == "SearchDeviceQueryView")
             {
             searchRootState->setInitialState(wizardProgressiveState);
-           
+
             }
         else if (var == "SearchWebQueryView")
             {
-            //set initial state as internet
+            searchRootState->setInitialState(wizardOnlineState);
             }
         }
     else if (hbApp->activateReason() == Hb::ActivationReasonNormal)
         {
 
-        searchRootState->setInitialState(wizardProgressiveState);        
+        searchRootState->setInitialState(wizardProgressiveState);
 
         }
     guiRootState->setInitialState(searchRootState);
     this->setInitialState(parallel);
 
-    connect(this, SIGNAL(started()),
-            SLOT(handleStateMachineStarted()));
-    connect(this, SIGNAL(stopped()),
-            SLOT(handleStateMachineStopped()));
-    connect(this, SIGNAL(finished()),
-            SLOT(handleStateMachineStopped()));
+    connect(this, SIGNAL(started()), SLOT(handleStateMachineStarted()));
+    connect(this, SIGNAL(stopped()), SLOT(handleStateMachineStopped()));
+    connect(this, SIGNAL(finished()), SLOT(handleStateMachineStopped()));
 
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/inc/searchapplication.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  search application main class.
+ *
+ */
+
+#ifndef SEARCHAPPLICATION_H
+#define SEARCHAPPLICATION_H
+
+#include "search_global.h"
+
+#include <qobject.h>
+
+class QStateMachine;
+
+/**
+ * @ingroup group_searchsearchlication
+ * @brief Search application main class.
+ * 
+ * Loads a runtime from a runtime provider plugin. Manages 
+ * the runtime execution.
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class SearchApplication : public QObject
+    {
+Q_OBJECT
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.     
+     * @param aParent Parent object.
+     */
+    SearchApplication(QObject* aParent = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.     
+     */
+    virtual ~SearchApplication();
+
+private:
+
+    Q_DISABLE_COPY(SearchApplication)
+
+signals:
+
+    /**
+     * Emitted when the search application needs to exit.
+     * @since S60 ?S60_version.     
+     */
+    void exit();
+
+public slots:
+
+    /**
+     * Starts the runtime.
+     * @since S60 ?S60_version. 
+     */
+    void start();
+
+    /**
+     * Stops the runtime.
+     * @since S60 ?S60_version.     
+     */
+    void stop();
+
+private slots:
+
+    /**
+     * Called after the runtime has started.
+     * @since S60 ?S60_version.     
+     */
+    void handleRuntimeStarted();
+
+    /**
+     * Called after the runtime has stopped.
+     * @since S60 ?S60_version.     
+     */
+    void handleRuntimeStopped();
+
+    /**
+     * Called after the runtime has faulted.
+     * @since S60 ?S60_version.     
+     */
+    void handleRuntimeFaulted();
+
+private:
+
+    /**
+     * Runtime.
+     */
+    QStateMachine* mRuntime;
+    };
+
+#endif//SEARCHAPPLICATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/src/searchapplication.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Search application main class.
+ *
+ */
+
+#include "searchapplication.h"
+#include <qstatemachine.h>
+#include <searchruntimeprovider.h>
+#include <searchruntime.h>
+
+// ---------------------------------------------------------------------------
+// SearchApplication::SearchApplication
+// ---------------------------------------------------------------------------
+//
+SearchApplication::SearchApplication(QObject* aParent) :
+    QObject(aParent), mRuntime(NULL)
+    {
+    SEARCH_FUNC_ENTRY("SEARCH::SearchApplication::SearchApplication");
+
+    SearchRuntimeProvider *interface = new SearchRuntimeProvider();
+    mRuntime = interface->createPlugin();
+    if (mRuntime)
+        {
+        mRuntime->setParent(this);
+        connect(mRuntime, SIGNAL(started()),this, SLOT(handleRuntimeStarted()));
+        connect(mRuntime, SIGNAL(stopped()),this, SLOT(handleRuntimeStopped()));
+        connect(mRuntime, SIGNAL(faulted()),this, SLOT(handleRuntimeFaulted()));
+        } 
+		SEARCH_FUNC_EXIT("SEARCH::SearchApplication::SearchApplication");
+    }
+
+// ---------------------------------------------------------------------------
+// SearchApplication::~SearchApplication()
+// ---------------------------------------------------------------------------
+//
+SearchApplication::~SearchApplication()
+    {
+    if (mRuntime)
+        {
+        disconnect(mRuntime, SIGNAL(started()), this,
+                SLOT(handleRuntimeStarted()));
+        disconnect(mRuntime, SIGNAL(stopped()), this,
+                SLOT(handleRuntimeStopped()));
+        disconnect(mRuntime, SIGNAL(faulted()), this,
+                SLOT(handleRuntimeFaulted()));
+
+        delete mRuntime;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// SearchApplication::start()
+// ---------------------------------------------------------------------------
+//
+void SearchApplication::start()
+    {
+    SEARCH_FUNC_ENTRY("SEARCH::Search::start");
+
+    if (mRuntime)
+        {
+        mRuntime->start();
+        }
+    else
+        {
+        emit exit();
+        }
+
+    SEARCH_FUNC_EXIT("SEARCH::Search::start");
+    }
+
+// ---------------------------------------------------------------------------
+// SearchApplication::stop()
+// ---------------------------------------------------------------------------
+//
+void SearchApplication::stop()
+    {
+    SEARCH_FUNC_ENTRY("SEARCH::Search::stop");
+    if (mRuntime)
+        {
+        mRuntime->stop();
+        }
+
+    SEARCH_FUNC_EXIT("SEARCH::Search::stop");
+    }
+
+// ---------------------------------------------------------------------------
+// SearchApplication::handleRuntimeStarted()
+// ---------------------------------------------------------------------------
+//
+void SearchApplication::handleRuntimeStarted()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// SearchApplication::handleRuntimeStopped()
+// ---------------------------------------------------------------------------
+//
+void SearchApplication::handleRuntimeStopped()
+    {
+    emit exit();
+    }
+
+// ---------------------------------------------------------------------------
+// SearchApplication::handleRuntimeFaulted()
+// ---------------------------------------------------------------------------
+//
+void SearchApplication::handleRuntimeFaulted()
+    {
+    emit exit();
+    }
--- a/searchui/searchui.pro	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/searchui.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -11,11 +11,12 @@
 #
 # Contributors:
 #
-# Description:  SEARCH project file
+# Description:  SEARCHUI project file
 #
 TEMPLATE = subdirs
 
-SUBDIRS  += indevicehandler \ 
+SUBDIRS  += onlinehandler \  
+	   indevicehandler \ 
 	   stateproviders  \     
 	   runtimeproviders \
 	   searchapplication               
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/stateproviders/searchstateprovider/inc/searchonlinestate.h	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,194 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  
+ *
+ */
+#ifndef SEARCH_STATES_ONLINE_H
+#define SEARCH_STATES_ONLINE_H
+#include <qstate.h>
+#include "search_global.h"
+#include <hbicon.h>
+SEARCH_CLASS( SearchStateProviderTest)
+
+class HbDocumentLoader;
+class HbView;
+class HbSearchPanel;
+class HbMainWindow;
+class OnlineHandler;
+/** @ingroup group_searchonlinestate
+ * @brief The state handles wizard activation and interaction.
+ *
+ * @see StateMachine
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class SearchOnlineState : public QState
+    {
+Q_OBJECT
+public:
+
+public:
+
+    /**
+     * Constructor.
+     * @since S60 ?S60_version.     
+     * @param aParent Owner.
+     */
+    SearchOnlineState(QState *aParent = 0);
+
+    /**
+     * Destructor.
+     * @since S60 ?S60_version.
+     */
+    virtual ~SearchOnlineState();
+
+protected:
+
+    /**
+     * @copydoc QState::onEntry()
+     */
+    void onEntry(QEvent *event);
+
+    /**
+     * @copydoc QState::onExit()
+     */
+    void onExit(QEvent *event);
+
+private:
+    /**
+     * deactivates the signals .
+     * @since S60 ?S60_version.
+     */
+    void deActivateSignals();
+
+    /**
+     * activates the signals .
+     * @since S60 ?S60_version.
+     */
+    void activateSignals();
+    
+    void createui();
+public slots:
+
+    /**
+     * slot connects to search panel to initiate the online search
+     * @since S60 ?S60_version.
+     * @param aKeyword search keyword.
+     */
+    void startOnlineSearch(const QString &aKeyword);
+
+    /**
+     * slot connects to search panel to launch the settings delimiter
+     * @since S60 ?S60_version.     
+     */
+    void setSettings();
+
+    /**
+     * slot connects to search panel to cancel the outstanding search
+     * @since S60 ?S60_version.     
+     */
+    void cancelSearch();
+
+    /**
+     * slot connects to online handler to get notified when plugin is intialized 
+     * @since S60 ?S60_version.     
+     */
+    void slotpluginIntialized(bool);
+
+    /**
+     * slot connects to online handler to get notified when plugin is shutdown 
+     * @since S60 ?S60_version.     
+     */
+    void slotpluginShutdown(bool);
+
+    /**
+     * slot connects to online handler to get notified when view changed  
+     * @since S60 ?S60_version.     
+     */
+    void slotbackEventTriggered();
+
+    /**
+     * slot connects to progressive search state to get notified criteria in search panel  
+     * @since S60 ?S60_version.
+     * @param aKeyword search keyword.     
+     */
+    void slotIndeviceQuery(QString);
+
+    /**
+     * slot connects to progressive search state to launch the suggestion links  
+     * @since S60 ?S60_version.
+     * @param aKeyword search keyword.
+     * @param id search provider id.     
+     */
+    void slotlaunchLink(int, QString);
+
+    /**
+     * slot connects to main window to get notify when view is ready  
+     * @since S60 ?S60_version.     
+     */
+    void slotviewReady();
+
+signals:
+
+    /**
+     * Signalled when user selects an to switch the settings state
+     * setting state will be  activated.
+     */
+    void switchOnlineToSettingsState();
+
+    /**
+     * Signalled when user change the state to progressive state
+     * setting state will be  activated.
+     */
+    void onlineSearchQuery(QString);
+
+private:
+    HbMainWindow* mMainWindow;
+    /**
+     * main view.
+     * Own.
+     */
+    HbView* mView;
+
+    /**
+     * The searchpanel widget.
+     * Own.
+     */
+    HbSearchPanel* mSearchPanel;
+
+    /**
+     * HbDocumentLoader instance.
+     */
+    HbDocumentLoader* mDocumentLoader;
+
+    /**
+     * OnlineHandler instance.
+     */
+    OnlineHandler* mInternetHandler;
+
+    /**
+     * search keyword.
+     */
+    QString mSearchQuery;
+    bool mSearchReady;
+    bool mIndeviceQueryAvailable;
+    bool mIsUICreated;
+    /**
+     * friend class for unit testing
+     */
+    SEARCH_FRIEND_CLASS (SearchStateProviderTest)
+    };
+
+#endif //SEARCH_STATES_ONLINE_H
--- a/searchui/stateproviders/searchstateprovider/inc/searchprogressivestate.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/inc/searchprogressivestate.h	Tue Jul 06 14:17:22 2010 +0300
@@ -18,7 +18,6 @@
 #ifndef PROGRESSIVE_SEARCH_STATE_H
 #define PROGRESSIVE_SEARCH_STATE_H
 
-#include <qabstractitemmodel.h>
 #include <qstate.h>
 #include <qstringlist.h>
 #include <qdatetime.h>
@@ -30,10 +29,7 @@
 #include "search_global.h"
 #include <f32file.h>
 
-
-
 #ifdef OST_TRACE_COMPILER_IN_USE //defined in Search_global.h 
-
 #define PERF_CAT_API_TIME_RESTART  m_categorySearchApiTime.restart();
 #define PERF_CAT_UI_TIME_RESTART  m_categorySearchUiTime.restart();
 #define PERF_CAT_TOTAL_TIME_RESTART  m_totalSearchUiTime.restart();
@@ -67,15 +63,15 @@
 #endif //OST_TRACE_COMPILER_IN_USE
 class HbMainWindow;
 class HbView;
-class HbListView;
 class HbDocumentLoader;
-class QStandardItemModel;
 class HbSearchPanel;
 class CFbsBitmap;
 class InDeviceHandler;
 class QCPixDocument;
 class NotesEditorInterface;
 class EventViewerPluginInterface;
+class HbListWidget;
+class HbListWidgetItem;
 class QPluginLoader;
 SEARCH_CLASS( SearchStateProviderTest)
 /** @ingroup group_searchstateprovider
@@ -176,7 +172,7 @@
      * @since S60 ?S60_version.
      * @param aIndex index of the activated item.
      */
-    void openResultitem(QModelIndex aIndex);
+    void openResultitem(HbListWidgetItem * item);
 
     /**
      * slot connects to settings state to get the selected category information
@@ -200,12 +196,6 @@
     void startNewSearch(const QString &aKeyword);
 
     /**
-     * slot connects to search state  for internet search
-     * @since S60 ?S60_version.
-     */
-    void _customizeGoButton(bool avalue);
-
-    /**
      * slot implemented to avoid repeated search for the same category 
      * selection when user search for mutiple times
      * @since S60 ?S60_version.
@@ -232,11 +222,13 @@
      */
 
     void _viewingCompleted();
-    
 
     void viewReady();
+    
+    void slotOnlineQuery(QString);
+    
+    void slotISProvidersIcon(int, HbIcon);
 
-    
 private:
 
     /**
@@ -264,7 +256,7 @@
      * 
      * @param aKeyword search keyword.
      */
-    void createSuggestionLink(bool aFlag);
+    void createSuggestionLink();
 
     /**
      * Function to include corrrect Qimage format to be taken from bitmap
@@ -319,8 +311,11 @@
      * Signalled when user selects an to switch the settings state
      * setting state will be  activated.
      */
-    void settingsState();
+    void switchProToSettingsState();
+    
+    void inDeviceSearchQuery(QString);
 
+    void launchLink(int,QString);
 private:
 
     HbMainWindow* mMainWindow;
@@ -335,7 +330,7 @@
      * The List View widget.
      * Own.
      */
-    HbListView* mListView;
+    HbListWidget* mListView;
 
     /**
      * Document handler to load .docml.
@@ -349,11 +344,7 @@
      */
     HbSearchPanel* mSearchPanel;
 
-    /**
-     * model for list view
-     * Own.
-     */
-    QStandardItemModel* mModel;
+ 
 
     /**
      * qt interface for CPix engine
@@ -453,6 +444,10 @@
      * 
      */
     QPluginLoader *mNotespluginLoader;
+    
+    QMap<int, HbIcon> mISprovidersIcon;
+    
+    bool mOnlineQueryAvailable;
 
 private:
     /**
@@ -479,10 +474,10 @@
     QTime m_categoryGetDocumentApiTime;
     QTime m_resultItemLaunchTime;
     //use long to safeguard overflow from long running operations.
-    long m_getDocumentCatergoryTimeAccumulator; 
+    long m_getDocumentCatergoryTimeAccumulator;
 #endif
 
-SEARCH_FRIEND_CLASS    (SearchStateProviderTest)
+    SEARCH_FRIEND_CLASS (SearchStateProviderTest)
 
     };
 
--- a/searchui/stateproviders/searchstateprovider/inc/searchsettingsstate.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/inc/searchsettingsstate.h	Tue Jul 06 14:17:22 2010 +0300
@@ -14,14 +14,12 @@
  * Description:  
  *
  */
-
 #ifndef SEARCH_STATES_SETTINGS_H
 #define SEARCH_STATES_SETTINGS_H
-
 #include <qstate.h>
 #include <qabstractitemmodel.h>
 #include "search_global.h"
-
+#include <hbicon.h>
 SEARCH_CLASS( SearchStateProviderTest)
 
 class QGraphicsWidget;
@@ -85,7 +83,6 @@
 
 private:
 
-   
     /**
      * checking whether internet search is selected 
      * @since S60 ?S60_version.
@@ -93,10 +90,10 @@
 
     void isInternetOn();
 public slots:
-   /**
-    * Called when it receive the selected category information from the settingwidget class
-    * @since S60 ?S60_version.
-    */
+    /**
+     * Called when it receive the selected category information from the settingwidget class
+     * @since S60 ?S60_version.
+     */
 
     void getItemCategory(int, bool);
 
@@ -106,14 +103,19 @@
      */
     void handleBackEvent(bool);
 
+    void slotISProvidersIcon(HbIcon icon, int id);
+
 signals:
 
     /**
      * Emitted when the menu state is to be activated.
      * @since S60 ?S60_version.
      */
-    void backEventTriggered();
-    
+
+    void switchToProState();
+
+    void settingslaunched();
+
     /**
      * Emitted when ok/cancel clicked on settings page
      * @since S60 ?S60_version.
@@ -130,7 +132,9 @@
      * Emitted when internet search is selectead 
      * @since S60 ?S60_version.
      */
-    void customizeGoButton(bool);
+    void switchToOnlineState();
+
+    void publishISProviderIcon(int, HbIcon);
 
 private:
 
@@ -154,7 +158,7 @@
     /**
      * friend class for unit testing
      */
-SEARCH_FRIEND_CLASS    (SearchStateProviderTest)
+    SEARCH_FRIEND_CLASS (SearchStateProviderTest)
     };
 
 #endif //SEARCH_STATES_SETTINGS_H
--- a/searchui/stateproviders/searchstateprovider/inc/settingswidget.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/inc/settingswidget.h	Tue Jul 06 14:17:22 2010 +0300
@@ -21,6 +21,8 @@
 #include <qlist.h>
 #include <hbgridview.h>
 #include <search_global.h>
+#include <hbicon.h>
+class OnlineHandler;
 class HbCheckBox;
 class HbDialog;
 class QSignalMapper;
@@ -73,7 +75,7 @@
      * 
      */
     void loadDeviceSettings();
-    
+
     /**
      * Load default settings for search categories to ini file
      * 
@@ -91,27 +93,30 @@
      * 
      */
     void storeDefaultSettings();
-    
+
     /**
      * setting up gui for the settings widget
      */
 
     void createGui();
-    
+
     /**
      * Filter out categories from the sql database provided by the engine
      * for only those categories that have been successfully harvested
      */
 
     void preparecategories();
-    
-    
+
     /**
-      * initilize the settings wizard while entering to the setting state
-      */
+     * initilize the settings wizard while entering to the setting state
+     */
 
     void initialize();
-  
+    
+    void setSettingsFilePath();
+    
+    void loadIS();
+
 public slots:
     /**
      * will be called when settings OK is clicked
@@ -126,10 +131,16 @@
      */
     void itemChecked(int);
     /**
-      * slot called while clicking items added to  the combobox
-      */
+     * slot called while clicking items added to  the combobox
+     */
 
     void q_currentIndexChanged(int);
+
+    void slotproviderDetails(QString, HbIcon, int);
+
+    void slotdefaultProvider(const int);
+    
+    void slotitemSelected(int);
 signals:
     /**
      * Emitted when setting closed
@@ -146,6 +157,8 @@
      * 
      */
     void selectedItemCategory(int, bool);
+    
+    void ISProvidersIcon(HbIcon,int);
 
 private:
     /**
@@ -177,30 +190,30 @@
 
     QStringList mDeviceListDisplay;
     /**
-      * list of hardcoded device categories:cretaed to
-      * set up default category values to the ini file
-      */
+     * list of hardcoded device categories:cretaed to
+     * set up default category values to the ini file
+     */
 
     QStringList mDeviceCategoryRefList;
     /**
-      * intermediate variable to store selected category values
-      */
+     * intermediate variable to store selected category values
+     */
 
     QList<bool> mDeviceMapping;
     /**
      * list of hardcoded service providers
      */
-    QStringList internetCategoryList;
+    //QStringList internetCategoryList;
     /**
      * for unit testing
      */
     QStringList mCategoryList;
     /**
-      * DocumentLoader variable for the setting widget
-      */
+     * DocumentLoader variable for the setting widget
+     */
 
     HbDocumentLoader* mDocumentLoader;
-    
+
     /**
      * Dataform for the settingwidget
      */
@@ -208,12 +221,12 @@
     HbDataForm* dataform;
 
     /**
-      * Dataform model
-      */
+     * Dataform model
+     */
     HbDataFormModel* mModel;
     /**
-      * variable for customizing each item the in the dataform
-      */
+     * variable for customizing each item the in the dataform
+     */
 
     QList<HbDataFormModelItem*> mModelItemList;
 
@@ -223,18 +236,24 @@
 
     int mSelectedProvider;
     /**
-      * Radio buttion list for internet search categories
-      */
+     * Radio buttion list for internet search categories
+     */
 
     HbRadioButtonList* mradiolist;
-	
+
     /** 
      * combobox items
-     */    
-    HbComboBox *comboBox ;
+     */
+    HbComboBox *comboBox;
 
     bool mInstialize;
     bool mchangestate;
+
+    OnlineHandler *mInternetHandler;
+   // QStringList mServiceProviders;
+    QMap<int, QString> mServiceProviders;
+    
+    QString mSettingFileName;
 SEARCH_FRIEND_CLASS    (SearchStateProviderTest)
     };
 #endif
--- a/searchui/stateproviders/searchstateprovider/resources/searchstateprovider.docml	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/resources/searchstateprovider.docml	Tue Jul 06 14:17:22 2010 +0300
@@ -2,16 +2,10 @@
 <hbdocument version="1.0">
     <widget name="tocView" type="HbView">
         <widget name="content" role="HbView:widget" type="HbWidget">
-            <widget name="listView" type="HbListView">
-                <widget name="prototype" role="HbAbstractView:prototype" type="HbListViewItem">
-                    <enums name="graphicsSize" value="LargeIcon"/>
-                </widget>
-                <string name="layoutName" value="default"/>
-                <sizehint height="47.7612un" type="PREFERRED" width="35.8209un"/>
-            </widget>
             <widget name="searchPanel" type="HbSearchPanel">
                 <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
             </widget>
+            <widget name="listView" type="HbListWidget"/>
             <layout orientation="Vertical" type="linear">
                 <linearitem itemname="listView"/>
                 <linearitem itemname="searchPanel"/>
@@ -21,6 +15,5 @@
     </widget>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
-        <dummydata objectName="listView" section="#common" value="0"/>
     </metadata>
 </hbdocument>
--- a/searchui/stateproviders/searchstateprovider/searchstateprovider.pro	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/searchstateprovider.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -46,6 +46,7 @@
 LIBS += -lbitgdi
 #LIBS += -lnoteseditor
 LIBS += -lxqutils
+LIBS += -lsearchonlinehandler
 LIBS += -lapparc
 LIBS += -lefsrv
 LIBS += -lapgrfx
@@ -66,8 +67,9 @@
 
 INCLUDEPATH += ./inc \
                ../../inc \
-               ../../indevicehandler/inc
-               
+               ../../onlinehandler/inc \
+               ../../indevicehandler/inc 
+                
 
 
 symbian {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/stateproviders/searchstateprovider/src/searchonlinestate.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -0,0 +1,274 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Implements the wizard activation and interactions.
+ *
+ */
+
+#include "searchonlinestate.h"
+#include "onlinehandler.h"
+#include <hbdocumentloader.h>
+#include <hbview.h>
+#include <hblabel.h>
+#include <hbstackedwidget.h>
+#include <hbicon.h>
+#include <hbinstance.h>
+#include <hbaction.h>
+#include <qstandarditemmodel.h>
+#include <qdebug.h>
+#include <qgraphicswidget.h>
+#include <qdir.h>
+#include <hbsearchpanel.h>
+#include <hbapplication.h>
+#define hbApp qobject_cast<HbApplication*>(qApp)
+const char *SEARCHONLINESTATE_DOCML = ":/xml/searchstateprovider.docml";
+const char *ONLINE_TOC_VIEW = "tocView";
+const char *ONLINE_TUT_SEARCHPANEL_WIDGET = "searchPanel";
+
+// ---------------------------------------------------------------------------
+// SearchOnlineState::SearchOnlineState
+// ---------------------------------------------------------------------------
+//
+SearchOnlineState::SearchOnlineState(QState *parent) :
+    QState(parent), mMainWindow(NULL), mView(NULL), mSearchPanel(NULL),
+            mDocumentLoader(NULL)
+    {
+
+    mInternetHandler = new OnlineHandler();
+    mSearchReady = true;
+    mIndeviceQueryAvailable = false;
+    mIsUICreated = false;
+    //activateSignals();
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::~SearchOnlineState
+// ---------------------------------------------------------------------------
+//
+SearchOnlineState::~SearchOnlineState()
+    {
+    delete mDocumentLoader;
+    delete mInternetHandler;
+    }
+void SearchOnlineState::createui()
+    {
+    mMainWindow = hbInstance->allMainWindows().at(0);
+    mDocumentLoader = new HbDocumentLoader();
+    bool ok = false;
+    mDocumentLoader->load(SEARCHONLINESTATE_DOCML, &ok);
+
+    QGraphicsWidget *widget = mDocumentLoader->findWidget(ONLINE_TOC_VIEW);
+    Q_ASSERT_X(ok && (widget != 0), "ONLINE_TOC_VIEW", "invalid view");
+
+    mView = qobject_cast<HbView*> (widget);
+    if (mView)
+        {
+        mView->setTitle(hbTrId("txt_search_title_search"));
+        }
+
+    mSearchPanel = qobject_cast<HbSearchPanel *> (
+            mDocumentLoader->findWidget(ONLINE_TUT_SEARCHPANEL_WIDGET));
+    if (mSearchPanel)
+        {
+        mSearchPanel->setSearchOptionsEnabled(true);
+
+        mSearchPanel->setProgressive(false);
+
+        mSearchPanel->setPlaceholderText(hbTrId(
+                "txt_search_dialog_search_internet"));
+
+        mSearchPanel->setCancelEnabled(false);          
+        }
+    if (mView && mMainWindow)
+        {
+        mMainWindow->addView(mView);
+        mMainWindow->setCurrentView(mView);
+        }
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::onEntry
+// ---------------------------------------------------------------------------
+//
+void SearchOnlineState::onEntry(QEvent *event)
+    {
+    qDebug() << "search:SearchOnlineState::onEntry";
+    QState::onEntry(event);
+    if (!mIsUICreated)
+        {
+        createui();
+        mIsUICreated = true;
+        }
+
+    activateSignals();
+    // If this is not the current view, we're getting back from plugin view  
+    if (mMainWindow)
+        {
+        if (mMainWindow->currentView() != mView)
+            {
+            mMainWindow->setCurrentView(mView, true);
+            }
+        mMainWindow->show();
+        }
+    if (mIndeviceQueryAvailable)
+        {
+        mSearchPanel->setCriteria(mSearchQuery);
+        mIndeviceQueryAvailable = false;
+        }
+
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::onExit
+// ---------------------------------------------------------------------------
+//
+void SearchOnlineState::onExit(QEvent *event)
+    {
+    QState::onExit(event);
+    deActivateSignals();
+    }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::activateSignals
+// ---------------------------------------------------------------------------
+void SearchOnlineState::activateSignals()
+    {
+    if (mSearchPanel)
+        {
+        connect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this,
+                SLOT(startOnlineSearch(QString)));
+        connect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
+                SLOT(setSettings()));
+        connect(mSearchPanel, SIGNAL(exitClicked()), this,
+                SLOT(cancelSearch()));
+        }
+    if (mInternetHandler)
+        {
+
+        connect(mInternetHandler, SIGNAL(pluginIntialized(bool)), this,
+                SLOT(slotpluginIntialized(bool)));
+        connect(mInternetHandler, SIGNAL(pluginShutdown(bool)), this,
+                SLOT(slotpluginShutdown(bool)));
+        connect(mInternetHandler, SIGNAL(backEventTriggered()), this,
+                SLOT(slotbackEventTriggered()));
+        }
+    connect(mMainWindow, SIGNAL(viewReady()), this, SLOT(slotviewReady()));
+    }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::deActivateSignals
+// ---------------------------------------------------------------------------
+void SearchOnlineState::deActivateSignals()
+    {
+    if (mSearchPanel)
+        {
+        disconnect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this,
+                SLOT(startOnlineSearch(QString)));
+        disconnect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
+                SLOT(setSettings()));
+        disconnect(mSearchPanel, SIGNAL(exitClicked()), this,
+                SLOT(cancelSearch()));
+        }
+    if (mInternetHandler)
+        {
+        disconnect(mInternetHandler, SIGNAL(pluginIntialized(bool)), this,
+                SLOT(slotpluginIntialized(bool)));
+        disconnect(mInternetHandler, SIGNAL(pluginShutdown(bool)), this,
+                SLOT(slotpluginShutdown(bool)));
+        disconnect(mInternetHandler, SIGNAL(backEventTriggered()), this,
+                SLOT(slotbackEventTriggered()));
+        }
+    disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(slotviewReady()));
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::startOnlineSearch
+// ---------------------------------------------------------------------------
+void SearchOnlineState::startOnlineSearch(const QString &query)
+    {
+    mSearchQuery = query;
+    //    if (mSearchReady)
+        {
+        mInternetHandler->readSettings();
+        mInternetHandler->initializePlugin();
+        }
+    // load online handlers
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::setSettings
+// ---------------------------------------------------------------------------
+void SearchOnlineState::setSettings()
+    {
+    if (mSearchQuery.length())
+        emit onlineSearchQuery(mSearchQuery);
+    emit switchOnlineToSettingsState();
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::cancelSearch
+// ---------------------------------------------------------------------------
+void SearchOnlineState::cancelSearch()
+    {
+    // unload handlers
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::slotpluginIntialized
+// ---------------------------------------------------------------------------
+void SearchOnlineState::slotpluginIntialized(bool status)
+    {
+    if (status)
+        mInternetHandler->activatePlugin(mSearchQuery);
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::slotpluginShutdown
+// ---------------------------------------------------------------------------
+void SearchOnlineState::slotpluginShutdown(bool status)
+    {
+    mSearchReady = status;
+    if (!mSearchReady)
+        mInternetHandler->unloadPluginandExit();
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::slotbackEventTriggered
+// ---------------------------------------------------------------------------
+void SearchOnlineState::slotbackEventTriggered()
+    {
+    mInternetHandler->unloadPluginandExit();
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::slotIndeviceQuery
+// ---------------------------------------------------------------------------
+void SearchOnlineState::slotIndeviceQuery(QString str)
+    {
+    mSearchQuery = str;
+    mIndeviceQueryAvailable = true;
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::slotlaunchLink
+// ---------------------------------------------------------------------------
+void SearchOnlineState::slotlaunchLink(int id, QString query)
+    {
+    mInternetHandler->loadISPlugin(id, query);
+    }
+// ---------------------------------------------------------------------------
+// SearchOnlineState::slotviewReady
+// ---------------------------------------------------------------------------
+void SearchOnlineState::slotviewReady()
+    {
+    if (hbApp)
+        {
+        if (hbApp->activateReason() == Hb::ActivationReasonActivity)
+            {
+            QVariantHash params = hbApp->activateParams();
+            QString searchKey = params.value("query").toString();
+            if (searchKey.length() > 0)
+                {
+                mSearchPanel->setCriteria(searchKey);
+                startOnlineSearch(searchKey);
+                }
+            }
+        }//PERF_APP_LAUNCH_END("SearchAppplication View is ready");
+    }
--- a/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -24,15 +24,10 @@
 #include <hbicon.h>
 #include <hbmenu.h>
 #include <hbinstance.h>
-#include <hblistview.h>
 #include <hbdocumentloader.h>
 #include <hbsearchpanel.h>
 #include <hbaction.h>
-#include <qstandarditemmodel.h>
 #include <hbframebackground.h>
-#include <hbabstractviewitem.h>
-#include <hbframebackground.h>
-#include <hblistviewitem.h>
 #include <hbapplication.h>
 #include <qsortfilterproxymodel.h>
 #include <AknsUtils.h>
@@ -53,6 +48,11 @@
 #include <apacmdln.h>
 #include <xqconversions.h>
 #include <apparc.h>
+#include <qdesktopservices.h>
+#include <hblistwidget.h>
+#include <hblistwidgetitem.h>
+#include <hbabstractviewitem.h>
+#include <hblistviewitem.h>
 #define hbApp qobject_cast<HbApplication*>(qApp)
 const char *SEARCHSTATEPROVIDER_DOCML = ":/xml/searchstateprovider.docml";
 const char *TOC_VIEW = "tocView";
@@ -64,12 +64,11 @@
 // ---------------------------------------------------------------------------
 SearchProgressiveState::SearchProgressiveState(QState *parent) :
     QState(parent), mMainWindow(NULL), mView(NULL), mListView(NULL),
-            mDocumentLoader(NULL), mModel(NULL), mSearchHandler(NULL),
-            mNotesEditor(0), mAiwMgr(0), mRequest(0)
+            mDocumentLoader(NULL), mSearchHandler(NULL), mNotesEditor(0),
+            mAiwMgr(0), mRequest(0)
     {
 
     mMainWindow = hbInstance->allMainWindows().at(0);
-    mModel = new QStandardItemModel(this);
 
     mAiwMgr = new XQApplicationManager;
 
@@ -86,7 +85,7 @@
         mView->setTitle(hbTrId("txt_search_title_search"));
         }
 
-    mListView = qobject_cast<HbListView *> (mDocumentLoader->findWidget(
+    mListView = qobject_cast<HbListWidget *> (mDocumentLoader->findWidget(
             TUT_LIST_VIEW));
     Q_ASSERT_X(ok && (mListView != 0), "TUT_LIST_VIEW", "invalid viewocML file");
 
@@ -100,6 +99,7 @@
 
         HbListViewItem *prototypeListView = qobject_cast<HbListViewItem *> (
                 prototype);
+        prototypeListView->setGraphicsSize(HbListViewItem::LargeIcon);
         if (prototypeListView)
             {
             HbStyle style;
@@ -109,7 +109,6 @@
             mListViewIconSize = size.toSize();
             prototypeListView->setTextFormat(Qt::RichText);
             }
-        mListView->setModel(mModel, prototype);
 
         HbAbstractItemView::ItemAnimations noCreationAndRemovalAnimations =
                 HbAbstractItemView::All;
@@ -123,10 +122,12 @@
     if (mSearchPanel)
         {
         mSearchPanel->setSearchOptionsEnabled(true);
-        
-        mSearchPanel->setPlaceholderText(hbTrId("txt_search_dialog_search_device"));
+
+        mSearchPanel->setPlaceholderText(hbTrId(
+                "txt_search_dialog_search_device"));
 
         mSearchPanel->setCancelEnabled(false);
+        mSearchPanel->setFocus();
         }
 
     constructHandlers();
@@ -185,6 +186,8 @@
                 mNotespluginLoader->instance());
         mNotesEditor = qobject_cast<NotesEditorInterface*> (plugin);
         }
+
+    mOnlineQueryAvailable = false;
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::~SearchProgressiveState
@@ -195,10 +198,6 @@
         {
         delete mAiwMgr;
         }
-    if (mModel)
-        {
-        delete mModel;
-        }
     if (mDocumentLoader)
         {
         delete mDocumentLoader;
@@ -246,7 +245,7 @@
                 }
             case 4:
                 {
-                handler->setCategory("email");
+                handler->setCategory("msg email");
                 break;
                 }
             case 5:
@@ -298,10 +297,15 @@
         }
     if (loadSettings)
         {
-        emit settingsState();
+        emit switchProToSettingsState();
         loadSettings = false;
         }
     setSelectedCategories();
+    if (mOnlineQueryAvailable)
+        {
+        mSearchPanel->setCriteria(mOriginalString);
+        mOnlineQueryAvailable = false;
+        }
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onExit
@@ -327,8 +331,8 @@
         }
     if (mListView)
         {
-        connect(mListView, SIGNAL(activated(const QModelIndex)), this,
-                SLOT(openResultitem(const QModelIndex)));
+        connect(mListView, SIGNAL(activated(HbListWidgetItem *)), this,
+                SLOT(openResultitem(HbListWidgetItem *)));
         }
     if (mSearchPanel)
         {
@@ -357,8 +361,8 @@
         }
     if (mListView)
         {
-        disconnect(mListView, SIGNAL(activated(const QModelIndex)), this,
-                SLOT(openResultitem(const QModelIndex)));
+        disconnect(mListView, SIGNAL(activated(HbListWidgetItem *)), this,
+                SLOT(openResultitem(HbListWidgetItem *)));
         }
     if (mSearchPanel)
         {
@@ -408,7 +412,7 @@
     QStringList liststr;
     QString secondrow = aDoc->excerpt();
     QString firstrow;
-    QStandardItem* listitem = new QStandardItem();
+    HbListWidgetItem* listitem = new HbListWidgetItem();
 
     if (aDoc->baseAppClass().contains("contact"))
         {
@@ -450,7 +454,7 @@
         }
     else if (aDoc->baseAppClass().contains("video"))
         {
-        QStringList videoList = filterDoc(aDoc, "Title", "MediaId","Name");
+        QStringList videoList = filterDoc(aDoc, "Title", "MediaId", "Name");
         if (videoList.value(0, "").length())
             {
             firstrow.append(videoList.at(0));
@@ -480,6 +484,20 @@
             listitem->setData(imageList.at(1), Qt::UserRole + 2);
             }
         }
+    else if (aDoc->baseAppClass().contains("msg email"))
+        {
+        qDebug() << "searchui:on Get doc email";
+        QStringList emailList = filterDoc(aDoc, "Sender", "MailBoxId",
+                "FolderId");
+
+        qDebug() << "searchui:recipients" << emailList.at(0) << emailList.at(
+                1) << emailList.at(2);
+        firstrow.append(emailList.at(0));
+        listitem->setData(emailList.at(1), Qt::UserRole + 2);
+        listitem->setData(emailList.at(2), Qt::UserRole + 3);
+        liststr << firstrow << secondrow;
+        listitem->setData(mIconArray.at(5), Qt::DecorationRole);
+        }
     else if (aDoc->baseAppClass().contains("msg"))
         {
         QStringList msgList = filterDoc(aDoc, "Subject", "Body");
@@ -498,13 +516,7 @@
             }
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(4), Qt::DecorationRole);
-        }
-    else if (aDoc->baseAppClass().contains("email"))
-        {
-        firstrow.append(filterDoc(aDoc, "Subject"));
-        liststr << firstrow << secondrow;
-        listitem->setData(mIconArray.at(5), Qt::DecorationRole);
-        }
+        } 
     else if (aDoc->baseAppClass().contains("calendar"))
         {
         firstrow.append(filterDoc(aDoc, "Summary"));
@@ -542,6 +554,7 @@
             firstrow = "UnKnown";
             }
         liststr << firstrow << secondrow;
+        listitem->setData(secondrow, Qt::UserRole + 2);
         listitem->setData(mIconArray.at(8), Qt::DecorationRole);
         }
     else if (aDoc->baseAppClass().contains("file"))
@@ -552,10 +565,11 @@
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(9), Qt::DecorationRole);
         }
-    listitem->setData(liststr, Qt::DisplayRole);
+    listitem->setText(firstrow);
+    listitem->setSecondaryText(secondrow);
     listitem->setData(aDoc->docId(), Qt::UserRole);
     listitem->setData(aDoc->baseAppClass(), Qt::UserRole + 1);
-    mModel->appendRow(listitem);
+    mListView->addItem(listitem);
 
     mResultparser++;
     if (mResultparser < mResultcount)
@@ -580,9 +594,8 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::openResultitem
 // ---------------------------------------------------------------------------
-void SearchProgressiveState::openResultitem(QModelIndex index)
+void SearchProgressiveState::openResultitem(HbListWidgetItem * item)
     {
-    QStandardItem* item = mModel->itemFromIndex(index);
     if (item == NULL)
         return;PERF_RESULT_ITEM_LAUNCH_TIME_RESTART
     QList<QVariant> args;
@@ -600,7 +613,8 @@
     else if (item->data(Qt::UserRole + 1).toString().contains("bookmark"))
         {
         PERF_RESULT_ITEM_FOR_LAUNCHING("bookmark")
-        PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG("")
+        QDesktopServices::openUrl(item->data(Qt::UserRole + 2).toString());
+PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG        ("")
 
         }
     else if (item->data(Qt::UserRole + 1).toString().contains("calendar"))
@@ -608,10 +622,10 @@
         QDir pluginDir = QDir(QString("z:/resource/qt/plugins/calendar"));
         QPluginLoader *calAgandaViewerPluginLoader = new QPluginLoader(
                 pluginDir.absoluteFilePath(QString(
-                        "agendaeventviewerplugin.qtplugin")));
+                                "agendaeventviewerplugin.qtplugin")));
 
         calAgandaViewerPluginInstance = qobject_cast<
-                EventViewerPluginInterface *> (
+        EventViewerPluginInterface *> (
                 calAgandaViewerPluginLoader->instance());
 
         connect(calAgandaViewerPluginInstance, SIGNAL(viewingCompleted()),
@@ -658,6 +672,16 @@
             }
         PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG("")
         }
+    else if (item->data(Qt::UserRole + 1).toString().contains("msg email"))
+        {
+
+        mRequest = mAiwMgr->create("nmail",
+                "com.nokia.symbian.IEmailMessageView",
+                "viewMessage(QVariant,QVariant,QVariant)", false);
+
+        args << item->data(Qt::UserRole + 2).toULongLong(&t) << item->data(
+                Qt::UserRole + 3).toULongLong(&t) << item->data(Qt::UserRole).toULongLong(&t);
+        }
     else if (item->data(Qt::UserRole + 1).toString().contains("msg"))
         {
         PERF_RESULT_ITEM_FOR_LAUNCHING("msg")
@@ -667,6 +691,10 @@
         int uid = (item->data(Qt::UserRole)).toInt(&t);
         args << uid;
         }
+    else if(item->data(Qt::UserRole + 1).toString().contains("links"))
+        {
+        emit launchLink((item->data(Qt::UserRole)).toInt(&t),mOriginalString);
+        }
     if (mRequest)
         {
         connect(mRequest, SIGNAL(requestOk(const QVariant&)), this,
@@ -675,6 +703,7 @@
                 SLOT(handleError(int,const QString&)));// Connect error handling signal or apply lastError function instead.
         mRequest->setArguments(args);
         if (!mRequest->send())// Make the request
+
             {
             qDebug() << "AIW-ERROR: Send failed" << mRequest->lastError();
             }
@@ -709,15 +738,20 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::createSuggestionLink
 // ---------------------------------------------------------------------------
-void SearchProgressiveState::createSuggestionLink(bool aFlag)
+void SearchProgressiveState::createSuggestionLink()
     {
-    QStandardItem* listitem = new QStandardItem();   
-    if (!aFlag)
+    QString linkString = QString(hbTrId("txt_search_list_search_for_1").arg(
+            mOriginalString));
+    QMapIterator<int, HbIcon> i(mISprovidersIcon);
+    while (i.hasNext())
         {
-        QString linkString = QString(hbTrId("txt_search_list_search_for_1").arg(mOriginalString));
-        mLinkindex = mModel->rowCount();
-        listitem->setData(linkString, Qt::DisplayRole);
-        mModel->appendRow(listitem);
+        i.next();
+        HbListWidgetItem* listitem = new HbListWidgetItem();
+        listitem->setText(linkString);
+        listitem->setData(i.key(), Qt::UserRole);
+        listitem->setData(i.value(), Qt::DecorationRole);
+        listitem->setData("links", Qt::UserRole + 1);
+        mListView->addItem(listitem);
         }
     }
 // ---------------------------------------------------------------------------
@@ -727,11 +761,12 @@
     {
     if (aKeyword.length())
         {
-        QStandardItem* listitem = new QStandardItem();
+        HbListWidgetItem* listitem = new HbListWidgetItem();
         QString noResultMsg = QString("<align=\"center\">" + hbTrId(
                 "txt_search_list_no_match_found"));
-        listitem->setData(noResultMsg, Qt::DisplayRole);
-        mModel->appendRow(listitem);
+        listitem->setText(noResultMsg);
+        mListView->addItem(listitem);
+
         }
     }
 // ---------------------------------------------------------------------------
@@ -739,10 +774,7 @@
 // ---------------------------------------------------------------------------
 void SearchProgressiveState::clear()
     {
-    if (mModel)
-        {
-        mModel->clear();
-        }
+    mListView->clear();
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::searchOnCategory
@@ -806,7 +838,7 @@
             {
             PERF_CAT_API_TIME_RESTART
             mSearchHandler->searchAsync(aKeyword, "_aggregate");
-            
+
             }
         else
             {
@@ -816,10 +848,10 @@
     else if (mDatabasecount >= mTemplist.count())
         {
         PERF_TOTAL_UI_ENDLOG
-        if (mModel->rowCount() == 0 && aKeyword.length() != 0)
+        if (mListView->count() == 0 && aKeyword.length() != 0)
             {
             noResultsFound(mOriginalString);
-            createSuggestionLink(0);
+            createSuggestionLink();
             }
         return;
         }
@@ -835,7 +867,7 @@
         {
         mSearchHandlerList.at(i)->cancelLastSearch();
         }
-    if (mModel->rowCount() != 0)
+    if (mListView->count() != 0)
         {
         clear();
         }
@@ -858,24 +890,9 @@
 void SearchProgressiveState::setSettings()
     {
     mTempSelectedCategory = mSelectedCategory;
-    emit settingsState();
-    }
-// ---------------------------------------------------------------------------
-// SearchProgressiveState::_customizeGoButton
-// ---------------------------------------------------------------------------
-void SearchProgressiveState::_customizeGoButton(bool avalue)
-    {
-    if (mSearchPanel)
-        {
-        if (avalue)
-            {
-            mSearchPanel->setProgressive(false);
-            }
-        else
-            {
-            mSearchPanel->setProgressive(true);
-            }
-        }
+    if (mOriginalString.length())
+        emit inDeviceSearchQuery(mOriginalString);
+    emit switchProToSettingsState();
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::settingsaction
@@ -932,7 +949,7 @@
                 case 3://Messages& emails
                     {
                     mTemplist.append("msg");
-                    //mTemplist.append("email");
+                    mTemplist.append("email");
                     break;
                     }
                 case 4://Calender& notes
@@ -959,7 +976,7 @@
                 }
             }
         }
-    if (mTemplist.count() == 8)
+    if (mTemplist.count() == 9)
         isrootsearch = true;
     if (isrootsearch)
         {
@@ -1029,9 +1046,9 @@
         CleanupStack::PopAndDestroy(apaMaskedBitmap);
         }
     CleanupStack::PopAndDestroy(&apaLsSession);
-    
-    if (icon.isNull() || !(icon.size().isValid())) 
-            icon = HbIcon("qtg_large_application");
+
+    if (icon.isNull() || !(icon.size().isValid()))
+        icon = HbIcon("qtg_large_application");
     return icon;
     }
 // ---------------------------------------------------------------------------
@@ -1328,3 +1345,12 @@
             }
         }PERF_APP_LAUNCH_END("SearchAppplication View is ready");
     }
+void SearchProgressiveState::slotOnlineQuery(QString str)
+    {
+    mOriginalString = str;
+    mOnlineQueryAvailable = true;
+    }
+void SearchProgressiveState::slotISProvidersIcon(int id, HbIcon icon)
+    {
+    mISprovidersIcon.insert(id, icon);
+    }
--- a/searchui/stateproviders/searchstateprovider/src/searchsettingsstate.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/src/searchsettingsstate.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -46,6 +46,9 @@
 
     connect(mWidget, SIGNAL(selectedItemCategory(int, bool)), this,
             SLOT(getItemCategory(int, bool)));
+    
+    connect(mWidget, SIGNAL(ISProvidersIcon(HbIcon, int)), this,
+                SLOT(slotISProvidersIcon(HbIcon, int)));
 
     }
 // ---------------------------------------------------------------------------
@@ -59,6 +62,15 @@
 
     }
 // ---------------------------------------------------------------------------
+// SearchSettingsState::slotISProvidersIcon
+// ---------------------------------------------------------------------------
+//
+void SearchSettingsState::slotISProvidersIcon(HbIcon icon, int id)
+    {
+    emit publishISProviderIcon(id,icon);
+    }
+
+// ---------------------------------------------------------------------------
 // SearchSettingsState::getItemCategory
 // ---------------------------------------------------------------------------
 //
@@ -74,19 +86,21 @@
     {
     qDebug() << "search:SearchSettingsState::onEntry";
     QState::onEntry(event);
+    emit settingslaunched();
     if (minitialCount)
         {
         mWidget->loadBaseSettings();
         mWidget->loadDeviceSettings();
+        mWidget->loadIS();
         isInternetOn();
         minitialCount = false;
-        emit backEventTriggered();
+       // isInternetOn();
+        //emit backEventTriggered();
         }
     else
         {
-
         mWidget->launchSettingWidget();
-        }
+        }    
     }
 // ---------------------------------------------------------------------------
 // SearchSettingsState::onExit
@@ -103,7 +117,6 @@
 //
 void SearchSettingsState::handleBackEvent(bool aStatus)
     {
-    emit backEventTriggered();
     if (mWidget)
         {
         isInternetOn();
@@ -118,10 +131,10 @@
     {
     if (mWidget->isInternetSearchOptionSelected())
         {
-        emit customizeGoButton(true);
+        emit switchToOnlineState();
         }
     else
         {
-        emit customizeGoButton(false);
+        emit switchToProState();
         }
     }
--- a/searchui/stateproviders/searchstateprovider/src/searchstateprovider.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/src/searchstateprovider.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -19,6 +19,7 @@
 #include "searchprogressivestate.h"
 #include "searchinitstate.h"
 #include "searchsettingsstate.h"
+#include "searchonlinestate.h"
 
 #include <qstate.h>
 #include <qdebug.h>
@@ -31,6 +32,8 @@
         "search.nokia.com/state/wizardprogressivestate";
 const char wizardSettingStateUri[] =
         "search.nokia.com/state/wizardsettingstate";
+const char wizardOnlineStateUri[] =
+        "search.nokia.com/state/wizardonlinestate";
 
 // ---------------------------------------------------------------------------
 // searchStateProvider::searchStateProvider()
@@ -59,6 +62,10 @@
         {
         return new SearchInitState();
         }
+    else if (uri == wizardOnlineStateUri)
+            {
+            return new SearchOnlineState();
+            }
 
     qDebug() << "SEARCH: No state found for mUri: " << uri;
     return NULL;
--- a/searchui/stateproviders/searchstateprovider/src/settingswidget.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/src/settingswidget.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -38,6 +38,7 @@
 #include <qsqldatabase.h>
 #include <qsqlquery.h>
 #include <cpixcontentinfocommon.h>
+#include "onlinehandler.h"
 const char *DELIMETER_DOCML = ":/xml/delimeterscreen.docml";
 const char *DIALOG = "dialog";
 const char *DATAFORM = "dataForm";
@@ -48,8 +49,10 @@
 //----------------------------------------------------------------------------------------------------------------------------
 SettingsWidget::SettingsWidget() :
     signalMapper(NULL), popup(NULL), mDocumentLoader(NULL), dataform(NULL),
-            mModel(NULL),mSelectedScope(0),mSelectedProvider(0),comboBox(NULL)
+            mModel(NULL), mSelectedScope(0), mSelectedProvider(0), comboBox(
+                    NULL), mInternetHandler(NULL)
     {
+    setSettingsFilePath();
     for (int i = 0; i < 8; i++)
         {
         mDeviceMapping.append(false);
@@ -61,6 +64,7 @@
     mchangestate = true;
     mInstialize = true;
     isInternetSelected = false;
+
     storeDefaultSettings();
     }
 //----------------------------------------------------------------------------------------------------------------------------
@@ -72,7 +76,7 @@
     bool ok = false;
     if (!mDocumentLoader)
         {
-        mDocumentLoader = new HbDocumentLoader();        
+        mDocumentLoader = new HbDocumentLoader();
         mDocumentLoader->load(DELIMETER_DOCML, &ok);
         }
     QGraphicsWidget *widget = NULL;
@@ -132,17 +136,16 @@
             HbDataFormModelItem::ComboBoxItem, hbTrId(
                     "txt_search_info_select_search_scope"));
 
-    themeComboGeneral->setContentWidgetData(QString("items"), mCategoryList);
+    themeComboGeneral->setContentWidgetData("items", mCategoryList);
 
-    themeComboGeneral->setContentWidgetData(QString("currentIndex"),
-            mSelectedScope);
+    themeComboGeneral->setContentWidgetData("currentIndex", mSelectedScope);
 
     QModelIndex index = mModel->indexFromItem(themeComboGeneral);
 
-    HbDataFormViewItem *formItem = static_cast<HbDataFormViewItem *> (dataform->itemByIndex(index));
+    HbDataFormViewItem *formItem =
+            static_cast<HbDataFormViewItem *> (dataform->itemByIndex(index));
 
-      comboBox =
-            static_cast<HbComboBox*> (formItem->dataItemContentWidget());
+    comboBox = static_cast<HbComboBox*> (formItem->dataItemContentWidget());
 
     q_currentIndexChanged(mSelectedScope);
 
@@ -161,7 +164,7 @@
         mModel->removeItem(mModelItemList.at(i));
         }
     mModelItemList.clear();
-   // int ret = mModel->rowCount();
+    // int ret = mModel->rowCount();
     if (!avalue) //device category creation
         {
         isInternetSelected = false;
@@ -175,7 +178,9 @@
             mModelItemList.append(mModelItem);
             QModelIndex index = mModel->indexFromItem(mModelItem);
 
-            HbDataFormViewItem *formItem = static_cast<HbDataFormViewItem *> (dataform->itemByIndex(index));
+            HbDataFormViewItem *formItem =
+                    static_cast<HbDataFormViewItem *> (dataform->itemByIndex(
+                            index));
 
             checkboxitem
                     = static_cast<HbCheckBox*> (formItem->dataItemContentWidget());
@@ -201,25 +206,36 @@
         HbDataFormModelItem* mModelItem = mModel->appendDataFormItem(
                 HbDataFormModelItem::RadioButtonListItem);
         mModelItemList.append(mModelItem);
+        QStringList internetCategoryList;
+        QMapIterator<int, QString> i(mServiceProviders);
+        int selectedindex = 0;
+        int Iterator = 0;
+        while (i.hasNext())
+            {
+            i.next();
+            if (i.key() == mSelectedProvider)
+                selectedindex = Iterator;
+            Iterator++;
+            internetCategoryList.append(i.value());
+            qDebug() << i.value();
+            }
         mModelItem->setContentWidgetData("items", internetCategoryList);
 
+        mModelItem->setContentWidgetData("previewMode",
+                HbRadioButtonList::NoPreview);
+
+        mModelItem->setContentWidgetData("selected", selectedindex);
+
         QModelIndex index = mModel->indexFromItem(mModelItem);
 
-        HbDataFormViewItem *formItem = static_cast<HbDataFormViewItem *> (dataform->itemByIndex(index));
-
+        HbDataFormViewItem *formItem =
+                static_cast<HbDataFormViewItem *> (dataform->itemByIndex(
+                        index));
         mradiolist
                 = static_cast<HbRadioButtonList*> (formItem->dataItemContentWidget());
 
-        mradiolist->setPreviewMode(HbRadioButtonList::NoPreview);
-
-        mradiolist->setSelected(mSelectedProvider);
         connect(mradiolist, SIGNAL(itemSelected(int)), this,
-                SLOT(q_itemSelected(int)));
-
-        for (int i = 0; i < mActions.count(); i++)
-            popup->removeAction(mActions.at(i));
-        popup->addActions(mActions);
-        popup->removeAction(mActions.at(0));
+                SLOT(slotitemSelected(int)));
         }
     }
 //----------------------------------------------------------------------------------------------------------------------------
@@ -229,8 +245,6 @@
 void SettingsWidget::preparecategories()
     {
     // read form database
-
-
     QString mConnectionName("cpixcontentinfo.sq");
     QString mDatabaseName("c:\\Private\\2001f6fb\\cpixcontentinfo.sq");
 
@@ -254,24 +268,24 @@
             {
             mCategoryDbMapping.insert(category_name, true);
             }
-        qDebug() <<"string db= "<<category_name;
+        qDebug() << "string db= " << category_name;
         }
-    db.close();         
-    
-  /*  mCategoryDbMapping.insert("Contacts", true); 
-    mCategoryDbMapping.insert("Audios", true); 
-    mCategoryDbMapping.insert("Images", true); 
-    mCategoryDbMapping.insert("Videos", true); 
-    mCategoryDbMapping.insert("Messages", true); 
-    mCategoryDbMapping.insert("email", true); 
-    mCategoryDbMapping.insert("Calendar", true); 
-    mCategoryDbMapping.insert("Notes", true); 
-    mCategoryDbMapping.insert("Applications", true); 
-    mCategoryDbMapping.insert("Bookmarks", true); 
-    mCategoryDbMapping.insert("Files", true); */
-    
-   // mCategoryDbMapping.insert("email", true); // to remove once email starts working
-    
+    db.close();
+
+    /*  mCategoryDbMapping.insert("Contacts", true); 
+     mCategoryDbMapping.insert("Audios", true); 
+     mCategoryDbMapping.insert("Images", true); 
+     mCategoryDbMapping.insert("Videos", true); 
+     mCategoryDbMapping.insert("Messages", true); 
+     mCategoryDbMapping.insert("email", true); 
+     mCategoryDbMapping.insert("Calendar", true); 
+     mCategoryDbMapping.insert("Notes", true); 
+     mCategoryDbMapping.insert("Applications", true); 
+     mCategoryDbMapping.insert("Bookmarks", true); 
+     mCategoryDbMapping.insert("Files", true); */
+
+    // mCategoryDbMapping.insert("email", true); // to remove once email starts working
+
     mDeviceListDisplay.append(hbTrId("txt_search_list_select_all"));
     mDeviceMapping.insert(0, true);
 
@@ -281,9 +295,8 @@
         mDeviceListDisplay.append(hbTrId("txt_search_list_contatcs"));
         }
 
-    if (mCategoryDbMapping.value("Audios")
-            || mCategoryDbMapping.value("Images") || mCategoryDbMapping.value(
-            "Videos"))
+    if (mCategoryDbMapping.value("Audios") || mCategoryDbMapping.value(
+            "Images") || mCategoryDbMapping.value("Videos"))
         {
         mDeviceListDisplay.append(hbTrId("txt_search_list_media"));
         mDeviceMapping.insert(2, true);
@@ -320,10 +333,17 @@
         mDeviceListDisplay.append(hbTrId("txt_search_list_all_other_files"));
         mDeviceMapping.insert(7, true);
         }
-    internetCategoryList = (QStringList());
+    // internetCategoryList = (QStringList() << "Google" << "Bing" << "Yahoo");
 
-    mCategoryList = (QStringList() << hbTrId("txt_search_list_device")
-            << hbTrId("txt_search_list_internet"));
+    if (mServiceProviders.count())
+        {
+        mCategoryList = (QStringList() << hbTrId("txt_search_list_device")
+                << hbTrId("txt_search_list_internet"));
+        }
+    else
+        {
+        mCategoryList = (QStringList() << hbTrId("txt_search_list_device"));
+        }
     }
 
 //----------------------------------------------------------------------------------------------------------------------------
@@ -342,6 +362,7 @@
     mModelItemList.clear();
     mActions.clear();
     delete mDocumentLoader;
+    delete mInternetHandler;
     //delete popup;
     }
 //----------------------------------------------------------------------------------------------------------------------------
@@ -374,12 +395,15 @@
             noItemSelected = false;
             }
         }
-    for (int i = 0; i < mActions.count(); i++)
-        popup->removeAction(mActions.at(i));
-    popup->addActions(mActions);
-    if (noItemSelected)
+    if (!isInternetSelected)
         {
-        popup->removeAction(mActions.at(0));
+        for (int i = 0; i < mActions.count(); i++)
+            popup->removeAction(mActions.at(i));
+        popup->addActions(mActions);
+        if (noItemSelected)
+            {
+            popup->removeAction(mActions.at(0));
+            }
         }
     }
 //----------------------------------------------------------------------------------------------------------------------------
@@ -465,7 +489,8 @@
 
 void SettingsWidget::storeSettingsToiniFile()
     {
-    QSettings appSettings("search.ini", QSettings::IniFormat);
+    QSettings appSettings(mSettingFileName, QSettings::IniFormat);
+    isInternetSelected ? (mSelectedScope = 1) : (mSelectedScope = 0);
     appSettings.setValue("selectedcategory", mSelectedScope);
     appSettings.setValue("devicecount", mDeviceCategoryRefList.count());
     if (!isInternetSelected)
@@ -495,8 +520,7 @@
 
             }
         }
-    appSettings.setValue("internetcount", internetCategoryList.count());
-    appSettings.setValue("selectedprovider", mSelectedProvider);
+
     }
 //----------------------------------------------------------------------------------------------------------------------------
 //void SettingsWidget::loadBaseSettings()
@@ -504,26 +528,10 @@
 //----------------------------------------------------------------------------------------------------------------------------
 void SettingsWidget::loadBaseSettings()
     {
-    QSettings appSettings("search.ini", QSettings::IniFormat);
-    int value;
-    if (!(appSettings.contains("selectedcategory")))
-        {
-        value = 0;
-        }
-    else
-        {
-        value = appSettings.value("selectedcategory").toInt();
-        }
-    mSelectedScope = value;
-    if (mSelectedScope)
-        {
-        isInternetSelected = true;
-        }
-    else
-        {
-        isInternetSelected = false;
-        }
-    mSelectedProvider = appSettings.value("selectedprovider").toInt();
+    QSettings appSettings(mSettingFileName, QSettings::IniFormat);
+    mSelectedScope = appSettings.value("selectedcategory", 0).toInt();
+    mSelectedScope ? (isInternetSelected = true) : (isInternetSelected
+            = false);
     }
 
 //----------------------------------------------------------------------------------------------------------------------------
@@ -532,22 +540,16 @@
 //----------------------------------------------------------------------------------------------------------------------------
 void SettingsWidget::loadDeviceSettings()
     {
-    QSettings appSettings("search.ini", QSettings::IniFormat);
+    QSettings appSettings(mSettingFileName, QSettings::IniFormat);
     int value;
     if (!isInternetSelected)
         {
         int j = 0;
         for (int i = 0; i < mDeviceCategoryRefList.count(); i++)
             {
-            if (!(appSettings.contains(mDeviceCategoryRefList.at(i))))
-                {
-                value = 1;
-                }
-            else
-                {
-                value
-                        = appSettings.value(mDeviceCategoryRefList.at(i)).toInt();
-                }
+            value
+                    = appSettings.value(mDeviceCategoryRefList.at(i), 1).toInt();
+
             if (mDeviceMapping.count() && mDeviceCheckBoxList.count()
                     && mDeviceMapping.at(i))
                 {
@@ -561,14 +563,10 @@
                     }
                 j++;
                 }
-            if (value) // get the setting before ui preparation
-                {
-                emit selectedItemCategory(i, true);
-                }
-            else
-                {
-                emit selectedItemCategory(i, false);
-                }
+            value
+                  ? (emit selectedItemCategory(i, true))
+                     : (emit selectedItemCategory(i, false));
+
             }
         }
     }
@@ -588,16 +586,56 @@
 //----------------------------------------------------------------------------------------------------------------------------
 void SettingsWidget::storeDefaultSettings()
     {
-    QSettings appSettings("search.ini", QSettings::IniFormat);
+    QSettings appSettings(mSettingFileName, QSettings::IniFormat);
     if (!appSettings.contains("selectedcategory")) // change the settings for the first time only
         {
         mSelectedScope = 0;
-        mSelectedProvider = 0;
         appSettings.setValue("selectedcategory", mSelectedScope);
         appSettings.setValue("devicecount", mDeviceCategoryRefList.count());
         for (int i = 0; i < mDeviceCategoryRefList.count(); i++)
             appSettings.setValue(mDeviceCategoryRefList.at(i), 1);
-        appSettings.setValue("internetcount", internetCategoryList.count());
-        appSettings.setValue("selectedprovider", mSelectedProvider);
         }
     }
+void SettingsWidget::slotproviderDetails(QString name, HbIcon icon, int id)
+    {
+    mServiceProviders.insert(id, name);
+    emit ISProvidersIcon(icon, id);
+    }
+void SettingsWidget::slotdefaultProvider(const int value)
+    {
+    mSelectedProvider = value;
+    }
+void SettingsWidget::slotitemSelected(int value)
+    {
+    QMapIterator<int, QString> i(mServiceProviders);
+    int selectedindex = 0;
+    while (i.hasNext())
+        {
+        i.next();
+        if (selectedindex == value)
+            {
+            mInternetHandler->setDefaultProvider(i.key());
+            break;
+            }
+        selectedindex++;
+        }
+    }
+void SettingsWidget::setSettingsFilePath()
+    {
+    mSettingFileName.append(QDir::currentPath());
+    mSettingFileName.append(QString("/searchsettings.ini"));
+    }
+void SettingsWidget::loadIS()
+    {
+    if (!mInternetHandler)
+        {
+        mInternetHandler = new OnlineHandler();
+        connect(mInternetHandler,
+                SIGNAL(providerDetails(QString, HbIcon, int)), this,
+                SLOT(slotproviderDetails(QString, HbIcon, int)));
+
+        connect(mInternetHandler, SIGNAL(defaultProvider(const int)), this,
+                SLOT(slotdefaultProvider(const int)));
+        mInternetHandler->readSettings();
+        }
+    }
--- a/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/inc/t_searchstateprovider.h	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/inc/t_searchstateprovider.h	Tue Jul 06 14:17:22 2010 +0300
@@ -17,7 +17,6 @@
 
 #include <QtTest/QtTest>
 #include "searchstateprovider.h"
-#include "hsistateprovider.h"
 
 class HbMainWindow;
 class HbAbstractViewItem;
@@ -58,8 +57,7 @@
     void testopenResultitem();
     void testgetSettingCategory();
     void testsetSettings();
-    void teststartNewSearch();
-    void test_customizeGoButton();
+    void teststartNewSearch();    
     void testsettingsaction();
     void testcancelSearch();
     void testhandleOkError();
@@ -123,27 +121,12 @@
      * @return True if state was created successfully, false otherwise.
      * @since S60 ?S60_version.
      */
-    bool verifyStateCreation(const QString& uri);
-
-    /**
-     * Helper method testing existence of state
-     *
-     * @param states List of states.
-     * @param library Name of the library/plugin that contains the state.
-     * @param uri Unique state identificator.
-     *
-     * @return True if state was found, false otherwise.
-     * @since S60 ?S60_version.
-     */
-    bool findStateInStateList(const QList<HsStateToken>& states,
-            const QString& library, const QString& uri);
-
-    //void setContentServiceProperty(QState* state);
+    bool verifyStateCreation(const QString& uri);    
 
     HbMainWindow* mainWindow();
 
 private:
-    //    FtuContentService* mFtuContentService;
+
     HbMainWindow *mMainWindow;
 
     };
--- a/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchprogressivestate.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchprogressivestate.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -2,7 +2,8 @@
 #include "searchprogressivestate.h"
 #include <qsignalspy.h>
 #include "indevicehandler.h"
-#include <qstandarditemmodel.h>
+#include <hblistwidget.h>
+#include <hblistwidgetitem.h>
 #include <fbs.h>
 #include <AknsUtils.h>
 #include <bitdev.h> 
@@ -29,7 +30,6 @@
     QVERIFY(progressiveState->mListView);
     QVERIFY(progressiveState->mDocumentLoader);
     QVERIFY(progressiveState->mSearchPanel);
-    QVERIFY(progressiveState->mModel);
     //QVERIFY(progressiveState->mSearchHandler);
 
     delete progressiveState;
@@ -130,14 +130,14 @@
     progressiveState->onEntry(event);
     // progressiveState->mSearchHandler = progressiveState->mSearchHandlerList.at(1);
     progressiveState->onGetDocumentComplete(0, NULL);
-    QCOMPARE(progressiveState->mModel->rowCount(),0);
+    QCOMPARE(progressiveState->mListView->count(),0);
 
     progressiveState->onGetDocumentComplete(-1, NULL);
-    QCOMPARE(progressiveState->mModel->rowCount(),0);
+    QCOMPARE(progressiveState->mListView->count(),0);
     progressiveState->startNewSearch("contact");
     QTest::qWait(2000);
-    int i = progressiveState->mModel->rowCount();
-    QVERIFY(progressiveState->mModel->rowCount());
+    int i = progressiveState->mListView->count();
+    QVERIFY(progressiveState->mListView->count());
     delete progressiveState;
     //  delete wind;
     }
@@ -237,18 +237,7 @@
    
     progressiveState->startNewSearch("jpg");
     QTest::qWait(2000);
-    QVERIFY(progressiveState->mModel->rowCount());
-    delete progressiveState;
-    }
-void SearchStateProviderTest::test_customizeGoButton()
-    {
-    SearchProgressiveState* progressiveState = new SearchProgressiveState();
-    QEvent *event = new QEvent(QEvent::None);
-    progressiveState->onEntry(event);
-    progressiveState->_customizeGoButton(true);
-    QVERIFY(!(progressiveState->mSearchPanel->isProgressive()));
-    progressiveState->_customizeGoButton(false);
-    QVERIFY(progressiveState->mSearchPanel->isProgressive());
+    QVERIFY(progressiveState->mListView->count());
     delete progressiveState;
     }
 // ---------------------------------------------------------------------------
@@ -305,9 +294,9 @@
     progressiveState->onEntry(event);
 
     progressiveState->noResultsFound("aaa");
-    QCOMPARE(progressiveState->mModel->rowCount(),1);
+    QCOMPARE(progressiveState->mListView->count(),1);
     progressiveState->clear();
-    QCOMPARE(progressiveState->mModel->rowCount(),0);
+    QCOMPARE(progressiveState->mListView->count(),0);
 
     delete progressiveState;
     }
@@ -322,10 +311,10 @@
     progressiveState->onEntry(event);
 
     progressiveState->noResultsFound(NULL);
-    QCOMPARE(progressiveState->mModel->rowCount(),0);
+    QCOMPARE(progressiveState->mListView->count(),0);
 
     progressiveState->noResultsFound("aaa");
-    QCOMPARE(progressiveState->mModel->rowCount(),1);
+    QCOMPARE(progressiveState->mListView->count(),1);
 
     delete progressiveState;
     }
@@ -337,12 +326,9 @@
     {
     SearchProgressiveState* progressiveState = new SearchProgressiveState();
     QEvent *event = new QEvent(QEvent::None);
-    progressiveState->onEntry(event);
-
-    progressiveState->createSuggestionLink(true);
-    QCOMPARE(progressiveState->mModel->rowCount(), 0);
-    progressiveState->createSuggestionLink(false);
-    QCOMPARE(progressiveState->mModel->rowCount(), 1);
+    progressiveState->onEntry(event);    
+    progressiveState->createSuggestionLink();
+    QCOMPARE(progressiveState->mListView->count(), 1);
     delete progressiveState;
     }
 void SearchStateProviderTest::testTDisplayMode2Format()
@@ -391,9 +377,9 @@
     progressiveState->mSelectedCategory.insert(2, true);
     progressiveState->onEntry(event);
     progressiveState->startNewSearch("3gpp");
-    QTest::qWait(200);
-    QModelIndex index = progressiveState->mModel->index(1, 0);
-    QStandardItem* item = progressiveState->mModel->itemFromIndex(index);
+    QTest::qWait(200);  
+    
+    HbListWidgetItem* item = progressiveState->mListView->item(0);
     if(item)
     QString uid = progressiveState->getDrivefromMediaId(item->data(
             Qt::UserRole + 2).toString());
--- a/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchstateprovider.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchstateprovider.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -19,8 +19,6 @@
 //#include "searchruntimeprovider.h"
 #include "searchstateprovider.h"
 
-#include <hsstatefactory.h>
-
 #include <qmetatype.h>
 #include <qstate.h>
 
@@ -51,8 +49,8 @@
 //
 void SearchStateProviderTest::init()
     {
-    
-   // delete mMainWindow;
+
+    // delete mMainWindow;
     }
 
 // ---------------------------------------------------------------------------
@@ -68,7 +66,7 @@
 //
 void SearchStateProviderTest::cleanupTestCase()
     {
-    
+
     }
 
 // ---------------------------------------------------------------------------
@@ -78,15 +76,15 @@
     {
     SearchStateProvider provider;
 
- /*   QVERIFY(provider.mWizardMenuStateToken.mLibrary == "searchstateprovider.dll");
-    QVERIFY(provider.mWizardMenuStateToken.mUri == "search.nokia.com/state/wizardprogressivestate");
+    /*   QVERIFY(provider.mWizardMenuStateToken.mLibrary == "searchstateprovider.dll");
+     QVERIFY(provider.mWizardMenuStateToken.mUri == "search.nokia.com/state/wizardprogressivestate");
 
-    QVERIFY(provider.mWizardActivatedStateToken.mLibrary == "searchstateprovider.dll");
-    QVERIFY(provider.mWizardActivatedStateToken.mUri == "search.nokia.com/state/wizardsettingstate");
+     QVERIFY(provider.mWizardActivatedStateToken.mLibrary == "searchstateprovider.dll");
+     QVERIFY(provider.mWizardActivatedStateToken.mUri == "search.nokia.com/state/wizardsettingstate");
 
-    QVERIFY(provider.mInitStateToken.mLibrary == "searchstateprovider.dll");
-    QVERIFY(provider.mInitStateToken.mUri == "search.nokia.com/state/initstate");
- */   }
+     QVERIFY(provider.mInitStateToken.mLibrary == "searchstateprovider.dll");
+     QVERIFY(provider.mInitStateToken.mUri == "search.nokia.com/state/initstate");
+     */}
 
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
@@ -94,23 +92,19 @@
 void SearchStateProviderTest::testStates()
     {
     /*  SearchStateProvider provider;
-   QList<HsStateToken> states = provider.states();
-
-    QCOMPARE(states.count(), 3);
+    
+     QCOMPARE(states.count(), 3);
 
-    QVERIFY(findStateInStateList(states, "searchstateprovider.dll","search.nokia.com/state/wizardprogressivestate"));
-    QVERIFY(findStateInStateList(states, "searchstateprovider.dll","search.nokia.com/state/wizardsettingstate"));
-    QVERIFY(findStateInStateList(states, "searchstateprovider.dll","search.nokia.com/state/initstate"));
-   */ }
+     */}
 
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
 void SearchStateProviderTest::testCreateProgressiveState()
     {
-    
+
     QVERIFY(verifyStateCreation("search.nokia.com/state/wizardprogressivestate"));
-   // delete wind;
+    // delete wind;
     }
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
@@ -119,7 +113,7 @@
     {
     //HbMainWindow* wind = mainWindow();   
     QVERIFY(verifyStateCreation("search.nokia.com/state/wizardsettingstate"));
-   // delete wind;
+    // delete wind;
     }
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
@@ -128,16 +122,15 @@
     {
     //HbMainWindow* wind = mainWindow();   
     QVERIFY(verifyStateCreation("search.nokia.com/state/initstate"));
-  //  delete wind;
+    //  delete wind;
     }
 
-
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
 bool SearchStateProviderTest::verifyStateCreation(const QString& uri)
     {
-    SearchStateProvider provider;   
+    SearchStateProvider provider;
     QState* state = provider.createState(uri);
     bool result = (state != NULL);
     if (state)
@@ -150,23 +143,6 @@
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
-bool SearchStateProviderTest::findStateInStateList(
-        const QList<HsStateToken>& states, const QString& library,
-        const QString& uri)
-    {
-    foreach(HsStateToken token, states)
-            {
-            if (token.mLibrary == library && token.mUri == uri)
-                {
-                return true;
-                }
-            }
-    return false;
-    }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
 HbMainWindow* SearchStateProviderTest::mainWindow()
     {
     int count = HbInstance::instance()->allMainWindows().count();
@@ -185,7 +161,7 @@
 int main(int argc, char *argv[])
     {
     QApplication app(argc, argv);
-    int error =0;
+    int error = 0;
     TRAPD(err,
             QTEST_DISABLE_KEYPAD_NAVIGATION
             SearchStateProviderTest tc;
--- a/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/t_searchstateprovider.pro	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/t_searchstateprovider.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -41,7 +41,7 @@
 LIBS += -laknicon
 LIBS += -lapgrfx
 LIBS += -lbitgdi
-#LIBS += -lnoteseditor
+LIBS += -lsearchonlinehandler
 LIBS += -lxqutils
 LIBS += -lapparc
 LIBS += -lefsrv
@@ -69,7 +69,8 @@
                ./inc \
                ../../inc \
                ../../../../inc \               
-               ../../../../indevicehandler/inc 
+               ../../../../indevicehandler/inc \
+               ../../../../onlinehandler/inc
 symbian {         
 CONFIG += symbian_test               
 TARGET.UID2 = 0x100039CE
Binary file searchui/tsrc/indexdb/data/bluesky.jpg has changed
Binary file searchui/tsrc/indexdb/data/jungle.jpg has changed
Binary file searchui/tsrc/indexdb/data/mountain.jpg has changed
Binary file searchui/tsrc/indexdb/data/rock.jpg has changed
Binary file searchui/tsrc/indexdb/data/sea.jpg has changed
Binary file searchui/tsrc/indexdb/data/snow.jpg has changed
Binary file searchui/tsrc/indexdb/data/tree.jpg has changed
Binary file searchui/tsrc/indexdb/data/water.jpg has changed
--- a/searchui/tsrc/indexdb/indexdb.pro	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/tsrc/indexdb/indexdb.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -1,3 +1,18 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  indexdb
+#
 TEMPLATE = subdirs
 symbian{
     BLD_INF_RULES.prj_exports += "data/water.jpg      \epoc32\winscw\c\data\water.jpg" \
--- a/searchui/tsrc/tsrc.pro	Wed Jun 23 18:13:49 2010 +0300
+++ b/searchui/tsrc/tsrc.pro	Tue Jul 06 14:17:22 2010 +0300
@@ -17,8 +17,10 @@
 TEMPLATE = subdirs
 
 SUBDIRS  += indexdb \ 
-../indevicehandler/tsrc/t_indevicehandler \
-	   ../stateproviders/searchstateprovider/tsrc/t_searchstateprovider
+../indevicehandler/tsrc \
+	   ../stateproviders/searchstateprovider/tsrc \
+../onlinehandler/tsrc
+
 	   
            
 CONFIG  += ordered