camerauis/cameraapp/generic/src/CamDriveChangeNotifier.cpp
branchRCL_3
changeset 23 61bc0f252b2b
parent 22 f54ad444594d
child 24 bac7acad7cb3
--- a/camerauis/cameraapp/generic/src/CamDriveChangeNotifier.cpp	Thu Aug 19 09:36:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,414 +0,0 @@
-/*
-* Copyright (c) 2008 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 FILES
-#include    <pathinfo.h>
-#include    <driveinfo.h>
-#include    <UsbWatcherInternalPSKeys.h>
-#include    <usbpersonalityids.h>
-
-#include    "CamDriveChangeNotifier.h"
-#include    "camlogging.h"
-#include    "CamUtility.h"
-
-
-_LIT(KDriveE, "E:\\");
-_LIT(KDriveF, "F:\\");
-
-const TInt KUSBTimeout = 1000000;  //1 sec
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDiskChangeListener::NewL
-// -----------------------------------------------------------------------------
-//
-CCamDriveChangeNotifier::CCamDiskChangeListener* 
-    CCamDriveChangeNotifier::CCamDiskChangeListener::NewLC(
-                  RFs& aFs,
-                  TDriveNumber aDrive,                                         
-                  CCamDriveChangeNotifier& aObserver )
-  {
-  PRINT( _L( "Camera => CCamDiskChangeListener::NewLC" ) );
-
-  CCamDiskChangeListener* self = 
-        new( ELeave ) CCamDiskChangeListener( aFs, aDrive, aObserver );
-  CleanupStack::PushL( self );
-
-  PRINT( _L( "Camera <= CCamDiskChangeListener::NewLC" ) );
-  return self;
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDiskChangeListener::~CCamDiskChangeListener
-// -----------------------------------------------------------------------------
-//
-CCamDriveChangeNotifier::CCamDiskChangeListener::~CCamDiskChangeListener()
-  {
-  PRINT( _L( "Camera => CCamDiskChangeListener::~CCamDiskChangeListener" ) );
-  Cancel();
-  PRINT( _L( "Camera <= CCamDiskChangeListener::~CCamDiskChangeListener" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDiskChangeListener::CCamDiskChangeListener
-// -----------------------------------------------------------------------------
-//
-CCamDriveChangeNotifier::CCamDiskChangeListener::CCamDiskChangeListener(
-                  RFs& aFs,
-                  TDriveNumber aDrive,                                         
-                  CCamDriveChangeNotifier& aObserver )
-    : CActive( CActive::EPriorityIdle ),
-      iFs( aFs ),
-      iDrive( aDrive ),
-      iObserver( aObserver )                                          
-  {
-  CActiveScheduler::Add( this );
-  }
-    
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDiskChangeListener::Start
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::CCamDiskChangeListener::Start()
-  {
-  PRINT( _L( "Camera => CCamDiskChangeListener::Start" ) );
-  if ( !IsActive() )
-    {
-    PRINT( _L( "Camera <> CCamDiskChangeListener::Start SetActive()" ) );
-        
-    // Start listening for change events
-    if(iDrive == EDriveE)
-        {
-        iFs.NotifyChange( ENotifyDisk, iStatus, KDriveE );
-        }
-    else if( iDrive == EDriveF )
-        {
-        iFs.NotifyChange( ENotifyDisk, iStatus, KDriveF );
-        }
-    else
-        {
-        iFs.NotifyChange( ENotifyDisk, iStatus );
-        }
-    
-    SetActive();
-    }
-  PRINT( _L( "Camera <= CCamDiskChangeListener::Start" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDiskChangeListener::Stop
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::CCamDiskChangeListener::Stop()
-  {
-  PRINT( _L( "Camera => CCamDiskChangeListener::Stop" ) );
-  Cancel();
-  PRINT( _L( "Camera <= CCamDiskChangeListener::Stop" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier:::CCamDiskChangeListener::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::CCamDiskChangeListener::DoCancel()
-  {
-  PRINT( _L( "Camera => CCamDiskChangeListener::DoCancel" ) );
-  iFs.NotifyChangeCancel();
-  PRINT( _L( "Camera <= CCamDiskChangeListener::DoCancel" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDiskChangeListener::RunL
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::CCamDiskChangeListener::RunL()
-  {
-  PRINT1( _L( "Camera => CCamDiskChangeListener::RunL, iStatus: %d" ), iStatus.Int() );
-  TInt ret = KErrNone;
-  
-  if ( iStatus == KErrNone )
-    {
-    TUint driveStatus;  
-    ret = DriveInfo::GetDriveStatus(iFs, iDrive, driveStatus );
-    
-    if( ret == KErrNone)
-        {
-        if( !( driveStatus & DriveInfo::EDrivePresent ) ||
-                ( ( driveStatus & DriveInfo::EDrivePresent ==  DriveInfo::EDrivePresent ) &&
-                  ( driveStatus & DriveInfo::EDriveInUse ==  DriveInfo::EDriveInUse ) ) )
-            {
-            RDebug::Print(_L("CCamDiskChangeListener::RunL Dismount:%d"),iDrive);
-            ret = iObserver.NotifyChangeL( MCamDriveChangeNotifierObserver::EDriveDismount );
-            }
-        else if( ( driveStatus & DriveInfo::EDrivePresent ) == DriveInfo::EDrivePresent )
-            {
-            RDebug::Print(_L("CCamDiskChangeListener::RunL Mount:%d"),iDrive);
-            ret = iObserver.NotifyChangeL( MCamDriveChangeNotifierObserver::EDriveMount );
-            }
-        }
-
-    if( ret == KErrNone )
-      {
-      Start();
-      }
-    }
-  else if ( iStatus == KErrNotReady )
-    {
-    // Give other threads chance to run	
-    User::After( 0 );	
-    Start();
-    }	
-
-  PRINT( _L( "Camera <= CCamDiskChangeListener::RunL" ) );
-  }
-
-                
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CCamDriveChangeNotifier
-// -----------------------------------------------------------------------------
-//
-CCamDriveChangeNotifier::CCamDriveChangeNotifier(
-                                    RFs& aFs,
-                                    MCamDriveChangeNotifierObserver& aObserver )
-    : iObserver( aObserver ),
-      iFs( aFs )
-  {
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::NewL
-// -----------------------------------------------------------------------------
-//
-CCamDriveChangeNotifier* CCamDriveChangeNotifier::NewL(
-                                  RFs& aFs,
-                                  MCamDriveChangeNotifierObserver& aObserver )
-  {
-  PRINT( _L( "Camera => CCamDriveChangeNotifier::NewL" ) );
-
-  CCamDriveChangeNotifier* self =
-                      new( ELeave ) CCamDriveChangeNotifier( aFs, aObserver );
-  
-  self->ConstructL();
-  
-  PRINT( _L( "Camera <= CCamDriveChangeNotifier::NewL" ) );
-  return self;
-  }
-
-
-// Destructor
-CCamDriveChangeNotifier::~CCamDriveChangeNotifier()
-  {
-  PRINT( _L( "Camera => CCamDriveChangeNotifier::~CCamDriveChangeNotifier" ) );
-  CancelMonitoring();
-  iListeners.ResetAndDestroy();
-  if( iUsbMSWatcher )
-      {
-      if( iUsbMSWatcher->IsActive() )
-          {
-          iUsbMSWatcher->Cancel();
-          }
-      delete iUsbMSWatcher;
-      iUsbMSWatcher = NULL;
-      }
-  if ( iUSBTimer )
-      {
-      if( iUSBTimer->IsActive() )
-          {
-          iUSBTimer->Cancel();
-          }
-      delete iUSBTimer;
-      iUSBTimer = NULL;
-      }
-  PRINT( _L( "Camera <= CCamDriveChangeNotifier::~CCamDriveChangeNotifier" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::StartMonitoring
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::StartMonitoring()
-  {
-  PRINT( _L( "Camera => CCamDriveChangeNotifier::StartMonitoring" ) );
-
-  for ( TInt i = iListeners.Count(); --i >= 0; )
-    {
-    iListeners[i]->Start();
-    }
-  
-  iUsbMSWatcher->Subscribe();
-  
-  PRINT( _L( "Camera <= CCamDriveChangeNotifier::StartMonitoring" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::CancelMonitoring
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::CancelMonitoring()
-  {
-  PRINT( _L( "Camera => CCamDriveChangeNotifier::CancelMonitoring" ) );
-
-  for ( TInt i = iListeners.Count(); --i >= 0; )
-    {
-    iListeners[i]->Stop();
-    }
-  //iUsbMSWatcher->Cancel();
-  PRINT( _L( "Camera <= CCamDriveChangeNotifier::CancelMonitoring" ) );
-  }
-    
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::NotifyChangeL
-// -----------------------------------------------------------------------------
-//
-TInt CCamDriveChangeNotifier::NotifyChangeL( 
-                  MCamDriveChangeNotifierObserver::TCamDriveChangeType aType )
-  {
-  PRINT( _L( "Camera => CCamDriveChangeNotifier::NotifyChangeL" ) );
-  TInt ret = iObserver.DriveChangeL( aType );
-  if ( ret == KErrNone && aType == 
-                            MCamDriveChangeNotifierObserver::EDriveDismount )
-    {
-    PRINT( _L("Camera <> iFs.AllowDismount( EDriveE )") )
-    iFs.AllowDismount( EDriveE );
-    PRINT( _L("Camera <> iFs.AllowDismount( EDriveD )") )
-    iFs.AllowDismount( EDriveF );
-    }
-        
-  PRINT( _L( "Camera <= CCamDriveChangeNotifier::NotifyChangeL" ) );        
-  return ret;
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::SendAllowDismount
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::SendAllowDismount()
-  {
-  PRINT( _L( "Camera => CCamDriveChangeNotifier::SendAllowDismount" ) );
-  iFs.AllowDismount( EDriveE );
-  iFs.AllowDismount( EDriveF );
-  StartMonitoring();
-  PRINT( _L( "Camera <= CCamDriveChangeNotifier::SendAllowDismount" ) );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::HandlePropertyChangedL
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::HandlePropertyChangedL( const TUid& aCategory, const TUint aKey )
-    {
-    PRINT( _L( "Camera => CCamDriveChangeNotifier::HandlePropertyChangedL" ) );
-    if(KPSUidUsbWatcher == aCategory && 
-       KUsbWatcherSelectedPersonality == aKey)
-        {
-        TInt value = 0;
-        iUsbMSWatcher->Get( value );
-        if( KUsbPersonalityIdMS == value )
-            {
-            PRINT( _L( "Camera => CCamDriveChangeNotifier::HandlePropertyChangedL StartTimer" ) );
-            iUSBTimer->Cancel();
-            iUSBTimer->StartTimer();
-            }
-        else
-            {
-            if( iMassStorageModeOn )
-                {
-                PRINT( _L("CCamDriveChangeNotifier::HandlePropertyChangedL KUsbPersonalityIdMS Off") );
-                iMassStorageModeOn = EFalse;
-                iObserver.DriveChangeL( MCamDriveChangeNotifierObserver::EDriveUSBMassStorageModeOff );
-                }
-            }
-        }
-    
-    PRINT( _L( "Camera <= CCamDriveChangeNotifier::HandlePropertyChangedL" ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::ConstructL()
-    {
-    
-    iListeners.AppendL( CCamDiskChangeListener::NewLC( iFs, EDriveE, 
-                          *this ) );
-    
-    iListeners.AppendL( CCamDiskChangeListener::NewLC( iFs, EDriveF, 
-                         *this ) );  
-    
-    iUsbMSWatcher = CCamPropertyWatcher::NewL(*this, KPSUidUsbWatcher, 
-                        KUsbWatcherSelectedPersonality );
-    
-    iUSBTimer = CCamTimer::NewL( KUSBTimeout, TCallBack(USBTimerCallBack, this));
-    CleanupStack::Pop(); // listener
-    CleanupStack::Pop(); // listener 2
-    //if USB has been inserted as Mass Storage, USB timer need to start
-    TInt value = 0;
-    iUsbMSWatcher->Get( value );
-    if( iUSBTimer && KUsbPersonalityIdMS == value ) 
-        {
-        iUSBTimer->Cancel();
-        iUSBTimer->StartTimer();
-        }
-    
-    StartMonitoring();
-
-    }
-
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::USBTimerCallBackL
-// -----------------------------------------------------------------------------
-//
-void CCamDriveChangeNotifier::USBTimerCallBackL()
-    {
-    TInt value = 0;
-    iUsbMSWatcher->Get( value );
-    if( KUsbPersonalityIdMS == value )
-        {
-        PRINT( _L("CCamDriveChangeNotifier::USBTimerCallBackL KUsbPersonalityIdMS On") );
-        iMassStorageModeOn = ETrue;
-        iObserver.DriveChangeL( MCamDriveChangeNotifierObserver::EDriveUSBMassStorageModeOn );
-        }
-    else
-        {
-        if( iMassStorageModeOn )
-            {
-            PRINT( _L("CCamDriveChangeNotifier::USBTimerCallBackL KUsbPersonalityIdMS Off") );
-            iMassStorageModeOn = EFalse;
-            iObserver.DriveChangeL( MCamDriveChangeNotifierObserver::EDriveUSBMassStorageModeOff );
-            }
-        }
-    }
-        
-// -----------------------------------------------------------------------------
-// CCamDriveChangeNotifier::USBTimerCallBack
-// -----------------------------------------------------------------------------
-//
-TInt CCamDriveChangeNotifier::USBTimerCallBack( TAny* aPtr )
-    {
-    CCamDriveChangeNotifier* self = static_cast<CCamDriveChangeNotifier*>(aPtr);
-    if( self )
-        {
-        TRAP_IGNORE( self->USBTimerCallBackL() );
-        }
-    return KErrNone;
-    }
-
-//  End of File