usbengines/usbwatcher/src/cusbpersonalitynotifier.cpp
changeset 34 7858bc6ead78
parent 31 dfdd8240f7c8
child 35 9d8b04ca6939
--- a/usbengines/usbwatcher/src/cusbpersonalitynotifier.cpp	Fri May 14 16:51:51 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,446 +0,0 @@
-/*
-* Copyright (c) 2006-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:  CUsbPersonalityNotifier class prevents confirmation notes
-*                from overlapping.
-*
-*/
-
-
-#include <cusbpersonalitynotifier.h>
-#include "debug.h"
-
-// ============================ MEMBER FUNCTIONS ==============================
-
-// ----------------------------------------------------------------------------
-// C++ constructor
-// ----------------------------------------------------------------------------
-//
-CUsbPersonalityNotifier::CUsbPersonalityNotifier()
-    : CActive( EPriorityStandard )
-    {
-    LOG_FUNC
-        
-    CActiveScheduler::Add( this );
-    }
-
-// ----------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// ----------------------------------------------------------------------------
-//
-void CUsbPersonalityNotifier::ConstructL()
-    {
-    LOG_FUNC
-    }
-
-// ----------------------------------------------------------------------------
-// Two-phased constructor.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C CUsbPersonalityNotifier* CUsbPersonalityNotifier::NewL()
-    {
-    LOG_FUNC
-
-    CUsbPersonalityNotifier* self = new ( ELeave ) CUsbPersonalityNotifier();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop(); // pop self
-    return self;
-    }
-    
-// ----------------------------------------------------------------------------
-// Destructor
-// ----------------------------------------------------------------------------
-//
-EXPORT_C CUsbPersonalityNotifier::~CUsbPersonalityNotifier()
-    {
-    LOG_FUNC
-    
-    Cancel();
-    
-    for( TInt i = 0; iNotifierClient.Count(); i++ )
-        {
-        delete iNotifierClient[i];
-        }
-        
-    iNotifierClient.Reset();
-    iNotifierClient.Close();
-    }
-
-// ----------------------------------------------------------------------------
-// Called when information note or query is completed.
-// ----------------------------------------------------------------------------
-//
-void CUsbPersonalityNotifier::RunL()
-    {
-    LOG_FUNC
-        
-    LOG1( "iStatus = %d", iStatus.Int() );
-        
-    if( iCallBack )
-        {
-        iCallBack->CallBack( iStatus.Int() );
-        }
-        
-    iNotifier.CancelNotifier( iNotifierUid );
-    iNotifier.Close();
-    
-    iState = EUsbPersonalityNotifierIdle;
-    
-    if( iRequestStatus )
-        {
-        User::RequestComplete( iRequestStatus, iStatus.Int() );
-        iRequestStatus = NULL;
-        }
-    
-    if( iNotifierClient.Count() )
-        {        
-        if( iNotifierClient[0]->iConfirmation )
-            {
-            DoShowQuery( iNotifierClient[0]->iCallBack,
-                    iNotifierClient[0]->iNotifierUid,
-                    iNotifierClient[0]->iBuffer,
-                    iNotifierClient[0]->iResponse,
-                    iNotifierClient[0]->iRequestStatus );
-            }
-        else
-            {
-            DoShowNote( iNotifierClient[0]->iNotifierUid,
-                    iNotifierClient[0]->iBuffer,
-                    iNotifierClient[0]->iResponse );
-            }
-        
-        delete iNotifierClient[0];
-        iNotifierClient.Remove( 0 );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// This method is never called in this implementation.
-// ----------------------------------------------------------------------------
-//
-TInt CUsbPersonalityNotifier::RunError( TInt aError )
-    {
-    LOG_FUNC
-    
-    LOG1( "aError %d", aError );
-    // Currently no leaving functions called in RunL, thus nothing should cause
-    // this to be called -> return.
-    return KErrNone;
-    }
-
-// ----------------------------------------------------------------------------
-// Called if there is outstanding request.
-// ----------------------------------------------------------------------------
-//
-void CUsbPersonalityNotifier::DoCancel()
-    {
-    LOG_FUNC
-    
-    if( EUsbPersonalityNotifierStarted == iState )
-        {
-        LOG( "Canceling and closing notifier" );
-        iNotifier.CancelNotifier( iNotifierUid );
-        iNotifier.Close();
-        iState = EUsbPersonalityNotifierIdle;
-        
-        if( iRequestStatus )
-            {
-            LOG( "Completing request" );
-            User::RequestComplete( iRequestStatus, KErrCancel );
-            iRequestStatus = NULL;
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// Show query or queue it.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CUsbPersonalityNotifier::ShowQuery( TUid aNotifierUid,
-        const TDesC8 &aBuffer, TDes8 &aResponse, 
-        MUsbNotifierCallBack* aCallBack, TRequestStatus* aStatus )
-    {
-    LOG_FUNC
-
-    TInt ret = KErrNone;
-        
-    if( aStatus )
-        {
-        // set to pending
-        *aStatus = KRequestPending;
-        }
-    
-    if( iState == EUsbPersonalityNotifierIdle )
-        {
-        // no request pending, don't que the requests
-        ret = DoShowQuery( aCallBack, aNotifierUid, aBuffer, aResponse,
-                aStatus );
-        }
-    else
-        {
-        // request pending, put request to the queue
-        TNotifierClient* ptr;
-        
-        if( (ptr = new TNotifierClient( aCallBack, aNotifierUid, aBuffer,
-                aResponse, aStatus, ETrue ) ) == NULL )
-            {
-            return KErrGeneral;
-            }
-                
-        iNotifierClient.Append(ptr);
-        }
-    
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// Show note or queue it.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CUsbPersonalityNotifier::ShowNote( TUid aNotifierUid, 
-        const TDesC8 &aBuffer, TDes8 &aResponse )
-    {
-    LOG_FUNC
-        
-    TInt ret = KErrNone;
-    
-    if( EUsbPersonalityNotifierIdle == iState )
-        {
-        // no request pending, don't que the requests
-        ret = DoShowNote( aNotifierUid, aBuffer, aResponse );
-        }
-    else
-        {
-        // request pending, put request to the queue
-        TNotifierClient* ptr;
-        
-        if( ( ptr = new TNotifierClient( NULL, aNotifierUid, aBuffer, 
-                aResponse, NULL, EFalse ) ) == NULL )
-            {
-            return KErrGeneral;
-            }
-                
-        iNotifierClient.Append( ptr );
-        }
-    
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// Cancel currently on going query and all queued gueries and notes.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CUsbPersonalityNotifier::CancelAll()
-    {
-    LOG_FUNC
-
-    Cancel();
-    
-    for (TInt i = 0; i < iNotifierClient.Count(); i++ )
-        {
-        LOG( "Deleting client entry" );
-        
-        if( iNotifierClient[i]->iRequestStatus )
-            {
-            LOG( "Completing request" );
-            User::RequestComplete( iNotifierClient[i]->iRequestStatus, 
-                KErrCancel );
-            }
-        
-        delete iNotifierClient[i];
-        iNotifierClient[i] = NULL;
-        }
-    
-    iNotifierClient.Reset();
-    
-    }
-
-// ----------------------------------------------------------------------------
-// Cancel specific query.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CUsbPersonalityNotifier::CancelQuery( TUid aNotifierUid )
-    {
-    LOG_FUNC
-
-    TBool done = EFalse;
-    TInt i = 0;
-    
-    if( iNotifierUid == aNotifierUid )
-        {
-        Cancel();
-        }
-
-    while( !done )
-        {
-        for( i = 0; i < iNotifierClient.Count(); i++ )
-            {
-            LOG1( "CancelQuery i = %d", i );
-
-            if(iNotifierClient[i]->iNotifierUid == aNotifierUid)
-                {
-                LOG( "Uid match" );
-                if(iNotifierClient[i]->iRequestStatus)
-                    {
-                    User::RequestComplete(iNotifierClient[i]->iRequestStatus,
-                        KErrCancel);
-                    }
-
-                delete iNotifierClient[i];
-                iNotifierClient.Remove(i);
-                break;
-                }
-            }
-        
-        if( i >= iNotifierClient.Count() )
-            {
-            done = ETrue;
-            }
-        }    
-    }
-    
-// ----------------------------------------------------------------------------
-// Cancel all other queued gueries and notes but the current.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CUsbPersonalityNotifier::CancelAllButCurrent()
-    {
-    LOG_FUNC
-
-    if( iNotifierClient.Count() > 0 )
-        {
-        //The index 0 is the current, which is not deleted.
-        for( TInt i = 1; i < iNotifierClient.Count(); i++ )
-            {
-           LOG( "Deleting client entry" );
-            
-            if( iNotifierClient[i]->iRequestStatus )
-                {
-                LOG( "Completing request" );
-                User::RequestComplete( iNotifierClient[i]->iRequestStatus,
-                        KErrCancel);
-                }
-            
-            delete iNotifierClient[i];
-        }
-
-        //Remove all but the 1st
-        TNotifierClient* ptr = iNotifierClient[0];
-        iNotifierClient.Reset();
-        iNotifierClient.Append( ptr );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// Return ETrue, if the notifier with the UID is currently showing.
-// DEPRICATED
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TBool CUsbPersonalityNotifier::IsShowing( TUid aNotifierUid )
-    {
-    LOG_FUNC
-
-    return ( ( iState == EUsbPersonalityNotifierStarted ) 
-        && ( iNotifierUid == aNotifierUid) );
-    }
-
-// ----------------------------------------------------------------------------
-// Implementation for showing notes.
-// ----------------------------------------------------------------------------
-//
-TInt CUsbPersonalityNotifier::DoShowNote( TUid aNotifierUid, 
-    const TDesC8 &aBuffer, TDes8 &aResponse )
-    {
-    LOG_FUNC
-
-    TInt ret = KErrNone;
-            
-    iCallBack = NULL;
-    iNotifierUid = aNotifierUid;
-    iRequestStatus = NULL;
-    
-    // initializations
-    ret = iNotifier.Connect();
-    
-    if( ret != KErrNone )
-        {
-        LOG1( "ERROR: RNotifier::Connect = %d", ret );
-        return ret;
-        }
-    
-    ret = iNotifier.StartNotifier( aNotifierUid, aBuffer, aResponse );
-    
-    if( ret != KErrNone )
-        {
-        LOG1( "ERROR: StartNotifier() failed. Code: %d", ret );
-        }
-        
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, ret );
-    SetActive();
-    iState = EUsbPersonalityNotifierStarted;
-    
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// Implementation for showing queries.
-// ----------------------------------------------------------------------------
-//
-TInt CUsbPersonalityNotifier::DoShowQuery( MUsbNotifierCallBack* aCallBack, 
-        TUid aNotifierUid, const TDesC8 &aBuffer, TDes8 &aResponse,
-        TRequestStatus* aStatus )
-    {
-    LOG_FUNC
-        
-    TInt ret;
-        
-    iCallBack = aCallBack;
-    iNotifierUid = aNotifierUid;
-    iRequestStatus = aStatus;
-    
-    if( ( ret = iNotifier.Connect() ) != KErrNone )
-        {
-        LOG( "ERROR in notifier connection!" );
-        return ret;
-        }
-
-    iNotifier.StartNotifierAndGetResponse( iStatus, aNotifierUid, aBuffer,
-            aResponse );
-    SetActive();
-    iState = EUsbPersonalityNotifierStarted;
-    
-    return ret;
-    }
-    
-// ----------------------------------------------------------------------------
-// Constructor of TNotifierClient
-// ----------------------------------------------------------------------------
-//
-CUsbPersonalityNotifier::TNotifierClient::TNotifierClient(
-        MUsbNotifierCallBack* aCallBack, TUid aNotifierUid, 
-        const TDesC8 &aBuffer, TDes8 &aResponse, TRequestStatus* aStatus,
-        TBool aConfirmation )
-    : iCallBack( aCallBack )
-    , iNotifierUid( aNotifierUid )
-    , iBuffer( aBuffer )
-    , iResponse( aResponse )
-    , iRequestStatus( aStatus )
-    , iConfirmation( aConfirmation )
-    {
-    LOG_FUNC
-        
-    }
-
-// End of file