searchfw/plugins/filesplugin/src/filessearchplugin.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchfw/plugins/filesplugin/src/filessearchplugin.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2006-2007 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:   Plugin for file names search 
+*
+*/
+
+
+
+
+#include <e32cmn.h>
+#include <e32def.h>
+#include <data_caging_path_literals.hrh>
+#include <utf.h>
+#include <apgcli.h>
+#include <aknnotewrappers.h>
+#include <bautils.h>
+#include <searchiconinfo.h>
+#include <searchdocumentid.h>
+#include <filessearchplugin.mbg>
+#include <filessearchresource.rsg>
+#include <bautils.h>
+
+#include "filessearchplugindefines.h"
+#include "filessearchplugin.h"
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::NewL() 
+// 1st phase constructor
+// ---------------------------------------------------------------------------------
+//
+CFilesSearchPlugin* CFilesSearchPlugin::NewL()
+    {  
+	CFilesSearchPlugin* self = new ( ELeave ) CFilesSearchPlugin();
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	return self;
+    }
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::~CFilesSearchPlugin() 
+// destructor
+// ---------------------------------------------------------------------------------
+//
+CFilesSearchPlugin::~CFilesSearchPlugin() 
+    {
+	if ( iCaption ) 
+    	{
+		delete iCaption;
+		iCaption = NULL;
+    	}
+    }
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::ContentSearcherL() 
+// Creates a content searcher and ownership is transfered to calling function
+// ---------------------------------------------------------------------------------
+//
+MSearchContentSearcher* CFilesSearchPlugin::ContentSearcherL(
+  const RArray<TUid>& aContentIdArray, const CSearchCondition& aCondition ,
+  MSearchPluginObserver& aObserver)
+                                           	
+    {
+
+	 for ( TInt j = 0; j < aContentIdArray.Count(); j++ ) 
+         {
+	     //  create the filesearcher   
+	     if ( ( aContentIdArray[j].iUid == KSearchCClassFilenamesUid.iUid ) )
+	         {	
+                  iFileSearcher = CFilesSearcher::NewL( 
+                      aContentIdArray, aCondition, PluginId(),aObserver ); 
+                  return iFileSearcher;								
+             }
+    	 }
+	 return NULL;	
+    }
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::GetSupportedContentL() 
+// Gets supported contents
+// ---------------------------------------------------------------------------------
+//
+void CFilesSearchPlugin::GetSupportedContentL( 
+			RPointerArray<CSearchContent>& aContent ) 
+    {
+	CSearchContent* content = NULL;
+	CSearchIconInfo* icon = NULL;
+	
+	content = CSearchContent::NewL( CSearchContent::ETypeContentClass );
+
+	CleanupStack::PushL( content );
+	content->SetContentId( KSearchCClassFilenamesUid );
+	content->SetSubContentId( 0 );
+	content->SetPluginId( this->PluginId() );
+    
+	_LIT( KFilesMifFileName, "filessearchplugin.mif" );   
+    
+    //Read mif file from
+    TPtrC driveLetter = TParsePtrC( RProcess().FileName() ).Drive();
+	TFileName mifFileName( driveLetter );
+	mifFileName.Append( KDC_APP_BITMAP_DIR );
+	mifFileName.Append( KFilesMifFileName );
+	
+	//Set Icon information
+	icon = CSearchIconInfo::NewL();
+	CleanupStack::PushL( icon );
+	icon->SetSkinId( KAknsIIDQgnPropFmgrFileApps );
+	icon->SetIconFileL( mifFileName );
+	icon->SetIconIndex( EMbmFilessearchpluginQgn_prop_search_file_names );
+	icon->SetIconMaskIndex( EMbmFilessearchpluginQgn_prop_search_file_names_mask );
+	CleanupStack::Pop( icon );
+	
+	content->SetIconInfo( icon );
+	
+	//Setting the caption
+	content->SetCaptionL( *iCaption );
+		
+    aContent.AppendL( content );
+    CleanupStack::Pop( content );    		
+    }
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::IsSupportedContent() 
+// Returns if the given content is supported or not
+// ---------------------------------------------------------------------------------
+//
+TBool CFilesSearchPlugin::IsSupportedContent( TUid aContentId )
+    {
+	if ( KSearchCClassFilenamesUid.iUid == aContentId.iUid ) 
+	    {
+		     return ETrue;
+     	}
+	
+	return EFalse;
+    }
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::LaunchApplicationL() 
+// Launches the application corresponding to document id
+// ---------------------------------------------------------------------------------
+//
+void CFilesSearchPlugin::LaunchApplicationL(const TDesC8& aLaunchInfo)
+    {
+	    RFs fs;
+	    User::LeaveIfError( fs.Connect() );
+	    TEntry fileEntry;
+	    
+	         HBufC *path16 = HBufC::NewL(KMaxFileName) ;
+             TPtr docIdPtr = path16->Des();
+             CnvUtfConverter::ConvertToUnicodeFromUtf8( docIdPtr,aLaunchInfo) ;
+		     
+	        
+	    fs.Entry( *path16, fileEntry );
+        TBool testPath = BaflUtils::FileExists( fs, *path16 );
+        fs.Close();
+        if ( !testPath ) 
+        	{
+        	User::Leave( KErrNotFound );
+        	}
+	    if ( !( fileEntry.IsDir() ) /*&& testPath */ ) 
+	         {
+		 
+		     RApaLsSession session;
+		     if(session.Connect() != KErrNone)
+		     {
+		     	  return;
+		     }	
+
+		     // Gets the UID of the application that can handle MIME 
+		     //type for the given file name.
+		     TUid uid;
+		     TDataType dataType;
+		     //TInt err = session.AppForDocument( pathPtr, uid, dataType );
+	
+	         TInt err = session.AppForDocument( *path16, uid, dataType );
+		     // Runs the default application using the MIME type, dataType.
+		     // You can also use the UID to run the application. 
+		     // If the Type is unrecognized dont do anything
+		     if ( !uid.iUid ) 
+		     	{
+		     	User::LeaveIfError( KErrNotSupported );
+		     	}
+		     if ( KErrNone == err && uid.iUid ) 
+		          {
+			      TThreadId threadId;
+			      TInt err = session.StartDocument( *path16, dataType, 
+			        	threadId );
+			      if ( KErrNone != err ) 
+			      	  {
+			      	  User::LeaveIfError( err );
+			      	  }
+			      
+		          }
+	
+		     session.Close();
+	         }
+	   //  CleanupStack::PopAndDestroy( path16 );	
+            }
+   
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::CFilesSearchPlugin() 
+// constructor
+// ---------------------------------------------------------------------------------
+//
+CFilesSearchPlugin::CFilesSearchPlugin()  
+    {
+	
+    }
+
+// ---------------------------------------------------------------------------------
+// CFilesSearchPlugin::ConstructL() 
+// 2nd phase constructor
+// ---------------------------------------------------------------------------------
+//
+void CFilesSearchPlugin::ConstructL() 
+    {
+    RResourceFile resourceFile;    	
+    HBufC* resourceFileName = HBufC::NewL( KMaxFileName );
+    TPtr resourceFileNamePtr = resourceFileName->Des();
+    
+    TPtrC driveLetter = TParsePtrC( RProcess().FileName() ).Drive();
+    RFs fsSession;
+    User::LeaveIfError( fsSession.Connect() ); 
+    //Read resource file from ecom resource dir
+    resourceFileNamePtr.Copy( driveLetter );  
+    resourceFileNamePtr.Append( KDC_ECOM_RESOURCE_DIR );
+    resourceFileNamePtr.Append( KResoureFileName );
+    
+    CleanupClosePushL( resourceFile );
+    TFileName fileName = resourceFileName->Des();
+    BaflUtils::NearestLanguageFile( fsSession,fileName );
+    resourceFile.OpenL( fsSession, fileName );
+  	resourceFile.ConfirmSignatureL(0);
+  	
+  	HBufC8* readBuffer = resourceFile.AllocReadLC( R_QGN_SEARCH_TYPES_FILES );
+	
+	const TPtrC16 ptrReadBuffer( ( TText16* ) readBuffer->Ptr(),
+								( readBuffer->Length()+1 )>>1 );		
+								
+	iCaption = ptrReadBuffer.AllocL();
+
+	CleanupStack::PopAndDestroy( readBuffer );
+	
+	CleanupStack::Pop( );
+	resourceFile.Close();
+	delete resourceFileName;
+	resourceFileName = NULL;
+	fsSession.Close();
+    }
+
+
+
+
+
+
+
+