201025
authorhgs
Mon, 28 Jun 2010 11:03:15 +0530
changeset 9 4a2987baf8f7
parent 8 2f67eb14d003
child 10 d05738f02936
201025
browserplugin/cpixnpplugin/group/cpixnpplugin.mmp
harvesterplugins/applications/src/applicationsplugin.cpp
harvesterplugins/bookmarks/src/bookmarksplugin.cpp
harvesterplugins/calendar/inc/ccalendarplugin.h
harvesterplugins/calendar/src/ccalendarplugin.cpp
harvesterplugins/contacts/inc/ccontactsplugin.h
harvesterplugins/contacts/src/ccontactsplugin.cpp
harvesterplugins/file/src/cfileplugin.cpp
harvesterplugins/group/bld.inf
harvesterplugins/media/audio/src/cpixmediaaudiodoc.cpp
harvesterplugins/media/image/src/cpixmediaimagedoc.cpp
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/notes/src/notesplugin.cpp
harvesterplugins/tsrc/harvesterplugintester/conf/harvesterplugintester.cfg
harvesterplugins/tsrc/harvesterplugintester/group/harvesterplugintester.mmp
harvesterplugins/tsrc/harvesterplugintester/inc/ccalendarobserver.h
harvesterplugins/tsrc/harvesterplugintester/inc/cmessagesessionobserver.h
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/cmessagesessionobserver.cpp
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/Searchapplication.pri
searchui/Searchapplication/Searchapplication.pro
searchui/Searchapplication/Searchapplication_installs_symbian.pri
searchui/Searchapplication/Searchapplication_installs_unix.pri
searchui/Searchapplication/Searchapplication_installs_win32.pri
searchui/Searchapplication/inc/Search.h
searchui/Searchapplication/resources/search_app_icon.svg
searchui/Searchapplication/src/Search.cpp
searchui/Searchapplication/src/main.cpp
searchui/bwins/searchonlinehandleru.def
searchui/eabi/searchonlinehandleru.def
searchui/inc/Search_global.h
searchui/inc/search_global.h
searchui/indevicehandler/indevicehandler.pro
searchui/indevicehandler/tsrc/t_indevicehandler/t_indevicehandler.pro
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/searchruntimeprovider.pro
searchui/runtimeproviders/searchruntimeprovider/src/searchruntime.cpp
searchui/searchapplication/inc/search.h
searchui/searchapplication/resources/search_app_icon.svg
searchui/searchapplication/searchapplication.pri
searchui/searchapplication/searchapplication.pro
searchui/searchapplication/searchapplication_installs_symbian.pri
searchui/searchapplication/searchapplication_installs_unix.pri
searchui/searchapplication/searchapplication_installs_win32.pri
searchui/searchapplication/src/main.cpp
searchui/searchapplication/src/search.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 17:22:18 2010 +0100
+++ b/browserplugin/cpixnpplugin/group/cpixnpplugin.mmp	Mon Jun 28 11:03:15 2010 +0530
@@ -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/applications/src/applicationsplugin.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/applications/src/applicationsplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -135,7 +135,7 @@
     OstTraceExt1( TRACE_NORMAL, CAPPLICATIONSPLUGIN_ADDWIDGETINFOL, "CApplicationsPlugin::AddWidgetInfoL;PATH=%S", &temp );
 
     //GetWidgetPropertyValueL returns CWidgetPropertyValue* which in turn has an operator to convert to TDesC
