btobexprofiles/obexreceiveservices/mtmuiinfrared/src/irmtmuidata.cpp
changeset 32 19bd632b5100
child 40 997690c3397a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/btobexprofiles/obexreceiveservices/mtmuiinfrared/src/irmtmuidata.cpp	Fri May 28 17:03:06 2010 +0300
@@ -0,0 +1,414 @@
+/*
+* Copyright (c) 2002 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: 
+*     Class CIrMtmUiData
+*
+*/
+
+
+// INCLUDE FILES
+#include "irmtmuidata.h"
+#include "irmtmui.h"
+#include <app/irmsgtypeuid.h>
+#include <mtclbase.h>
+#include <msvuids.h>
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <mtmdef.hrh> //kuidmtmquerymaxbodysizevalue etc
+#else
+#include <mtmdef.hrh> //kuidmtmquerymaxbodysizevalue etc
+#include <mtmuidsdef.hrh> //kuidmtmquerymaxbodysizevalue etc
+#endif
+#include <Obexutils.rsg>
+#include <obexutilsmessagehandler.h>
+#include "debug.h"
+
+//CONSTANTS
+const TInt KIrMtmUiDataMsgEditorAppValue      = 0x00000000;
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Two-phased constructor.
+CIrMtmUiData* CIrMtmUiData::NewL(CRegisteredMtmDll& aRegisteredDll)
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CIrMtmUiData\t" ) );
+	CIrMtmUiData* self=new(ELeave) CIrMtmUiData(aRegisteredDll);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// Symbian OS default constructor can leave.
+void CIrMtmUiData::ConstructL()
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: ConstructL\t" ) );
+    CBaseMtmUiData::ConstructL();
+    TObexUtilsMessageHandler::CreateDefaultMtmServiceL(KUidMsgTypeIrUID);
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: ConstructL done\t" ) );
+	}
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CIrMtmUiData::CIrMtmUiData(CRegisteredMtmDll& aRegisteredDll)
+	:       CBaseMtmUiData(aRegisteredDll)
+	{   
+	}
+
+
+// Destructor
+CIrMtmUiData::~CIrMtmUiData()
+	{ 
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: ~CIrMtmUiData\t" ) );
+	}
+
+
+// ---------------------------------------------------------
+// OperationSupportedL(...)
+// No Ir-specific operations added to MS menu.
+// ---------------------------------------------------------
+//
+TInt CIrMtmUiData::OperationSupportedL(
+    TInt /*aOperationId*/, 
+    const TMsvEntry& /*aContext*/) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: OperationSupportedL\t" ) );
+	return TObexUtilsUiLayer::OperationNotSupported();
+	}
+
+// ---------------------------------------------------------
+// QueryCapability(...)
+// MTM query capability
+// ---------------------------------------------------------
+//
+TInt CIrMtmUiData::QueryCapability(
+    TUid aCapability, 
+    TInt& aResponse ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: QueryCapability\t" ) );
+	switch( aCapability.iUid )
+		{
+	    // --- Supported valued capabilities ---
+	    case KUidMtmQueryMaxBodySizeValue:
+            {
+		    aResponse = KMaxTInt;
+		    break;
+            }
+	    case KUidMtmQueryMaxTotalMsgSizeValue:
+            {
+		    aResponse = KMaxTInt;
+		    break;
+            }
+	    case KUidMsvMtmQueryEditorUidValue:
+            {
+		    aResponse = KIrMtmUiDataMsgEditorAppValue;
+		    break;
+            }
+        /* Infrared is not supported anymore. Implementation for sending over Infrared is left for reference:
+        ( add #include <app/extendedmtmids.hrh> to the included files )
+        code starts here:
+
+        case KUidMsvMtmQuerySupportLinks:
+            {
+            aResponse = ETrue;
+            break;
+            }
+
+        End of reference implementation for sending over Infrared:
+        */
+	    case KUidMtmQuerySupportAttachmentsValue:
+	    case KUidMtmQueryCanSendMsgValue:
+            {
+		    break;
+            }
+	    case KUidMtmQuerySupportedBodyValue:    
+	    default:
+            {
+		    return KErrNotSupported;
+            }
+		}
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------
+// CBaseMtmUiData::CBitmapArray& CIrMtmUiData::ContextIcon(...)
+// Handles received msg icon.
+// ---------------------------------------------------------
+//
+const CBaseMtmUiData::CBitmapArray& CIrMtmUiData::ContextIcon(
+     const TMsvEntry& aContext, 
+     TInt /*aStateFlags*/) const
+
+	{
+	TInt icon = TObexUtilsUiLayer::ContextIcon( aContext, EInfrared );
+	return *iIconArrays->At( icon/2 ); 
+	}
+
+// ---------------------------------------------------------
+// PopulateArraysL()
+// Populates bitmap array 
+// ---------------------------------------------------------
+//
+void CIrMtmUiData::PopulateArraysL()
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: PopulateArraysL\t" ) );
+
+	TObexUtilsUiLayer::CreateIconsL( KUidMsgTypeIrUID, iIconArrays );
+	}
+
+// ---------------------------------------------------------
+// GetResourceFileName(TFileName& aFileName) const
+// Gives resource filename.
+// ---------------------------------------------------------
+//
+void CIrMtmUiData::GetResourceFileName(TFileName& aFileName) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: GetResourceFileName\t" ) );
+    aFileName = KObexUtilsFileDrive;
+    aFileName += KDC_RESOURCE_FILES_DIR;
+    aFileName += KObexUtilsResourceFileName;
+	}
+
+// ---------------------------------------------------------
+// CanCreateEntryL(...)
+// Checks if it is possible to create entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanCreateEntryL(
+    const TMsvEntry& aParent, 
+    TMsvEntry& aNewEntry, 
+    TInt& aReasonResourceId ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanCreateEntryL\t" ) );
+	aReasonResourceId = 0;
+	if( CheckEntry( aNewEntry ) )
+		{
+        // --- Can create messages in local folders ---
+		return ( aParent.iMtm.iUid == KMsvLocalServiceIndexEntryIdValue );
+		}
+	// --- Can't create other types ---
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanOpenEntryL(...)
+// Checks if it is possible to open entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanOpenEntryL(
+    const TMsvEntry& aContext, 
+    TInt& aReasonResourceId ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanOpenEntryL\t" ) );
+	if( CheckEntry( aContext ) )
+		{
+		if( aContext.iType.iUid == KUidMsvMessageEntryValue )
+			{
+			aReasonResourceId = 0;
+			return ETrue;
+			}
+		}
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanCloseEntryL(...)
+// Checks if it is possible to close entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanCloseEntryL(
+    const TMsvEntry& aContext, 
+    TInt& aReasonResourceId ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanCloseEntryL\t" ) );
+	if( CheckEntry( aContext ) )
+		{
+		if( aContext.iType.iUid == KUidMsvServiceEntryValue )
+			{
+			aReasonResourceId = 0;
+			return ETrue;
+			}
+		}
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanViewEntryL(...)
+// Checks if it is possible to view entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanViewEntryL(
+    const TMsvEntry& aContext, 
+    TInt& aReasonResourceId ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanViewEntryL\t" ) );
+	if( CheckEntry( aContext ) )
+		{
+		if( aContext.iType.iUid == KUidMsvMessageEntryValue )
+			{
+			aReasonResourceId = 0;
+			return ETrue;
+			}
+		}
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanEditEntryL(...)
+// Checks if it is possible to edit entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanEditEntryL(
+    const TMsvEntry& aContext, 
+    TInt& aReasonResourceId ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanEditEntryL\t" ) );
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	if( CheckEntry( aContext ) )
+		{
+		if ( ( aContext.iType.iUid == KUidMsvMessageEntryValue ) || 
+             ( aContext.iType.iUid == KUidMsvFolderEntryValue ) )
+			{
+			aReasonResourceId=0;
+			return ETrue;
+			}
+		}
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanDeleteServiceL(...)
+// Checks if it is possible to delete service.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanDeleteServiceL(
+    const TMsvEntry& /*aService*/, 
+    TInt& aReasonResourceId ) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanDeleteServiceL\t" ) );
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+    return EFalse; 
+	}
+
+// ---------------------------------------------------------
+// CanDeleteFromEntryL(...)
+// Checks if it is possible to delete from entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanDeleteFromEntryL(
+    const TMsvEntry& /*aContext*/, 
+    TInt& aReasonResourceId ) const
+	{
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanCopyMoveToEntryL(...)
+// Checks if it is possible to move to entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanCopyMoveToEntryL(
+    const TMsvEntry& /*aContext*/, 
+    TInt& aReasonResourceId ) const
+	{
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanCopyMoveFromEntryL(...)
+// Checks if it is possible to move from entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanCopyMoveFromEntryL(
+    const TMsvEntry& /*aContext*/, 
+    TInt& aReasonResourceId ) const
+	{
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+	}
+
+// ---------------------------------------------------------
+// CanReplyToEntryL(...)
+// Checks if it is possible to reply to entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanReplyToEntryL(
+    const TMsvEntry& /*aContext*/, 
+    TInt& aReasonResourceId ) const
+	{
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;	// Not Ok to do
+	}
+
+// ---------------------------------------------------------
+// CanForwardEntryL(...)
+// Checks if it is possible to forward entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanForwardEntryL(
+    const TMsvEntry& /*aContext*/, 
+    TInt& aReasonResourceId ) const
+	{
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;	// Not Ok to do
+	}
+
+// ---------------------------------------------------------
+// CheckEntry(...)
+// Checks is the entry valid.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CheckEntry(const TMsvEntry& aContext) const
+	{
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CheckEntry\t" ) );
+	return( ( aContext.iType.iUid == KUidMsvMessageEntryValue ) && 
+            ( aContext.iMtm       == KUidMsgTypeIrUID ) );
+	}
+
+// ---------------------------------------------------------
+// CanCancelL(...)
+// Checks if it is possible to cancel entry.
+// ---------------------------------------------------------
+//
+TBool CIrMtmUiData::CanCancelL(
+    const TMsvEntry& /*aContext*/, TInt& aReasonResourceId ) const
+    {
+    // No way of sending a message from the outbox, so no need to cancel.
+	aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+	return EFalse;
+    }
+
+// ---------------------------------------------------------
+// StatusTextL(...)
+// Returns status text when sending message(outbox).
+// ---------------------------------------------------------
+//
+HBufC* CIrMtmUiData::StatusTextL( const TMsvEntry& /*aContext*/ ) const
+	{  
+    FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: StatusTextL\t" ) );
+    TBuf<80> buffer;
+    TInt resourceId = R_IR_SEND_PROGRESS_SENDING;
+	TObexUtilsUiLayer::ReadResourceL( buffer, resourceId );
+    HBufC* ptr;
+    ptr = buffer.AllocL();
+    return ptr;
+	}
+
+//  End of File