omadrm/drmplugins/drmromtm/ui/src/RoMtmUi.cpp
changeset 0 95b198f216e5
child 12 8a03a285ab14
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmplugins/drmromtm/ui/src/RoMtmUi.cpp	Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,816 @@
+/*
+* Copyright (c) 2002-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 Rights Object MTM UI
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <txtrich.h>//CRichText
+#include <eikrted.h> //	CEikRichTextEditor
+#include <eikenv.h>//CEikonEnv
+
+#include <AiwGenericParam.h>
+#include <AknLaunchAppService.h>
+
+#include <eikon.rsg>
+// Messaging includes
+#include <MSVUIDS.H>
+#include <msvids.h>
+
+#ifdef RD_MULTIPLE_DRIVE
+#include <DriveInfo.h>
+#endif
+
+#include <eikproc.h>
+#include <eikdoc.h>
+#include <akndialog.h>
+#include "RoMtmUi.h"
+#include "RoMtmUiC.h"
+
+
+#include <DocumentHandler.h> // document handler
+#include <apaid.h> //TApaAppInfo
+#include <apgcli.h> //RApaLsSession
+#include <RoapEng.h> // CRoapEng
+#include <data_caging_path_literals.hrh> // KDC_RESOURCE_FILES_DIR
+#include <AknQueryDialog.h> // CAknQueryDialog
+#include <StringLoader.h> //StringLoader
+#include <coneresloader.h> //rconeresloader
+#include <RoMtmUi.rsg> // test
+// EXTERNAL DATA STRUCTURES
+// EXTERNAL FUNCTION PROTOTYPES  
+// CONSTANTS
+_LIT(KRoAcquisitionPrefix, "ROA:");
+_LIT(KTriggerPrefix, "TRI:");
+
+#ifndef RD_MULTIPLE_DRIVE
+_LIT( KDriveZ, "z:" );
+#endif
+                                      
+_LIT( KRoMtmUiResFileName,"RoMtmUi.rsc" );
+// MACROS
+// LOCAL CONSTANTS AND MACROS
+// MODULE DATA STRUCTURES
+// LOCAL FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+
+
+// ============================= LOCAL FUNCTIONS ===============================
+// ============================ LOCAL FUNCTIONS ===============================
+//#define _DRM_TESTING
+
+#ifdef _DRM_TESTING
+LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs );
+LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName );
+LOCAL_C void CreateLogL();
+LOCAL_C void WriteL( const TDesC8& aText );
+LOCAL_C void WriteL( const TDesC& aText );
+LOCAL_C void WriteL( const TDesC8& aText , TInt aErr );
+LOCAL_C void WriteL( const TDesC& aText , TInt aErr );
+LOCAL_C void WriteCurrentTimeL();
+#endif
+
+// -----------------------------------------------------------------------------
+// Testing stuff
+// -----------------------------------------------------------------------------
+//
+#ifdef _DRM_TESTING
+LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs )
+    {
+    _LIT( KLogFile , "c:\\CRightsObjectMtmUi.txt" );
+    WriteFileL( text , aFs , KLogFile );
+    }
+
+LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName )
+    {
+    RFile file;
+    TInt size;
+    User::LeaveIfError( file.Open( aFs, aName , EFileWrite ) );
+    CleanupClosePushL( file );
+    User::LeaveIfError( file.Size( size ) );
+    User::LeaveIfError( file.Write( size, text ) );
+    CleanupStack::PopAndDestroy(); //file
+    }
+
+LOCAL_C void CreateLogL()
+    {
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    RFile file;
+    User::LeaveIfError( file.Replace( fs , _L("c:\\CRightsObjectMtmUi.txt") , EFileWrite ) );
+    file.Close();
+    CleanupStack::PopAndDestroy(); //fs
+    }
+
+LOCAL_C void WriteL( const TDesC& aText )
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+    HBufC8* text = HBufC8::NewLC(1000);
+    TPtr8 textptr(text->Des() );
+    textptr.Append( aText );
+    textptr.Append( _L8("\r\n") );
+    WriteLogL(textptr , fs);
+    CleanupStack::PopAndDestroy(text);
+    CleanupStack::PopAndDestroy(); //fs
+    WriteCurrentTimeL();
+    }
+
+LOCAL_C void WriteL( const TDesC8& aText )
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+    HBufC8* text = HBufC8::NewLC(1000);
+    TPtr8 textptr(text->Des() );
+    textptr.Append( aText );
+    textptr.Append( _L8("\r\n") );
+    WriteLogL(textptr , fs);
+    CleanupStack::PopAndDestroy(text);
+    CleanupStack::PopAndDestroy(); //fs
+    WriteCurrentTimeL();
+    }
+    
+LOCAL_C void WriteL( const TDesC8& aText , TInt aErr )
+    {
+    _LIT8(KErr,": %d");
+    HBufC8* text = HBufC8::NewLC(1000+20);
+    TBuf8<20> num;
+    TPtr8 textptr(text->Des());
+    textptr.Append(aText);
+    num.Format(KErr(),aErr);
+    textptr.Append(num);
+    WriteL(textptr);
+    CleanupStack::PopAndDestroy(text);
+    }
+    
+LOCAL_C void WriteL( const TDesC& aText , TInt aErr )
+    {
+    _LIT8(KErr,": %d");
+    HBufC8* text = HBufC8::NewLC(1000+20);
+    TBuf8<20> num;
+    TPtr8 textptr(text->Des());
+    textptr.Append(aText);
+    num.Format(KErr(),aErr);
+    textptr.Append(num);
+    WriteL(textptr);
+    CleanupStack::PopAndDestroy(text);
+    }
+
+LOCAL_C void WriteCurrentTimeL()
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+    HBufC8* text = HBufC8::NewLC(100);
+    TPtr8 textptr(text->Des() );
+// Date and Time display
+    TTime time;
+    time.HomeTime();
+    TBuf<256> dateString;
+    _LIT(KDate,"%*E%*D%X%*N%*Y %1 %2 '%3");
+    time.FormatL(dateString,KDate);
+    textptr.Append(_L( "\r\n\t\tData:\t" ) );
+    textptr.Append( dateString );
+    _LIT(KTime,"%-B%:0%J%:1%T%:2%S%:3%+B");
+    time.FormatL(dateString,KTime);
+    textptr.Append(_L( "\r\n\t\tTime:\t" ) );
+    textptr.Append( dateString );
+    textptr.Append(_L( "\r\n" ) );
+    textptr.Append(_L( "\r\n" ) );
+    WriteLogL(textptr , fs);
+    CleanupStack::PopAndDestroy(text);
+    CleanupStack::PopAndDestroy(); //fs
+    }
+#endif
+/*************************************
+*
+*		Global function declarations
+*
+**************************************/
+
+EXPORT_C CBaseMtmUi* NewMtmUiL( CBaseMtm& aMtm , CRegisteredMtmDll& aRegisteredDll )
+// Factory function
+	{
+	return CRightsObjectMtmUi::NewL( aMtm , aRegisteredDll );
+	}
+//
+// CRightsObjectMtmUi: User Interface MTM
+//
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/*************************************
+*
+*		Construction and destruction 
+*
+**************************************/
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::CRightsObjectMtmUi
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CRightsObjectMtmUi::CRightsObjectMtmUi( CBaseMtm& aBaseMtm , CRegisteredMtmDll& aRegisteredMtmDll )
+	:	CBaseMtmUi( aBaseMtm , aRegisteredMtmDll )
+	{
+	iOpenService = NULL;
+	iDocHandler = NULL;
+	iHostProcess = NULL;
+	iType = ERo;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CRightsObjectMtmUi::ConstructL()
+	{
+#ifdef _DRM_TESTING
+	CreateLogL();
+	WriteL(_L8("ConstructL"));
+#endif
+	CBaseMtmUi::ConstructL();
+	User::LeaveIfError(iFs.Connect());
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CRightsObjectMtmUi* CRightsObjectMtmUi::NewL( CBaseMtm& aBaseMtm , CRegisteredMtmDll& aRegisteredMtmDll )
+	{
+	CRightsObjectMtmUi* self=new ( ELeave ) CRightsObjectMtmUi( aBaseMtm , aRegisteredMtmDll );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+// Destructor
+CRightsObjectMtmUi::~CRightsObjectMtmUi()
+	{
+#ifdef _DRM_TESTING
+	TRAP(err,WriteL(_L8("~CRightsObjectMtmUi")));
+#endif
+	iFs.Close();
+
+  delete iOpenService;
+	delete iDocHandler;
+	}
+
+
+
+
+/*************************************
+*
+*		from CBaseMtm
+*
+**************************************/
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::CancelL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::CancelL( TRequestStatus& /*aStatus*/ , const CMsvEntrySelection& /*aSelection*/ )
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("CancelL"));
+#endif
+	
+	User::Leave( KErrNotSupported ); // no cancelling
+	return NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::GetResourceFileName
+//
+// Implementations provide this function to set the full path 
+// and name of the resource file associated with the User Interface MTM. 
+//
+// -----------------------------------------------------------------------------
+//
+void CRightsObjectMtmUi::GetResourceFileName( TFileName& aFileName ) const
+// Resource file loading 
+	{ 
+#ifdef _DRM_TESTING
+	TRAPD(err,WriteL(_L8("GetResourceFileName")));
+#endif	
+	aFileName = KRoMtmResourceFile; 
+	}
+
+//
+//	Entry manipulation 
+//
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::OpenL
+//
+// Opens an entry. 
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::OpenL( TRequestStatus& aStatus )
+// Open 
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("OpenL(1)"));
+#endif	
+
+    TMsvEntry tEntry = BaseMtm().Entry().Entry();
+    TMsvEntry newEntry( tEntry );
+
+	const TUid type( tEntry.iType );
+    CMsvOperation* operation = NULL;	
+	if ( type == KUidMsvMessageEntry )
+        {
+        operation = ViewL( aStatus );
+        newEntry.SetUnread( EFalse );
+        BaseMtm().Entry().ChangeL( newEntry );
+        }
+    else
+        {
+        User::Leave( KErrNotSupported );
+        }
+	return operation;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::OpenL
+//
+// Opens the first entry in the selections. 
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::OpenL( TRequestStatus& aStatus , const CMsvEntrySelection& aSelection )
+// Open selection
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("OpenL(2)"));
+#endif	
+    BaseMtm().SwitchCurrentEntryL( aSelection.At( 0 ) );
+    return OpenL( aStatus );
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::CloseL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::CloseL( TRequestStatus& /*aStatus*/ )
+	{
+// Close 
+#ifdef _DRM_TESTING
+	WriteL(_L8("CloseL(1)"));
+#endif	
+    User::Leave( KErrNotSupported );
+    return NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::CloseL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::CloseL( TRequestStatus& /*aStatus*/ , const CMsvEntrySelection& /*aSelection*/ )
+	{
+// Close selection
+#ifdef _DRM_TESTING
+	WriteL(_L8("CloseL(2)"));
+#endif	
+
+    User::Leave( KErrNotSupported );
+    return NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::EditL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::EditL( TRequestStatus& /*aStatus*/ )
+// Edit 
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("EditL(1)"));
+#endif		
+    User::Leave( KErrNotSupported );	
+	return NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::EditL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::EditL( TRequestStatus& aStatus , const CMsvEntrySelection& aSelection )
+// Edit selection
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("EditL(2)"));
+#endif	
+	iBaseMtm.SwitchCurrentEntryL( aSelection.At( 0 ) );
+	return EditL( aStatus );
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::ViewL
+//
+// Views an entry.
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::ViewL( TRequestStatus& aStatus )
+// View
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("ViewL(1)"));
+#endif
+	
+    CheckMessageTypeL();                                       
+	return LaunchEditorApplicationL( aStatus , iBaseMtm.Entry().Entry().Id() , ETrue );
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::ViewL
+//
+// Views the first entry in the selection.
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::ViewL( TRequestStatus& aStatus , const CMsvEntrySelection& aSelection )
+// View selection
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("ViewL(2)"));
+#endif
+	
+	iBaseMtm.SwitchCurrentEntryL( aSelection.At( 0 ) );
+	return ViewL( aStatus );
+	}
+
+
+//
+//	Message responding
+//
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::ReplyL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::ReplyL( TMsvId /*aDestination*/ , TMsvPartList /*aPartlist*/ , TRequestStatus& /*aCompletionStatus*/ )
+// Reply to message - no UI support
+	{
+	User::Leave( KErrNotSupported );
+	return NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::ForwardL
+//
+// Not supported
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::ForwardL( TMsvId /*aDestination*/ , TMsvPartList /*aPartlist*/ , TRequestStatus& /*aCompletionStatus*/ )
+// Forwarded message - no UI support
+	{
+	User::Leave( KErrNotSupported );
+	return NULL;
+	}
+
+
+//
+// Specific to CRightsObjectMtmUi
+//
+
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::CheckMessageTypeL
+//
+// Check the type of the message
+//
+// -----------------------------------------------------------------------------
+//
+void CRightsObjectMtmUi::CheckMessageTypeL()
+	{
+#ifdef _DRM_TESTING
+		WriteL(_L8("CheckMessageTypeL"));
+#endif	
+	BaseMtm().LoadMessageL(); 
+	CRichText& body = BaseMtm().Body();
+	TPtrC ptr16( body.Read(0) );
+
+#ifdef _DRM_TESTING
+		WriteL(ptr16);
+#endif		
+	if ( ptr16.Length()>4 && ptr16.Left(4).Compare(KRoAcquisitionPrefix())==0 )
+		{
+		iType = ERoapTriggerRoAcquisition;
+		}
+	else if ( ptr16.Length()>4 && ptr16.Left(4).Compare(KTriggerPrefix())==0 )
+		{
+		iType = ERoapTrigger;
+		}
+	else
+		{
+		iType = ERo;	
+		}
+		
+	}
+
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::LaunchEditorApplicationL
+//
+// Launch RO Manager to get information for rights corresponding to the message.
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::LaunchEditorApplicationL( TRequestStatus& aStatus , TMsvId /*aId*/ , 
+													TBool /*aReadOnly*/ )
+	{
+#ifdef _DRM_TESTING
+	WriteL(_L8("LaunchEditorApplicationL-Start"));
+#endif	
+	// get message context
+	BaseMtm().LoadMessageL(); 
+	CRichText& body = BaseMtm().Body();
+	TPtrC ptr16( body.Read(0) );
+    const TUid KUidDRMUI = { 0x101f85c7 };
+
+	if ( iType == ERoapTrigger || iType == ERoapTriggerRoAcquisition )
+		{
+		
+#ifdef _DRM_TESTING
+		WriteL(_L8("LaunchEditorApplicationL-iDocHandler"));
+#endif
+        
+        _LIT8( KRoapTriggerMimeType, "application/vnd.oma.drm.roap-trigger+xml" );
+        TDataType type = TDataType( KRoapTriggerMimeType );
+        HBufC* filename = NULL;
+		TPtr ptr(NULL,0);
+		TBool show;
+		filename = HBufC::NewLC(ptr16.Length()-4);
+		ptr.Set(filename->Des());
+		ptr.Append(ptr16.Right(ptr16.Length()-4));
+		
+		show = ShowQueryL(ptr);
+		if (!show)
+		    {
+		    CleanupStack::PopAndDestroy(filename);
+		    return CompletedOperationL( aStatus );
+		    }
+		
+#ifdef _DRM_TESTING
+		WriteL(ptr,ptr.Length());
+#endif		
+		if (iDocHandler)
+			{
+			delete iDocHandler;
+			iDocHandler = NULL;
+			}
+#ifdef _DRM_TESTING
+		WriteL(_L8("LaunchEditorApplicationL-iDocHandler-NewL"));
+#endif			
+		iDocHandler = CDocumentHandler::NewL();
+#ifdef _DRM_TESTING
+		WriteL(_L8("LaunchEditorApplicationL-iDocHandler-SetExitObserver"));
+#endif		
+		iDocHandler->SetExitObserver(this);
+#ifdef _DRM_TESTING
+		WriteL(_L8("LaunchEditorApplicationL-iDocHandler-OpenFileEmbeddedL"));
+#endif			
+		iDocHandler->OpenFileEmbeddedL(ptr,type);
+		CleanupStack::PopAndDestroy(filename);
+#ifdef _DRM_TESTING
+		WriteL(_L8("LaunchEditorApplicationL-iDocHandler-End"));
+#endif		
+		}
+	else
+		{
+	    if ( iOpenService )
+	        {
+	        delete iOpenService;
+	        iOpenService = NULL;
+	        }
+#ifdef _DRM_TESTING
+		WriteL(_L8("LaunchEditorApplicationL-CAknOpenFileService::NewL"));
+#endif           
+
+		CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC();
+		TAiwVariant variantObject( ptr16 );
+		TAiwGenericParam param( EGenericParamFile, variantObject );
+		paramList->AppendL( param );
+		
+    	TRAPD( err, iOpenService = CAknLaunchAppService::NewL( KUidDRMUI, this, paramList ) );
+    	if (err != KErrNone)
+    		{
+    		// just return to Inbox
+    		}
+
+		CleanupStack::PopAndDestroy( paramList ); // paramList			
+		}	
+
+#ifdef _DRM_TESTING
+	WriteL(_L8("LaunchEditorApplicationL-End"));
+#endif    
+    return CompletedOperationL( aStatus );
+	}
+
+
+void CRightsObjectMtmUi::HandleServerAppExit(TInt aReason)
+	{
+#ifdef _DRM_TESTING
+	TRAP(err,WriteL(_L8("HandleServerAppExit")));
+#endif	
+	MAknServerAppExitObserver::HandleServerAppExit(aReason);
+	}
+	
+// -----------------------------------------------------------------------------
+// CRightsObjectMtmUi::CompletedOperationL
+//
+// return completed operation to UI  
+//
+// -----------------------------------------------------------------------------
+//
+CMsvOperation* CRightsObjectMtmUi::CompletedOperationL( TRequestStatus& aObserverStatus )
+    {
+#ifdef _DRM_TESTING
+	WriteL(_L8("CompletedOperationL"));
+#endif      
+	//return completed operation pointer
+    TPckgBuf<TMsvLocalOperationProgress> progress;
+    SetProgressSuccess( progress, BaseMtm().Entry().Entry().Id() );
+    CMsvCompletedOperation* operation = 
+        CMsvCompletedOperation::NewL( Session() , Type() , progress , 
+        KMsvLocalServiceIndexEntryId , aObserverStatus );
+    return operation;
+    }
+
+void CRightsObjectMtmUi::SetProgressSuccess
+( TPckgBuf<TMsvLocalOperationProgress>& aProgress , TMsvId aId )
+    {
+    aProgress().iTotalNumberOfEntries = 1;
+    aProgress().iNumberCompleted = 1;
+    aProgress().iId = aId;
+    }
+
+TBool CRightsObjectMtmUi::ShowQueryL( TDesC16& aFile )
+    {
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL"));
+#endif       
+    TBool show = ETrue;
+    TInt type = 0;
+    HBufC* msgText = NULL;
+    type = CheckTriggerTypeL(aFile);    
+    
+#ifndef RD_MULTIPLE_DRIVE
+    
+    TFileName fileName( KDriveZ );
+    
+#else //RD_MULTIPLE_DRIVE
+    
+    _LIT( KDrive, "%c:");
+    TInt driveNumber( -1 );
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber );
+	iFs.DriveToChar( driveNumber, driveLetter );
+	
+	TFileName fileName;
+	
+    fileName.Format( KDrive, (TUint)driveLetter );
+    
+#endif
+    
+    fileName.Append( KDC_MTM_RESOURCE_DIR );
+    fileName.Append( KRoMtmUiResFileName );
+    RConeResourceLoader loader( *iCoeEnv );
+    loader.OpenL( fileName );
+    switch(type)
+        {
+        case Roap::ERegistrationTrigger:
+            {
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL->ERegistrationTrigger"));
+#endif             
+            loader.Close();
+            return ETrue;              
+            }
+        case Roap::ERoAcquisitionTrigger:
+            {
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL->ERoAcquisitionTrigger"));
+#endif
+            msgText = StringLoader::LoadLC( R_ROMTMUI_QUERY_RIGHTS_ACQ_MSG , iCoeEnv ); 
+            }break;
+        case Roap::EJoinDomainTrigger:
+            {
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL->EJoinDomainTrigger"));
+#endif            
+            msgText = StringLoader::LoadLC( R_ROMTMUI_QUERY_JOIN_DOMAIN_MSG , iCoeEnv ); 
+            }break;
+        case Roap::ELeaveDomainTrigger:
+            {
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL->ELeaveDomainTrigger"));
+#endif            
+            msgText = StringLoader::LoadLC( R_ROMTMUI_QUERY_LEAVE_DOMAIN_MSG , iCoeEnv ); 
+            }break;
+        default:
+            {
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL->default"));
+#endif            
+            loader.Close();
+            return EFalse;    
+            }
+        }
+#ifdef _DRM_TESTING
+	WriteL(*msgText);
+#endif           
+    loader.Close();
+    CAknQueryDialog* dlg = new (ELeave) CAknQueryDialog( *msgText,
+        CAknQueryDialog::ENoTone );
+    show = dlg->ExecuteLD( R_ROMTMUI_TRIGGER_CONFIRMATION_QUERY ); 
+    CleanupStack::PopAndDestroy( msgText );
+#ifdef _DRM_TESTING
+	WriteL(_L8("ShowQueryL->End"),show);
+#endif   
+    return show;
+    }
+
+TInt CRightsObjectMtmUi::CheckTriggerTypeL( TDesC16& aFile )
+    {
+#ifdef _DRM_TESTING
+	WriteL(_L8("CheckTriggerTypeL"));
+#endif    
+    Roap::CRoapEng* roap = NULL;
+    RFile file;
+    TInt size = 0;
+    Roap::TTriggerType type;
+    Roap::TRiContextStatus status;
+    Roap::TDomainOperation op;
+    RPointerArray<HBufC8> array;
+    
+    HBufC8* buf =NULL;
+    TPtr8 ptr(NULL,0);
+    User::LeaveIfError(file.Open(iFs, aFile, EFileShareReadersOrWriters));
+    CleanupClosePushL(file);
+    User::LeaveIfError(file.Size(size));
+    buf = HBufC8::NewLC(size);
+    ptr.Set(buf->Des());
+    User::LeaveIfError(file.Read(ptr,size));
+    CleanupStack::Pop(buf);
+    CleanupStack::PopAndDestroy(&file);
+    CleanupStack::PushL(buf);
+    roap = Roap::CRoapEng::NewL();
+    CleanupStack::PushL(roap);
+    roap->SetTriggerL(ptr,NULL,type,status,op,array);
+    array.ResetAndDestroy();
+    array.Close();
+    CleanupStack::PopAndDestroy(roap);
+    CleanupStack::PopAndDestroy(buf);
+    
+#ifdef _DRM_TESTING
+	WriteL(_L8("CheckTriggerTypeL-End"),type);
+#endif     
+    return type;
+    }
+    
+
+
+