-    aDocument->AddFieldL(KApplicationFieldCaption, *(iWidgetRegistry.GetWidgetPropertyValueL( aUid, EBundleDisplayName )),  CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
+    aDocument->AddFieldL(KApplicationFieldCaption, *(iWidgetRegistry.GetWidgetPropertyValueL( aUid, EBundleDisplayName )), CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
 
     //For applications, no content to go into exceprt field.
     //For more info, check the appclass-hierarchy.txt
@@ -157,7 +157,7 @@
     //We index the exe name (without extension), only if the title is not present.
     if( aAppInfo.iShortCaption.Compare(KNullDesC) )
         {
-        aDocument->AddFieldL(KApplicationFieldCaption, aAppInfo.iShortCaption, CDocumentField::EStoreYes | CDocumentField::EIndexTokenized );
+        aDocument->AddFieldL(KApplicationFieldCaption, aAppInfo.iShortCaption, CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
         }
     else
         {
--- a/harvesterplugins/bookmarks/src/bookmarksplugin.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/bookmarks/src/bookmarksplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -69,7 +69,8 @@
 	{
 	if (iAsynchronizer)
         iAsynchronizer->CancelCallback();
-	iFavoritesNotifier->Cancel();
+	if ( iFavoritesNotifier )
+	    iFavoritesNotifier->Cancel();
 	delete iFavoritesNotifier;
 	delete iAsynchronizer;
 	delete iIndexer;
--- a/harvesterplugins/calendar/inc/ccalendarplugin.h	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/calendar/inc/ccalendarplugin.h	Mon Jun 28 11:03:15 2010 +0530
@@ -40,7 +40,12 @@
 _LIT(KCalendarLocationField, "Location");
 _LIT(KCalendarStartTimeField, "StartTime");
 _LIT(KCalendarEndTimeField, "EndTime");
+_LIT(KCalenderCompletedField, "CompletedDate");
 _LIT(KCalendarAttendeesField, "Attendees");
+_LIT(KCalendarPriorityField, "Priority");
+_LIT(KCalendarPriorityHigh, "High");
+_LIT(KCalendarPriorityMedium, "Normal");
+_LIT(KCalendarPriorityLow, "Low");
 
 class CCalendarPlugin : public CIndexingPlugin, public MDelayedCallbackObserver, public MCalProgressCallBack, public MCalChangeCallBack2
 {
--- a/harvesterplugins/calendar/src/ccalendarplugin.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/calendar/src/ccalendarplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -40,9 +40,7 @@
 
 /** The delay between harvesting chunks. */
 const TInt KHarvestingDelay = 2000;
-
-_LIT(KCalendarTimeFormat,"%F%/0%Y %M %D %H%T"); // Locale independent YYYYMMDDHHSS
-
+_LIT(KCalendarTimeFormat,"%04d %02d %02d %02d %02d");
 // ---------------------------------------------------------------------------
 // CMessagePlugin::NewL
 // ---------------------------------------------------------------------------
@@ -352,6 +350,7 @@
 	{
 	if (!iIndexer)
     	return;
+	
 
 	OstTrace1( TRACE_NORMAL, CCALENDARPLUGIN_CREATEENTRYL, "CCalendarPlugin::CreateEntryL();Uid=%d", aLocalUid );
 	CPIXLOGSTRING2("CCalendarPlugin::CreateEntryL():  Uid = %d.", aLocalUid);
@@ -387,17 +386,53 @@
 		index_item->AddFieldL(KCalendarSummaryField, entry->SummaryL());
 		index_item->AddFieldL(KCalendarDescriptionField, entry->DescriptionL());
 		index_item->AddFieldL(KCalendarLocationField, entry->LocationL());
+		
+		TUint priority = entry->PriorityL();
+		
+		switch(priority)
+		    {
+		    case 1:
+		        index_item->AddFieldL(KCalendarPriorityField, KCalendarPriorityHigh);
+		        break;
+		    case 2:
+		        index_item->AddFieldL(KCalendarPriorityField, KCalendarPriorityMedium);
+                break;
+		    case 3:
+		        index_item->AddFieldL(KCalendarPriorityField, KCalendarPriorityLow);
+                break;
+		    default:
+	            index_item->AddFieldL(KCalendarPriorityField, KNullDesC);
+	            break;
+		    }
 
 		TBuf<30> dateString;
-
-		TTime startTime = entry->StartTimeL().TimeUtcL();
-		startTime.FormatL(dateString, KCalendarTimeFormat);
+		TDateTime datetime = entry->StartTimeL().TimeUtcL().DateTime();       
+		dateString.Format( KCalendarTimeFormat, datetime.Year(),
+		                                     TInt(datetime.Month()+ 1),
+		                                     datetime.Day() + 1,
+		                                     datetime.Hour()+ 1,
+		                                     datetime.Minute());
 		index_item->AddFieldL(KCalendarStartTimeField, dateString, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
 
-		TTime endTime = entry->EndTimeL().TimeUtcL();
-		endTime.FormatL(dateString, KCalendarTimeFormat);
+		TDateTime endTime = entry->EndTimeL().TimeUtcL().DateTime();		
+		dateString.Format( KCalendarTimeFormat, endTime.Year(),
+                                                TInt(endTime.Month()+ 1),
+                                                endTime.Day() + 1,
+                                                endTime.Hour()+ 1,
+                                                endTime.Minute());
 		index_item->AddFieldL(KCalendarEndTimeField, dateString, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
-
+		
+		TTime completedTime = entry->CompletedTimeL().TimeUtcL();
+		if( completedTime != Time::NullTTime() && CCalEntry::ETodo == entry->EntryTypeL())
+		    {
+            TDateTime compTime = completedTime.DateTime();
+            dateString.Format( KCalendarTimeFormat, compTime.Year(),
+                                                TInt(compTime.Month()+ 1),
+                                                compTime.Day() + 1,
+                                                compTime.Hour()+ 1,
+                                                compTime.Minute());
+            index_item->AddFieldL(KCalenderCompletedField, dateString, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+		    }
 		index_item->AddFieldL(KMimeTypeField, KMimeTypeCalendar, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
 
     	TInt excerptLength = 1 /*single 1-character delimiters*/ + entry->DescriptionL().Length() + entry->LocationL().Length();
--- a/harvesterplugins/contacts/inc/ccontactsplugin.h	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/contacts/inc/ccontactsplugin.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/contacts/src/ccontactsplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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;
 	}
 	
 // -----------------------------------------------------------------------------
@@ -151,6 +150,7 @@
 		{
 		case EContactDbObserverEventContactChanged:
 		case EContactDbObserverEventGroupChanged:
+		case EContactDbObserverEventOwnCardChanged:
 			OstTrace1( TRACE_NORMAL, DUP3_CCONTACTSPLUGIN_HANDLEDATABASEEVENTL, "CContactsPlugin::HandleDatabaseEventL;Monitored update id=%d", aEvent.iContactId );			
 			CPIXLOGSTRING2("CContactsPlugin::DelayedCallbackL(): Monitored update id=%d.", aEvent.iContactId);
 #ifdef __PERFORMANCE_DATA
@@ -164,6 +164,7 @@
 
 		case EContactDbObserverEventContactDeleted:
 		case EContactDbObserverEventGroupDeleted:
+		case EContactDbObserverEventOwnCardDeleted:
 			OstTrace1( TRACE_NORMAL, CCONTACTSPLUGIN_HANDLEDATABASEEVENTL, "CContactsPlugin::HandleDatabaseEventL();Monitored delete id=%d", aEvent.iContactId );
 			CPIXLOGSTRING2("CContactsPlugin::DelayedCallbackL(): Monitored delete id=%d.", aEvent.iContactId);
 #ifdef __PERFORMANCE_DATA
@@ -340,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;
     
@@ -481,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 ));
@@ -497,6 +501,7 @@
             }
         }
     }
+
 // ---------------------------------------------------------------------------
 // CContactsPlugin::UpdatePerformaceDataL
 // ---------------------------------------------------------------------------
--- a/harvesterplugins/file/src/cfileplugin.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/file/src/cfileplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -630,7 +630,8 @@
     if (pos > 0)
         {
         fileFoldername.Copy(aFilePath.Mid(pos+1));
-        index_item->AddFieldL(KNameField, fileFoldername);
+        index_item->AddFieldL(KNameField, fileFoldername, 
+                    CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText );
         }
     
     //check for the extension, for folders names store the extension field as NULL
@@ -640,7 +641,7 @@
         if( file.ExtPresent())
             {
             TPtrC extension = file.Ext();
-            index_item->AddFieldL(KExtensionField, extension);
+            index_item->AddFieldL(KExtensionField, extension, CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
             }
         index_item->AddFieldL(KMimeTypeField, KMimeTypeFile, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
        }
--- a/harvesterplugins/group/bld.inf	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/group/bld.inf	Mon Jun 28 11:03:15 2010 +0530
@@ -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/audio/src/cpixmediaaudiodoc.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/media/audio/src/cpixmediaaudiodoc.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -29,7 +29,8 @@
 #include "cpixmediaaudiodocTraces.h"
 #endif
 
-
+_LIT( KFormatDateTime, "%04d %02d %02d %02d %02d");    // yyyy mm dd hh mm
+_LIT( KExcerptFormat, "%04d/%02d/%02d %02d:%02d");
 // -----------------------------------------------------------------------------
 // CCPIXDocFetcher::NewL()
 // -----------------------------------------------------------------------------
@@ -101,56 +102,243 @@
     //additional properties here 
     CMdEProperty* property(NULL);
     CMdEPropertyDef& artistPropDef1 = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KArtistProperty );
-        if(aObject.Property( artistPropDef1, property ) != KErrNotFound)
-           {
-           //Add field to document
-           CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
-           AddFiledtoDocumentL(*index_item,
-                                 MdeConstants::MediaObject::KArtistProperty,
-                                 textProperty->Value());
-           AddToFieldExcerptL(textProperty->Value());//Add artist to excerpt
-           }
+    if(aObject.Property( artistPropDef1, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                             MdeConstants::MediaObject::KArtistProperty,
+                             textProperty->Value(),
+                             CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
+       AddToFieldExcerptL(textProperty->Value());//Add artist to excerpt
+       }
     CMdEPropertyDef& albumPropDef = aObjectDef.GetPropertyDefL(MdeConstants::Audio::KAlbumProperty );
     if(aObject.Property( albumPropDef, property )!= KErrNotFound)
        {
        //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property);
        AddFiledtoDocumentL(*index_item,
                            MdeConstants::Audio::KAlbumProperty,
-                           textProperty->Value());
+                           textProperty->Value(),
+                           CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
        AddToFieldExcerptL(textProperty->Value());//Add Album to excerpt
        }
+    
     CMdEPropertyDef& artistPropDef = aObjectDef.GetPropertyDefL(MdeConstants::Audio::KAlbumArtistProperty );
     if(aObject.Property( artistPropDef, property ) != KErrNotFound)
-      {
-      //Add field to document
-      CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
-      AddFiledtoDocumentL(*index_item,
-                         MdeConstants::Audio::KAlbumArtistProperty,
-                         textProperty->Value());
-      AddToFieldExcerptL(textProperty->Value());//Add Albumartist to excerpt
-      }
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                     MdeConstants::Audio::KAlbumArtistProperty,
+                     textProperty->Value(),
+                     CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
+       AddToFieldExcerptL(textProperty->Value());//Add Albumartist to excerpt
+       }
+    //orginal artist property
     CMdEPropertyDef& origartistPropDef = aObjectDef.GetPropertyDefL(MdeConstants::Audio::KOriginalArtistProperty );
     if(aObject.Property( origartistPropDef, property ) != KErrNotFound)
      {
      //Add field to document
-     CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+     CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
      AddFiledtoDocumentL(*index_item,
                       MdeConstants::Audio::KOriginalArtistProperty,
-                      textProperty->Value());
+                      textProperty->Value(),
+                      CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
      AddToFieldExcerptL(textProperty->Value());//Add Original to excerpt
-     }   
+     }
+    //Get composer property
     CMdEPropertyDef& composerPropDef = aObjectDef.GetPropertyDefL(MdeConstants::Audio::KComposerProperty );
     if(aObject.Property( composerPropDef, property ) != KErrNotFound)
     {
     //Add field to document
-    CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+    CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
     AddFiledtoDocumentL(*index_item,
                   MdeConstants::Audio::KComposerProperty,
-                  textProperty->Value());
+                  textProperty->Value(),
+                  CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
     AddToFieldExcerptL(textProperty->Value());//Add composer to excerpt
     }
-    index_item->AddExcerptL(*iExcerpt);   
+    //Get author property
+    CMdEPropertyDef& authorPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KAuthorProperty );
+    if(aObject.Property( authorPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                         MdeConstants::MediaObject::KAuthorProperty,
+                         textProperty->Value(),
+                         CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
+       AddToFieldExcerptL(textProperty->Value());
+       }    
+     //Get comment property   
+    CMdEPropertyDef& commentPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCommentProperty );
+    if(aObject.Property( commentPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KCommentProperty,
+                   textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+        
+    //Get description property
+    CMdEPropertyDef& descriprionPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KDescriptionProperty );
+    if(aObject.Property( descriprionPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KDescriptionProperty,
+                   textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    //Copyright property    
+    CMdEPropertyDef& copyrightPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCopyrightProperty );
+    if(aObject.Property( copyrightPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                      MdeConstants::MediaObject::KCopyrightProperty,
+                      textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       } 
+    //Get genre property
+    CMdEPropertyDef& genrePropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KGenreProperty );
+    if(aObject.Property( genrePropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KGenreProperty,
+                   textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    
+    //Size property
+    CMdEPropertyDef& sizePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KSizeProperty);
+    if(aObject.Property( sizePropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       if( property->Def().PropertyType() == EPropertyUint32 )
+           {
+           CMdEUint32Property& sizeProperty = static_cast < CMdEUint32Property& > (*property );
+           TBuf<32> buf;
+           buf.Format(_L("%u"), sizeProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                           MdeConstants::Object::KSizeProperty,
+                           buf,
+                           CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+           AddToFieldExcerptL(buf);
+           }
+       }
+    
+    //Get legal property
+    CMdEPropertyDef& legalPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KLegalProperty );
+    if(aObject.Property( legalPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KLegalProperty,
+                   textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    //Get track property
+    CMdEPropertyDef& trackPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KTrackProperty );
+    if(aObject.Property( trackPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document       
+       if( property->Def().PropertyType() == EPropertyUint16 )
+           {
+           CMdEUint16Property& trackProperty = static_cast < CMdEUint16Property& > (*property );               
+           TBuf<32> buf;
+           buf.Format(_L("%d"), trackProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                              MdeConstants::MediaObject::KTrackProperty,
+                              buf);
+           }       
+       }
+    // Capturedate property
+    CMdEPropertyDef& captureDatePropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCaptureDateProperty);
+    if(aObject.Property( captureDatePropDef, property ) != KErrNotFound)
+      {
+      //Add field to document
+      if(EPropertyTime == property->Def().PropertyType())
+          {
+          CMdETimeProperty& timeProperty = static_cast < CMdETimeProperty& > (*property);
+          TDateTime time = timeProperty.Value().DateTime();
+          TBuf<32> buf;
+          buf.Format( KFormatDateTime, time.Year(), 
+                                       time.Month() + 1, 
+                                       time.Day() + 1, 
+                                       time.Hour(), 
+                                       time.Minute());
+          
+          AddFiledtoDocumentL(*index_item,
+                             MdeConstants::MediaObject::KCaptureDateProperty,
+                             buf,
+                             CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+          
+          //Format for excerpt field
+          buf.Format( KExcerptFormat, time.Year(), 
+                                     time.Month() + 1, 
+                                     time.Day() + 1, 
+                                     time.Hour(), 
+                                     time.Minute());
+          AddToFieldExcerptL(buf);
+          }
+      }
+    //Get LastModifiedDate property
+    CMdEPropertyDef& dateTimePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KLastModifiedDateProperty);
+    if(aObject.Property( dateTimePropDef, property ) != KErrNotFound)
+      {
+      //Add field to document
+      if(EPropertyTime == property->Def().PropertyType())
+          {
+          CMdETimeProperty& timeProperty = static_cast < CMdETimeProperty& > (*property);
+          TDateTime time = timeProperty.Value().DateTime();
+          TBuf<32> buf;
+          buf.Format( KFormatDateTime, time.Year(),
+                                       time.Month() + 1,
+                                       time.Day() + 1,
+                                       time.Hour(),
+                                       time.Minute());
+          
+          AddFiledtoDocumentL(*index_item,
+                             MdeConstants::Object::KLastModifiedDateProperty,
+                             buf,
+                             CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+          //Format for excerpt field
+          buf.Format( KExcerptFormat, time.Year(), 
+                                   time.Month() + 1, 
+                                   time.Day() + 1, 
+                                   time.Hour(), 
+                                   time.Minute());
+          AddToFieldExcerptL(buf);
+          }
+      }
+    //Get duration property
+    CMdEPropertyDef& durationPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KDurationProperty );
+    if(aObject.Property( durationPropDef, property ) != KErrNotFound)
+       {        
+       //Add field to document
+       if( property->Def().PropertyType() == EPropertyReal32 )
+           {
+           CMdEReal32Property& durationProperty = static_cast < CMdEReal32Property& > (*property );               
+           TBuf<32> buf;
+           buf.Format(_L("%f"), durationProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                          MdeConstants::MediaObject::KDurationProperty,
+                          buf );
+           }       
+       }
+    if( iExcerpt )
+        {
+        index_item->AddExcerptL(*iExcerpt);
+        }
     CPIXLOGSTRING("END CCPIXMediaAudioDoc::GetCpixDocumentL");
     OstTraceFunctionExit0( CCPIXMEDIAAUDIODOC_GETCPIXDOCUMENTL_EXIT );
     return index_item;
--- a/harvesterplugins/media/image/src/cpixmediaimagedoc.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/media/image/src/cpixmediaimagedoc.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -30,8 +30,8 @@
 #endif
 
 
-_LIT( KFormatDateTime, "%04d %02d %02dT%02d:%02d:%02dZ");    // yyyy-mm-ddThh:mm:ssZ
-
+_LIT( KFormatDateTime, "%04d %02d %02d %02d %02d");    // yyyy mm dd hh mm
+_LIT( KExcerptFormat, "%04d/%02d/%02d %02d:%02d");   //yyyy/mm/dd hh:mm
 // -----------------------------------------------------------------------------
 // CCPIXDocFetcher::NewL()
 // -----------------------------------------------------------------------------
@@ -96,32 +96,123 @@
     CPIXLOGSTRING("START CCPIXMediaImageDoc::GetCpixDocumentL");
     CSearchDocument* index_item = CCPIXDocFetcher::GetCpixDocumentL(aObject,aAppClass,aObjectDef);
     ResetExcerpt(); //Reset excerpt initially
-    //URI and Excerpt is done add additional properties here 
+    //URI and Excerpt is done add additional properties here
     CMdEProperty* property(NULL);
-    //Title property
+    
     CMdEPropertyDef& titlePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KTitleProperty );
-    if(aObject.Property( titlePropDef, property ) != KErrNotFound)
-       {
-       //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
-       AddFiledtoDocumentL(*index_item,
-                           MdeConstants::Object::KTitleProperty,
-                           textProperty->Value());
-       AddToFieldExcerptL(textProperty->Value());
-       }
-            
+       if(aObject.Property( titlePropDef, property ) != KErrNotFound)
+          {
+          //Add field to document excerpt.
+          CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+          AddToFieldExcerptL(textProperty->Value());
+          }
+    
     //Get user comment field
     CMdEPropertyDef& commentPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCommentProperty );
     if(aObject.Property( commentPropDef, property )!= KErrNotFound)
        {
        //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
        AddFiledtoDocumentL(*index_item,
                            MdeConstants::MediaObject::KCommentProperty,
                            textProperty->Value());
        AddToFieldExcerptL(textProperty->Value());
        }
-    CMdEPropertyDef& dateTimePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Image::KDateTimeOriginalProperty);
+    
+    //Get user description field
+    CMdEPropertyDef& descriptionPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KDescriptionProperty );
+    if(aObject.Property( descriptionPropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                           MdeConstants::MediaObject::KDescriptionProperty,
+                           textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    
+    //Get user copyright field
+    CMdEPropertyDef& copyRightPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCopyrightProperty );
+    if(aObject.Property( copyRightPropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                           MdeConstants::MediaObject::KCopyrightProperty,
+                           textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+
+    //Get user genre field
+    CMdEPropertyDef& genrePropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KGenreProperty );
+    if(aObject.Property( genrePropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                           MdeConstants::MediaObject::KGenreProperty,
+                           textProperty->Value()); 
+       AddToFieldExcerptL(textProperty->Value());
+       }
+
+    //Get legal property field
+    CMdEPropertyDef& legalPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KLegalProperty );
+    if(aObject.Property( legalPropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                           MdeConstants::MediaObject::KLegalProperty,
+                           textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    //Size property
+    CMdEPropertyDef& sizePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KSizeProperty);
+    if(aObject.Property( sizePropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       if( property->Def().PropertyType() == EPropertyUint32 )
+           {
+           CMdEUint32Property& sizeProperty = static_cast < CMdEUint32Property& > (*property );
+           TBuf<32> buf;
+           buf.Format(_L("%u"), sizeProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                           MdeConstants::Object::KSizeProperty,
+                           buf,
+                           CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+           AddToFieldExcerptL(buf);
+           }
+       }
+    //Get DateTimeOrginal property
+    CMdEPropertyDef& dateTimeOrgPropDef = aObjectDef.GetPropertyDefL(MdeConstants::Image::KDateTimeOriginalProperty);
+    if(aObject.Property( dateTimeOrgPropDef, property ) != KErrNotFound)
+      {
+      //Add field to document
+      if(EPropertyTime == property->Def().PropertyType())
+          {
+          CMdETimeProperty& timeProperty = static_cast < CMdETimeProperty& > (*property);
+          TDateTime time = timeProperty.Value().DateTime();
+          TBuf<32> buf;
+          buf.Format( KFormatDateTime, time.Year(),
+                                       time.Month() + 1,
+                                       time.Day() + 1,
+                                       time.Hour(),
+                                       time.Minute());
+          AddFiledtoDocumentL(*index_item,
+                             MdeConstants::Image::KDateTimeOriginalProperty,
+                             buf,
+                             CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+          //Format for excerpt field
+          buf.Format( KExcerptFormat, time.Year(), 
+                                   time.Month() + 1, 
+                                   time.Day() + 1, 
+                                   time.Hour(), 
+                                   time.Minute());
+          AddToFieldExcerptL(buf);
+          }
+      }
+    //Get LastModifiedDate property
+    CMdEPropertyDef& dateTimePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KLastModifiedDateProperty);
     if(aObject.Property( dateTimePropDef, property ) != KErrNotFound)
       {
       //Add field to document
@@ -130,19 +221,30 @@
           CMdETimeProperty& timeProperty = static_cast < CMdETimeProperty& > (*property);
           TDateTime time = timeProperty.Value().DateTime();
           TBuf<32> buf;
-          buf.Format( KFormatDateTime, time.Year(), 
-                                       time.Month() + 1, 
-                                       time.Day() + 1, 
-                                       time.Hour(), 
-                                       time.Minute(), 
-                                       time.Second() );
+          buf.Format( KFormatDateTime, time.Year(),
+                                       time.Month() + 1,
+                                       time.Day() + 1,
+                                       time.Hour(),
+                                       time.Minute());
+          
           AddFiledtoDocumentL(*index_item,
-                             MdeConstants::Image::KDateTimeOriginalProperty,
+                             MdeConstants::Object::KLastModifiedDateProperty,
                              buf,
                              CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+          //Format for excerpt field
+          buf.Format( KExcerptFormat, time.Year(), 
+                                   time.Month() + 1, 
+                                   time.Day() + 1, 
+                                   time.Hour(), 
+                                   time.Minute());
+          AddToFieldExcerptL(buf);
           }
       }
-    index_item->AddExcerptL(*iExcerpt);
+    if( iExcerpt )
+        {
+        index_item->AddExcerptL(*iExcerpt);
+        }
+
     //Latitude error currently 
     /* TODO- Bhuvi Location is a seperate object for each image object if any such relation
      * exist it has to be searched from Relation table and from there we have to open 
--- a/harvesterplugins/media/mediautils/src/cpixdocfetcher.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/media/mediautils/src/cpixdocfetcher.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -126,7 +126,8 @@
         //Uri is our Document ID
         AddFiledtoDocumentL(*index_item,
                                KNameField, //URI as Name field
-                               name);
+                               name,
+                               CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
         //Store media ID for client to generate path and launch corresponding Item
         TBuf<KMaxMediaLength> mediaBuf;        
         
@@ -143,7 +144,8 @@
         //Get the media file extension and store
         TBuf<KMaxExtLength> extension;        
         GetExtension(aObject.Uri(),extension);
-        AddFiledtoDocumentL( *index_item, KExtensionField, extension );
+        AddFiledtoDocumentL( *index_item, KExtensionField, extension,
+                CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
         
         CMdEProperty* property(NULL);
         CMdEPropertyDef& titlePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KTitleProperty );
@@ -153,25 +155,42 @@
         if(aObject.Property( titlePropDef, property ) != KErrNotFound)
            {
            //Add field to document
-           CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+           CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
            if(textProperty->Value() != KNullDesC)
                {
                AddFiledtoDocumentL(*index_item,
                                      MdeConstants::Object::KTitleProperty,
-                                     textProperty->Value());
+                                     textProperty->Value(),
+                                     CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
                }
            }
+        
         //Item type as MIME type
         CMdEPropertyDef& mimeTypePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KItemTypeProperty);
         if(aObject.Property( mimeTypePropDef, property )!= KErrNotFound)
            {
            //Add field to document
-           CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+           CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
            AddFiledtoDocumentL(*index_item,
                                _L(CPIX_MIMETYPE_FIELD),
                                textProperty->Value(),
                                CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
            }
+        //Get ratings field
+        CMdEPropertyDef& ratingsPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KRatingProperty );
+        if(aObject.Property( ratingsPropDef, property )!= KErrNotFound)
+           {
+           //Add field to document
+           if( property->Def().PropertyType() == EPropertyInt32 )
+               {
+               CMdEInt32Property& ratingProperty = static_cast < CMdEInt32Property& > (*property );               
+               TBuf<32> buf;
+               buf.Format(_L("%d"), ratingProperty.Value());
+               AddFiledtoDocumentL(*index_item,
+                                  MdeConstants::MediaObject::KRatingProperty,
+                                  buf );
+               }
+           }
         CleanupStack::Pop(index_item);//pop up
         }    
     CPIXLOGSTRING("END CCPIXDocFetcher::GetCpixDocumentL");
--- a/harvesterplugins/media/video/src/cpixmediavideodoc.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/media/video/src/cpixmediavideodoc.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -29,7 +29,8 @@
 #include "cpixmediavideodocTraces.h"
 #endif
 
-
+_LIT( KFormatDateTime, "%04d %02d %02d %02d %02d");    // yyyy mm dd hh mm
+_LIT( KExcerptFormat, "%04d/%02d/%02d %02d:%02d");   //yyyy/mm/dd hh:mm
 // -----------------------------------------------------------------------------
 // CCPIXDocFetcher::NewL()
 // -----------------------------------------------------------------------------
@@ -96,14 +97,22 @@
     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)
        {
        //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
        AddFiledtoDocumentL(*index_item,
                   MdeConstants::MediaObject::KDescriptionProperty,
                   textProperty->Value());
@@ -113,45 +122,205 @@
     if(aObject.Property( artistPropDef, property )!= KErrNotFound)
        {
        //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
        AddFiledtoDocumentL(*index_item,
                            MdeConstants::MediaObject::KArtistProperty,
-                           textProperty->Value());
+                           textProperty->Value(),
+                           CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
        AddToFieldExcerptL(textProperty->Value());
        }
     CMdEPropertyDef& authorPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KAuthorProperty );
     if(aObject.Property( authorPropDef, property ) != KErrNotFound)
        {
        //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
        AddFiledtoDocumentL(*index_item,
                          MdeConstants::MediaObject::KAuthorProperty,
-                         textProperty->Value());
+                         textProperty->Value(),
+                         CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
        AddToFieldExcerptL(textProperty->Value());
-       }
-    CMdEPropertyDef& copyrightPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCopyrightProperty );
-    if(aObject.Property( copyrightPropDef, property ) != KErrNotFound)
-       {
-       //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
-       AddFiledtoDocumentL(*index_item,
-                      MdeConstants::MediaObject::KCopyrightProperty,
-                      textProperty->Value());
-       AddToFieldExcerptL(textProperty->Value());
-       }   
+       }      
     
     CMdEPropertyDef& commentPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCommentProperty );
     if(aObject.Property( commentPropDef, property ) != KErrNotFound)
        {
        //Add field to document
-       CMdETextProperty* textProperty = ( CMdETextProperty* ) property;
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
        AddFiledtoDocumentL(*index_item,
                    MdeConstants::MediaObject::KCommentProperty,
                    textProperty->Value());
        AddToFieldExcerptL(textProperty->Value());
        }
-    index_item->AddExcerptL(*iExcerpt);
+    
+    //Get description property
+    CMdEPropertyDef& descriprionPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KDescriptionProperty );
+    if(aObject.Property( descriprionPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KDescriptionProperty,
+                   textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    
+    CMdEPropertyDef& copyrightPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCopyrightProperty );
+    if(aObject.Property( copyrightPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                      MdeConstants::MediaObject::KCopyrightProperty,
+                      textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       } 
+    //Get genre property
+    CMdEPropertyDef& genrePropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KGenreProperty );
+    if(aObject.Property( genrePropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KGenreProperty,
+                   textProperty->Value());
+       AddToFieldExcerptL(textProperty->Value());
+       }
+    //Size property
+    CMdEPropertyDef& sizePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KSizeProperty);
+    if(aObject.Property( sizePropDef, property )!= KErrNotFound)
+       {
+       //Add field to document
+       if( property->Def().PropertyType() == EPropertyUint32 )
+           {
+           CMdEUint32Property& sizeProperty = static_cast < CMdEUint32Property& > (*property );
+           TBuf<32> buf;
+           buf.Format(_L("%u"), sizeProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                           MdeConstants::Object::KSizeProperty,
+                           buf,
+                           CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+           AddToFieldExcerptL(buf);
+           }
+       }    
+    //Get resolution property
+    CMdEPropertyDef& resolutionPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KResolutionUnitProperty );
+    if(aObject.Property( resolutionPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       if( property->Def().PropertyType() == EPropertyUint16 )
+           {
+           CMdEUint16Property& resolutionProperty = static_cast < CMdEUint16Property& > (*property );               
+           TBuf<32> buf;
+           buf.Format(_L("%d"), resolutionProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                              MdeConstants::MediaObject::KResolutionUnitProperty,
+                              buf,
+                              CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+           }       
+       }    
+    //Get legal property
+    CMdEPropertyDef& legalPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KLegalProperty );
+    if(aObject.Property( legalPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document
+       CMdETextProperty* textProperty = static_cast< CMdETextProperty* > (property );
+       AddFiledtoDocumentL(*index_item,
+                   MdeConstants::MediaObject::KLegalProperty,
+                   textProperty->Value());       
+       }
+    //Get track property
+    CMdEPropertyDef& trackPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KTrackProperty );
+    if(aObject.Property( trackPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document       
+       if( property->Def().PropertyType() == EPropertyUint16 )
+           {
+           CMdEUint16Property& trackProperty = static_cast < CMdEUint16Property& > (*property );               
+           TBuf<32> buf;
+           buf.Format(_L("%d"), trackProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                              MdeConstants::MediaObject::KTrackProperty,
+                              buf);
+           }       
+       }
+    // Capturedate property
+    CMdEPropertyDef& captureDatePropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KCaptureDateProperty);
+    if(aObject.Property( captureDatePropDef, property ) != KErrNotFound)
+      {
+      //Add field to document
+      if(EPropertyTime == property->Def().PropertyType())
+          {
+          CMdETimeProperty& timeProperty = static_cast < CMdETimeProperty& > (*property);
+          TDateTime time = timeProperty.Value().DateTime();
+          TBuf<32> buf;
+          buf.Format( KFormatDateTime, time.Year(), 
+                                       time.Month() + 1, 
+                                       time.Day() + 1, 
+                                       time.Hour(), 
+                                       time.Minute());
+          
+          AddFiledtoDocumentL(*index_item,
+                             MdeConstants::MediaObject::KCaptureDateProperty,
+                             buf,
+                             CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+          //Format for excerpt field
+          buf.Format( KExcerptFormat, time.Year(), 
+                                 time.Month() + 1, 
+                                 time.Day() + 1, 
+                                 time.Hour(), 
+                                 time.Minute());
+          AddToFieldExcerptL(buf);
+          }
+      }
+    //Get LastModifiedDate property
+    CMdEPropertyDef& dateTimePropDef = aObjectDef.GetPropertyDefL(MdeConstants::Object::KLastModifiedDateProperty);
+    if(aObject.Property( dateTimePropDef, property ) != KErrNotFound)
+      {
+      //Add field to document
+      if(EPropertyTime == property->Def().PropertyType())
+          {
+          CMdETimeProperty& timeProperty = static_cast < CMdETimeProperty& > (*property);
+          TDateTime time = timeProperty.Value().DateTime();
+          TBuf<32> buf;
+          buf.Format( KFormatDateTime, time.Year(),
+                                       time.Month() + 1,
+                                       time.Day() + 1,
+                                       time.Hour(),
+                                       time.Minute());
+          
+          AddFiledtoDocumentL(*index_item,
+                             MdeConstants::Object::KLastModifiedDateProperty,
+                             buf,
+                             CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+          //Format for excerpt field
+          buf.Format( KExcerptFormat, time.Year(), 
+                                   time.Month() + 1, 
+                                   time.Day() + 1, 
+                                   time.Hour(), 
+                                   time.Minute());
+          AddToFieldExcerptL(buf);
+          }
+      }
+    //Get duration property
+    CMdEPropertyDef& durationPropDef = aObjectDef.GetPropertyDefL(MdeConstants::MediaObject::KDurationProperty );
+    if(aObject.Property( durationPropDef, property ) != KErrNotFound)
+       {
+       //Add field to document       
+       if( property->Def().PropertyType() == EPropertyReal32 )
+           {
+           CMdEReal32Property& durationProperty = static_cast < CMdEReal32Property& > (*property );               
+           TBuf<32> buf;
+           buf.Format(_L("%f"), durationProperty.Value());
+           AddFiledtoDocumentL(*index_item,
+                              MdeConstants::MediaObject::KDurationProperty,
+                              buf,
+                              CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
+           }       
+       }
+    if( iExcerpt )
+        {
+        index_item->AddExcerptL(*iExcerpt);
+        }
     OstTraceFunctionExit0( CCPIXMEDIAVIDEODOC_GETCPIXDOCUMENTL_EXIT );
     return index_item;
     }
-
--- a/harvesterplugins/messaging/email/qtemailfetcher/bwins/qtemailfetcheru.def	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/email/qtemailfetcher/bwins/qtemailfetcheru.def	Mon Jun 28 11:03:15 2010 +0530
@@ -1,27 +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
 
--- a/harvesterplugins/messaging/email/qtemailfetcher/eabi/qtemailfetcheru.def	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/email/qtemailfetcher/eabi/qtemailfetcheru.def	Mon Jun 28 11:03:15 2010 +0530
@@ -1,27 +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
+	_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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -17,29 +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 )
@@ -58,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;    
     }
 
 //------------------------------------------------------------------------------
@@ -75,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; 
@@ -92,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";
 }
 
@@ -143,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";
@@ -173,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);
-    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 );
-    doc->AddFieldL( KFolderId, qt_QString2TPtrC( QString().setNum( aFolderId ) ), CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized );
+    //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 );
     
-//    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");
+    // 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;
@@ -271,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)";
 }
 
@@ -309,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; 
@@ -336,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();
@@ -355,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 ) );
             }
@@ -363,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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/email/qtemailfetcher/qtemailfetcher.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/group/bld.inf	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/inc/cmessagedatahandler.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/inc/cmessageharvester.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/inc/cmessagemonitor.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/inc/cmessageplugin.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/src/cmessagedatahandler.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -66,7 +66,8 @@
 _LIT(KFolderField, FOLDER_FIELD);
 _LIT(KBodyField, BODY_FIELD);
 _LIT(KSubjectField, SUBJECT_FIELD);
-
+_LIT(KAttachmentField, ATTACHMENT_FIELD);
+_LIT(KValueAttachment, "Attachment");
 // ============================ MEMBER FUNCTIONS ===============================
 
 // ---------------------------------------------------------------------------
@@ -197,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;
 		}
@@ -223,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:
@@ -301,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
@@ -358,7 +297,8 @@
 	TMsvId service = 0;
 	iMsvSession.GetEntry(aMsvId, service, entry);
 	HBufC *fromNameOrNumberBuf = entry.iDetails.AllocLC();
-	index_item->AddFieldL(KFromField, *fromNameOrNumberBuf);
+	index_item->AddFieldL(KFromField, *fromNameOrNumberBuf,
+	        CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
 
 	// Add the recipients as content items
 	TBuf<64> to_field;
@@ -370,7 +310,8 @@
 		to_field = KToField;
 		if (i>0)
 			to_field.AppendNum(i);
-		index_item->AddFieldL(to_field, recipientArray.MdcaPoint(i));
+		index_item->AddFieldL(to_field, recipientArray.MdcaPoint(i),
+		        CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EIndexFreeText);
 		}
 
 	// Add the body text as a content item
@@ -436,6 +377,11 @@
     CMsvStore* msvStore = iMmsMtm->Entry().ReadStoreL();
 	CleanupStack::PushL( msvStore );
 	MMsvAttachmentManager& attManager = msvStore->AttachmentManagerL();
+	//Add attachment value field
+	TInt count = attManager.AttachmentCount();
+	if (count > 0)
+	   index_item->AddFieldL(KAttachmentField, KValueAttachment);	
+	
 	for ( TInt i = 0; i < attManager.AttachmentCount(); i++ )
 	    {
 		CMsvAttachment* attInfo = attManager.GetAttachmentInfoL(i);
@@ -532,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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/src/cmessageplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/traces/cmessagedatahandlerTraces.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/traces/cmessagemonitorTraces.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/traces/cmessagepluginTraces.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/messaging/smsmms/traces/fixed_id.definitions	Mon Jun 28 11:03:15 2010 +0530
@@ -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/notes/src/notesplugin.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/notes/src/notesplugin.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -53,7 +53,7 @@
 _LIT(KNpdUpdateTime , "Date");
 
 //Reference from CPix calender harvester plugin.
-_LIT(KNotesTimeFormat , "%F%/0%Y %M %D %H%T"); // Locale independent YYYYMMDDHHMM
+_LIT(KNotesTimeFormat,"%04d %02d %02d %02d %02d");
 
 // ---------------------------------------------------------------------------
 // CNotesPlugin::NewL
@@ -346,8 +346,13 @@
 		index_item->AddFieldL(KNpdMemo, entry->DescriptionL());
 		// Add Date fields
 		TBuf<30> dateString;
-		TTime endTime = entry->EndTimeL().TimeUtcL();
-		endTime.FormatL(dateString, KNotesTimeFormat);
+		TDateTime datetime = entry->EndTimeL().TimeUtcL().DateTime();		
+		dateString.Format( KNotesTimeFormat, datetime.Year(),
+                                     TInt(datetime.Month()+ 1),
+                                     datetime.Day() + 1,
+                                     datetime.Hour()+ 1,
+                                     datetime.Minute());
+		 
 		index_item->AddFieldL(KNpdUpdateTime, dateString, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
 
 		index_item->AddFieldL(KMimeTypeField, KMimeTypeNotes, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
--- a/harvesterplugins/tsrc/harvesterplugintester/conf/harvesterplugintester.cfg	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/conf/harvesterplugintester.cfg	Mon Jun 28 11:03:15 2010 +0530
@@ -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
@@ -193,6 +298,13 @@
 [Endtest]
 
 [Test]
+title TestCreateAllContactFields
+create HarvesterPluginTester foobar
+foobar TestCreateAllContactFields And
+delete foobar
+[Endtest]
+
+[Test]
 title TestCreateContactIndexItemL_Edit
 create HarvesterPluginTester foobar
 foobar TestCreateContactIndexItemL_Edit update ContactNew ContactModified
@@ -207,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
@@ -251,7 +405,7 @@
 [Test]
 title TestAudioHarvestingUpdateIndex
 create HarvesterPluginTester foobar 
-foobar TestAudiooHarvestingUpdateIndex c:\data\eagle_landed.mp3 eagle_landed.mp3 testaudio.wmv
+foobar TestAudioHarvestingUpdateIndex c:\data\eagle_landed.mp3 eagle_landed.mp3 testaudio.mp3
 delete foobar
 [Endtest]
 
@@ -352,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 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/group/harvesterplugintester.mmp	Mon Jun 28 11:03:15 2010 +0530
@@ -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/ccalendarobserver.h	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/inc/ccalendarobserver.h	Mon Jun 28 11:03:15 2010 +0530
@@ -24,7 +24,7 @@
 #include "calprogresscallback.h"
 _LIT8(KGuid, "AGlobalUid");
 
-class CCalendarObserver : public MCalProgressCallBack 
+class CCalendarObserver : public CBase, public MCalProgressCallBack 
 {
 public:
     static CCalendarObserver* NewL();   
--- a/harvesterplugins/tsrc/harvesterplugintester/inc/cmessagesessionobserver.h	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/inc/cmessagesessionobserver.h	Mon Jun 28 11:03:15 2010 +0530
@@ -20,7 +20,7 @@
 
 #include <msvapi.h>
 
-class CMessageSessionObserver : public MMsvSessionObserver 
+class CMessageSessionObserver : public CBase, public MMsvSessionObserver 
 {
 public:
     static CMessageSessionObserver* NewL();
--- a/harvesterplugins/tsrc/harvesterplugintester/inc/harvesterplugintester.h	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/inc/harvesterplugintester.h	Mon Jun 28 11:03:15 2010 +0530
@@ -51,7 +51,7 @@
 // FORWARD DECLARATIONS
 //class ?FORWARD_CLASSNAME;
 class CHarvesterPluginTester;
-
+class CSearchDocument;
 // DATA TYPES
 //enum ?declaration
 //typedef ?declaration
@@ -152,7 +152,7 @@
         */
         virtual TInt TestStartHarvesterL( CStifItemParser& aItem );
 		
-        virtual TInt TestFormBaseAppClass( CStifItemParser& aItem );
+        virtual TInt TestFormBaseAppClassL( CStifItemParser& aItem );
 		
 		virtual TInt TestDatabasePathL( CStifItemParser& aItem );
 		
@@ -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,6 +221,20 @@
                         
         virtual TInt TestCreateContactIndexItemL( 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 );
@@ -254,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 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe.mmp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/capsmod_exe/group/capsmod_exe_nrm.mmp	Mon Jun 28 11:03:15 2010 +0530
@@ -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/cmessagesessionobserver.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/cmessagesessionobserver.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -169,7 +169,7 @@
     TMsvAttachmentId attaId = KMsvNullIndexEntryId;    
     
     RFs iFSsession;
-    iFSsession.Connect();
+    User::LeaveIfError( iFSsession.Connect());
     RFile testfile;
     
     CMsvMimeHeaders* mimeHeaders = CMsvMimeHeaders::NewL();
@@ -216,8 +216,8 @@
     entry.SetUnread( EFalse );
     iMmsClient->Entry().ChangeL( entry );
     iMmsClient->SaveMessageL();
-    
     delete iMmsClient;
+    iMmsClient = NULL;
     delete mtmReg;
     return newMsgId;
     }
@@ -290,6 +290,7 @@
     
  
     delete iSmtpClient;
+    iSmtpClient = NULL;
     delete mtmReg;
     return newMsgId;
     }
--- a/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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"
@@ -90,7 +92,7 @@
         // First string is the function name used in TestScripter script file.
         // Second is the actual implementation member function. 
         ENTRY( "TestStartHarvester", CHarvesterPluginTester::TestStartHarvesterL ),        
-        ENTRY( "TestFormBaseAppClass", CHarvesterPluginTester::TestFormBaseAppClass ),
+        ENTRY( "TestFormBaseAppClass", CHarvesterPluginTester::TestFormBaseAppClassL ),
         ENTRY( "TestDatabasePath", CHarvesterPluginTester::TestDatabasePathL ),
         ENTRY( "TestCreateIndexItemL_Add", CHarvesterPluginTester::TestCreateIndexItemL ),
         ENTRY( "TestCreateIndexItemL_Update", CHarvesterPluginTester::TestCreateIndexItemL ),
@@ -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 ),
@@ -113,8 +128,15 @@
         ENTRY( "TestUpdateNoteL", CHarvesterPluginTester::TestUpdateNoteL ),                
         ENTRY( "TestContactsHarvesting", CHarvesterPluginTester::TestStartContactsHarvesterL ),
         ENTRY( "TestCreateContactIndexItemL_Add", CHarvesterPluginTester::TestCreateContactIndexItemL ),
+        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 ),
@@ -135,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
         };
@@ -155,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*/ )
@@ -173,11 +203,12 @@
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     delete filePlugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );
     return KErrNone;
     }
 
-TInt CHarvesterPluginTester::TestFormBaseAppClass( CStifItemParser& aItem )
+TInt CHarvesterPluginTester::TestFormBaseAppClassL( CStifItemParser& aItem )
     {
     // Print to UI
     _LIT( KFilePluginBaseAppClass, "FormBaseAppClass" );
@@ -212,7 +243,7 @@
         }
     delete filePlugin;
     delete iPluginTester;
-    
+    iPluginTester = NULL;
     doLog( iLog, error, KTestFormBaseAppClassNoError );
     return error;
     }
