bluetoothengine/btui/devmodel/src/btregistryobserver.cpp
branchRCL_3
changeset 55 613943a21004
parent 54 0ba996a9b75d
child 56 9386f31cc85b
--- a/bluetoothengine/btui/devmodel/src/btregistryobserver.cpp	Thu Aug 19 10:05:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,256 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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:  Monitors BTRegistry device changes and sends the 
-*				 new status to listener
-*
-*/
-
-#include "btregistryobserver.h"
-#include "debug.h"
-
-#include <bt_subscribe.h>
-const TInt KDeviceArrayDefaultSize=10;
-// ---------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------
-CBTRegistryObserver::CBTRegistryObserver(MBTRegistryObserver* aObserver, 
-    const TBTRegistrySearch aPattern) 
-    	: CActive(CActive::EPriorityHigh), 
-      	  iObserver(aObserver),   iSearchPattern(aPattern)
-    {    
-    TRACE_FUNC_ENTRY
-    CActiveScheduler::Add(this);
-    // The priority will be EPriorityHigh only initially.
-    // after the first successfull retrieval of the devicelist
-    // the priority will be changed to EPriorityLow.
-    
-    // This will make the 1st devicelist drawn as quickly as possible,
-    // but the subsequent refrehes will not decrease the responsiveness
-    // of the Btui.
-    iAnotherEventPending=EFalse;
-    
-    TRACE_FUNC_EXIT
-    }
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::NewL
-// ---------------------------------------------------------------------
-CBTRegistryObserver* CBTRegistryObserver::NewL(MBTRegistryObserver* aObserver,
-	  const TBTRegistrySearch aPattern)
-    {
-    CBTRegistryObserver* self = new (ELeave) CBTRegistryObserver(aObserver, aPattern);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-// ---------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------    
-CBTRegistryObserver::~CBTRegistryObserver()
-    {
-    TRACE_FUNC_ENTRY
-    Cancel();
-    iProperty.Close();
-    delete iDevMan;
-    
-    DeleteAllocatedDevices();
-    
-    delete iRegDeviceArray;
-    iRegDeviceArray=NULL;
-    
-    TRACE_FUNC_EXIT
-    }
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::ConstructL()
-// ---------------------------------------------------------------------
-void CBTRegistryObserver::ConstructL()
-    {
-    TRACE_FUNC_ENTRY
-	iRegDeviceArray = new (ELeave) CBTDeviceArray(KDeviceArrayDefaultSize);    
-    iDevMan =  CBTEngDevMan::NewL(this);
-    iDevMan->SetPriority(CActive::EPriorityHigh);
-    
-    iProperty.Attach(KPropertyUidBluetoothCategory, KPropertyKeyBluetoothGetRegistryTableChange);
-    StartIfNotRunning();
-    TRACE_FUNC_EXIT
-    }
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::Refresh
-// This will simulate registry change event.
-// ---------------------------------------------------------------------    
-void CBTRegistryObserver::Refresh()
-	{
-	TRACE_FUNC_ENTRY
-	
-	__ASSERT_DEBUG(iDevMan, User::Invariant());
-	
-    if (iDevMan->IsActive())
-    	{
-    	// An attempt to start a new search, during a prior
-    	// one. 
-    	iAnotherEventPending=ETrue;
-    	return;
-    	}   
-	Cancel();
-
-    DeleteAllocatedDevices();
-    iDevMan->GetDevices(iSearchPattern, iRegDeviceArray);
-    
-	StartIfNotRunning();    
-    
-    TRACE_FUNC_EXIT    
-	}
-	
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::StartIfNotRunning
-// this have to be called again each time there has been registry event
-// ---------------------------------------------------------------------
-void CBTRegistryObserver::StartIfNotRunning()
-    {
-    TRACE_FUNC_ENTRY
-    if (!IsActive())
-        {
-        TRACE_INFO(_L("Start()"))
-        iIsStopped = EFalse;
-        iProperty.Subscribe(iStatus);
-        SetActive();
-        }
-    TRACE_FUNC_EXIT        
-    }
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::RunL
-// From CAtive
-// This is called when registry has changed. This will not
-// be called when BTRegistry date retrieval is complete, since
-// HandleGetDevicesComplete is called when RBTregistry data retrieval
-// is complete
-// ----------------------------------------------------------------------
-
-void CBTRegistryObserver::RunL()
-    {
-    TRACE_FUNC_ENTRY
-    if(iDevMan && iDevMan->IsActive())
-    	{
-    	// An attempt to start a new search, during a prior
-    	// one. We will not start a new search, but we
-    	// will do it after the current search is complete
-    	iAnotherEventPending=ETrue;
-    	StartIfNotRunning();
-		TRACE_FUNC_EXIT    	
-    	return;
-    	}
-    if(!IsActive())
-    	SetPriority(CActive::EPriorityLow);
-    
-    
-
-    TInt registryTable;
-    iProperty.Get(registryTable);
-    iAnotherEventPending=EFalse;
-    
-    if(iDevMan && iStatus.Int() == KErrNone && registryTable == KRegistryChangeRemoteTable)
-        {
-        TRACE_INFO(_L("Remote table change"))
-        
-        DeleteAllocatedDevices();
-        iDevMan->GetDevices(iSearchPattern, iRegDeviceArray);
-        }
-    StartIfNotRunning();
-    TRACE_FUNC_EXIT
-    }
-
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::HandleGetDevicesComplete
-// From MBTEngDevManObserver
-//
-// This function will not filter out refreshes with no changes,
-// since the connect status may have been changed in those cases, and
-// this class does not know about that
-//
-// It is worth to mention that CBTDeviceContainer will not refresh parts
-// of the screen that are not changed.
-// ---------------------------------------------------------------------
-void  CBTRegistryObserver::HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray)
-    {
-    TRACE_FUNC_ENTRY
-    TRACE_INFO((_L("aErr = %d"), aErr))
-    
-    // the initial view refresh is done. We will decrese
-    // the priority of this component to quarantee UI
-    // responsiveness
-    if(!iDevMan->IsActive())
-    	iDevMan->SetPriority(CActive::EPriorityLow);
-    
-    TRAP_IGNORE(
-		if( aErr != KErrNotFound)
-			iObserver->RegistryChangedL(aDeviceArray );
-		else
-			{
-			// handle the empty response case. The DevMan may issue
-			// NULL in that case 
-			iObserver->RegistryChangedL(iRegDeviceArray );	
-			}
-	);	
-
-    DeleteAllocatedDevices();
-
-	if(iAnotherEventPending)	
-		{
-		// Current results are not sent further, since
-		// there has been changes, witch may have rendered the current
-		// results allready obsolate. Therefore a refresh is made instead
-    
-		iAnotherEventPending=EFalse;
-        iDevMan->GetDevices(iSearchPattern, iRegDeviceArray);
-		}
-    TRACE_FUNC_EXIT		
-    }
-
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::DeleteAllocatedDevices
-// ---------------------------------------------------------------------
-void CBTRegistryObserver::DeleteAllocatedDevices()
-	{
-	TRACE_FUNC_ENTRY
-	if(iRegDeviceArray)
-		{
-        iRegDeviceArray->ResetAndDestroy();
-        }
-    TRACE_FUNC_EXIT		
-	}
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::Cancel
-// From CActive
-// ---------------------------------------------------------------------
-    
-void CBTRegistryObserver::Cancel()
-    {
-    TRACE_FUNC_ENTRY
-    iIsStopped = ETrue;
-    iAnotherEventPending=EFalse;    
-    CActive::Cancel();
-    if (iDevMan) iDevMan->Cancel();
-    DeleteAllocatedDevices();
-    TRACE_FUNC_EXIT    
-    }
-// ---------------------------------------------------------------------
-// CBTRegistryObserver::DoCancel
-// From CActive
-// ---------------------------------------------------------------------
-void CBTRegistryObserver::DoCancel()
-	{
-	TRACE_FUNC_ENTRY
-    iProperty.Cancel();	
-    TRACE_FUNC_EXIT
-	}