btobexprofiles/obexreceiveservices/opp/src/oppcontroller.cpp
branchRCL_3
changeset 23 9386f31cc85b
parent 22 613943a21004
child 24 269724087bed
--- a/btobexprofiles/obexreceiveservices/opp/src/oppcontroller.cpp	Tue Aug 31 15:25:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1065 +0,0 @@
-/*
-* Copyright (c) 2004 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 CBtListenActive
-*
-*/
-
-
-// INCLUDE FILES
-#include    "oppcontroller.h"
-#include    "btengdevman.h"
-#include    <obexutilsmessagehandler.h>
-#include    "debug.h"
-#include    <bautils.h>
-#include    <btengdomaincrkeys.h>
-#include    <sysutil.h>
-#include    <btengdomaincrkeys.h> 
-#include    <msvids.h>
-#include    <driveinfo.h>
-#include    <es_sock.h>
-#include    <bt_sock.h>
-#include    <bluetoothdevicedialogs.h>
-#include <hbtextresolversymbian.h>
-
-// CONSTANTS
-
-const TInt    KBufferSize = 0x10000;  // 64 kB
-const TInt KFileManagerUID3 = 0x101F84EB; /// File Manager application UID3
-_LIT( KBTDevDialogId, "com.nokia.hb.btdevicedialog/1.0" );
-_LIT(KLocFileName, "btdialogs_");
-_LIT(KPath, "z:/resource/qt/translations/");  
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-COPPController* COPPController::NewL()
-    {
-    COPPController* self = new ( ELeave ) COPPController();
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	return self;
-    }
-    
-COPPController::COPPController()
-	{
-    TRACE_FUNC
-	}
-
-void COPPController::ConstructL()	
-	{
-    TRACE_FUNC
-    iObexTransferState = ETransferIdle;
-    iLowMemoryActiveCDrive = CObexUtilsPropertyNotifier::NewL(this, ECheckPhoneMemory);
-    iLowMemoryActiveMMC = CObexUtilsPropertyNotifier::NewL(this, ECheckMMCMemory);        
-    iDevMan=CBTEngDevMan::NewL(this);  
-    iResultArray = new (ELeave) CBTDeviceArray(1);
-    // Get default folder from CenRep 
-    TObexUtilsMessageHandler::GetCenRepKeyStringValueL(KCRUidBluetoothEngine, 
-                                                       KLCReceiveFolder,
-                                                       iCenRepFolder);
-    iDialog = CObexUtilsDialog::NewL(this);
-    TBool ok = HbTextResolverSymbian::Init(KLocFileName, KPath);
-    if (!ok) 
-        {
-        User::Leave( KErrNotFound );
-        }
-	} 
-
-COPPController::~COPPController()
-    {
-    TRACE_FUNC
-    delete iObexObject;
-    delete iBuf;
-    delete iLowMemoryActiveCDrive;
-    delete iLowMemoryActiveMMC;
-    delete iDevMan;
-    if (iResultArray)
-        {
-        iResultArray->ResetAndDestroy();
-        delete iResultArray;
-        }
-    iFs.Close();
-    delete iDialog;
-    delete iProgressDialog;
-    delete iRecvDoneDialog;
-    }
-
-// ---------------------------------------------------------
-// ErrorIndication()
-// ---------------------------------------------------------
-//
-void COPPController::ErrorIndication( TInt TRACE_ONLY(aError) )
-    {
-    TRACE_FUNC
-    TRACE_ERROR((_L( "[oppreceiveservice] COPPController: ErrorIndication error:\t %d" ),aError));
-    HandleError(EFalse); // false because not explicit abort
-    }
-
-// ---------------------------------------------------------
-// AbortIndication() 
-// ---------------------------------------------------------
-//
-void COPPController::AbortIndication()
-	{
-	TRACE_FUNC
-	HandleError(ETrue); // true because explicit abort
-	}
-
-void COPPController::HandleError(TBool aAbort)
-    {
-    TRACE_ERROR((_L( "[oppreceiveservice] COPPController:HandleError" )));
-    iReceivingFailed = ETrue;
-    iShowRecvCompleteDialog = EFalse;
-    if( iObexTransferState == ETransferPut || iObexTransferState == ETransferPutDiskError )
-        {        
-        if(iObexObject)
-            {
-            iObexObject->Reset();
-            }
-        CancelTransfer();
-        if(!aAbort)
-        	{
-			if(iMediaType == ESrcsMediaBT)
-				{
-                TRAP_IGNORE(
-                        HBufC* note = HbTextResolverSymbian::LoadLC(_L("txt_bt_dpophead_receiving_failed"));
-                        iDialog->ShowErrorNoteL(note->Des());
-                        CleanupStack::PopAndDestroy(note);
-                        );
-				}
-			TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported)
-        	}
-        }
-    delete iBuf;
-    iBuf = NULL;
-    iObexTransferState = ETransferIdle;
-    TRAP_IGNORE(TObexUtilsMessageHandler::RemoveInboxEntriesL(iObexObject, iMsvIdParent));
-    TRAP_IGNORE(TObexUtilsMessageHandler::RemoveTemporaryRFileL (iFullPathFilename));
-    }
-
-// ---------------------------------------------------------
-// TransportUpIndication()
-// ---------------------------------------------------------
-//
-void COPPController::TransportUpIndication()
-	{
-	TRACE_FUNC    
-	iReceivingFailed = EFalse;
-    iObexTransferState = ETransferIdle;	
- 
-	if ( !iFs.Handle() )
-	    {
-	    TRACE_INFO( (_L( "[oppreceiveservice] TransportUpIndication iFs.Connect()" )) ); 
-	    if ( iFs.Connect() )   // error value not preserved, iFs.Handle() checked one more time before first useage
-	        {
-	        TRACE_INFO( (_L( "[oppreceiveservice] TransportUpIndication iFs.Connect() failed" )) ); 
-	        }
-	    }
-
-    iFile = RFile();
-    iFullPathFilename.Zero();
-	}
-
-// ---------------------------------------------------------
-// ObexConnectIndication()
-// ---------------------------------------------------------
-//
-TInt COPPController::ObexConnectIndication( const TObexConnectInfo& aRemoteInfo,
-                                            const TDesC8& aInfo)
-    {
-    TRACE_FUNC
-    (void) aRemoteInfo;
-    (void) aInfo;
-    
-    if ( iMediaType == ESrcsMediaBT )
-        {
-        TRACE_INFO( _L( "[oppreceiveservice] ObexConnectIndication: BT media \t" ) );
-        
-        // Get remote device socket address and bluetooth name
-        // Remote bluetooth name will be displayed in the new message in inbox.
-        //
-        TSockAddr addr;
-        iObexServer->RemoteAddr(addr);
-        TBTDevAddr tBTDevAddr = static_cast<TBTSockAddr>(addr).BTAddr();
-        
-        TBTRegistrySearch nameSearch;
-        nameSearch.FindAddress(tBTDevAddr);
-        
-        iResultArray->Reset();
-        // ignore any errors here, if we don't get the name, we don't get the name
-        static_cast<void>(iDevMan->GetDevices(nameSearch, iResultArray));
-        }
-    
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// ObexDisconnectIndication(
-// ---------------------------------------------------------
-//
-void COPPController::ObexDisconnectIndication(const TDesC8& aInfo)
-    {
-    TRACE_FUNC
-    (void) aInfo;
-    }
-
-// ---------------------------------------------------------
-// TransportDownIndication()
-// ---------------------------------------------------------
-//
-void COPPController::TransportDownIndication()
-    {
-    TRACE_FUNC
-    if(!iReceivingFailed && iShowRecvCompleteDialog)
-        {
-        //Launch recevice completed dialog.
-        iRecvDoneDialog = CHbDeviceDialogSymbian::NewL();
-        iRecvDoneDialog->SetObserver(this);
-    
-        CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
-        CleanupStack::PushL(variantMap);
-        
-        TInt dialogIdx = TBluetoothDialogParams::EReceiveDone;
-        CHbSymbianVariant* dialogType = CHbSymbianVariant::NewL( (TAny*) &(dialogIdx), 
-                                                            CHbSymbianVariant::EInt );
-        CleanupStack::PushL(dialogType);
-        TBuf16<6> dialogTypeKey;
-        dialogTypeKey.Num(TBluetoothDialogParams::EDialogType);
-        User::LeaveIfError(variantMap->Add(dialogTypeKey, dialogType));
-        CleanupStack::Pop(dialogType);
-        
-        CHbSymbianVariant* deviceName = CHbSymbianVariant::NewL( (TAny*) (&iRemoteDeviceName), 
-                                                            CHbSymbianVariant::EDes );
-        CleanupStack::PushL(deviceName);
-        TBuf16<6> deviceNameKey;
-        deviceNameKey.Num(TBluetoothDeviceDialog::EDeviceName);
-        User::LeaveIfError(variantMap->Add(deviceNameKey, deviceName));
-        CleanupStack::Pop(deviceName);
-        
-        CHbSymbianVariant* fileName = CHbSymbianVariant::NewL( (TAny*) (&iReceivingFileName), 
-                                                            CHbSymbianVariant::EDes );
-        CleanupStack::PushL(fileName);
-        TBuf16<6> fileNameKey;
-        fileNameKey.Num(TBluetoothDeviceDialog::EReceivingFileName);
-        User::LeaveIfError(variantMap->Add(fileNameKey, fileName));
-        CleanupStack::Pop(fileName);
-        
-        CHbSymbianVariant* fileSz = CHbSymbianVariant::NewL( (TAny*) &iTotalSizeByte, 
-                                                            CHbSymbianVariant::EInt );
-        CleanupStack::PushL(fileSz);
-        TBuf16<6> fileSzKey;
-        fileSzKey.Num(TBluetoothDeviceDialog::EReceivingFileSize);
-        User::LeaveIfError(variantMap->Add(fileSzKey, fileSz));
-        CleanupStack::Pop(fileSz);
-        
-        CHbSymbianVariant* fileCnt = CHbSymbianVariant::NewL( (TAny*) &iFileCount, 
-                                                            CHbSymbianVariant::EInt );
-        CleanupStack::PushL(fileCnt);
-        TBuf16<6> fileCntKey;
-        fileCntKey.Num(TBluetoothDeviceDialog::EReceivedFileCount);
-        User::LeaveIfError(variantMap->Add(fileCntKey, fileCnt));
-        CleanupStack::Pop(fileCnt);
-        
-        iRecvDoneDialog->Show( KBTDevDialogId(), *variantMap, this );
-        CleanupStack::PopAndDestroy(variantMap);
-        iShowRecvCompleteDialog = EFalse;
-        }
-    
-    // Remove receiving buffer and files used during file receiving.
-    //
-    delete iObexObject;
-    iObexObject = NULL;
-    TRAP_IGNORE(TObexUtilsMessageHandler::RemoveTemporaryRFileL (iFullPathFilename)); 
-    iFs.Close();
-    iFileCount = 0;
-    }
-
-// ---------------------------------------------------------
-// PutRequestIndication()
-// ---------------------------------------------------------
-//
-CObexBufObject* COPPController::PutRequestIndication()
-    {
-    TRACE_FUNC
-    iLengthHeaderReceived = EFalse; // New put request so clear header based state
-    iObexTransferState = ETransferPut;
-    
-    // Checking if backup is running now - if backup process is active, then we
-    // need to cancel transfer - otherwise phone will freeze during receiving
-    // data
-    if ( IsBackupRunning() )
-        {
-        TRACE_INFO ( _L ("Backup in progress! Canceling incoming transfer."));
-        iObexTransferState = ETransferPutInitError;
-        return NULL;
-        }
-    
-    TRAPD(err, HandlePutRequestL());
-    if(err == KErrNone)
-        {
-        return iObexObject;
-        }
-    TRACE_INFO( _L( "[oppreceiveservice] COPPController: PutRequestIndication end\t" ) );
-    if (iObexTransferState != ETransferPutInitError)
-        {
-        iObexTransferState = ETransferPutDiskError;
-        }
-    return NULL;
-    }
-
-// ---------------------------------------------------------
-// PutPacketIndication()    
-// ---------------------------------------------------------
-//
-TInt COPPController::PutPacketIndication()
-    {
-    TRACE_FUNC
-    if(iObexTransferState == ETransferPutCancel)
-        {
-        // User cancelled the put request, so error the next packet to terminate the put request.
-        // BIP considers the Unauthorized error response suitable for this...
-        HandleError(ETrue); // reset state and clear up
-        return KErrIrObexRespUnauthorized;
-        }
-    
-    iTotalSizeByte = iObexObject->Length();     // get size of receiving file
-    iReceivingFileName = iObexObject->Name();   // get name of receiving file
-    
-    // Check that capacity is suitable as soon as possible
-    if(!iLengthHeaderReceived && iTotalSizeByte > 0)
-        {
-        iLengthHeaderReceived = ETrue; // total size value is from length header
-        TBool capacity = ETrue;
-        TRAPD(retTrap, capacity = CheckCapacityL());
-        if(retTrap != KErrNone)
-            {
-            return KErrGeneral;
-            }
-        if(!capacity)
-            {
-            //TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
-            //todo: Need to use Localized string.
-            _LIT(KText, "Not enough memory to execute operation. Delete some documents and try again.");
-            TRAP_IGNORE(iDialog->ShowErrorNoteL(KText));
-    
-            return KErrDiskFull;
-            }
-        }
-    if(iObexObject->Name().Length() > KMaxFileName)
-        {
-        return KErrAccessDenied;
-        }
-    if(iObexTransferState == ETransferPutDiskError)
-        {
-        return KErrDiskFull;
-        }
-    // successfully received put packet if we reached here
-    iObexTransferState = ETransferPut;
-    
-    // Now we need to either create (in the first instance) or update the dialog on the UI.
-    if(ReceivingIndicatorActive())
-        {
-        TRAPD(err, UpdateReceivingIndicatorL());
-        if(err < KErrNone)
-            {
-            return err;
-            }
-        }
-    else if(!iNoteDisplayed)
-        {
-        // No note launched yet, so try to launch
-        TRAPD(err, LaunchReceivingIndicatorL());
-        iNoteDisplayed = (err == KErrNone);
-        }
-    
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// PutCompleteIndication()
-// ---------------------------------------------------------
-//
-TInt COPPController::PutCompleteIndication()
-    {
-    TRACE_FUNC
-    TInt retVal = KErrNone;
-    if(iObexTransferState == ETransferPutCancel)
-        {
-        retVal = KErrIrObexRespUnauthorized;
-        HandleError(ETrue);
-        }
-    else
-        {
-        retVal = HandlePutCompleteIndication();
-        iObexTransferState = ETransferIdle;
-        CloseReceivingIndicator();
-        iFileCount++;
-        iShowRecvCompleteDialog = ETrue;
-        }
-    TRACE_FUNC_EXIT
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// GetRequestIndication()
-// ---------------------------------------------------------
-//
-CObexBufObject* COPPController::GetRequestIndication( CObexBaseObject* aRequiredObject)
-    {
-    TRACE_FUNC
-    (void) aRequiredObject;
-    return NULL;
-    }
-
-// ---------------------------------------------------------
-// GetPacketIndication()
-// ---------------------------------------------------------
-//
-TInt COPPController::GetPacketIndication()
-    {
-    TRACE_FUNC
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// GetCompleteIndication()
-// ---------------------------------------------------------
-//
-TInt COPPController::GetCompleteIndication()
-    {
-    TRACE_FUNC
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// SetPathIndication()
-// ---------------------------------------------------------
-//
-TInt COPPController::SetPathIndication( const CObex::TSetPathInfo& aPathInfo, 
-                                        const TDesC8& aInfo)
-    {
-    TRACE_FUNC
-    
-    (void) aPathInfo;
-    (void) aInfo;
-    // SetPath is not implemented in OPP - so following IrOBEX guidance, return
-    // the Forbidden response code.
-    return KErrIrObexRespForbidden;
-    }
-
-
-
-// ---------------------------------------------------------
-// HandleNotifyL()
-// ---------------------------------------------------------
-//
-void COPPController::HandleNotifyL( TMemoryPropertyCheckType aCheckType )
-    {    
-    TRACE_FUNC        
-    
-    // Only interested on this notification if we are receiving something
-    if ( iObexTransferState == ETransferPut )
-        {
-        // Check the keys, what has been changed.
-        TRACE_INFO( _L( "[oppreceiveservice] COPPController::HandleNotifyL\t" ) );
-        if ( aCheckType == ECheckPhoneMemory )
-            {            
-            if ( SysUtil::FFSSpaceBelowCriticalLevelL( NULL, 0 ) )
-                {
-                TRACE_INFO( _L( "[oppreceiveservice] COPPController: Obex Server error diskfull\t" ) );
-                iObexTransferState = ETransferPutDiskError;                    
-                }
-            }
-        else if ( aCheckType == ECheckMMCMemory )
-            {                                
-            if ( SysUtil::MMCSpaceBelowCriticalLevelL( NULL, 0 ) )
-                {                        
-                TRACE_INFO( _L( "[oppreceiveservice] COPPController: Obex Server error diskfull\t" ) );
-                iObexTransferState = ETransferPutDiskError;
-                }
-            }            
-        }        
-    }
-// ---------------------------------------------------------
-// HandlePutRequestL()
-// ---------------------------------------------------------
-//
-void COPPController::HandlePutRequestL()
-    {
-    TRACE_FUNC
-    
-    delete iObexObject;
-    iObexObject = NULL;
-    
-    iFile = RFile();
-    
-    if ( !iFs.Handle() )
-        {
-        User::Leave(KErrGeneral);
-        }
-
-    // Assign an initial value to iDrive
-    iDrive = GetDriveWithMaximumFreeSpaceL();    
-     
-    // If iDrive is at critical space level, we immediately show out_of_memory.
-    //
-    if (SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, 0, iDrive ))
-        {
-        //TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
-        //todo: Need to use Localized string.
-        _LIT(KText, "Not enough memory to execute operation. Delete some documents and try again.");
-        TRAP_IGNORE(iDialog->ShowErrorNoteL(KText));
-    
-        User::Leave(KErrGeneral);
-        }
-        
-    TRACE_INFO( (_L( "[oppreceiveservice] HandlePutRequestL %d\t" ),iDrive ) ); 
-    
-    iObexObject = CObexBufObject::NewL( NULL );    
-    
-    delete iBuf;
-    iBuf = NULL;
-    
-    TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported);
-    if ( iMediaType == ESrcsMediaBT )
-        {
-        TChar driveLetter;
-        iDefaultFolder.Zero();
-        iFs.DriveToChar(iDrive, driveLetter);
-        iDefaultFolder.Append(driveLetter);
-        if ( iDrive == EDriveC )
-            {
-            iDefaultFolder.Append(_L(":\\data\\"));
-            }
-        else
-            {
-            iDefaultFolder.Append(_L(":\\"));
-            }
-        iDefaultFolder.Append(iCenRepFolder);
-        
-        iFile = RFile();
-        iFullPathFilename.Zero();
-        TRAPD(err, TObexUtilsMessageHandler::CreateReceiveBufferAndRFileL(iFile,
-                                                                              iDefaultFolder,
-                                                                              iFullPathFilename,
-                                                                              iBuf,
-                                                                              KBufferSize));
-        if(err != KErrNone)
-            {
-            iObexTransferState = ETransferPutInitError;
-            User::Leave(KErrGeneral);
-            }
-        }
-    else
-        {
-        iObexTransferState = ETransferPutInitError;
-        User::Leave(KErrGeneral);
-        }
-    
-    User::LeaveIfError(iFile.Open(iFs,iFullPathFilename,EFileWrite));   
-    TObexRFileBackedBuffer bufferdetails(*iBuf,iFile,CObexBufObject::EDoubleBuffering);    
-    
-    TRAPD(err, iObexObject->SetDataBufL( bufferdetails) );
-    if (err != KErrNone)
-        {
-        iObexTransferState = ETransferPutInitError;
-        User::Leave(KErrGeneral);  // set to != KErrNone
-        }
-    
-    TRACE_INFO( _L( "[oppreceiveservice] COPPController: HandlePutRequestL completed\t" ) );
-    }
-
-
-// ---------------------------------------------------------
-// HandlePutCompleteIndication()
-// ---------------------------------------------------------
-//
-TInt COPPController::HandlePutCompleteIndication()
-	{
-	TRACE_FUNC        
-    TInt retVal = KErrNone;
-
-	TChar driveLetter;
-	iDefaultFolder.Zero();
-	iFs.DriveToChar(iDrive, driveLetter);
-	iDefaultFolder.Append(driveLetter);
-	if ( iDrive == EDriveC )
-	    {
-	    iDefaultFolder.Append(_L(":\\data\\"));
-	    }
-	else
-	    {
-	    iDefaultFolder.Append(_L(":\\"));
-	    }
-	iDefaultFolder.Append(iCenRepFolder);
-	iFullPathFilename.Zero();
-	iFullPathFilename.Append(iDefaultFolder);
-       
-        
-	TRACE_INFO( (_L( "[oppreceiveservice] HandlePutCompleteIndication %d\t" ),iDrive ) ); 
-	
-	if (iMediaType==ESrcsMediaBT)
-	    {
-	    TRAP ( retVal, TObexUtilsMessageHandler::SaveFileToFileSystemL(iObexObject,
-	                                                                   KUidMsgTypeBt,
-	                                                                   iMsvIdParent,
-	                                                                   iFullPathFilename,
-	                                                                   iFile,
-	                                                                   iRemoteDeviceName));
-	    }
-	TRACE_ASSERT( iMediaType!=ESrcsMediaIrDA, KErrNotSupported);
-	if ( retVal == KErrNone)
-	    {
-	    TRAP (retVal, TObexUtilsMessageHandler::AddEntryToInboxL(iMsvIdParent, iFullPathFilename));		    
-                
-    if( retVal != KErrNone )
-        {
-        TRACE_INFO( (_L( "[oppreceiveservice] HandlePutCompleteIndication AddEntryToInboxL() failed  %d \t" ),retVal ) );                 	
-        TRAP_IGNORE(TObexUtilsMessageHandler::RemoveInboxEntriesL(iObexObject, iMsvIdParent));        
-        }
-        }
-	else
-	    {
-	    TRACE_INFO( (_L( "[oppreceiveservice] HandlePutCompleteIndication failed  %d \t" ),retVal ) ); 
-	    }
-	
-
-    delete iObexObject;
-    iObexObject = NULL;
-
-    delete iBuf;
-    iBuf = NULL;
-    
-    iPreviousDefaultFolder = iDefaultFolder;  // save the last file path where file is successfully saved to file system.
-    iMsvIdParent = KMsvNullIndexEntryId; 
-    TRACE_INFO( _L( "[oppreceiveservice] HandlePutCompleteIndication Done\t" ) );    
-    return retVal;
-	}
-
-  
-// ---------------------------------------------------------
-// CheckCapacity()
-// ---------------------------------------------------------
-//	    
-TBool COPPController::CheckCapacityL()
-    {
-    TRACE_FUNC_ENTRY   
-    
-    iDrive = EDriveZ; // Intialize iDrive to Z
-    TInt filesize = iObexObject->Length();
-    
-    RFs rfs ;
-    User::LeaveIfError(rfs.Connect());
-         
-    TInt mmcDrive = KDefaultDrive;   // External memroy card  
-    TInt imsDrive = KDefaultDrive;   // Internal mass storage   
-
-    User::LeaveIfError(DriveInfo::GetDefaultDrive(DriveInfo::EDefaultMassStorage, imsDrive));
-    User::LeaveIfError(DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRemovableMassStorage, mmcDrive));      
-    
-    TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL imsDrive=%d; mmcDrive=%d\t" ),imsDrive, mmcDrive ) );
-    
-    TVolumeInfo volumeInfo;
-    TInt err = rfs.Volume(volumeInfo, imsDrive);
-    
-    // If err != KErrNone, Drive is not available.
-    //
-    if ( !err )
-        {
-        // Check capacity on Internal mass storage            
-        TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Internal mass storage\t" )) );
-        if ( !SysUtil::DiskSpaceBelowCriticalLevelL( &rfs, filesize, imsDrive ) )
-            {
-            iDrive = imsDrive;            
-            }
-        }
-    
-    if ( iDrive == EDriveZ)
-        {
-        err = rfs.Volume(volumeInfo, mmcDrive);
-        if ( !err )
-            {
-            // Check capacity on Internal mass storage    
-            TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Checking memory card\t" )) );
-            if ( !SysUtil::DiskSpaceBelowCriticalLevelL( &rfs, filesize, mmcDrive ) )
-                {                    
-                iDrive = mmcDrive;
-                }   
-            }
-        }           
-    if ( iDrive == EDriveZ )
-        {
-        TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Checking phone memory\t" )) );
-        // Phone memory
-        if( !SysUtil::DiskSpaceBelowCriticalLevelL( &rfs, filesize, EDriveC ))
-            {
-            iDrive = EDriveC;
-            }
-        }
-    rfs.Close();
-    TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL iDrive = %d\t" ),iDrive ) );
-    TRACE_FUNC_EXIT
-    if (iDrive == EDriveZ)
-        {
-        // If there is no free space for receiving file, we need to set iPreviousDefaultFolder back to iDefaultFolder.
-        // In order to show the file receveing dialog correctly.
-        iDefaultFolder = iPreviousDefaultFolder;
-        return EFalse;
-        }
-    return ETrue;
-    }    
-
-// ---------------------------------------------------------
-// IsOBEXActive()
-// ---------------------------------------------------------
-//	    
-TBool COPPController::IsOBEXActive()
-    {
-    TRACE_FUNC
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// SetMediaType()
-// ---------------------------------------------------------
-//
-void COPPController::SetMediaType( TSrcsMediaType aMediaType ) 
-    {
-    TRACE_FUNC    
-    iMediaType=aMediaType;    
-    }
-    
-// ---------------------------------------------------------
-// SetObexServer()
-// ---------------------------------------------------------
-//
-TInt COPPController::SetObexServer( CObexServer* aServer)
-	{	
-	TInt retVal=KErrNone;    
-	
-	if (aServer)
-	    {  
-	    iObexServer = aServer;
-	    retVal=aServer->Start(this);    
-	    }
-	return retVal;
-	}
-   
-// ---------------------------------------------------------
-// CancelTransfer()
-// ---------------------------------------------------------
-//
-void COPPController::CancelTransfer()
-    {
-    TRACE_FUNC
-    CloseReceivingIndicator();
-    if(iObexTransferState == ETransferPut)
-        {
-        iObexTransferState = ETransferPutCancel;
-        }
-    else // go to idle for all other states
-        {
-        iObexTransferState = ETransferIdle;
-        }
-    }
-
-void COPPController::LaunchReceivingIndicatorL()
-    {
-    if(ReceivingIndicatorActive())
-        {
-        return;
-        }
-    
-    if(iTotalSizeByte > 0)
-        {
-        if(iReceivingFileName.Length() > 0)
-            {
-            iProgressDialog = CHbDeviceDialogSymbian::NewL();
-            iProgressDialog->SetObserver(this);
-
-            CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
-            CleanupStack::PushL(variantMap);
-            
-            TInt dialogIdx = TBluetoothDialogParams::EReceiveProgress;
-            CHbSymbianVariant* dialogType = CHbSymbianVariant::NewL( (TAny*) &(dialogIdx), 
-                                                                CHbSymbianVariant::EInt );
-            CleanupStack::PushL(dialogType);
-            TBuf16<6> dialogTypeKey;
-            dialogTypeKey.Num(TBluetoothDialogParams::EDialogType);
-            User::LeaveIfError(variantMap->Add(dialogTypeKey, dialogType));
-            CleanupStack::Pop(dialogType);
-            
-            CHbSymbianVariant* deviceName = CHbSymbianVariant::NewL( (TAny*) (&iRemoteDeviceName), 
-                                                                CHbSymbianVariant::EDes );
-            CleanupStack::PushL(deviceName);
-            TBuf16<6> deviceNameKey;
-            deviceNameKey.Num(TBluetoothDeviceDialog::EDeviceName);
-            User::LeaveIfError(variantMap->Add(deviceNameKey, deviceName));
-            CleanupStack::Pop(deviceName);
-            
-            CHbSymbianVariant* fileName = CHbSymbianVariant::NewL( (TAny*) (&iReceivingFileName), 
-                                                                CHbSymbianVariant::EDes );
-            CleanupStack::PushL(fileName);
-            TBuf16<6> fileNameKey;
-            fileNameKey.Num(TBluetoothDeviceDialog::EReceivingFileName);
-            User::LeaveIfError(variantMap->Add(fileNameKey, fileName));
-            CleanupStack::Pop(fileName);
-            
-            CHbSymbianVariant* fileSz = CHbSymbianVariant::NewL( (TAny*) &iTotalSizeByte, 
-                                                                CHbSymbianVariant::EInt );
-            CleanupStack::PushL(fileSz);
-            TBuf16<6> fileSzKey;
-            fileSzKey.Num(TBluetoothDeviceDialog::EReceivingFileSize);
-            User::LeaveIfError(variantMap->Add(fileSzKey, fileSz));
-            CleanupStack::Pop(fileSz);
-            
-            CHbSymbianVariant* fileCnt = CHbSymbianVariant::NewL( (TAny*) &iFileCount, 
-                                                                CHbSymbianVariant::EInt );
-            CleanupStack::PushL(fileCnt);
-            TBuf16<6> fileCntKey;
-            fileCntKey.Num(TBluetoothDeviceDialog::EReceivedFileCount);
-            User::LeaveIfError(variantMap->Add(fileCntKey, fileCnt));
-            CleanupStack::Pop(fileCnt);
-            
-            iDialogActive = ETrue;
-            iProgressDialog->Show( KBTDevDialogId(), *variantMap, this );
-            CleanupStack::PopAndDestroy(variantMap);
-            }
-        else
-            {
-            if(iMediaType == ESrcsMediaBT)
-                {
-                //TODO - Remove the usage of the resources.
-                //iProgressDialog->ShowProgressDialogL(R_BT_RECEIVING_DATA);
-                }
-            TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported);
-            }
-        }
-    else
-        {
-    
-        /*
-         * TODO - The functionality provided by CGlobalDialog will be removed
-         * TODO - and this will be provided by CGlobalProgressDialog.
-         */
-        if(iMediaType == ESrcsMediaBT)
-            {
-            // TODO 
-            }
-        TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported);
-        }
-    }
-
-void COPPController::UpdateReceivingIndicatorL()
-    {
-    if(iProgressDialog)
-        {
-        CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
-        CleanupStack::PushL(variantMap);
-        
-        TInt bytesReceived = iObexObject->BytesReceived();
-        CHbSymbianVariant* progress = CHbSymbianVariant::NewL( (TAny*) &bytesReceived, CHbSymbianVariant::EInt );
-        CleanupStack::PushL(progress);
-        User::LeaveIfError(variantMap->Add(_L("progress"), progress));
-        CleanupStack::Pop(progress);
-        
-        iProgressDialog->Update(*variantMap);
-        CleanupStack::PopAndDestroy(variantMap);
-        }
-    }
-
-void COPPController::CloseReceivingIndicator(TBool aResetDisplayedState)
-    {
-    TRACE_FUNC
-    if(aResetDisplayedState)
-        {
-        iNoteDisplayed = EFalse;
-        }
-    
-    if(iProgressDialog)
-        {
-        iProgressDialog->Cancel();
-        iDialogActive = EFalse;
-        delete iProgressDialog;
-        iProgressDialog = NULL;
-        }
-    }
-
- // ---------------------------------------------------------
-  // GetDriveWithMaximumFreeSpace()
-  // ---------------------------------------------------------
-  // 
-  TInt COPPController::GetDriveWithMaximumFreeSpaceL()
-      {
-      // Get drive with maximum freespace among phone memory, MMC, internal mass storage.
-      //
-      TRACE_FUNC   
-      TVolumeInfo volumeInfoC;
-      TVolumeInfo volumeInfoE;
-      TVolumeInfo volumeInfoF;
-      TInt64 max = 0;
-      TInt drive = 0;
-      
-      TInt err = iFs.Volume(volumeInfoC, EDriveC);
-     
-      if ( !err )
-          {
-          // set initial values to max and drive.
-          max = volumeInfoC.iFree;
-          drive = EDriveC;
-          }
-           
-      err = iFs.Volume(volumeInfoE, EDriveE);     
-      if ( !err )
-          {
-          if (volumeInfoE.iFree >= max)
-              {
-              max = volumeInfoE.iFree;
-              drive = EDriveE;             
-              }
-          
-          }
-           
-      err = iFs.Volume(volumeInfoF, EDriveF);
-      if ( !err )
-          {
-          if (volumeInfoF.iFree >= max)
-              {
-              max = volumeInfoF.iFree;
-              drive = EDriveF;             
-              }
-          }
-      
-      max = 0;
-      return drive;
-      }
- 
- 
- // ----------------------------------------------------------
- // COPPController::HandleGetDevicesComplete
- // Callback from devman
- // ----------------------------------------------------------
- //
- void COPPController::HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray)
-    {
-    TRACE_INFO( _L( "[oppreceiveservice] HandleGetDevicesComplete: enter \t" ) );
-    
-    (void) aDeviceArray;
-    
-    if ( aErr == KErrNone )
-        {
-        if ( iResultArray->Count())
-            {             
-            iRemoteDeviceName.Zero();
-            if ( iResultArray->At(0)->FriendlyName().Length() > 0 )
-                {
-                TRACE_INFO( _L( "[oppreceiveservice] HandleGetDevicesComplete: got friendly name \t" ) );
-                iRemoteDeviceName.Copy(iResultArray->At(0)->FriendlyName());
-                }
-            else
-                {
-                TRACE_INFO( _L( "[oppreceiveservice] HandleGetDevicesComplete: got devciename name \t" ));
-                TRAP_IGNORE(iRemoteDeviceName.Copy( BTDeviceNameConverter::ToUnicodeL(iResultArray->At(0)->DeviceName())));
-                }
-            }
-        }
-    }
- TBool COPPController::IsBackupRunning()
-    {
-    const TUint32 KFileManagerBkupStatus = 0x00000001;
-    
-    TInt status = EFileManagerBkupStatusUnset;
-    TBool retValue = EFalse;
-    TInt err = RProperty::Get( TUid::Uid(KFileManagerUID3), KFileManagerBkupStatus,
-                              status );
-    if ( err == KErrNone )
-        {
-        if ( status == EFileManagerBkupStatusBackup || 
-             status == EFileManagerBkupStatusRestore )
-            {
-            TSecureId fileManagerSecureId( KFileManagerUID3 );
-            //only returning ETrue if backup process is still active
-            retValue = ProcessExists( fileManagerSecureId );
-            }
-        }
-   
-    return retValue;
-    }
- 
- TBool COPPController::ProcessExists( const TSecureId& aSecureId )
-     {
-     _LIT( KFindPattern, "*" );
-     TFindProcess finder(KFindPattern);
-     TFullName processName;
-     while( finder.Next( processName ) == KErrNone )
-         {
-         RProcess process;
-         if ( process.Open( processName ) == KErrNone )
-             {
-             TSecureId processId( process.SecureId() );
-             process.Close();
-             if( processId == aSecureId )
-                 {
-                 return ETrue;
-                 }
-             }
-         }
-     return EFalse;
-     }
- 
- void COPPController::DialogDismissed(TInt aButtonId)
-     {
-     (void) aButtonId;
-     }
-
- void COPPController::DataReceived(CHbSymbianVariantMap& aData)
-     {
-     if(aData.Keys().MdcaPoint(0).Compare(_L("actionResult")) == 0)
-         {
-         TInt val = *(static_cast<TInt*>(aData.Get(_L("actionResult"))->Data()));
-         switch(val)
-             {
-             case TBluetoothDialogParams::ECancelReceive:
-                 {
-                 //User choose to cancel receiving.
-                 CancelTransfer();
-                 }break;
-                 
-             case TBluetoothDialogParams::EHide:
-                 {
-                 //Use choose to hide the progress dialog.
-                 CloseReceivingIndicator(EFalse);
-                 }break;
-                 
-             case TBluetoothDialogParams::EShow:
-             case TBluetoothDialogParams::ECancelShow:
-                 {
-                 //In case of Show, the device dialog will handle the opening of conversation view.
-                 iRecvDoneDialog->Cancel();
-                 delete iRecvDoneDialog;
-                 iRecvDoneDialog = NULL;
-                 }break;
-             }
-         }
-     }
- 
- void COPPController::DeviceDialogClosed(TInt aCompletionCode)
-     {
-     (void) aCompletionCode;
-     }
-
-//////////////////////////// Global part ////////////////////////////
-
-//  End of File