@@ -248,6 +279,7 @@
     CleanupStack::PopAndDestroy( buffer );
     delete filePlugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, error, KTestDatabasePathNoError );
     return error;
     }
@@ -259,15 +291,24 @@
     ESearchTypeNoResultsExpected
     };
 
-TInt doSearch( const TDesC& aSearchString, const TDesC& aBaseAppClass, TSearchType aSearchType )
+TInt doSearchL( const TDesC& aSearchString, const TDesC& aBaseAppClass, TSearchType aSearchType )
     {
+    _LIT(KHeaderPrefix, "$prefix(\"");
+    _LIT(KTrailerPrefix, "\")");
     RSearchServerSession session;
     User::LeaveIfError( session.Connect() );
     CCPixSearcher* searcher = CCPixSearcher::NewLC( session );
-    searcher->OpenDatabaseL( aBaseAppClass );
     
-    TInt docCount = searcher->SearchL( aSearchString, KNullDesC);
+    //Form prefix search query
+    searcher->OpenDatabaseL( aBaseAppClass );
+    HBufC* searchbuf = HBufC::NewLC(KHeaderPrefix().Length() + aSearchString.Length() + KTrailerPrefix().Length());
+    TPtr searchstring = searchbuf->Des();
+    searchstring.Append(KHeaderPrefix);
+    searchstring.Append(aSearchString);
+    searchstring.Append(KTrailerPrefix);
     
+    TInt docCount = searcher->SearchL( searchstring, KNullDesC);
+    CleanupStack::PopAndDestroy( searchbuf );
     CleanupStack::PopAndDestroy( searcher );
     session.Close();
     
@@ -309,7 +350,7 @@
                 TPtrC searchString;
                 while( aItem.GetNextString ( searchString ) == KErrNone  && error == KErrNone )
                     {
-                    error = doSearch( searchString, KAppBasePath, ESearchTypeResultsExpected );
+                    error = doSearchL( searchString, KAppBasePath, ESearchTypeResultsExpected );
                     }
                 filePlugin->CreateContentIndexItemL( filePathName, ECPixRemoveAction );
                 }
@@ -323,7 +364,7 @@
                 TPtrC searchString;
                 while( aItem.GetNextString ( searchString ) == KErrNone  && error == KErrNone )
                     {
-                    error = doSearch( searchString, KAppBasePath, ESearchTypeNoResultsExpected );
+                    error = doSearchL( searchString, KAppBasePath, ESearchTypeNoResultsExpected );
                     }
                 }
             }
@@ -337,7 +378,7 @@
                 TPtrC searchString;
                 while( aItem.GetNextString ( searchString ) == KErrNone  && error == KErrNone )
                     {
-                    error = doSearch( searchString, KAppBasePath, ESearchTypeResultsExpected );
+                    error = doSearchL( searchString, KAppBasePath, ESearchTypeResultsExpected );
                     }
                 }
             }
@@ -358,7 +399,7 @@
     
     _LIT( KDirectoryToCreate, "C:\\data\\TestFolder\\" );    
     RFs fs;
-    fs.Connect();
+    User::LeaveIfError( fs.Connect() );
     TBool folderExists = BaflUtils::FolderExists(fs, KDirectoryToCreate);
     if(!folderExists)
         {
@@ -368,12 +409,13 @@
     
     if(error == KErrNone)
         {
-        error = doSearch( _L("TestFolder"), KAppBaseFolderFilePath, ESearchTypeResultsExpected );
+        error = doSearchL( _L("TestFolder"), KAppBaseFolderFilePath, ESearchTypeResultsExpected );
         fs.RmDir(KDirectoryToCreate);
         }
     fs.Close();
     delete filePlugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, error, _L("Error: TestFolderCreateL") );
     
     return error;
@@ -383,7 +425,7 @@
     {
     TInt error = KErrNone;
     RFs fs;
-    fs.Connect();
+    User::LeaveIfError( fs.Connect() );
     
     CFilePlugin* filePlugin = CFilePlugin::NewL();
     CFolderRenamedHarvester* iFolderRenameHarvester = CFolderRenamedHarvester::NewL( *filePlugin, fs);
@@ -407,7 +449,7 @@
         }
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     
-    error = doSearch( _L("TestRenameFolder"), KAppBaseFolderFilePath, ESearchTypeResultsExpected );        
+    error = doSearchL( _L("TestRenameFolder"), KAppBaseFolderFilePath, ESearchTypeResultsExpected );        
   
     if(error == KErrNone)
         {
@@ -418,13 +460,15 @@
     User::After( (TTimeIntervalMicroSeconds32)35000000 );
     
     //Search for the renamed directory
-    error = doSearch( _L("TestFolderRenamed"), KAppBaseFolderFilePath, ESearchTypeNoResultsExpected );    
+    error = doSearchL( _L("TestFolderRenamed"), KAppBaseFolderFilePath, ESearchTypeNoResultsExpected );    
     
     fs.RmDir(KDirectoryRenamed);    
     
     delete filePlugin;
     delete iFolderRenameHarvester;
+    iFolderRenameHarvester = NULL;
     delete iPluginTester;
+    iPluginTester = NULL;
     fs.Close();
     doLog( iLog, error, _L("Error: TestFolderRenameL") );
     
@@ -461,6 +505,7 @@
     
     delete plugin; 
     delete iPluginTester;
+    iPluginTester = NULL;
     delete sessionobserver;
     delete msgSession;
     doLog(iLog,KErrNone,KNoErrorString);
@@ -502,6 +547,7 @@
     
     delete plugin; 
     delete iPluginTester;
+    iPluginTester = NULL;
     delete sessionobserver;
     delete msgSession;
     doLog(iLog,error,_L("Error in TestMessageHarvesterWithMessageL"));
@@ -552,12 +598,231 @@
     
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     delete sessionobserver;
     delete msgSession;
     doLog(iLog,error,_L("Error in TestMessageHarvesterChangeDriveL"));
     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);
@@ -582,6 +847,7 @@
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );
     return KErrNone;
     }
@@ -627,12 +893,12 @@
         {
         error = aItem.GetNextString( string );
         if( KErrNone == error ) 
-            error = doSearch( string , _L( BOOKMARK_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+            error = doSearchL( string , _L( BOOKMARK_QBASEAPPCLASS ), ESearchTypeResultsExpected );
         }
 
     delete plugin;
     delete iPluginTester;
-    
+    iPluginTester = NULL;
     favoritesDb.Close();
     favSession.Close();
     
@@ -670,6 +936,7 @@
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     delete appsPlugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );
     return KErrNone;
     }
@@ -686,6 +953,7 @@
 
     delete appsPlugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );
     return KErrNone;
     }
@@ -698,7 +966,8 @@
     plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     delete plugin;
-    delete iPluginTester;    
+    delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );	
     return KErrNone;
     }
@@ -762,7 +1031,7 @@
         session->AddNoteL(memo->Des());
         plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
         iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
-        error = doSearch( aString2, _L(NOTES_QBASEAPPCLASS), ESearchTypeResultsExpected );
+        error = doSearchL( aString2, _L(NOTES_QBASEAPPCLASS), ESearchTypeResultsExpected );
         
         delete session;
         doLog( iLog, error, KNoErrorString );
@@ -770,6 +1039,7 @@
     delete memo;
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
 
@@ -792,14 +1062,14 @@
     session->AddNoteL( buf8->Des());
     User::After( (TTimeIntervalMicroSeconds32)35000000 );
     delete buf8;    
-    error = doSearch( _L("TestNote"), _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+    error = doSearchL( _L("TestNote"), _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
     doLog( iLog, error, KSearchError );    
     if( error == KErrNone)
         {
         session->DeleteNoteEntryL();
         User::After( (TTimeIntervalMicroSeconds32)35000000 );
         //Delete the Note entry added previously and search for result    
-        error = doSearch( _L("TestNote"), _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );             
+        error = doSearchL( _L("TestNote"), _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );             
         //If the entery is succesfully deleted, make error to KErrNone.To show testcase success
         if(error == KErrNotFound)
             error = KErrNone;    
@@ -807,6 +1077,7 @@
     delete session;
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, error, KSearchError );
     return KErrNone;
     }
@@ -831,7 +1102,7 @@
     TBuf<20> oldsearchstring;
     oldsearchstring.Copy( oldString );
     iPluginTester->iWaitForHarvester->Start();
-    error = doSearch( oldsearchstring, _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+    error = doSearchL( oldsearchstring, _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
     doLog( iLog, error, KSearchError );
     
     TBuf<20> newsearchstring;
@@ -842,14 +1113,15 @@
     session->UpdateNoteEntryL( oldbuf8->Des(), newbuf8->Des() );
     plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
     iPluginTester->iWaitForHarvester->Start();
-    error = doSearch( newsearchstring, _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+    error = doSearchL( newsearchstring, _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
     doLog( iLog, error, KSearchError );
     
     delete newbuf8;
     delete oldbuf8;
     delete session;
     delete plugin;
-    delete iPluginTester;    
+    delete iPluginTester;
+    iPluginTester = NULL;
     return error;    
     }
 
@@ -862,6 +1134,7 @@
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );
     return KErrNone;
     }
@@ -890,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;
@@ -917,7 +1254,7 @@
                  aContactId = CreateNewContactL( *db, ContactName, _L("1234") );                 
                  iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.                 
                                                        
-                 error = doSearch( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected ); 
+                 error = doSearchL( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected ); 
                  db->DeleteContactL(aContactId);
                  }
              }
@@ -953,27 +1290,8 @@
                       CleanupStack::PopAndDestroy(contactItem);
                       CleanupStack::PopAndDestroy(newCard);
                       
-                      error = doSearch( NewContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+                      error = doSearchL( NewContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
                       }
-                  /*CContactItem* contactItem = db->OpenContactL( aContactId );
-                  CleanupStack::PushL( contactItem );                           
-                  // First get the item's field set
-                  CContactItemFieldSet& fieldSet=contactItem->CardFields();                              
-                  // Search the field set for the given name field
-                  TInt index = fieldSet.Find( KUidContactFieldGivenName );
-                  CContactItemField &field= fieldSet[index];                          
-                  if( aItem.GetNextString ( NewContactName ) == KErrNone )
-                      {                      
-                      field.TextStorage()->SetTextL( NewContactName );                          
-                      // Commit the change back to database and clean up
-                      db->CommitContactL( *contactItem );
-                      }
-                  CleanupStack::PopAndDestroy(contactItem)*/;                
-                  
-                  /*plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS) );
-                  iPluginTester->iWaitForHarvester->Start();
-                  error = doSearch( NewContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
-                  db->DeleteContactL( aContactId );*/
                   }                 
              }
          if( IndexAction.Compare( KActionDelete ) == 0 )
@@ -985,25 +1303,98 @@
                  //Add a contact to contactdatabase and later delete it
                  aContactId = CreateNewContactL( *db, ContactName, _L("123455"));                 
                  iPluginTester->iWaitForHarvester->Start();
-                 error = doSearch( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+                 error = doSearchL( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
                  if(error == KErrNone)
                      {
                      plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS));
                      db->DeleteContactL(aContactId);
                      iPluginTester->iWaitForHarvester->Start();
-                     error = doSearch( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeNoResultsExpected );
+                     error = doSearchL( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeNoResultsExpected );
                      }                                 
                  }             
              }
-        }
-        
+        }        
         delete db;
         delete plugin;
         delete iPluginTester;
-        
+        iPluginTester = NULL;
         doLog( iLog, error, KSearchError );
         return KErrNone;    
     }
+
+TInt CHarvesterPluginTester::TestCreateAllContactFieldsL( CStifItemParser& aItem )
+    {
+    TInt error = KErrNone;
+    TPtrC ContactName;
+    _LIT( KBirthDate, "19970107:");
+    _LIT( KSearchError, "Search Failed" );
+    
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->StartPluginL();
+    CContactDatabase* db = CContactDatabase::OpenL();
+    if( aItem.GetNextString ( ContactName ) == KErrNone )
+        {
+        plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS) );
+        CContactCard* newCard = CContactCard::NewLC();
+        
+        // Create the firstName field and add the data to it
+        CContactItemField* firstName = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldGivenName );
+        firstName->TextStorage()->SetTextL(ContactName);    
+        newCard->AddFieldL(*firstName);
+        CleanupStack::Pop(firstName);
+        
+        CContactItemField* suffix = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldSuffixName );        
+        suffix->TextStorage()->SetTextL(_L("Mr"));
+        newCard->AddFieldL(*suffix);
+        CleanupStack::Pop(suffix);
+        
+        CContactItemField* assistant = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldAssistant );        
+        assistant->TextStorage()->SetTextL(_L("Jane"));
+        newCard->AddFieldL(*assistant);
+        CleanupStack::Pop(assistant);
+        
+        CContactItemField* department = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldDepartmentName );
+        department->TextStorage()->SetTextL(_L("Services"));
+        newCard->AddFieldL(*department);
+        CleanupStack::Pop(department);
+        
+        CContactItemField* birthday = CContactItemField::NewLC( KStorageTypeDateTime, KUidContactFieldBirthday );
+        TTime time(KBirthDate);
+        birthday->DateTimeStorage()->SetTime(time);
+        newCard->AddFieldL(*birthday);
+        CleanupStack::Pop(birthday);        
+
+        CContactItemField*  anniversary = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldAnniversary );        
+        anniversary->TextStorage()->SetTextL(_L("2002-10-10"));
+        newCard->AddFieldL(*anniversary);
+        CleanupStack::Pop(anniversary);      
+        
+        // Create the phoneNo field and add the data to it
+        CContactItemField* phoneNumber = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldPhoneNumber );        
+        phoneNumber->TextStorage()->SetTextL(_L("1234"));
+        newCard->AddFieldL(*phoneNumber);
+        CleanupStack::Pop(phoneNumber);
+        
+        // Add newCard to the database     
+        const TContactItemId contactId = db->AddNewContactL(*newCard);    
+        CleanupStack::PopAndDestroy(newCard);
+        
+        iPluginTester->iWaitForHarvester->Start();
+        
+        error = doSearchL( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+        if( error == KErrNone )
+            {
+            error = doSearchL( _L("jan"), _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+            }
+        }
+    delete db;
+    delete plugin;
+    delete iPluginTester;
+    iPluginTester = NULL;
+    doLog( iLog, error, KSearchError );
+    return error;
+    }
 TInt CHarvesterPluginTester::TestCreateContactGroupL( CStifItemParser& aItem )
     {
     TInt error = KErrNone;
@@ -1021,7 +1412,7 @@
         CContactItem* newitem = db->CreateContactGroupL( _L("TestGroup") );
         db->AddContactToGroupL( aContactId, newitem->Id() );       
         iPluginTester->iWaitForHarvester->Start();    
-        error = doSearch( GroupName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+        error = doSearchL( GroupName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
         
         //update the group by adding a new contact, to get update event
         CContactGroup* group = static_cast<CContactGroup*>(db->OpenContactLX(newitem->Id()));        
@@ -1043,6 +1434,7 @@
     
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     delete db;
     doLog( iLog, error, KSearchError );
     return KErrNone;    
@@ -1057,6 +1449,7 @@
     iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, KErrNone, KNoErrorString );
     return KErrNone;    
     }
@@ -1075,7 +1468,7 @@
     session->AddEntryL();
     iPluginTester->iWaitForHarvester->Start();
     User::After((TTimeIntervalMicroSeconds32)30000000);
-    error = doSearch( _L("Meeting"), _L( CALENDAR_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+    error = doSearchL( _L("Meeting"), _L( CALENDAR_QBASEAPPCLASS ), ESearchTypeResultsExpected );
     doLog( iLog, error, KSearchError );
     
     // For update event
@@ -1087,7 +1480,7 @@
     session->DeleteEntryL();
     iPluginTester->iWaitForHarvester->Start();
     //Delete the calender entry added previously and search for result    
-    error = doSearch( _L("scheduled"), _L( CALENDAR_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+    error = doSearchL( _L("scheduled"), _L( CALENDAR_QBASEAPPCLASS ), ESearchTypeResultsExpected );
         
     //If the entery is succesfully deleted, make error to KErrNone.To show testcase success
     if(error == KErrNotFound)
@@ -1096,6 +1489,7 @@
     delete session;
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, error, KSearchError );     
     return KErrNone;
     }
@@ -1133,6 +1527,7 @@
     MessagingUtils::RemoveMmsEntryL( msgSession, msgid );
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     delete sessionobserver;
     delete msgSession;    
     doLog(iLog,error,KSearchError);
@@ -1164,6 +1559,7 @@
     MessagingUtils::RemoveMmsEntryL( msgSession, msgid );
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     delete sessionobserver;
     delete msgSession;    
     doLog(iLog,error,KSearchError);
@@ -1183,7 +1579,7 @@
     plugin->StartPluginL(); //Initialize the Plugin
     //Copy file path
     RFs fileSession;
-    fileSession.Connect();
+    User::LeaveIfError( fileSession.Connect() );
     _LIT(KPathToMusic,"c:\\data\\music\\");
     fileSession.Delete(_L("c:\\data\\music\\Eagle_Landed.mp3")); //Delete if already exist
     //pause harvester while copy
@@ -1208,6 +1604,7 @@
     doLog(iLog,error,_L("Error in TestAudioHarvestingL"));
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     fileSession.Close();    
     //End search
     return error;
@@ -1225,7 +1622,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {
@@ -1263,6 +1660,7 @@
         CleanupStack::PopAndDestroy();
         delete plugin;
         delete iPluginTester;
+        iPluginTester = NULL;
         return error;
         }
 
@@ -1276,7 +1674,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {
@@ -1310,6 +1708,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
         
@@ -1416,7 +1815,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {        
@@ -1450,6 +1849,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     doLog( iLog, error, _L("Error in TestVideoHarvestingIndexL") );
     return error;
     }
@@ -1467,7 +1867,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {
@@ -1505,6 +1905,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
 
@@ -1518,7 +1919,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {
@@ -1552,6 +1953,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
 
@@ -1565,7 +1967,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {        
@@ -1599,6 +2001,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
 
@@ -1615,7 +2018,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect());
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {
@@ -1652,6 +2055,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
 
@@ -1665,7 +2069,7 @@
     CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
     plugin->StartPluginL();
     RFs fSession;
-    fSession.Connect();
+    User::LeaveIfError( fSession.Connect() );
     CleanupClosePushL( fSession );
     if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
         {
@@ -1699,6 +2103,7 @@
     CleanupStack::PopAndDestroy();
     delete plugin;
     delete iPluginTester;
+    iPluginTester = NULL;
     return error;
     }
 
@@ -1716,7 +2121,8 @@
     //iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
     doLog(iLog,error,_L("Error in TestAudioMMCEventL"));
     delete plugin;
-    delete iPluginTester;    
+    delete iPluginTester;
+    iPluginTester = NULL;
     //End search
     return err;
     }
@@ -1735,7 +2141,8 @@
     //iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
     doLog(iLog,error,_L("Error in TestVideoMMCEventL"));
     delete plugin;
-    delete iPluginTester;    
+    delete iPluginTester;
+    iPluginTester = NULL;
     //End search
     return err;
     }
@@ -1754,9 +2161,47 @@
     //iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
     doLog(iLog,error,_L("Error in TestImageMMCEventL"));
     delete plugin;
-    delete iPluginTester;    
+    delete iPluginTester;
+    iPluginTester = NULL;
     //End search
     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 17:22:18 2010 +0100
+++ b/layers.sysdef.xml	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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[
+	vuSN9Ty+NNyAzemJ9UW8j1pY0drYES/VnzfS3li3IhFVLV98IKxx1+Y5F/biS7mtNmAtfDmwAhp1
+wvdvdcQf+Q0H1q9G9lPFWIX1neiRXfNcxAuD8SHCmnBv2ev06nn37Aqw7qGKAud0D78POR3reDfu
+kIur3EpD2zzC07hwYhcUl9zh4U0ZYU05sOLZvKxG1pVotg6IyxOnXNxOJ+80rLv8adKBden65FoT
+FOLuTbVKYhXG/YhQGrcRVg5zmmO6t+Ljz/uDrQ3AehJx6gBVPYwb+u7i0/E0IuSPX72eGko6IraP
+k9Sfg2E26Pk8vVhTqU+5w61OwhKdlZpLU1f3jh6Mp7cueV+9um74PO28tK2nHixwFum90X9+Jq2k
+6E/PJx8/vZ6alk3tNp+n/7z2flikP72+GpxTn6rjhHBCEK3ulpU32S/j6aNzx3G3b6UJ/endysWK
+9dSDaHeZx6jPz4/eD+hPf8gPca+nJtGePqLn9J8/R6V7n6dvzwr1Kej7nR2CaO4O0m2ySX+6nXq9
+oT8t5iXJj2j89x1xQP/5+Vdhk/q0sDYcNPyIFlmLl2SjQ0N17u6Vs50P42lr5Nr73MEn9Wl8S6ge
+EETz6LB5VbY/HWLJpDuFUgLbjlemZ7hmc97O+pZbZtkChv+GnLej7euDD75UTJ/cHSwrJ7WD3Xjt
+OpeMrE3gU+ViLz1eL5XvH8sdUA5LB/hnAGB53cMfXk53t1sodQ5YYekQ9MPulU2IqkvC+vZFUveH
+busXxFx3lsV17GxqzlCh9FC3RHf6LNdf59Lb9xPsDAE5XrcIW0BHjLGCcijwVKxcmds4o2AFZyh7
+FXtyYMWmuoa4/ogRe2EFo3ko0rFWln/cULGuH7dSb4QtUOmR092KxEisUm2FwJq7kAUCa2dtbZmg
+8Hp2zWJVEWPVTHWMWH6PRXcfet5YpdgTHetSuZmiYsV+Bbk9Rcd0kWvxQsFab/hgraxkHFgBDUlk
+cC0oWMHaADulScN65UPh76e3dlvAMV1kp9iXdgU9TZiftH7qZGM77d/PEDbqRCxxDCC5l43CPkM/
+bMBZckNj6Lqk/ci9idcxgXbyRys/8S7YyVfuS8L6LneMaCM6Y2E7icME8aeU3CjheIDOAnrYCpqv
+rI0FpJVj8eJg9F0bBHw6QGGCQ4zaIaMA/80FfF1DAYDJhoFBM64v8b4hA2OXyBwaGr1qexiGJQO5
+E3l11fqzM4x2rnUXwIh7WZ1hnHtfuAspbARz0MX0u3Kwiv4smwTaIIWzMWGYw8MB31xZPzJpSJJ+
+Z+dwFf/B2zNxNggcVnmkdaGMaZlP3PAJ9OeBjO3oA7NcXEz43ejhaRDh8Z/m/YHlunvNUFzZPK1a
+MySJRkxS+2NfRvcari8xrCHaqHdmlENzmYxJ2ljr4tOXXixrCGjwJDnlp3I7Db3oHMEpo487Bygj
+mOLP9h48P+APn0YVf/6ymAujofPXZoqV+v6k12KdDXVu6mv0ei2lHrxIr61NIL0cUujwcWfDLoUO
+nVLInD8Gj4OQrCtST6g2GpqDtksh5SK1phlrntvzEDnsx9QRoZGsg6g/S5jki1LI93woPE2Kp5YQ
+Z9meWvzPY3LJJdbJobWxz4+Y3G7h8sxnctpeiq3hvUQj8xA/1SO3bv1kzatyuqazgAfPHz4eJBmm
+hNB4LJmNg+pDkt3N/Whj9zX054q6VAjNK79Un5s2foq7GNUMKMQ822dpY/ZaAMkbWvFH/oQKjQrK
+VNKODdhcqsTtG7DsvwH9d5+DoVvCxH9B093lQgL/0fUtPqjw4I3mUmPJWlKS0xyruqqtKhH9djFI
+2SUPSVB7nDK+SeMxARpybC0xRhnbmUCdZvp9EN92W2fkCiOi2ZdFsyFty1IJss4CpRCh1joVfqP4
+s+ytqSjWpDdHfuTGDjVlubjTLjIM/3nCalQZJofDriLpZZfabnptkIYeZUza9lSWaMPaM0dEt/WI
+MdEMPU17nl+Z+zdYmXQqDlvPJXGDPAJyGfOr/tbGFGt4m9QZejHQ6GYQkgLTQktPPzDLv3FB4xY3
+TX6hRBMWSjRxTqLpmlpnt4Tbu3074jrrzUNWy9kymx1nBGi8xfuOvxAhbF3vzTDejQTKNML69t6e
+b0d2vT/X9hzvrkzpTuODYY/VLN6PV7E5OB+B1hiGg7WnH4E4pdm4YYw3eFqMMJtGOnDfMCyVlxfo
+GImW/RAwGH7ukXhYnTORJWDLWlLA9B+bS+OKh846wjHvaZzHuDU5LAWkxBUBcjd6oMJmfygR430a
+vY2nweAMfxCWzc/jqXxw+kZ5Gn05lT7pFLIMyxrTVKKATOdx7T0wIFjYnUEUIMvmaRxdm4fw1gzF
+3dvrM68Z4rWZjvDvAUraybnIzDcUgZ15j/HJ4mJmyL2uf90bVidbgJTiusMWGPtHIi2iMdFLmp5e
+RhzaTa/pNruNXo6dzp+M8E63aU9xJT+cBDvnwbGozxP7TqcHU/yCDuJKIbriOxxnINfKhHSx24nT
+vvcOGDAEcj/R0bfdvp8hogKTk6L+tEZKOigW8nni1NRTB0Lw2vAnE7vbOdOU8l8i1dk21Bo1rkcs
+FTpmnjFIROgboM1rIfpjinAJJbaDqOOI7VAZ2hIKtpCE3cxOu83s4andzBaJTMggS9u5Drs38eWp
+yGcZtwRrDU99omMUK9mbfIXLdUJ7+kVEg1UjTK6wgH0zPLVrxRnYHUmB3ZtVnsrxjOx+6lKEtinp
+s2GZElaDM4oCk9NgtSJ2DTiLKADCZLwIg011mvKjmLmnLs0XpJfipMnhUn7ovMueFHKptXlsQP/d
+Rwk/IJEcn5ctSrBUkvN4NVAD0tQfglYIoCHJaf5RWgRtezy/hL6vLeCIA62chw70OilkAGR3NoOH
+43XCjgDNsRVJKIa7adppswJiU4SEw04758DQ7AeNU6lVJDJsqb3oxDjqcDtRW8p/BzEEyUxhA9A4
+lv0YrH4QqA2HXmQ5KaRSs9ZnoqYR5dBt07ifdLsduKUbtDFKNzMCRTMv0B5hOQv0l25aGlzZXyQx
+SzcAVfX0XNDaTHsGhaBdROY3oO5vFiHdYOVM6TaXFECA2KSbwWl0QAuQbjgfegGnuHg4dulG+v7n
+SEJbB0FekTDnovn52cQJpMNwIU2OIbllXmJxt7l/fzvjUa6nvqkPHf729BYbWlJCRjqCKdOecyBo
+9HNXe74Ag9AFaHTHkkHi6FKgxB8+Pk7nGXkwyK0rYYoqbIIB+Rj+VCg27WkAmjurAkMh3W6fg/xg
+QOw5TToa6n68nSfIbSlHM0CMJunWj9A2tfVPcQqRTEvPrR9BptzTY3G6qc6uH+05GqwJGt6RWwSt
+Nfc2urOU41xqDVaOMQIWoNYQoGmtfy8omAXm148wHF/laGXbMQDy04/+ytElbO5m1I805Zg0WMCu
+H+/nSXWyzb+hWspRlwLU1CwG++AeRfaOKAPTqUmaHA++sY0SYG3525r0Te46I0DQ3hl2JosRDKA+
+VoLCD36S1060YEuYPMX1dZkaKtOOpxzDmk4hbIqUT8zbL2PPc0z23UrEOpn2mduNa43caqo1cqgp
+hjg0zY0Dt5Meu3SkxrHEBVojn7Ah2yYjQ0P1haX2Aij72Y9zbaY6/kHQ+NPqgoIprRFTHJpyquBg
+6FIqbQ4/EBrF7kAJCp6xEgONjTN8hmWNiZEt0sQZgStiZG4PtBjVrLfjYavby74+vGYPfpRva3vp
+cbF6qD5vN6xaPkCzmHI+/1q+kF60NHc5nxdWq5bPOsWds5zPv5YvZJQuzlvO51/LR+qbucr54r61
+fCGrdHG+cj4KVr2WL0QrXZy2nM+/li9klS7OV85Hx4pq+ewmxxzlfP61fHg2iyjn86/lM6Icc5fz
+uaSVrZZPjwtMUc7nSICmVyJtDx0Ou7dzTBp89DqwerLCMKbAADEMq+Tv/i/bjCpvyx2vzcXaaDGJ
+t64AsTGmWQLEB04LIHj5KCeFgKFGzV9nJhWub3OV+Xiksp0NGIrS8KGEf7zF46TQB1pAlhd9hg7j
+lqGIj3mGrkDX7IQPTCDUx2QIG79hBQS6fMZkih3Dhp6+fo9Z7Bw+HquOROWZyrgY8kvwbBhqXerJ
+yDwHfLY0OJhfnSFYFjA5L7veK50nqOxuhkQCV1zgcMZIs2NKjrAW3Y0KKrubKr+EJjqBNvRD3am8
+FATKVeMxJTR7gteG26xolrHrTkpoD45nkV9lBs84ZJYuBjjHzbKj7jXwKJvMnHVI6Jbw5V9ROUWg
+DehlHox7BojJiAot0GaPNUruwP9HTnUees1T3HNPD4xag9Wjg0H1aIHm2FQ1hQFvV2CuKcwH198g
+Do4y1MjZUyoD6hx9M+9hWMtUO9FaPoY11PbNx4q/GmavKbRHPT0q8pmjWJ1KUE2OG5QjDc4Bzf9F
+DVMMDK1NQJXONNN0HJ7MSbSAip0pieZzkjID0WgvbGCC5ogXj3e+nLU7xfvnUSigoIzNzB3vTPz9
+sNA3YttTYLhK96hygwZgyamkPWBc3PP4T4CsLt5/0Tc56d8w+INH7P4g9U0WR1RZ4Q+DAEB7jwvp
+4lrLTa/am3GVLON2vDPyqWG3Gzre2+PtiEkKBFPEXkfgw/20YyKGgj27vqPZM2hK7u3uyFJ1OGA+
+FmbSbWH+PKZW6obIoiWvciM75Y5ZY0EOX8oQnQRDedTq+QkgalnW4fLi7LSn8SpDla0R5fDf+8dT
+xoLcKU4mpz2N4+uLINXB2H4KJHj5nqx8MF30RjJecupdWDdV9MZnTDjJYjGk8o/ehL5NM6ypojdO
+N8oeNxZX8h9pe/TmZO7ojcFp4kphad4Ax+cJ1dMjhA1jgRB/ujZ99IYSF4DJ8etzT86K3niljLDX
+wzGlnQe8B+pkEdEbVAznKpKdPnqDCwWDozcYTRBtZAba+FcH6ZbNyfQFQnRDerdwMXYY0iGt0isg
+TYfFkAYbb5k6ayMZlqlkbPbcCGdG1/B0ngiQfXLRwAxilslNkzVP1TeFywhTMkRQGZvIWLoYVOLH
+lKBrmhzemxiV+M2bMI8Ig6Mc/rH3wLQTk0BZNoZmTAeMehzI1hjeO8h2dDFPZR7prRHFedOn7Tky
+bhyVeT5p14uszAvgtEVV5uHQ0JwF6gyVeczJsPNV5lk2tK04b655eVTmOZxCxir1qSvzqKlWi63M
+C5kXOnmX0y2oMg9zmrs4L1CZTVmZ57U2ZNrggirzfL01yrlQyXohM6udGKLUrS0s9fIGp16yWJ0s
+qZc3/qmXzFLgdjBP9b+ZcAkiKT63jYGheOUhT3tYrAGaug7MHbPRAM37CgAMxdqMpvacOcUa1fnR
+4+WOzHu2FOv60L0foS2gEkjLgWLZjyhRYh6/TYt1ohKoRe3HW6/X4ATJNOp+vGVKhQ4y1RHN534b
+B1LrCVcO1KyAGN6FE+jiaoDmrcsMadVEifn3I4LCELNhM/w1aPQDXAqoEP3Vk+se7w==
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![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	Mon Jun 28 11:03:15 2010 +0530
@@ -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[
+	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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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
+	]]>
+	<![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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/rom/cpix_app.iby	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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/Searchapplication.pri	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +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 list of files
-#
-
-HEADERS += ./inc/*.h
-SOURCES += ./src/*.cpp
-
--- a/searchui/Searchapplication/Searchapplication.pro	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +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 project file
-#
-
-TEMPLATE = app
-
-TARGET = Searchapplication 
-
-win32 {
-    LIBS += -L$$PWD/../../bin/debug
-    
-    CONFIG(debug, debug|release) {
-      SUBDIRPART = debug
-    } else {
-      SUBDIRPART = release
-    }
-    DESTDIR = $$PWD/../../bin/$$SUBDIRPART
-}
-
-LIBS +=  -lsearchruntimeprovider
-
-QT += xml 
-
-CONFIG += hb    
-CONFIG += console
-
-TRANSLATIONS += searchsw.ts 
-nft:DEFINES += NFT
-
-DEPENDPATH += . \
-              ./inc \
-              ./src
-
-INCLUDEPATH += . \
-               ./inc \
-               ../inc \
-              ../runtimeproviders/searchruntimeprovider/inc 
-
-symbian {
-    TARGET.UID2 = 0x100039CE
-    TARGET.UID3 = 0x2002C377
-    TARGET.CAPABILITY = CAP_APPLICATION AllFiles TrustedUI
-    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
-    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
-    rom:DEFINES += ROM
-    SKINICON = qtg_large_search
-}
-
-win32 {
-include(searchapplication_installs_win32.pri)
-}
-
-include(searchapplication.pri)
--- a/searchui/Searchapplication/Searchapplication_installs_symbian.pri	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +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: 
-#
-
-
-#deploy.path = z:
-
-#exports1.path = /private/20026F95
-
-#exports1.sources += resource/ftudb
-
-#for(export1, exports1.sources):BLD_INF_RULES.prj_exports += "./$$export1 $$deploy.path$$exports1.path/$$basename(export1)"
-
-
-
--- a/searchui/Searchapplication/Searchapplication_installs_unix.pri	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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: 
-#
-#
-
-# Release
-#
-
-r01.path = ../../bin/release/
-r01.files = ./release/Searchapplication
-
-INSTALLS += r01
-
-#
-# Debug
-#
-
-d01.path = ../../bin/debug/
-d01.files = ./debug/Searchapplication
-
-INSTALLS += d01
\ No newline at end of file
--- a/searchui/Searchapplication/Searchapplication_installs_win32.pri	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +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: 
-#
-#
-# Release
-#
-
-r01.path = $$PWD/../../bin/release/
-r01.files = ./release/*.*
-
-INSTALLS += r01
-
-#
-# Debug
-#
-
-d01.path = $$PWD/../../bin/debug/
-d01.files = ./debug/*.*
-
-INSTALLS += d01
--- a/searchui/Searchapplication/inc/Search.h	Wed Jun 23 17:22:18 2010 +0100
+++ /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/resources/search_app_icon.svg	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-<?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.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
-<g>
-	<rect x="3.208" y="2.854" fill="none" width="44" height="44"/>
-	<path opacity="0.15" d="M32.209,44.854h-14c-2.205,0-4-1.795-4-4v-26c0-2.205,1.795-4,4-4h11.149l1.914-5.912
-		c0.132-0.406,0.504-0.685,0.931-0.693c0.007,0,0.013,0,0.019,0c0.42,0,0.795,0.26,0.94,0.654l2.57,6.975l6.971,0.013
-		c0.42,0,0.795,0.264,0.938,0.658c0.144,0.396,0.024,0.838-0.297,1.108l-5.543,4.658l1.86,6.666c0.113,0.402-0.037,0.83-0.373,1.076
-		c-0.176,0.129-0.383,0.193-0.59,0.193c-0.19,0-0.383-0.054-0.549-0.164l-1.941-1.275v16.042
-		C36.208,43.059,34.413,44.854,32.209,44.854L32.209,44.854z"/>
-	<path opacity="0.5" d="M36.663,17.962l6.036-5.071l-7.667-0.014L32.224,5.25l-2.138,6.604H18.208c-1.654,0-3,1.346-3,3v26
-		c0,1.654,1.346,3,3,3h14c1.654,0,3-1.346,3-3V22.956l3.489,2.294L36.663,17.962z"/>
-	
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-59.4478" x2="142.6875" y2="-101.7325" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
-		<stop  offset="0" style="stop-color:#3687FF"/>
-		<stop  offset="1" style="stop-color:#051F7D"/>
-	</linearGradient>
-	<path fill="url(#SVGID_1_)" d="M32.208,10.854h-14c-1.654,0-3,1.346-3,3v26c0,1.654,1.346,3,3,3h14c1.654,0,3-1.346,3-3v-26
-		C35.208,12.2,33.862,10.854,32.208,10.854z"/>
-	
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-59.8735" x2="142.6875" y2="-96.8744" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
-		<stop  offset="0" style="stop-color:#F2F2F2"/>
-		<stop  offset="0.1364" style="stop-color:#E4EDF0"/>
-		<stop  offset="0.3929" style="stop-color:#C0DFEB"/>
-		<stop  offset="0.7391" style="stop-color:#86C8E3"/>
-		<stop  offset="0.9945" style="stop-color:#57B6DD"/>
-		<stop  offset="1" style="stop-color:#57B6DD"/>
-	</linearGradient>
-	<rect x="18.208" y="14.854" fill="url(#SVGID_2_)" width="14" height="18"/>
-	<polygon fill="#FFFFFF" fill-opacity="0.4" points="18.208,27.889 32.208,20.889 32.208,14.854 18.208,14.854 	"/>
-	
-		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-87.873" x2="142.6875" y2="-91.873" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
-		<stop  offset="0" style="stop-color:#FFFFFF"/>
-		<stop  offset="1" style="stop-color:#B2B2B2"/>
-	</linearGradient>
-	<rect x="23.208" y="35.854" fill="url(#SVGID_3_)" width="4" height="4"/>
-	<path fill="#FFFFFF" fill-opacity="0.25" d="M33.62,12.442l0.709-0.708c-0.544-0.544-1.294-0.88-2.121-0.88h-14
-		c-1.654,0-3,1.346-3,3v26c0,0.828,0.336,1.578,0.879,2.121l0.709-0.707c-0.363-0.363-0.588-0.863-0.588-1.414v-26c0-1.1,0.9-2,2-2
-		h14C32.758,11.854,33.258,12.079,33.62,12.442z"/>
-	<path fill-opacity="0.2" d="M34.317,11.724l-0.717,0.7c0.373,0.365,0.607,0.869,0.607,1.43v26c0,1.102-0.9,2-2,2h-14
-		c-0.55,0-1.051-0.225-1.412-0.586l-0.709,0.707c0.544,0.543,1.294,0.879,2.121,0.879h14c1.654,0,3-1.346,3-3v-26
-		C35.208,13.022,34.866,12.268,34.317,11.724z"/>
-	<polygon fill="#FFFFFF" fill-opacity="0.2" points="32.208,14.854 32.208,32.854 18.208,32.854 17.208,33.854 33.208,33.854 
-		33.208,13.854 	"/>
-	<polygon fill-opacity="0.25" points="18.208,32.854 18.208,14.854 32.208,14.854 33.208,13.854 17.208,13.854 17.208,33.854 	"/>
-	<path fill="#FFFFFF" fill-opacity="0.2" d="M27.862,35.098l-0.654,0.756v4h-4l-0.771,0.637c0.183,0.221,0.46,0.363,0.771,0.363h4
-		c0.553,0,1-0.449,1-1v-4C28.208,35.553,28.074,35.281,27.862,35.098z"/>
-	<path fill-opacity="0.25" d="M23.208,39.854v-4h4l0.654-0.756c-0.176-0.152-0.404-0.244-0.654-0.244h-4c-0.553,0-1,0.449-1,1v4
-		c0,0.242,0.086,0.463,0.229,0.637L23.208,39.854z"/>
-	<path opacity="0.3" d="M35.166,23.55v-9.701c0-1.654-1.346-3-3-3h-2.324l-0.492,1.522l-7.646,0.014
-		c-0.213,0-0.402,0.134-0.471,0.335c-0.071,0.201-0.006,0.425,0.16,0.557l6.107,4.855l-2.268,6.958
-		c-0.065,0.199,0.002,0.418,0.167,0.548c0.089,0.071,0.199,0.106,0.306,0.106c0.092,0,0.186-0.025,0.268-0.076l6.371-3.977
-		L35.166,23.55z"/>
-	<g>
-		
-			<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-126.7969" y1="301.3916" x2="-126.7969" y2="329.7876" gradientTransform="matrix(1 0 0 1 159.02 -299.4092)">
-			<stop  offset="0" style="stop-color:#FFE23D"/>
-			<stop  offset="1" style="stop-color:#E48717"/>
-		</linearGradient>
-		<polygon fill="url(#SVGID_4_)" points="32.224,4.25 35.032,11.877 42.699,11.891 36.663,16.962 38.697,24.25 32.394,20.105 
-			25.75,24.25 28.125,16.962 21.747,11.891 29.755,11.877 		"/>
-		<path fill-opacity="0.2" d="M29.291,16.611c0,0-2.8-2.227-4.686-3.727c0.001,0,0.002,0,0.004,0l-2.862-0.994l6.378,5.071
-			L29.291,16.611z"/>
-		<path fill-opacity="0.2" d="M42.699,11.891l-2.741,0.998c-1.786,1.5-4.432,3.723-4.432,3.723s0.889,3.184,1.49,5.338
-			c-1.863-1.225-4.609-3.03-4.609-3.03s-2.891,1.804-4.855,3.028c0.002-0.002,0.002-0.004,0.002-0.006L25.75,24.25l6.644-4.145
-			l6.304,4.145l-2.034-7.288L42.699,11.891z"/>
-		<path fill="#FFFFFF" fill-opacity="0.25" d="M42.699,11.891l-7.667-0.014L32.224,4.25l-2.469,7.627l-8.008,0.014l2.862,0.996
-			c2.365-0.005,5.875-0.011,5.875-0.011s1.072-3.317,1.801-5.565c0.83,2.252,2.051,5.565,2.051,5.565s3.361,0.006,5.625,0.011
-			c0,0-0.001,0-0.002,0.002L42.699,11.891z"/>
-		<path fill="#FFFFFF" fill-opacity="0.25" d="M25.75,24.25l1.804-2.309c0.701-2.15,1.737-5.33,1.737-5.33l-1.166,0.351L25.75,24.25
-			z"/>
-	</g>
-</g>
-</svg>
--- a/searchui/Searchapplication/src/Search.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ /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 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +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 implementation.
- *
- */
-
-#include "search.h"
-#include "search_global.h"
-
-#include <QtGui>
-#include <hbapplication.h>
-#include <qtranslator.h>
-#include <qlocale.h>
-
-// ---------------------------------------------------------------------------
-// main
-// ---------------------------------------------------------------------------
-//
-int main(int argc, char *argv[])
-    {
-    SEARCH_FUNC_ENTRY("SEARCH::Search::main");
-
-    HbApplication app(argc, argv);
-
-    QTranslator translator;
-    QString lang = QLocale::system().name();
-    QString path = "Z:/resource/qt/translations/";
-    translator.load("searchsw_" + lang, path);
-    app.installTranslator(&translator);
-
-    QTranslator commonTranslator;
-    commonTranslator.load("common_" + lang, path);
-    app.installTranslator(&commonTranslator);
-
-    QTranslator musicTranslator;
-    musicTranslator.load("musicplayer_" + lang, path);
-    app.installTranslator(&musicTranslator);
-
-    QTranslator contactsTranslator;
-    contactsTranslator.load("contacts_" + lang, path);
-    app.installTranslator(&contactsTranslator);
-
-    QTranslator calenderTranslator;
-    calenderTranslator.load("calendar_" + lang, path);
-    app.installTranslator(&calenderTranslator);
-
-    QTranslator notesTranslator;
-    notesTranslator.load("notes_" + lang, path);
-    app.installTranslator(&notesTranslator);
-
-    Search search;
-#ifdef ROM
-    QDir::setCurrent("Z:/");
-#else
-    QDir::setCurrent("C:/");
-    SEARCHDEBUG("main() - SearchApplication's current dir set to C:/");
-#endif //ROM
-    QObject::connect(&app, SIGNAL(aboutToQuit()), &search, SLOT(stop()));
-    QObject::connect(&search, SIGNAL(exit()), &app, SLOT(quit()),
-            Qt::QueuedConnection);
-    search.start();
-    int ret = app.exec();
-    SEARCH_FUNC_EXIT("SEARCH::Search::main");
-    return ret;
-    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/bwins/searchonlinehandleru.def	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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/inc/Search_global.h	Wed Jun 23 17:22:18 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +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:  The dll header file.
-*
-*/
-
-
-#ifndef SEARCH_GLOBAL_H
-#define SEARCH_GLOBAL_H
-
-#include <qdebug.h>
-
-#ifdef NFT
-#ifdef Q_OS_SYMBIAN
-#include <e32hal.h>
-#endif
-#endif
-
-#ifndef SEARCH_UNITTESTING
-    #define SEARCH_CLASS(aClassName)
-#else
-    #define SEARCH_CLASS(aClassName) class aClassName;
-#endif 
-
-#ifndef SEARCH_UNITTESTING
-    #define SEARCH_FRIEND_CLASS(aClassName)
-#else
-    #define SEARCH_FRIEND_CLASS(aClassName) friend class aClassName;
-#endif 
-
-#define SEARCHCATCHDEBUG qDebug("Catched in: %s on line: %d",__FILE__,__LINE__);
-#define SEARCHDEBUG(a) qDebug("%s in: %s on line: %d", (a),  __FILE__,__LINE__);
-
-#ifdef NFT
-    #define SEARCHTEST(aText)                  qDebug() << QString(aText)
-#ifdef Q_OS_SYMBIAN
-    inline void SEARCHFreeRam(const QString &aFunction)
-    {
-    TMemoryInfoV1Buf meminfo;
-    UserHal::MemoryInfo(meminfo);
-    int memSize = meminfo().iTotalRamInBytes >> 10;
-    int memFree = meminfo().iFreeRamInBytes >> 10;
-
-    RHeap& ownHeap = User::Heap();
-    TInt biggestBlock = 0;
-    int heapFree = ownHeap.Available(biggestBlock) >> 10;
-    int heapSize = ownHeap.Size() >> 10;
-    qDebug()<< aFunction << "memFree" << memFree << "kb memSize" << memSize << "kb heapFree" << heapFree << "kb heapSize" << heapSize;
-    }
-    
-    #define SEARCH_FUNC_ENTRY(aFunction)   SEARCHFreeRam(QString(aFunction)+" entry")
-    #define SEARCH_FUNC_EXIT(aFunction)    SEARCHFreeRam(QString(aFunction)+" exit")
-#else
-    #define SEARCH_FUNC_ENTRY(aFunction)   qDebug()<< aFunction << " entry";
-    #define SEARCH_FUNC_EXIT(aFunction)    qDebug()<< aFunction << " exit";
-#endif
-    
-#else
-    #define SEARCHTEST(aText)
-    #define SEARCH_FUNC_ENTRY(aFunction)
-    #define SEARCH_FUNC_EXIT(aFunction)
-#endif
-
-#endif // SEARCH_GLOBAL_H
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/inc/search_global.h	Mon Jun 28 11:03:15 2010 +0530
@@ -0,0 +1,83 @@
+/*
+* 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:  The dll header file.
+*
+*/
+
+
+#ifndef SEARCH_GLOBAL_H
+#define SEARCH_GLOBAL_H
+
+#include <qdebug.h>
+
+#ifdef NFT
+#ifdef Q_OS_SYMBIAN
+#include <e32hal.h>
+#endif
+#endif
+//#define OST_TRACE_COMPILER_IN_USE //Uncomment to enable performance measurements.
+
+#ifdef OST_TRACE_COMPILER_IN_USE
+#define PERF_APP_LAUNCH_END(str) qDebug() << "Search_App_Launch :"<<str<<"at:"<<QTime::currentTime().second()<<":"<<QTime::currentTime().msec();
+#else
+#define PERF_APP_LAUNCH_END(str)
+#endif 
+
+#ifndef SEARCH_UNITTESTING
+    #define SEARCH_CLASS(aClassName)
+#else
+    #define SEARCH_CLASS(aClassName) class aClassName;
+#endif 
+
+#ifndef SEARCH_UNITTESTING
+    #define SEARCH_FRIEND_CLASS(aClassName)
+#else
+    #define SEARCH_FRIEND_CLASS(aClassName) friend class aClassName;
+#endif 
+
+#define SEARCHCATCHDEBUG qDebug("Catched in: %s on line: %d",__FILE__,__LINE__);
+#define SEARCHDEBUG(a) qDebug("%s in: %s on line: %d", (a),  __FILE__,__LINE__);
+
+#ifdef NFT
+    #define SEARCHTEST(aText)                  qDebug() << QString(aText)
+#ifdef Q_OS_SYMBIAN
+    inline void SEARCHFreeRam(const QString &aFunction)
+    {
+    TMemoryInfoV1Buf meminfo;
+    UserHal::MemoryInfo(meminfo);
+    int memSize = meminfo().iTotalRamInBytes >> 10;
+    int memFree = meminfo().iFreeRamInBytes >> 10;
+
+    RHeap& ownHeap = User::Heap();
+    TInt biggestBlock = 0;
+    int heapFree = ownHeap.Available(biggestBlock) >> 10;
+    int heapSize = ownHeap.Size() >> 10;
+    qDebug()<< aFunction << "memFree" << memFree << "kb memSize" << memSize << "kb heapFree" << heapFree << "kb heapSize" << heapSize;
+    }
+    
+    #define SEARCH_FUNC_ENTRY(aFunction)   SEARCHFreeRam(QString(aFunction)+" entry")
+    #define SEARCH_FUNC_EXIT(aFunction)    SEARCHFreeRam(QString(aFunction)+" exit")
+#else
+    #define SEARCH_FUNC_ENTRY(aFunction)   qDebug()<< aFunction << " entry";
+    #define SEARCH_FUNC_EXIT(aFunction)    qDebug()<< aFunction << " exit";
+#endif
+    
+#else
+    #define SEARCHTEST(aText)
+    #define SEARCH_FUNC_ENTRY(aFunction)
+    #define SEARCH_FUNC_EXIT(aFunction)
+#endif
+
+#endif // SEARCH_GLOBAL_H
+
--- a/searchui/indevicehandler/indevicehandler.pro	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/indevicehandler/indevicehandler.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -38,8 +38,17 @@
     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
+
 }
 
 
--- a/searchui/indevicehandler/tsrc/t_indevicehandler/t_indevicehandler.pro	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/indevicehandler/tsrc/t_indevicehandler/t_indevicehandler.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -37,8 +37,9 @@
 TARGET.UID3 = 0x20026F8A
 TARGET.CAPABILITY = ALL -TCB -DRM
 TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
-TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCHEAPSIZE = 0x20000 0x800000 // 128kB - 16MB
 INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 }
 
 include(t_indevicehandler.pri)
--- a/searchui/indevicehandler/tsrc/t_src.pro	Wed Jun 23 17:22:18 2010 +0100
+++ /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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/rom/search.iby	Mon Jun 28 11:03:15 2010 +0530
@@ -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/searchruntimeprovider.pro	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/runtimeproviders/searchruntimeprovider/searchruntimeprovider.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -63,6 +63,16 @@
     TARGET.CAPABILITY = ALL -TCB -DRM
     appkey:DEFINES += S60APP_KEY
     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(searchruntimeprovider_installs_symbian.pri)
    # BLD_INF_RULES.prj_exports += "./inc/searchruntimeprovider.h |../../inc/" \
     #                             "./inc/searchruntime.h |../../inc/"
--- a/searchui/runtimeproviders/searchruntimeprovider/src/searchruntime.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/runtimeproviders/searchruntimeprovider/src/searchruntime.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -23,23 +23,24 @@
 #include <qstate.h>
 #include <qfinalstate.h>
 #include <qdebug.h>
-
+#include <hbapplication.h>
 #include <hbmainwindow.h>
 
-
+#define hbApp qobject_cast<HbApplication*>(qApp)
 
 // states
 const char wizardProgressiveStateUri[] =
         "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,43 +106,88 @@
 
     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
-    searchRootState->setInitialState(wizardProgressiveState);
+    if (hbApp->activateReason() == Hb::ActivationReasonActivity)
+        {
+
+        QVariantHash params = hbApp->activateParams();
+        QString var = params.value("activityname").toString();
+
+        if (var == "SearchView")
+            {
+            searchRootState->setInitialState(wizardProgressiveState);
+            }
+        else if (var == "SearchDeviceQueryView")
+            {
+            searchRootState->setInitialState(wizardProgressiveState);
+
+            }
+        else if (var == "SearchWebQueryView")
+            {
+            searchRootState->setInitialState(wizardOnlineState);
+            }
+        }
+    else if (hbApp->activateReason() == Hb::ActivationReasonNormal)
+        {
+
+        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/search.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/resources/search_app_icon.svg	Mon Jun 28 11:03:15 2010 +0530
@@ -0,0 +1,76 @@
+<?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.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<g>
+	<rect x="3.208" y="2.854" fill="none" width="44" height="44"/>
+	<path opacity="0.15" d="M32.209,44.854h-14c-2.205,0-4-1.795-4-4v-26c0-2.205,1.795-4,4-4h11.149l1.914-5.912
+		c0.132-0.406,0.504-0.685,0.931-0.693c0.007,0,0.013,0,0.019,0c0.42,0,0.795,0.26,0.94,0.654l2.57,6.975l6.971,0.013
+		c0.42,0,0.795,0.264,0.938,0.658c0.144,0.396,0.024,0.838-0.297,1.108l-5.543,4.658l1.86,6.666c0.113,0.402-0.037,0.83-0.373,1.076
+		c-0.176,0.129-0.383,0.193-0.59,0.193c-0.19,0-0.383-0.054-0.549-0.164l-1.941-1.275v16.042
+		C36.208,43.059,34.413,44.854,32.209,44.854L32.209,44.854z"/>
+	<path opacity="0.5" d="M36.663,17.962l6.036-5.071l-7.667-0.014L32.224,5.25l-2.138,6.604H18.208c-1.654,0-3,1.346-3,3v26
+		c0,1.654,1.346,3,3,3h14c1.654,0,3-1.346,3-3V22.956l3.489,2.294L36.663,17.962z"/>
+	
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-59.4478" x2="142.6875" y2="-101.7325" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
+		<stop  offset="0" style="stop-color:#3687FF"/>
+		<stop  offset="1" style="stop-color:#051F7D"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M32.208,10.854h-14c-1.654,0-3,1.346-3,3v26c0,1.654,1.346,3,3,3h14c1.654,0,3-1.346,3-3v-26
+		C35.208,12.2,33.862,10.854,32.208,10.854z"/>
+	
+		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-59.8735" x2="142.6875" y2="-96.8744" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
+		<stop  offset="0" style="stop-color:#F2F2F2"/>
+		<stop  offset="0.1364" style="stop-color:#E4EDF0"/>
+		<stop  offset="0.3929" style="stop-color:#C0DFEB"/>
+		<stop  offset="0.7391" style="stop-color:#86C8E3"/>
+		<stop  offset="0.9945" style="stop-color:#57B6DD"/>
+		<stop  offset="1" style="stop-color:#57B6DD"/>
+	</linearGradient>
+	<rect x="18.208" y="14.854" fill="url(#SVGID_2_)" width="14" height="18"/>
+	<polygon fill="#FFFFFF" fill-opacity="0.4" points="18.208,27.889 32.208,20.889 32.208,14.854 18.208,14.854 	"/>
+	
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="142.6875" y1="-87.873" x2="142.6875" y2="-91.873" gradientTransform="matrix(1 0 0 -1 -117.4805 -52.0195)">
+		<stop  offset="0" style="stop-color:#FFFFFF"/>
+		<stop  offset="1" style="stop-color:#B2B2B2"/>
+	</linearGradient>
+	<rect x="23.208" y="35.854" fill="url(#SVGID_3_)" width="4" height="4"/>
+	<path fill="#FFFFFF" fill-opacity="0.25" d="M33.62,12.442l0.709-0.708c-0.544-0.544-1.294-0.88-2.121-0.88h-14
+		c-1.654,0-3,1.346-3,3v26c0,0.828,0.336,1.578,0.879,2.121l0.709-0.707c-0.363-0.363-0.588-0.863-0.588-1.414v-26c0-1.1,0.9-2,2-2
+		h14C32.758,11.854,33.258,12.079,33.62,12.442z"/>
+	<path fill-opacity="0.2" d="M34.317,11.724l-0.717,0.7c0.373,0.365,0.607,0.869,0.607,1.43v26c0,1.102-0.9,2-2,2h-14
+		c-0.55,0-1.051-0.225-1.412-0.586l-0.709,0.707c0.544,0.543,1.294,0.879,2.121,0.879h14c1.654,0,3-1.346,3-3v-26
+		C35.208,13.022,34.866,12.268,34.317,11.724z"/>
+	<polygon fill="#FFFFFF" fill-opacity="0.2" points="32.208,14.854 32.208,32.854 18.208,32.854 17.208,33.854 33.208,33.854 
+		33.208,13.854 	"/>
+	<polygon fill-opacity="0.25" points="18.208,32.854 18.208,14.854 32.208,14.854 33.208,13.854 17.208,13.854 17.208,33.854 	"/>
+	<path fill="#FFFFFF" fill-opacity="0.2" d="M27.862,35.098l-0.654,0.756v4h-4l-0.771,0.637c0.183,0.221,0.46,0.363,0.771,0.363h4
+		c0.553,0,1-0.449,1-1v-4C28.208,35.553,28.074,35.281,27.862,35.098z"/>
+	<path fill-opacity="0.25" d="M23.208,39.854v-4h4l0.654-0.756c-0.176-0.152-0.404-0.244-0.654-0.244h-4c-0.553,0-1,0.449-1,1v4
+		c0,0.242,0.086,0.463,0.229,0.637L23.208,39.854z"/>
+	<path opacity="0.3" d="M35.166,23.55v-9.701c0-1.654-1.346-3-3-3h-2.324l-0.492,1.522l-7.646,0.014
+		c-0.213,0-0.402,0.134-0.471,0.335c-0.071,0.201-0.006,0.425,0.16,0.557l6.107,4.855l-2.268,6.958
+		c-0.065,0.199,0.002,0.418,0.167,0.548c0.089,0.071,0.199,0.106,0.306,0.106c0.092,0,0.186-0.025,0.268-0.076l6.371-3.977
+		L35.166,23.55z"/>
+	<g>
+		
+			<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-126.7969" y1="301.3916" x2="-126.7969" y2="329.7876" gradientTransform="matrix(1 0 0 1 159.02 -299.4092)">
+			<stop  offset="0" style="stop-color:#FFE23D"/>
+			<stop  offset="1" style="stop-color:#E48717"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_4_)" points="32.224,4.25 35.032,11.877 42.699,11.891 36.663,16.962 38.697,24.25 32.394,20.105 
+			25.75,24.25 28.125,16.962 21.747,11.891 29.755,11.877 		"/>
+		<path fill-opacity="0.2" d="M29.291,16.611c0,0-2.8-2.227-4.686-3.727c0.001,0,0.002,0,0.004,0l-2.862-0.994l6.378,5.071
+			L29.291,16.611z"/>
+		<path fill-opacity="0.2" d="M42.699,11.891l-2.741,0.998c-1.786,1.5-4.432,3.723-4.432,3.723s0.889,3.184,1.49,5.338
+			c-1.863-1.225-4.609-3.03-4.609-3.03s-2.891,1.804-4.855,3.028c0.002-0.002,0.002-0.004,0.002-0.006L25.75,24.25l6.644-4.145
+			l6.304,4.145l-2.034-7.288L42.699,11.891z"/>
+		<path fill="#FFFFFF" fill-opacity="0.25" d="M42.699,11.891l-7.667-0.014L32.224,4.25l-2.469,7.627l-8.008,0.014l2.862,0.996
+			c2.365-0.005,5.875-0.011,5.875-0.011s1.072-3.317,1.801-5.565c0.83,2.252,2.051,5.565,2.051,5.565s3.361,0.006,5.625,0.011
+			c0,0-0.001,0-0.002,0.002L42.699,11.891z"/>
+		<path fill="#FFFFFF" fill-opacity="0.25" d="M25.75,24.25l1.804-2.309c0.701-2.15,1.737-5.33,1.737-5.33l-1.166,0.351L25.75,24.25
+			z"/>
+	</g>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/searchapplication.pri	Mon Jun 28 11:03:15 2010 +0530
@@ -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:  Search application list of files
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/searchapplication.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -0,0 +1,68 @@
+#
+# 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 project file
+#
+
+TEMPLATE = app
+
+TARGET = Searchapplication 
+
+win32 {
+    LIBS += -L$$PWD/../../bin/debug
+    
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }
+    DESTDIR = $$PWD/../../bin/$$SUBDIRPART
+}
+
+LIBS +=  -lsearchruntimeprovider
+
+QT += xml 
+
+CONFIG += hb    
+CONFIG += console
+CONFIG += hb console mobility 
+
+TRANSLATIONS += searchsw.ts 
+nft:DEFINES += NFT
+
+DEPENDPATH += . \
+              ./inc \
+              ./src
+
+INCLUDEPATH += . \
+               ./inc \
+               ../inc \
+              ../runtimeproviders/searchruntimeprovider/inc 
+
+symbian {
+    TARGET.UID2 = 0x100039CE
+    TARGET.UID3 = 0x2002C377
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles TrustedUI
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x800000 // 128kB - 16MB
+    rom:DEFINES += ROM
+    SKINICON = qtg_large_search
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+}
+
+win32 {
+include(searchapplication_installs_win32.pri)
+}
+
+include(searchapplication.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/searchapplication_installs_symbian.pri	Mon Jun 28 11:03:15 2010 +0530
@@ -0,0 +1,27 @@
+#
+# 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: 
+#
+
+
+#deploy.path = z:
+
+#exports1.path = /private/20026F95
+
+#exports1.sources += resource/ftudb
+
+#for(export1, exports1.sources):BLD_INF_RULES.prj_exports += "./$$export1 $$deploy.path$$exports1.path/$$basename(export1)"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/searchapplication_installs_unix.pri	Mon Jun 28 11:03:15 2010 +0530
@@ -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: 
+#
+#
+
+# Release
+#
+
+r01.path = ../../bin/release/
+r01.files = ./release/Searchapplication
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = ../../bin/debug/
+d01.files = ./debug/Searchapplication
+
+INSTALLS += d01
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/searchapplication_installs_win32.pri	Mon Jun 28 11:03:15 2010 +0530
@@ -0,0 +1,32 @@
+#
+# 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/
+r01.files = ./release/*.*
+
+INSTALLS += r01
+
+#
+# Debug
+#
+
+d01.path = $$PWD/../../bin/debug/
+d01.files = ./debug/*.*
+
+INSTALLS += d01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/src/main.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -0,0 +1,78 @@
+/*
+ * 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 implementation.
+ *
+ */
+
+#include "search.h"
+#include "search_global.h"
+
+#include <QtGui>
+#include <hbapplication.h>
+#include <qtranslator.h>
+#include <qlocale.h>
+
+// ---------------------------------------------------------------------------
+// main
+// ---------------------------------------------------------------------------
+//
+int main(int argc, char *argv[])
+    {
+    SEARCH_FUNC_ENTRY("SEARCH::Search::main");
+    PERF_APP_LAUNCH_END("SearchApplication Main Called");
+    HbApplication app(argc, argv);
+
+    QTranslator translator;
+    QString lang = QLocale::system().name();
+    QString path = "Z:/resource/qt/translations/";
+    translator.load("searchsw_" + lang, path);
+    app.installTranslator(&translator);
+
+    QTranslator commonTranslator;
+    commonTranslator.load("common_" + lang, path);
+    app.installTranslator(&commonTranslator);
+
+    QTranslator musicTranslator;
+    musicTranslator.load("musicplayer_" + lang, path);
+    app.installTranslator(&musicTranslator);
+
+    QTranslator contactsTranslator;
+    contactsTranslator.load("contacts_" + lang, path);
+    app.installTranslator(&contactsTranslator);
+
+    QTranslator calenderTranslator;
+    calenderTranslator.load("calendar_" + lang, path);
+    app.installTranslator(&calenderTranslator);
+
+    QTranslator notesTranslator;
+    notesTranslator.load("notes_" + lang, path);
+    app.installTranslator(&notesTranslator);
+    PERF_APP_LAUNCH_END("Search Component Cunstructions starts");
+    Search search;
+    PERF_APP_LAUNCH_END("Search Component Cunstructions Ends");
+#ifdef ROM
+    QDir::setCurrent("Z:/");
+#else
+    QDir::setCurrent("C:/");
+    SEARCHDEBUG("main() - SearchApplication's current dir set to C:/");
+#endif //ROM
+    QObject::connect(&app, SIGNAL(aboutToQuit()), &search, SLOT(stop()));
+    QObject::connect(&search, SIGNAL(exit()), &app, SLOT(quit()),
+            Qt::QueuedConnection);
+    search.start();
+    PERF_APP_LAUNCH_END("SearchApplication Ends, Main Event Loop");
+    int ret = app.exec();
+    SEARCH_FUNC_EXIT("SEARCH::Search::main");
+    return ret;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapplication/src/search.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 "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()),this, SLOT(handleRuntimeStarted()));
+        connect(mRuntime, SIGNAL(stopped()),this, SLOT(handleRuntimeStopped()));
+        connect(mRuntime, SIGNAL(faulted()),this, 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/searchui.pro	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/searchui.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -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	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/inc/searchprogressivestate.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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,11 +29,7 @@
 #include "search_global.h"
 #include <f32file.h>
 
-//Uncomment to enable performance measurements.
-//#define OST_TRACE_COMPILER_IN_USE
-
-#ifdef OST_TRACE_COMPILER_IN_USE
-
+#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();
@@ -46,7 +41,9 @@
 #define PERF_CAT_GETDOC_TIME_ACCUMULATE m_getDocumentCatergoryTimeAccumulator += m_categoryGetDocumentApiTime.elapsed();
 #define PERF_CAT_GETDOC_ACCUMULATOR_RESET m_getDocumentCatergoryTimeAccumulator = 0;
 #define PERF_CAT_GETDOC_ACCUMULATOR_ENDLOG qDebug() << "Get Doc on category (API): " << mTemplist.at( mDatabasecount-1 ) << "took " << m_getDocumentCatergoryTimeAccumulator << "msec";
-
+#define PERF_RESULT_ITEM_LAUNCH_TIME_RESTART m_resultItemLaunchTime.restart();
+#define PERF_RESULT_ITEM_FOR_LAUNCHING(string) qDebug() <<"Result_Item_Launching: Launching "<<string ;
+#define PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG(string) qDebug() <<"Result_Item_Launching:"<<string<<"took "<<m_resultItemLaunchTime.elapsed()<<" msec";
 #else
 
 #define PERF_CAT_API_TIME_RESTART  
@@ -60,19 +57,22 @@
 #define PERF_CAT_GETDOC_TIME_ACCUMULATE 
 #define PERF_CAT_GETDOC_ACCUMULATOR_RESET
 #define PERF_CAT_GETDOC_ACCUMULATOR_ENDLOG
-
+#define PERF_RESULT_ITEM_LAUNCH_TIME_RESTART
+#define PERF_RESULT_ITEM_FOR_LAUNCHING(string)
+#define PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG(string)
 #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 NotesEditor;
+class NotesEditorInterface;
 class EventViewerPluginInterface;
+class HbListWidget;
+class HbListWidgetItem;
+class QPluginLoader;
 SEARCH_CLASS( SearchStateProviderTest)
 /** @ingroup group_searchstateprovider
  * @brief The state where progressive search state is shown
@@ -172,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
@@ -196,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.
@@ -228,6 +222,13 @@
      */
 
     void _viewingCompleted();
+
+    void viewReady();
+    
+    void slotOnlineQuery(QString);
+    
+    void slotISProvidersIcon(int, HbIcon);
+
 private:
 
     /**
@@ -255,7 +256,7 @@
      * 
      * @param aKeyword search keyword.
      */
-    void createSuggestionLink(bool aFlag);
+    void createSuggestionLink();
 
     /**
      * Function to include corrrect Qimage format to be taken from bitmap
@@ -310,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;
@@ -326,7 +330,7 @@
      * The List View widget.
      * Own.
      */
-    HbListView* mListView;
+    HbListWidget* mListView;
 
     /**
      * Document handler to load .docml.
@@ -340,11 +344,7 @@
      */
     HbSearchPanel* mSearchPanel;
 
-    /**
-     * model for list view
-     * Own.
-     */
-    QStandardItemModel* mModel;
+ 
 
     /**
      * qt interface for CPix engine
@@ -437,7 +437,17 @@
      * to create Notes editor 
      * 
      */
-    NotesEditor *notesEditor;
+    NotesEditorInterface *mNotesEditor;
+
+    /**
+     * to create Notes plugin loader 
+     * 
+     */
+    QPluginLoader *mNotespluginLoader;
+    
+    QMap<int, HbIcon> mISprovidersIcon;
+    
+    bool mOnlineQueryAvailable;
 
 private:
     /**
@@ -462,11 +472,12 @@
     QTime m_categorySearchUiTime;
     QTime m_categorySearchApiTime;
     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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/inc/searchsettingsstate.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/inc/settingswidget.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/resources/searchstateprovider.docml	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/searchstateprovider.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -36,8 +36,6 @@
     LIBS += -L$$PWD/../../../bin/debug
 }
 
-
-LIBS += -lstatemodel
 LIBS += -lsearchindevicehandler
 LIBS += -lxqservice 
 LIBS += -lqcpixsearchclient
@@ -46,9 +44,14 @@
 LIBS += -laknicon
 LIBS += -lapgrfx
 LIBS += -lbitgdi
-LIBS += -lnoteseditor
+#LIBS += -lnoteseditor
 LIBS += -lxqutils
-
+LIBS += -lsearchonlinehandler
+LIBS += -lapparc
+LIBS += -lefsrv
+LIBS += -lapgrfx
+LIBS += -lws32
+LIBS += -lavkon
 
 coverage:DEFINES += COVERAGE_MEASUREMENT
 
@@ -64,8 +67,9 @@
 
 INCLUDEPATH += ./inc \
                ../../inc \
-               ../../indevicehandler/inc
-               
+               ../../onlinehandler/inc \
+               ../../indevicehandler/inc 
+                
 
 
 symbian {
@@ -74,6 +78,16 @@
     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(searchstateprovider_installs_symbian.pri)
    # BLD_INF_RULES.prj_exports += "./inc/searchstateprovider.h |../../inc/"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/stateproviders/searchstateprovider/src/searchonlinestate.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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>
@@ -45,7 +40,7 @@
 #include <apaidpartner.h>
 #include <qpluginloader.h>
 #include <eventviewerplugininterface.h>
-#include <noteseditor.h>
+#include <noteseditorinterface.h>
 #include <w32std.h>
 #include <apgtask.h>
 #include <apgcli.h>
@@ -53,6 +48,12 @@
 #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";
 const char *TUT_SEARCHPANEL_WIDGET = "searchPanel";
@@ -63,12 +64,11 @@
 // ---------------------------------------------------------------------------
 SearchProgressiveState::SearchProgressiveState(QState *parent) :
     QState(parent), mMainWindow(NULL), mView(NULL), mListView(NULL),
-            mDocumentLoader(NULL), mModel(NULL), mSearchHandler(NULL),
-            notesEditor(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;
 
@@ -85,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");
 
@@ -99,6 +99,7 @@
 
         HbListViewItem *prototypeListView = qobject_cast<HbListViewItem *> (
                 prototype);
+        prototypeListView->setGraphicsSize(HbListViewItem::LargeIcon);
         if (prototypeListView)
             {
             HbStyle style;
@@ -108,7 +109,6 @@
             mListViewIconSize = size.toSize();
             prototypeListView->setTextFormat(Qt::RichText);
             }
-        mListView->setModel(mModel, prototype);
 
         HbAbstractItemView::ItemAnimations noCreationAndRemovalAnimations =
                 HbAbstractItemView::All;
@@ -122,10 +122,12 @@
     if (mSearchPanel)
         {
         mSearchPanel->setSearchOptionsEnabled(true);
-        
-        mSearchPanel->setPlaceholderText("Search device");
+
+        mSearchPanel->setPlaceholderText(hbTrId(
+                "txt_search_dialog_search_device"));
 
         mSearchPanel->setCancelEnabled(false);
+        mSearchPanel->setFocus();
         }
 
     constructHandlers();
@@ -167,6 +169,25 @@
     m_categoryGetDocumentApiTime.start();
     m_getDocumentCatergoryTimeAccumulator = 0;
 #endif
+
+    //Notes Editor Interface loading 
+    QDir dir(NOTES_EDITOR_PLUGIN_PATH);
+    QString pluginName = dir.absoluteFilePath(NOTES_EDITOR_PLUGIN_NAME);
+
+    // Create plugin loader.
+    mNotespluginLoader = new QPluginLoader(pluginName);
+
+    if (mNotespluginLoader)
+        {
+        // Load the plugin.
+        mNotespluginLoader->load();
+
+        QObject *plugin = qobject_cast<QObject*> (
+                mNotespluginLoader->instance());
+        mNotesEditor = qobject_cast<NotesEditorInterface*> (plugin);
+        }
+
+    mOnlineQueryAvailable = false;
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::~SearchProgressiveState
@@ -177,10 +198,6 @@
         {
         delete mAiwMgr;
         }
-    if (mModel)
-        {
-        delete mModel;
-        }
     if (mDocumentLoader)
         {
         delete mDocumentLoader;
@@ -189,9 +206,10 @@
         {
         delete mSearchHandlerList.at(i);
         }
-    if(notesEditor)
+    if (mNotespluginLoader)
         {
-        delete notesEditor;
+        mNotespluginLoader->unload();
+        delete mNotespluginLoader;
         }
     }
 // ---------------------------------------------------------------------------
@@ -227,7 +245,7 @@
                 }
             case 4:
                 {
-                handler->setCategory("email");
+                handler->setCategory("msg email");
                 break;
                 }
             case 5:
@@ -279,10 +297,15 @@
         }
     if (loadSettings)
         {
-        emit settingsState();
+        emit switchProToSettingsState();
         loadSettings = false;
         }
     setSelectedCategories();
+    if (mOnlineQueryAvailable)
+        {
+        mSearchPanel->setCriteria(mOriginalString);
+        mOnlineQueryAvailable = false;
+        }
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onExit
@@ -308,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)
         {
@@ -319,6 +342,8 @@
                 SLOT(setSettings()));
         }
 
+    connect(mMainWindow, SIGNAL(viewReady()), this, SLOT(viewReady()));
+
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::deActivateSignals
@@ -336,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)
         {
@@ -346,6 +371,7 @@
         disconnect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
                 SLOT(setSettings()));
         }
+    disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(viewReady()));
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onAsyncSearchComplete
@@ -386,7 +412,7 @@
     QStringList liststr;
     QString secondrow = aDoc->excerpt();
     QString firstrow;
-    QStandardItem* listitem = new QStandardItem();
+    HbListWidgetItem* listitem = new HbListWidgetItem();
 
     if (aDoc->baseAppClass().contains("contact"))
         {
@@ -428,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));
@@ -458,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");
@@ -476,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"));
@@ -520,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"))
@@ -530,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)
@@ -558,16 +594,16 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::openResultitem
 // ---------------------------------------------------------------------------
-void SearchProgressiveState::openResultitem(QModelIndex index)
+void SearchProgressiveState::openResultitem(HbListWidgetItem * item)
     {
-    QStandardItem* item = mModel->itemFromIndex(index);
     if (item == NULL)
-        return;
+        return;PERF_RESULT_ITEM_LAUNCH_TIME_RESTART
     QList<QVariant> args;
     bool t;
     mRequest = NULL;
     if (item->data(Qt::UserRole + 1).toString().contains("contact"))
         {
+        PERF_RESULT_ITEM_FOR_LAUNCHING("contact")
         mRequest = mAiwMgr->create("com.nokia.services.phonebookservices",
                 "Fetch", "open(int)", false);
 
@@ -576,6 +612,9 @@
         }
     else if (item->data(Qt::UserRole + 1).toString().contains("bookmark"))
         {
+        PERF_RESULT_ITEM_FOR_LAUNCHING("bookmark")
+        QDesktopServices::openUrl(item->data(Qt::UserRole + 2).toString());
+PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG        ("")
 
         }
     else if (item->data(Qt::UserRole + 1).toString().contains("calendar"))
@@ -583,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()),
@@ -598,10 +637,13 @@
         }
     else if (item->data(Qt::UserRole + 1).toString().contains("applications"))
         {
+        PERF_RESULT_ITEM_FOR_LAUNCHING("applications")
         TRAP_IGNORE(LaunchApplicationL(TUid::Uid((item->data(Qt::UserRole)).toString().toInt(&t, 16))));
+        PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG("")
         }
     else if (item->data(Qt::UserRole + 1).toString().contains("file"))
         {
+        PERF_RESULT_ITEM_FOR_LAUNCHING("file")
         QString uid = item->data(Qt::UserRole).toString();
         QFile file(uid);
         mRequest = mAiwMgr->create(file, false);
@@ -611,6 +653,7 @@
             || (item->data(Qt::UserRole + 1).toString().contains("audio"))
             || (item->data(Qt::UserRole + 1).toString().contains("image")))
         {
+        PERF_RESULT_ITEM_FOR_LAUNCHING("media")
         QString uid = getDrivefromMediaId(
                 item->data(Qt::UserRole + 2).toString());
         uid.append(':');
@@ -622,20 +665,36 @@
 
     else if (item->data(Qt::UserRole + 1).toString().contains("notes"))
         {
-        if (!notesEditor)
+        PERF_RESULT_ITEM_FOR_LAUNCHING("notes")
+        if(mNotesEditor)
             {
-            notesEditor = new NotesEditor(this);
+            mNotesEditor->edit(item->data(Qt::UserRole).toInt());
             }
-        notesEditor->edit(item->data(Qt::UserRole).toInt());
+        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")
         mRequest = mAiwMgr->create("com.nokia.services.hbserviceprovider",
                 "conversationview", "view(int)", false);
 
         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,
@@ -644,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();
             }
@@ -665,6 +725,7 @@
 void SearchProgressiveState::handleOk(const QVariant& var)
     {
     Q_UNUSED(var);
+PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG    ("")
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::handleError
@@ -677,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);
         }
     }
 // ---------------------------------------------------------------------------
@@ -695,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);
+
         }
     }
 // ---------------------------------------------------------------------------
@@ -707,10 +774,7 @@
 // ---------------------------------------------------------------------------
 void SearchProgressiveState::clear()
     {
-    if (mModel)
-        {
-        mModel->clear();
-        }
+    mListView->clear();
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::searchOnCategory
@@ -774,7 +838,7 @@
             {
             PERF_CAT_API_TIME_RESTART
             mSearchHandler->searchAsync(aKeyword, "_aggregate");
-            
+
             }
         else
             {
@@ -784,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;
         }
@@ -803,7 +867,7 @@
         {
         mSearchHandlerList.at(i)->cancelLastSearch();
         }
-    if (mModel->rowCount() != 0)
+    if (mListView->count() != 0)
         {
         clear();
         }
@@ -826,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
@@ -900,7 +949,7 @@
                 case 3://Messages& emails
                     {
                     mTemplist.append("msg");
-                    //mTemplist.append("email");
+                    mTemplist.append("email");
                     break;
                     }
                 case 4://Calender& notes
@@ -927,7 +976,7 @@
                 }
             }
         }
-    if (mTemplist.count() == 8)
+    if (mTemplist.count() == 9)
         isrootsearch = true;
     if (isrootsearch)
         {
@@ -997,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;
     }
 // ---------------------------------------------------------------------------
@@ -1269,6 +1318,7 @@
         CleanupStack::PopAndDestroy(&appArcSession);
         }
     CleanupStack::PopAndDestroy(&wsSession);
+PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG    ("")
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::_viewingCompleted
@@ -1277,4 +1327,30 @@
     {
     if (calAgandaViewerPluginInstance)
         calAgandaViewerPluginInstance->deleteLater();
+PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG    ("")
     }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::viewReady
+// ---------------------------------------------------------------------------
+void SearchProgressiveState::viewReady()
+    {
+    if (hbApp)
+        {
+        if (hbApp->activateReason() == Hb::ActivationReasonActivity)
+            {
+            QVariantHash params = hbApp->activateParams();
+            QString searchKey = params.value("query").toString();
+            if (searchKey.length() > 0)
+                mSearchPanel->setCriteria(searchKey);
+            }
+        }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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/src/searchsettingsstate.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/src/searchstateprovider.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/src/settingswidget.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/inc/t_searchstateprovider.h	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchprogressivestate.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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;
     }
@@ -225,7 +225,7 @@
     {
     SearchProgressiveState* progressiveState = new SearchProgressiveState();
     QEvent *event = new QEvent(QEvent::None);
-
+    progressiveState->onEntry(event);
     progressiveState->getSettingCategory(0, true);
     progressiveState->getSettingCategory(1, true);
     progressiveState->getSettingCategory(2, true);
@@ -234,21 +234,10 @@
     progressiveState->getSettingCategory(5, true);
     progressiveState->getSettingCategory(6, true);
     progressiveState->getSettingCategory(7, true);
-    progressiveState->onEntry(event);
+   
     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,10 @@
     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());
     //QVERIFY(uid.length());
--- a/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchstateprovider.cpp	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/src/t_searchstateprovider.cpp	Mon Jun 28 11:03:15 2010 +0530
@@ -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 17:22:18 2010 +0100
+++ b/searchui/stateproviders/searchstateprovider/tsrc/t_searchstateprovider/t_searchstateprovider.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -33,10 +33,6 @@
     DESTDIR = $$PWD/../../../../../bin/debug/
 }
 
-#LIBS += -lappservices
-LIBS += -lstatemodel
-#LIBS += -searchstateprovider.dll
-#LIBS += -searchruntimeprovider.dll
 LIBS += -lsearchindevicehandler
 LIBS += -lxqservice 
 LIBS += -lqcpixsearchclient
@@ -45,8 +41,14 @@
 LIBS += -laknicon
 LIBS += -lapgrfx
 LIBS += -lbitgdi
-LIBS += -lnoteseditor
-LIBS += -lxqutils    
+LIBS += -lsearchonlinehandler
+LIBS += -lxqutils
+LIBS += -lapparc
+LIBS += -lefsrv
+LIBS += -lapgrfx
+LIBS += -lws32
+LIBS += -lavkon
+
 CONFIG += qtestlib \
           symbian_test \
           debug_and_release \
@@ -67,15 +69,17 @@
                ./inc \
                ../../inc \
                ../../../../inc \               
-               ../../../../indevicehandler/inc 
+               ../../../../indevicehandler/inc \
+               ../../../../onlinehandler/inc
 symbian {         
 CONFIG += symbian_test               
 TARGET.UID2 = 0x100039CE
 TARGET.UID3 = 0x20026F9A
 TARGET.CAPABILITY = CAP_APPLICATION AllFiles
 TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
-TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCHEAPSIZE = 0x20000 0x800000 // 128kB - 16MB
 INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE 
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 }
 
 include(t_searchstateprovider.pri)
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 17:22:18 2010 +0100
+++ b/searchui/tsrc/indexdb/indexdb.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -1,42 +1,27 @@
+#
+# 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/applications/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\applications\_1\_0.cfs" \
-                                 "data/applications/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\applications\_1\deletable" \
-                                 "data/applications/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\applications\_1\segments" \
-                                 "data/bookmark/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\bookmark\_1\_0.cfs" \
-                                 "data/bookmark/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\bookmark\_1\deletable" \
-                                 "data/bookmark/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\bookmark\_1\segments" \
-                                 "data/calendar/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\calendar\_1\_0.cfs" \
-                                 "data/calendar/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\calendar\_1\deletable" \
-                                 "data/calendar/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\calendar\_1\segments" \
-                                 "data/contact/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_1\_0.cfs" \
-                                 "data/contact/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_1\deletable" \
-                                 "data/contact/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_1\segments" \
-                                 "data/file/content/_0/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\file\content\_0\_0.cfs" \
-                                 "data/file/content/_0/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\file\content\_0\deletable" \
-                                 "data/file/content/_0/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\file\content\_0\segments" \
-                                 "data/file/folder/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\file\folder\_1\_0.cfs" \
-                                 "data/file/folder/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\file\folder\_1\deletable" \
-                                 "data/file/folder/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\file\folder\_1\segments" \
-                                 "data/media/audio/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\audio\_1\_0.cfs" \
-                                 "data/media/audio/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\audio\_1\deletable" \
-                                 "data/media/audio/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\audio\_1\segments" \
-                                 "data/media/image/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\image\_1\_0.cfs" \
-                                 "data/media/image/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\image\_1\deletable" \
-                                 "data/media/image/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\image\_1\segments" \
-                                 "data/media/video/_0/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\video\_0\_0.cfs" \
-                                 "data/media/video/_0/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\video\_0\deletable" \
-                                 "data/media/video/_0/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\media\video\_0\segments" \
-                                 "data/msg/smsmms/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\msg\smsmms\_1\_0.cfs" \
-                                 "data/msg/smsmms/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\msg\smsmms\_1\deletable" \
-                                 "data/msg/smsmms/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\msg\smsmms\_1\segments" \
-                                 "data/notes/_1/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\notes\_1\_0.cfs" \
-                                 "data/notes/_1/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\notes\_1\deletable" \
-                                 "data/notes/_1/segments    \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\notes\_1\segments" \
-                                 "data/cpixreg.txt \epoc32\winscw\c\private\2001f6f7\cpixreg.txt" \
-                                 "data/cpixreg.txt \epoc32\winscw\c\private\2001f6f7\clucenelockdir\1.txt" \
-                                 "data/cpixcontentinfo.sq \epoc32\winscw\c\private\2001f6fb\cpixcontentinfo.sq"
-                                
+    BLD_INF_RULES.prj_exports += "data/water.jpg      \epoc32\winscw\c\data\water.jpg" \
+                                 "data/sea.jpg      \epoc32\winscw\c\data\sea.jpg" \
+                                 "data/rock.jpg      \epoc32\winscw\c\data\tree.jpg" \
+                                 "data/bluesky.jpg      \epoc32\winscw\c\data\bluesky.jpg" \
+                                 "data/jungle.jpg      \epoc32\winscw\c\data\jungle.jpg" \
+                                 "data/snow.jpg      \epoc32\winscw\c\data\snow.jpg" \
+                                 "data/mountain.jpg      \epoc32\winscw\c\data\mountain.jpg " 
                                  
                                  
                                  
--- a/searchui/tsrc/tsrc.pro	Wed Jun 23 17:22:18 2010 +0100
+++ b/searchui/tsrc/tsrc.pro	Mon Jun 28 11:03:15 2010 +0530
@@ -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