bluetoothengine/btui/Ecom/src/BTUIPairedDevicesView.cpp
branchRCL_3
changeset 22 613943a21004
parent 21 0ba996a9b75d
child 23 9386f31cc85b
--- a/bluetoothengine/btui/Ecom/src/BTUIPairedDevicesView.cpp	Thu Aug 19 10:05:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1904 +0,0 @@
-/*
-* Copyright (c) 2002,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:   This is view that handles listing and 
- *  unblocking blocked devices view.
- *
-*/
-
-#include <avkon.hrh>                    // AVKON components
-#include <akntitle.h>
-#include <aknViewAppUi.h>
-#include <BtuiViewResources.rsg>        // Compiled resource ids
-#include <featmgr.h>                    // Feature Manager
-
-#include <AknGlobalNote.h>
-#include <aknnotewrappers.h>
-#include <StringLoader.h>   			// Series 60 localisation stringloader
-#include <AknMediatorFacade.h>
-#include <aknmessagequerydialog.h>
-#include <aknnotewrappers.h>
-#include <aknnavi.h>
-#include <hlplch.h>         			// Help launcher
-#include <btengdiscovery.h> 			// for device search
-
-#include <ctsydomainpskeys.h>
-#include <bt_subscribe.h>
-#include <btengsettings.h>
-#include <centralrepository.h>
-#include <CoreApplicationUIsSDKCRKeys.h>
-#include <bamdesca.h>
-
-#include "debug.h"             
-#include "btui.h" 						// Global declarations
-#include "BTUIPairedDevicesView.h"
-#include "BTUIDeviceContainer.h"
-#include <SecondaryDisplay/BtuiSecondaryDisplayAPI.h>
-#include <csxhelp/bt.hlp.hrh>   // Help IDs
-
-#include <gstabhelper.h>
-#include <btui.mbg>						// Tab icon for General Setting
-#include <bluetoothuiutil.h>
-#include "BTUIMainView.h" 				// base View.
-
-
-const TInt KAutoConnect2ndTry = 1;
-const TUint32 SetExcludePairedDeviceMask = 0x800000;
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CBTUIPairedDevicesView::NewL
-// Two phased constructor called by BT AppUI when serve as part of btui.exe
-// ---------------------------------------------------------
-//
-CBTUIPairedDevicesView* CBTUIPairedDevicesView::NewL(MBtuiPluginViewActivationObserver* aObserver)
-    {
-    CBTUIPairedDevicesView* self = new (ELeave) CBTUIPairedDevicesView(aObserver);
-	CleanupStack::PushL(self);
-	
-	self->iConstructAsGsPlugin = EFalse;	
- 	self->ConstructL();
-	CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CBTUIPairedDevicesView::NewLC
-// Two phased constructor called by mainView when serve as GS Plugin.
-// ---------------------------------------------------------
-//
-CBTUIPairedDevicesView* CBTUIPairedDevicesView::NewLC(CBTUIMainView* aBaseView, CArrayPtrFlat<MGSTabbedView>* aTabViewArray)
-    {
-    CBTUIPairedDevicesView* self = new (ELeave) CBTUIPairedDevicesView();    
-	CleanupStack::PushL( self );
-		
-	self->iConstructAsGsPlugin = ETrue;
- 	self->ConstructL( aBaseView, aTabViewArray );
-
-    return self;
-    }
-    
-
-// ---------------------------------------------------------
-// CBTUIPairedDevicesView::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------
-//
-void CBTUIPairedDevicesView::ConstructL()
-    {
-	TRACE_FUNC_ENTRY
-
-    BaseConstructL(R_BTUI_OTHER_DEVICES_VIEW);
-
-    iCoverDisplayEnabled = FeatureManager::FeatureSupported(KFeatureIdCoverDisplay); 
-    iHelpEnabled = FeatureManager::FeatureSupported(KFeatureIdHelp);
-    
-   	iDeviceSearcher = CBTEngDiscovery::NewL(this);   	
-	iBtEngSettings = CBTEngSettings::NewL(this);
-	iBTPluginMan = CBTUIPluginMan::NewL( AppUi() );
-	iIsAlreadyConnected = EFalse;
-	iExpectedCallBack = 0;
-	TRACE_INFO(_L("Initial iIsAlreadyConnected -> False"))
-    TRACE_FUNC_EXIT
-    }
-
-void CBTUIPairedDevicesView::ConstructL( CBTUIMainView* aBaseView, CArrayPtrFlat<MGSTabbedView>* aTabViewArray )
-    {
-    TRACE_FUNC_ENTRY
-    
-	iBaseView = aBaseView,
-    iTabHelper = CGSTabHelper::NewL();
-    aTabViewArray->AppendL(this); 
-    
-    BaseConstructL(R_BTUI_OTHER_DEVICES_VIEW_GS);
-    iCoverDisplayEnabled = FeatureManager::FeatureSupported(KFeatureIdCoverDisplay); 
-    iHelpEnabled = FeatureManager::FeatureSupported(KFeatureIdHelp);
-    
-   	iDeviceSearcher = CBTEngDiscovery::NewL(this);
-    iBtEngSettings=CBTEngSettings::NewL(this);	
-    iBTPluginMan = CBTUIPluginMan::NewL( AppUi() );
-	iIsAlreadyConnected = EFalse;
-	TRACE_INFO(_L("Initial iIsAlreadyConnected = False"))
-    iExpectedCallBack = 0;
-	
-	TRACE_FUNC_EXIT
-    }
-  
-// ---------------------------------------------------------
-// CBTUIBlockedDevicesView::CBTUIBlockedDevicesView
-// ---------------------------------------------------------
-    
-CBTUIPairedDevicesView::CBTUIPairedDevicesView( MBtuiPluginViewActivationObserver* aObserver )
-	: iActivationObserver(aObserver)
-	{
-	}        
-
-// ---------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------
-//
-CBTUIPairedDevicesView::~CBTUIPairedDevicesView()
-    {
-	TRACE_FUNC_ENTRY
-
-	//close dialogs if any
-	TRAP_IGNORE(
-		DialogDismissedL(EAknSoftkeyCancel);
-	);
-
-	delete iActive;
-	
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack(*this, iContainer);
-		delete iContainer;           
-		iContainer = NULL;
-        }
-            
-    if(iDeviceSearcher)
-        {
-    	// Canceling devicesearches is done by DialogDismissedL(),
-    	// so it is not done here    	
-    	delete iDeviceSearcher;
-    	iDeviceSearcher = NULL ;
-        }
-	delete iConnectDevice;
-	iConnectDevice=NULL;
-	
-	delete iPairingDevice;
-	delete iBtEngSettings;
-	delete iBTPluginMan;
-	
-	if(iConstructAsGsPlugin)
-	    	delete iTabHelper;	
-	
-	CancelDisconnectQueryDlg();
-	
-    TRACE_FUNC_EXIT
-    }
-
-// ---------------------------------------------------------
-// From CAknView
-// CBTUIPairedDevicesView::Id
-// ---------------------------------------------------------
-//
-TUid CBTUIPairedDevicesView::Id() const
-    {
-	TRACE_FUNC_ENTRY    
-    return KBtuiPluginUidPairedDevicesView;//KBTOtherDevicesViewId;
-    }
-
-
-
-
-// ---------------------------------------------------------
-// From CAknView
-// CBTUIPairedDevicesView::HandleCommandL 
-// Redirects commands to the appui class.
-// ---------------------------------------------------------
-//
-void CBTUIPairedDevicesView::HandleCommandL(TInt aCommand)
-    {
-	TRACE_FUNC_ENTRY
-
-    switch (aCommand)
-        {
-        
-        case EAknSoftkeyBack:      
-            // do not exit if devicechange is in progress.
-            if(iModel->DeviceChangeInProgress() )
-            	return;                
-	        AppUi()->ActivateLocalViewL(iBaseView->GetParentView().iViewUid );
-            break;
-            
-        case EAknSoftkeyExit:
-            {
-			TRACE_INFO(_L("EAknSoftkeyExit"))
-            // do not exit if devicechange or bt discovery is in progress.				
-            if(iModel->DeviceChangeInProgress() 
-                    || iSearchOngoing )   
-            	{
-            	TRACE_INFO(_L("exit denied, due to operation"))
-            	return;
-	           	}
-	           	
-			TRACE_INFO(_L("exit in progress"))
-			AppUi()->ProcessCommandL(EEikCmdExit);            
-            break;
-            }
-
-        case EAknCmdHelp:
-            {
-            #ifdef __SERIES60_HELP
-                HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(),AppUi()->AppHelpContextL());
-            #endif
-            break;
-            }          
-        	
-        case EBTUICmdNewPairedDevice:
-            {
-            iSearchOngoing=ETrue;
-            NewPairedDeviceDlgL();
-            break;
-            }
-
-        case EBTUICmdDelete:
-            {
-            DeleteDeviceDlgL();
-            break;
-            }
-
-        case EBTUICmdDeleteAll:
-            {
-            DeleteAllDevicesDlgL();
-            break;
-            }
-
-        case EBTUICmdGiveNickname:
-            {
-            RenameDeviceDlgL();
-            break;
-            }
-
-        case EBTUICmdSetTrusted:
-            {
-            ChangeDeviceSecurityL(ETrue);
-            break;
-            }
-
-        case EBTUICmdSetUnTrusted:
-            {
-            ChangeDeviceSecurityL(EFalse);
-            break;
-            }
-
-        case EBTUICmdConnect:
-        case EBTUICmdConnectAudio: 
-            {
-            TBTDevice device;
-            device.iIndex = iContainer->CurrentItemIndex();
-            iModel->GetDevice(device);
-            if ( device.iStatus & EStatusBtuiConnected )
-                {
-                // If device is already connected, we do nothing here. 
-                break;
-                }
-            device.iOperation = EOpConnect;
-            ConnectL( device, ETrue );
-	        break;            	
-            }
-
-        case EBTUICmdDisconnect:
-            {
-            DisconnectL();
-            break;
-            }
-  
-        case EBTUICmdSetBlocked:
-        	{
-        	BlockDeviceDlgL();
-        	break;
-        	}
-        	
-        case EBTUICmdSettings:
-        	{
-        	LaunchSettingViewL();
-        	break;
-        	}
-        	
-        default:
-            {
-            AppUi()->HandleCommandL(aCommand);
-            break;
-            }
-        }
-	TRACE_FUNC_EXIT        
-    }
-
-
-// ---------------------------------------------------------
-// From CAknView
-// CBTUIPairedDevicesView::DoActivateL
-// ---------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DoActivateL(const TVwsViewId& /*aPrevViewId*/,
-                                               TUid /*aCustomMessageId*/,
-                                         const TDesC8& /*aCustomMessage*/)
-    {
-	TRACE_FUNC_ENTRY
-
-    iModel = CBTDevModel::NewL(EGroupPaired, this);
-    iContainer = CBTUiDeviceContainer::NewL(ClientRect(), this, EGroupPaired, this);
-    iContainer->SetMopParent(this); // MObjectProvider
-
-    // Setup title
-    HBufC* btTitlePairedDevices = 
-    	iCoeEnv->AllocReadResourceLC(R_BT_TITLE_PAIRED_DEV);
-    CEikStatusPane* statusPane = StatusPane();
-    CAknTitlePane* titlePane;
-    titlePane = (CAknTitlePane*) statusPane->ControlL(
-    	TUid::Uid(EEikStatusPaneUidTitle));
-    titlePane->SetTextL(btTitlePairedDevices->Des());
-    CleanupStack::PopAndDestroy(btTitlePairedDevices); // btTitlePairedDevices
-    btTitlePairedDevices = NULL;
-
-    AppUi()->AddToStackL(*this, iContainer);
-
-    if( iBaseView && iConstructAsGsPlugin)
-        {
-        iTabHelper->CreateTabGroupL( Id(), 
-            static_cast<CArrayPtrFlat<MGSTabbedView>*>
-            (iBaseView->TabbedViews()) ); 
-        } 
-        
-	// MSK menu is added here.
-	// the left key menu is added by resources.
-    MenuBar()->SetContextMenuTitleResourceId(
-    	R_BTUI_MENUBAR_OTHER_DEVICES_VIEW_CONTEXT);		
-	// notify observer   
-    if( iActivationObserver  && iConstructAsGsPlugin == EFalse)
-    {    	    
-        iActivationObserver->PluginViewActivated(EPairedDevicesViewId);        
-    }
-
-	TRACE_FUNC_EXIT
-    }
-
-// ---------------------------------------------------------
-// From CAknView
-// CBTUIPairedDevicesView::DoDeactivate
-// ---------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DoDeactivate()
-    {
-	TRACE_FUNC_ENTRY
-
-    if (iContainer)
-        {
-        AppUi()->RemoveFromStack(iContainer);
-        delete iContainer;
-        iContainer = NULL;
-        }
-	if ( iDeviceSearcher )
-	    {
-	    iDeviceSearcher->CancelSearchRemoteDevice();
-	    }
-    delete iModel;
-    iModel=NULL;
-    if(iConstructAsGsPlugin)
-	    iTabHelper->RemoveTabGroup();  
-    delete iActive;
-    iActive = NULL;
-    iIsPairConnect = EFalse;
-    TRACE_FUNC_EXIT
-    }
-
-// ---------------------------------------------------------
-// From CAknView
-// CBTUIPairedDevicesView::DynInitMenuPaneL
-// Shows only options supported for selected device, if any.
-// If not show only options supported regardless of selected
-// device
-// ---------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DynInitMenuPaneL(TInt aResId, CEikMenuPane* aMenu)
-    {
-	TRACE_FUNC_ENTRY
-	
-	// dim help if it exists and is not supported	
-	TInt tmp;	
-	if (  aMenu->MenuItemExists(EAknCmdHelp,tmp ) )			
-		{			
-		aMenu->SetItemDimmed(EAknCmdHelp,
-		  !FeatureManager::FeatureSupported( KFeatureIdHelp ) );
-		}
-	
-	if ( aResId == R_BTUI_OTHER_DEVICES_VIEW_MENU  )
-	    {
-
-        TInt index = iContainer->CurrentItemIndex();
-    
-        if ( index < 0 ) // No devices at list. Hide all device related commands.
-            {
-            aMenu->SetItemDimmed(EBTUICmdDeleteAll, ETrue); 
-            }
-        else
-            {
-            SetupMenuCmd(index, aMenu);             
-            }        
-	    }
-	
-    if ( aResId == R_BTUI_OTHER_DEVICES_VIEW_MENU_CONTEXT )
-        {
-        iActiveMenuPane = aMenu;
-        TInt index = iContainer->CurrentItemIndex();
-   
-        // If user is fast enough to click the RSK option between 
-        // bt discovery view and device found view,  bt ui will crash.
-        // Therefore, we disable commands if bt discovery is onging.
-        //          
-        if(iSearchOngoing)
-            {
-            aMenu->SetItemDimmed(EBTUICmdGiveNickname, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSetTrusted, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSetUnTrusted, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSetBlocked, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdDelete, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdConnect, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdConnectAudio, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdDisconnect, ETrue);            
-            aMenu->SetItemDimmed(EBTUICmdNewPairedDevice, ETrue);
-            return;
-            }
-        
-        if(index < 0)  // No devices at list. Hide all device related commands.
-            {            
-            TRACE_INFO(_L("no devices in list"))
-            
-            aMenu->SetItemDimmed(EBTUICmdGiveNickname, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSetTrusted, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSetUnTrusted, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSetBlocked, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdDelete, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdConnect, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdConnectAudio, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdDisconnect, ETrue);
-            aMenu->SetItemDimmed(EBTUICmdSettings, ETrue);
-            }
-        else // There are devices at list
-            {
-            SetupMenuCmd(index, aMenu);
-            //Hide New pair device in context menu
-            aMenu->SetItemDimmed(EBTUICmdNewPairedDevice, ETrue);
-            }
-        }
-	TRACE_FUNC_EXIT        
-    }
-    
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::RenameDeviceDlgL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::RenameDeviceDlgL()
-    {
-	TRACE_FUNC_ENTRY
-
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;
-    
-	TBTDevice device;
-    device.iIndex = index;
-	iModel->GetDevice(device);
-	TBTDeviceName name = device.iName;
-	
-    CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL(device.iName);
-    TInt keypress = dlg->ExecuteLD(R_BT_ENTER_NICKNAME_QUERY);
-
-    if(keypress)  // User has accepted the dialog
-        {
-        if(device.iName != name) // Check if the user really changed the name
-        	{
-    		device.iOperation = EOpChangeName;        
-    		// Remove trouble making control chars
-		    AknTextUtils::StripCharacters(device.iName, KAknStripListControlChars);    
-	        device.iName.TrimAll();  // Remove extra spaces    		
-        	iModel->ChangeDevice(device);        	
-        	}
-        }
-	TRACE_FUNC_EXIT        
-    }
-    
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::NewPairedDeviceDlgL
-//
-// Initiate bonding (pairing) by opening the search dialog.
-// DeviceSearchComplete is called after that.
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::NewPairedDeviceDlgL()
-	{
-	TRACE_FUNC_ENTRY	
-	// we must not have other pairing in progress.
-	// we maight issue an error, but none is defined by 
-	// ui spec. Anyhow this should be possible
-	// only by pressing everything roo rapidly.
-	if(iPairingDevice!=NULL)
-		return;
-	iPairingDevice = CBTDevice::NewL();
-	
-	// Here we use last bit in device class to inform bt inquiry notifier 
-	// not to display the device which is already paired and in the paired 
-	// device list.  
-	    
-	// We use DeviceClass to tell btnotif not to show paired device in 
-	// bt discovery notifier through bteng.
-	// Set bit 24 to 1 ( bit 24 is not used for any other purpose currently )	
-	iPairingDevice->SetDeviceClass(iPairingDevice->DeviceClass().DeviceClass() | SetExcludePairedDeviceMask );
-	TInt err = iDeviceSearcher->SearchRemoteDevice(iPairingDevice,
-                                                   &iPairingDevNameEntry, 
-                                                   iPairingDevice->DeviceClass().DeviceClass());
-
-
-	if(err != KErrNone)
-		{
-		delete iPairingDevice;
-		iPairingDevice=NULL;
-        TBTUIViewsCommonUtils::ShowGeneralErrorNoteL();        
-    	}
-	TRACE_FUNC_EXIT    	
-	}
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::DeleteDeviceDlgL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DeleteDeviceDlgL()
-    {
-	TRACE_FUNC_ENTRY
-	
-    iExpectedCallBack = 0;
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;
-
-    TBTDevice device;
-    device.iIndex = index;
-    iModel->GetDevice(device);
-
-    RBuf stringholder;
-    CleanupClosePushL( stringholder );
-
-	TInt tmp=EStatusBtuiConnected|EStatusPhysicallyConnected;
-    // Choose confirmation phrase
-    TInt resourceId = ( device.iStatus & tmp ) ? R_BT_WARN_ERASE_CONNECTED :
-        R_BT_WARN_ERASE;
-    BluetoothUiUtil::LoadResourceAndSubstringL( 
-            stringholder, resourceId, device.iName, 0 );
-
-    // Create confirmation query
-    //
-    CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-
-	if(iCoverDisplayEnabled)
-		{
-        CleanupStack::PushL(dlg); 
-	    dlg->PublishDialogL(ECmdShowBtWarnEraseNote, KUidCoverUiCategoryBtui); 
-	    // initializes cover support    
-        CleanupStack::Pop(dlg); 
-
-		CAknMediatorFacade* covercl = AknMediatorFacade(dlg); // uses MOP, so control provided 
-		if (covercl) // returns null if __COVER_DISPLAY is not defined
-		    {	    
-		    covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(device.iName) ;// takes copy so consts are ok too
-		    covercl->BufStream().CommitL(); // no more data to send so commit buf
-		    }  
-		}
-    TInt keypress = dlg->ExecuteLD(R_BT_WARN_ERASE_QUERY, stringholder);
-
-    CleanupStack::PopAndDestroy(&stringholder);  // stringholder
-
-    if(keypress)  // User has accepted the dialog
-        {
-        // If device is connected we need to first to disconnect 
-        // then unpair, otherwise unpairing does not succeed.
-        if((device.iStatus & EStatusBtuiConnected) == EStatusBtuiConnected)
-        {
-            iExpectedCallBack++;
-            DisconnectWithoutQuery();            
-            return;
-        }
-        device.iOperation = EOpUnpair;
-        iModel->ChangeDevice(device);       
-        }
-
-	TRACE_FUNC_EXIT
-    }
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::DeleteAllDevicesDlgL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DeleteAllDevicesDlgL()
-    {
-	TRACE_FUNC_ENTRY
-	
-    iExpectedCallBack = 0;
-    CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-    TInt keypress = KErrNone;
-    
-    CleanupStack::PushL(dlg); 
-
-    // Choose and execute confirmation query
-    //
-    if (iModel->IsAnyDeviceConnected())
-        {
-		if(iCoverDisplayEnabled)
-			{
-            dlg->PublishDialogL(ECmdShowBtWarnEraseAllConnectedQuery, KUidCoverUiCategoryBtui); // initializes cover support    
-			}
-
-        keypress = dlg->ExecuteLD(R_BT_WARN_ERASE_ALL_CONNECTED_QUERY);
-        }
-    else
-        {        
-		if(iCoverDisplayEnabled)
-			{
-	        dlg->PublishDialogL(ECmdShowBtWarnEraseAllQuery, KUidCoverUiCategoryBtui); // initializes cover support    
-			}
-
-        keypress = dlg->ExecuteLD(R_BT_WARN_ERASE_ALL_QUERY);
-        }
-    CleanupStack::Pop(dlg); 
-
-    if(keypress)  // User has accepted the dialog
-        {
-        TInt count = iContainer->CountItems();   
-        for (TInt i = 0; i < count; i++)
-           {
-           // If device is connected we need to first to disconnect 
-           // then unpair, otherwise unpairing does not succeed.                      
-           TBTDevice device;
-           device.iIndex = i;
-           iModel->GetDevice(device);
-           if((device.iStatus & EStatusBtuiConnected) == EStatusBtuiConnected)
-               {
-               iExpectedCallBack++;
-               }
-           }
-        TRACE_INFO((_L("iExpectedCallBack %d"), iExpectedCallBack ))
-        
-        for (TInt i = 0; i < count; i++)
-            {
-            // If device is connected we need to first to disconnect 
-            // then unpair, otherwise unpairing does not succeed.                      
-            TBTDevice device;
-            device.iIndex = i;
-            iModel->GetDevice(device);           
-            
-            if((device.iStatus & EStatusBtuiConnected) == EStatusBtuiConnected)
-                {
-                //disconnect it first, removal will be done in 
-                //callback NotifyChangeDeviceCompleteL for ChangeDevice() below
-                TRACE_INFO((_L("EOpDisconnect issued for %d"), i ))
-                device.iOperation = EOpDisconnect;
-                iModel->ChangeDevice(device);  
-                }
-            else
-                {
-                //otherwise, just remove it from the paired view
-                device.iOperation = EOpUnpair;
-                iModel->ChangeDevice(device);
-                }
-            }
-        }
-
-	TRACE_FUNC_EXIT
-    }
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::BlockDeviceDlgL
-// ----------------------------------------------------------
-void CBTUIPairedDevicesView::BlockDeviceDlgL()
-	{
-	TRACE_FUNC_ENTRY
-
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;
-			
-    TBTDevice device;
-    device.iIndex = index;
-    iModel->GetDevice(device);
-
-	//check if this is connected device
-		
-	HBufC* header= iCoeEnv->AllocReadResourceLC(R_BT_OPTION_BLOCK_DEVICE_HEADER); 
-	
-	RBuf stringHolder;
-	CleanupClosePushL( stringHolder );
-	TInt resouseId;
-	if (device.iStatus & (EStatusBtuiConnected|EStatusPhysicallyConnected) )
-	    {
-	    resouseId = iHelpEnabled? R_BT_OPTION_BLOCK_PAIRED_DEVICE_HELP : 
-            R_BT_OPTION_BLOCK_PAIRED_DEVICE_NOHELP;
-	    }
-	else
-	    {
-	    resouseId = iHelpEnabled ? R_BT_OPTION_BLOCK_PAIRED_DEVICE_HELP :
-            R_BT_OPTION_BLOCK_PAIRED_DEVICE_NOHELP;
-	    }
-	BluetoothUiUtil::LoadResourceAndSubstringL( 
-	        stringHolder, resouseId, device.iName, 0 );
-	
-	CAknMessageQueryDialog *queryDialog = CAknMessageQueryDialog::NewL (stringHolder, 
-	  CAknQueryDialog::EConfirmationTone);		
-	queryDialog->PrepareLC(R_BT_MESSAGE_QUERY);
-	
-	(queryDialog)->Heading()->SetTextL(*header);
-	queryDialog->SetFocus(ETrue);
-
-    TInt keypress=EFalse;
-#ifdef __SERIES60_HELP    
-	if (iHelpEnabled)
-        {
-		HBufC* queryLink = StringLoader::LoadL(R_BT_BLOCK_DEVICE_LINK);
-		TCoeHelpContext hc(KBtuiUid3,KBT_HLP_BLOCKED);
-		TCallBack helpCallBack(CBTUIPairedDevicesView::LaunchHelp , &hc);
-		
-		TRAPD(err,
-			static_cast<CAknMessageQueryDialog*>(queryDialog)->SetLinkTextL(*queryLink);
-			static_cast<CAknMessageQueryDialog*>(queryDialog)->SetLink(helpCallBack););
-		if(err==KErrNone)
-			{
-			keypress = queryDialog->RunLD();
-			}
-        	
-		delete queryLink; 
-        queryLink = NULL;
-        }
-    else
-#endif    
-        {
-        keypress = queryDialog->RunLD();
-        }
-	
-	CleanupStack::PopAndDestroy(&stringHolder);  				 
-	CleanupStack::PopAndDestroy(header);
-	        
-	if(keypress)
-		{
-		device.iOperation = EOpBlock;
-		iModel->ChangeDevice(device);
-		}
-	TRACE_FUNC_EXIT		
-	}
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::ChangeDeviceSecurityL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::ChangeDeviceSecurityL(TBool aTrusted)
-    {
-   	TRACE_FUNC_ENTRY
-
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;
-			
-    TBTDevice device;
-    device.iIndex = index;
-    iModel->GetDevice(device);
-    
-    if(aTrusted)
-        {
-        // set to trusted
-        CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-        
-		if(iCoverDisplayEnabled)
-			{
-			CleanupStack::PushL(dlg); 
-	        dlg->PublishDialogL(ECmdShowBtAuthConfirmQuery, KUidCoverUiCategoryBtui); // initializes cover support    
-		    CleanupStack::Pop(dlg); 
-			}
-        TInt keypress = dlg->ExecuteLD(R_BT_SET_TRUSTED_QUERY);
-
-        if(keypress)  // User has accepted the dialog
-            {
-            device.iOperation = EOpTrust;
-            iModel->ChangeDevice(device);
-            }
-        }
-    else
-        {
-        device.iOperation = EOpUntrust;
-        iModel->ChangeDevice(device);        
-        }
-	TRACE_FUNC_EXIT        
-    }
-    
-// ----------------------------------------------------
-// CBTUIMainView::VisibilityModeChanged
-// ----------------------------------------------------
-//    
-void CBTUIPairedDevicesView::VisibilityModeChanged( TBTVisibilityMode  )
-    {
-	TRACE_FUNC_ENTRY
-	
-	
-	TRACE_FUNC_EXIT	
-    }
-    
-        
-// ----------------------------------------------------
-// CBTUIMainView::PowerStateChanged
-// ----------------------------------------------------
-//
-void CBTUIPairedDevicesView::PowerStateChanged( TBTPowerStateValue  )
-    {
-	TRACE_FUNC_ENTRY
-	
-	if ( iIsConnectDevice )
-		{
-		iModel->ChangeDevice(*iConnectDevice);
-		iIsConnectDevice = EFalse;   // reset flag
-		}
-	
-	TRACE_FUNC_EXIT	
-    }
-    
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::ConnectL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::ConnectL(
-        const TBTDevice& aDevice, TBool aNewWaitNote )
-	{
-	TRACE_FUNC_ENTRY
-	
-	iIsAlreadyConnected = EFalse;
-	TRACE_INFO(_L("Set iIsAlreadyConnected -> False"))
-	//Check that there is not more than max amount of connections allready.		
-	TInt connNum = 0;
-    RProperty::Get(KPropertyUidBluetoothCategory, KPropertyKeyBluetoothPHYCount, connNum);
-	if(connNum > KBtUiMaxConnections) 
-  		{
-        ConnectCompleteL(KErrServerBusy, aDevice);
-  		}
-  	else if(CallOnGoing()&& connNum > 1)
-	  	{
-    	CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(CAknNoteDialog::ENoTone,
-                                                       CAknNoteDialog::ELongTimeout);
-		if(iCoverDisplayEnabled)
-			{
-			CleanupStack::PushL(dlg); 
-    		dlg->PublishDialogL(ECmdShowBtImpossibleIncallNote, KUidCoverUiCategoryBtui); // initializes cover support    
-			CleanupStack::Pop(dlg); 
-			}
-	
-    	dlg->ExecuteLD(R_BT_NOT_INCALL_NOTE);    	
-  		}
-    else
-        {
-		if(TBTUIViewsCommonUtils::TurnBTOnIfNeededL(iBtEngSettings,iCoverDisplayEnabled)!= KErrNone)
-			return;
-		
-		TInt errorCode = KErrNone;  
-		TBTPowerStateValue currentPowerMode;		
-		errorCode=iBtEngSettings->GetPowerState(currentPowerMode); 
-		
-	    if(errorCode)    
-	    	{
-	    	// handle the error code
-	    	return;
-	    	}
-	    if ( aNewWaitNote )
-	        {
-            // Launch wait note              
-            OpenWaitNoteL(iWaitForConnectDlg,R_BT_CONNECTING_TO_WAIT_NOTE,R_BT_CONNECTING_TO ,
-                ECmdShowBtWaitConnectingToNote,aDevice.iName); 
-	        }
-		iConnectDevice=new(ELeave) TBTDevice(aDevice);            
-		iConnectDevice->iOperation=EOpConnect;
-		     
-		if( currentPowerMode == EBTPowerOff )
-			{
-				// turn on the flag IsConnectDevice
-				//
-				iIsConnectDevice = ETrue;
-			}
-        else
-        	{	
-        		// connect device
-        		//
-        		iModel->ChangeDevice(*iConnectDevice);
-        		
-        		// reset IsConnectDevice flag
-        		iIsConnectDevice = EFalse;
-        	}
-        }
-    TRACE_FUNC_EXIT
-	}
-	
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::OpenWaitNoteL
-// ----------------------------------------------------------
-void CBTUIPairedDevicesView::OpenWaitNoteL(CAknWaitDialog*& aWaitDialog,TUint aNoteResource,TUint aNoteTextResource,
-		TSecondaryDisplayBtuiDialogs aSec,const TDesC& aDevName)
-	{
-	TRAPD(err,
-	        RBuf stringholder;
-	        CleanupClosePushL( stringholder );
-	        BluetoothUiUtil::LoadResourceAndSubstringL( 
-	                stringholder, aNoteTextResource, aDevName, 0 );
-	    aWaitDialog = new (ELeave) CAknWaitDialog(
-                    reinterpret_cast<CEikDialog**>(&aWaitDialog), ETrue);
-	    aWaitDialog->PrepareLC(aNoteResource);
-	    aWaitDialog->SetTextL(stringholder);
-
-	    if(iCoverDisplayEnabled)
-	        {
-	        aWaitDialog->PublishDialogL(
-	          aSec, KUidCoverUiCategoryBtui); // initializes cover support    
-	        CAknMediatorFacade* covercl = AknMediatorFacade(aWaitDialog); // uses MOP, so control provided 
-	        if (covercl) // returns null if __COVER_DISPLAY is not defined
-	            {	    
-	            covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(aDevName);// takes copy so consts are ok too
-	            covercl->BufStream().CommitL(); // no more data to send so commit buf
-	            }  
-	        }	        
-	    aWaitDialog->SetCallback(this); // for capturing Cancel keypress	            
-	    aWaitDialog->RunLD();
-	    
-    	CleanupStack::PopAndDestroy(&stringholder); // stringholder
-    );
-    // if the above functions leaves the iWaitNote is deleted, but
-    // not set to NULL. This will cause a problem, when
-    // the items may be deleted again, since it has to
-    // be a member variable, in order to be closed
-    // programmatically.
-    if(err!=KErrNone)
-    	{
-    	// that is why we set it to NULL here and
-    	// continue leaving further.
-        aWaitDialog=NULL;
-		User::Leave(err);	
-    	}
-	}
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::LaunchSettingViewL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::LaunchSettingViewL()
-	{
-	TRACE_FUNC_ENTRY
-	
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;			
-	TBTDevice device;
-	device.iIndex = index;
-	iModel->GetDevice(device);
-	
-	CAknView* settingView = iBTPluginMan->GetSettingViewL(device);
-	if(settingView != NULL)
-		{
-		TUid viewId = settingView->Id();		
-        if(( device.iStatus & EStatusBtuiConnected) == EStatusBtuiConnected )
-            {
-            TBuf8<KMaxBCBluetoothNameLen> DeviceName;
-            DeviceName.Copy(device.iName);
-            AppUi()->ActivateLocalViewL( viewId, KNullUid, DeviceName); 
-            }
-        else
-            {
-            AppUi()->ActivateLocalViewL( viewId ); 
-            }
-		}
-	else 
-		{
-		User::Leave(KErrNotFound);
-		}	
-		
-	TRACE_FUNC_EXIT
-	}
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::DisconnectL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DisconnectL()
-    {
-	TRACE_FUNC_ENTRY
-    
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;
-			
-    TBTDevice device;
-    device.iIndex = index;
-    iModel->GetDevice(device);
-    
-    if ( !( device.iStatus & EStatusBtuiConnected) )
-        {
-        // If device is already disconnected, return immediately.
-        return;
-        }
-    
-	iDisconnectQueryDevice = device;//remember device related with query dialog
-
-    // Create confirmation query
-    RBuf stringholder;
-    CleanupClosePushL( stringholder );
-    BluetoothUiUtil::LoadResourceAndSubstringL( 
-            stringholder, R_BT_DISCONNECT_FROM, device.iName, 0 );
-    if ( !iDisconnectQueryDlg )
-        {
-        iDisconnectQueryDlg = CAknQueryDialog::NewL();
-        }
-
-	if(iCoverDisplayEnabled)
-		{
-	    iDisconnectQueryDlg->PublishDialogL(ECmdShowDisconnectQuery, KUidCoverUiCategoryBtui); // initializes cover support    
-	
-		CAknMediatorFacade* covercl = AknMediatorFacade(iDisconnectQueryDlg); // uses MOP, so control provided 
-		if (covercl) // returns null if __COVER_DISPLAY is not defined
-		    {	    
-		    covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(device.iName);// takes copy so consts are ok too
-		    covercl->BufStream().CommitL(); // no more data to send so commit buf
-		    }  
-		}
-			
-    TInt keypress = iDisconnectQueryDlg->ExecuteLD(R_BT_DISCONNECT_FROM_QUERY, stringholder);
-
-    CleanupStack::PopAndDestroy(&stringholder);  // stringholder
-
-	iDisconnectQueryDlg = NULL;
-    if(keypress)  // User has accepted the dialog
-        {
-        device.iOperation = EOpDisconnect;
-	    iModel->ChangeDevice(device);
-		}
-	TRACE_FUNC_EXIT		
-	}
-	
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::CancelDisconnectQueryDlgL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::CancelDisconnectQueryDlg()
-{
-	TRACE_FUNC_ENTRY
-	
-	if(iDisconnectQueryDlg)
-	{
-		delete iDisconnectQueryDlg;
-		iDisconnectQueryDlg = NULL;
-	}
-	
-	TRACE_FUNC_EXIT	
-}
-
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::DisconnectWithoutQuery
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DisconnectWithoutQuery()
-{
-	TRACE_FUNC_ENTRY
-    
-	TInt index = iContainer->CurrentItemIndex();
-	if(index == KErrNotFound) return;
-			
-    TBTDevice device;
-    device.iIndex = index;
-    iModel->GetDevice(device);  
-    device.iOperation = EOpDisconnect;
-    iModel->ChangeDevice(device);      
-}
-// ----------------------------------------------------------
-// CBTUIPairedDevicesView::ConnectCompleteL
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::ConnectCompleteL(TInt aError,const TBTDevice& aDevice,
-	const RBTDevNameArray* aConflictingDeviceNames)
-    {
-	TRACE_FUNC_ENTRY
-
-    // Dismiss wait note
-    //   
-    if(iConnectDevice)
-        {
-        delete iConnectDevice;
-        iConnectDevice=NULL;
-        }
-    
-	if ( iIsPairConnect )
-	    {
-	    iIsPairConnect = EFalse;
-	    if ( aError != KErrNone && 
-	         aError != KErrCancel &&
-	         aError != KErrNotSupported &&
-	         aError != KErrAlreadyExists && 
-	         aError != KErrServerBusy )
-	        {
-	        // It is possible that we started connecting too soon before the
-	        // device moves to conntable mode from pairing mode. Let's try
-	        // once more:
-	        if ( !iActive )
-	            {
-	            iActive = CBTUIActive::NewL( 
-	                        this, KAutoConnect2ndTry, CActive::EPriorityStandard );
-	            }
-	        iActive->RequestStatus() = KRequestPending;
-	        iActive->GoActive();	
-	        TRequestStatus* stptr = &( iActive->RequestStatus() );
-	        User::RequestComplete( stptr, KErrNone );
-	        TRACE_INFO( _L("CBTUIPairedDevicesView, sceadule auto connect 2nd try") )
-            return;
-	        }
-	    }
-
-    if(iWaitForConnectDlg)
-        {
-        TRACE_INFO(_L("waiting dialog is active, dismiss it"))
-        iWaitForConnectDlg->ProcessFinishedL();
-        }
-	
-    switch (aError)
-        {
-        case KErrCancel:
-        	TRACE_INFO(_L("aError = KErrCancel"))
-            break;
-        case KErrAlreadyExists:	// connection exists allready
-        	{
-          	RBuf stringholder;
-          	CleanupClosePushL( stringholder );
-          	if(aConflictingDeviceNames && aConflictingDeviceNames->Count()> 0)
-        		{        		
-        		if(aConflictingDeviceNames->Count() == 1)
-        			{
-        			BluetoothUiUtil::LoadResourceAndSubstringL( stringholder, 
-        			        R_BT_DISCONNECT_FIRST_PROMPT, 
-        			        *(*aConflictingDeviceNames)[0], 0 );
-        			}
-        		else
-        			{
-        			BluetoothUiUtil::LoadResourceAndSubstringL( stringholder, 
-                        R_BT_DISCONNECT_FIRST_STEREO_PROMPT, 
-                        *(*aConflictingDeviceNames)[0], 0 );
-        			BluetoothUiUtil::AddSubstringL( stringholder, *(*aConflictingDeviceNames)[1], 1 );       					
-        			}
-        		TRACE_INFO(_L("KErrAllreadyExists"))      	  		  
-          		}
-          	else
-          		{
-       			// Showing a note in this case would always show a note with "%U" in it
-       			// so the note is not shown at all
-       			TRACE_INFO(_L("KErrAlreadyExists, but no device given, not showing a notification"))
-				CleanupStack::PopAndDestroy(&stringholder);
-	          	break;	
-          		}
-
-           	CAknInformationNote* note = new (ELeave) CAknInformationNote();
-            
-			if(iCoverDisplayEnabled)
-				{
-				CleanupStack::PushL(note); 			
-		    	note->PublishDialogL(ECmdShowBtDisconnectFirstNote, KUidCoverUiCategoryBtui); // initializes cover support    
-				CleanupStack::Pop(note); 
-
-				CAknMediatorFacade* covercl = AknMediatorFacade(note); // uses MOP, so control provided 
-				if (covercl) // returns null if __COVER_DISPLAY is not defined
-			    	{	
-					if(aConflictingDeviceNames && aConflictingDeviceNames->Count()> 0)			    	    
-						{
-							covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(*(*aConflictingDeviceNames)[0]);	
-						}			    	
-			    	covercl->BufStream().CommitL(); // no more data to send so commit buf
-			    	}  
-				}
-		
-        	note->ExecuteLD(stringholder);
-        	CleanupStack::PopAndDestroy(&stringholder);
-        	}
-        	break;	
-		case KErrServerBusy:
-			{
-        	CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(
-        		CAknNoteDialog::ENoTone,CAknNoteDialog::ELongTimeout);                
-			if(iCoverDisplayEnabled)
-				{
-				CleanupStack::PushL(dlg); 			
-				dlg->PublishDialogL(ECmdBtuiShowBtBusyNote, KUidCoverUiCategoryBtui); // initializes cover support    
-				CleanupStack::Pop(dlg); 			
-				}
-			
-        	dlg->ExecuteLD(R_BT_BUSY);
-			}
-			break;        		
-        case KErrNone:
-            {           
-            
-            TRACE_INFO(_L("aError = KErrNone"))
-            // Create note 
-            //          
-			CAknInformationNote* notePtr = new (ELeave) CAknInformationNote();
-
-            RBuf stringHolder;
-            CleanupClosePushL( stringHolder );
-            
-            BluetoothUiUtil::LoadResourceAndSubstringL( stringHolder,
-                    R_BT_CONF_CONNECTED_PROMPT, aDevice.iName, 0 );
-            
-            if(iCoverDisplayEnabled)
-                    {
-                    CleanupStack::PushL(notePtr); 			
-                    notePtr->PublishDialogL(ECmdBtuiShowBtConfConnected, KUidCoverUiCategoryBtui); // initializes cover support    
-                    CleanupStack::Pop(notePtr); 
-
-                    CAknMediatorFacade* covercl = AknMediatorFacade(notePtr); // uses MOP, so control provided 
-                    if (covercl) // returns null if __COVER_DISPLAY is not defined
-                        {	
-                            covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(aDevice.iName);	
-                          covercl->BufStream().CommitL(); // no more data to send so commit buf
-                        }  
-                    }
-                
-            notePtr->ExecuteLD(stringHolder);        
-            CleanupStack::PopAndDestroy(&stringHolder);
-            }
-            
-            TRAP_IGNORE(LaunchSettingViewL();)
-            break;
-
-        case KErrNotSupported:
-            {
-            TRACE_INFO(_L("error = KErrNotSupported"))
-            
-            RBuf stringHolder;
-            CleanupClosePushL( stringHolder );
-            
-            BluetoothUiUtil::LoadResourceAndSubstringL( stringHolder,
-                    R_BT_DEVICE_NOT_SUPPORTED, aDevice.iName, 0 );
-			
-			// create note
-			//
-			CAknInformationNote* note = new (ELeave) CAknInformationNote();
-            
-			if(iCoverDisplayEnabled)
-				{
-				CleanupStack::PushL(note); 			
-		    	note->PublishDialogL(ECmdBtuiShowBtDeviceNotSupported, KUidCoverUiCategoryBtui); // initializes cover support    
-				CleanupStack::Pop(note); 
-
-				CAknMediatorFacade* covercl = AknMediatorFacade(note); // uses MOP, so control provided 
-				if (covercl) // returns null if __COVER_DISPLAY is not defined
-			    	{	
-						covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(aDevice.iName);	
-						covercl->BufStream().CommitL(); // no more data to send so commit buf
-			    	}  
-				}
-			note->ExecuteLD(stringHolder);
-        	CleanupStack::PopAndDestroy(&stringHolder);
-            }
-            break;
-
-        default:
-            {
-            // Create note
-           	CAknInformationNote* note = new (ELeave) CAknInformationNote();
-            HBufC* stringHolder=StringLoader::LoadLC(R_BT_DEVICE_NOT_AVAIL_NOTE );
-	      
-			if(iCoverDisplayEnabled)
-				{
-				CleanupStack::PushL(note); 			
-		    	note->PublishDialogL(ECmdBtuiShowBtDeviceNotAvail, KUidCoverUiCategoryBtui); // initializes cover support    
-				CleanupStack::Pop(note); 
-			
-				}
-		
-        	note->ExecuteLD(*stringHolder);
-        	CleanupStack::PopAndDestroy(stringHolder);
-        	TRACE_INFO(_L("default error note BT-not-available"))
-            }
-            break;
-        }    
-	TRACE_FUNC_EXIT
-    }
-
-// ------------------------------------------------------
-// CBTUIPairedDevicesView::LaunchHelp
-// static help launching function for TCallback
-// ------------------------------------------------------
-TInt CBTUIPairedDevicesView::LaunchHelp(TAny* aCoeHelpContext)
-	{	
-#ifdef __SERIES60_HELP      
-	//TRACE_FUNC_ENTRY
-	TCoeHelpContext hc;
-	
-	if(aCoeHelpContext==NULL)
-		hc = TCoeHelpContext(KBtuiUid3,KBT_HLP_BLOCKED);
-	else
-		hc = *static_cast<TCoeHelpContext*>(aCoeHelpContext);
-	TRAPD(err,		 
-		CArrayFix< TCoeHelpContext >* array=new (ELeave) CArrayFixFlat< TCoeHelpContext >(1);
-		array->AppendL(hc);
-		CleanupStack::PushL(array);
-		// codescan will complain about CCoeEnv::Static(), however it is not reasonable
-		// avoidable, since this is static funtion.
-        HlpLauncher::LaunchHelpApplicationL(CCoeEnv::Static()->WsSession() , array);
-        CleanupStack::Pop(array);
-   );
-    
-    // the array is not deleted, since deleting it will result
-    // to E32User-CBase 3. It is assumed that HlpLancher is taking care of it.
-    // however this has not been documented.
-    //TRACE_FUNC_EXIT
-    return err;
-#else
-	return KErrNone;    
-#endif    
-	}
-
-// ------------------------------------------------------
-// CBTUIPairedDevicesView::CallOnGoing
-// ------------------------------------------------------
-TBool CBTUIPairedDevicesView::CallOnGoing()
-	{
-	TRACE_FUNC_ENTRY	
-	TInt callState;
-	// Try to get the call state property
-    
-	TInt err = RProperty::Get(KPSUidCtsyCallInformation,
-	 KCTsyCallState, callState); //KPSUidTelephonyCallInformation should be used   // Check also,if retrieving the property value succeeded
-	return (err == KErrNone) ?
-           (callState != EPSCTsyCallStateNone && 
-           callState != EPSCTsyCallStateUninitialized) :
-           EFalse;
-	}
-// ----------------------------------------------------------
-// From MProgressDialogCallback
-// CBTUIPairedDevicesView::DialogDismissedL
-//
-// Cancels pairing/connection operation if user has pressed Cancel softkey.
-// Does nothing if the dialog has been dismissed by this program.
-// ----------------------------------------------------------
-//
-void CBTUIPairedDevicesView::DialogDismissedL(TInt aButtonId )
-    {    
-	TRACE_FUNC_ENTRY
-
-	// it was not canceled, but dialog was closed
-	// because it ended normally, so there is nothing to clean up.
-   if( aButtonId != EAknSoftkeyCancel )
-   		return;
-   
-    // Cancel ongoing operations if any
-    //
-    if ( iWaitForConnectDlg)
-    	{
-        if( iConnectDevice )
-        	{
-	        iModel->CancelChange(*iConnectDevice);
-	        delete iConnectDevice;        	
-			iConnectDevice=NULL;	  
-			iIsPairConnect = EFalse;
-        	}            	
-    	iWaitForConnectDlg = NULL;
-    	}    	
-    if ( iWaitForPairingDlg )
-        {
-        if( iPairingDevice )
-        	{
-	        TBTDevice device;
-	        device.iAddr = iPairingDevice->BDAddr();
-	        device.iOperation = EOpPair;
-
-        	iDeviceSearcher->CancelSearchRemoteDevice();
-        	
-	        iModel->CancelChange(device);
-        	        	
-	        delete iPairingDevice;        	
-			iPairingDevice=NULL;	        			
-        	}        
-        // The dialog has already been deleted by UI framework and
-        // must not be deleted manually.        	
-        iWaitForPairingDlg = NULL;
-        }
-	
-	TRACE_FUNC_EXIT
-    }    
-// ------------------------------------------------------
-// From MBTEngSdpResultReceiver
-// CBTUIPairedDevicesView::ServiceSearchComplete
-// not used and implemented as empty
-// ------------------------------------------------------
-void CBTUIPairedDevicesView::ServiceSearchComplete(const RSdpRecHandleArray& , TUint , TInt)
-	{
-	TRACE_FUNC_ENTRY	
-	}
-// ------------------------------------------------------
-// From MBTEngSdpResultReceiver
-// CBTUIPairedDevicesView::AttributeSearchComplete
-// not used and implemented as empty
-// ------------------------------------------------------
-void CBTUIPairedDevicesView::AttributeSearchComplete(TSdpServRecordHandle, 
-	const RSdpResultArray& ,TInt)
-	{
-	TRACE_FUNC_ENTRY	
-	}
-// ------------------------------------------------------
-// From MBTEngSdpResultReceiver
-// CBTUIPairedDevicesView::AttributeSearchComplete
-// not used and implemented as empty
-// ------------------------------------------------------
-void CBTUIPairedDevicesView::ServiceAttributeSearchComplete(TSdpServRecordHandle ,
-	const RSdpResultArray& ,TInt )
-	{
-	TRACE_FUNC_ENTRY	
-	}
-// ------------------------------------------------------
-// From MBTEngSdpResultReceiver
-// CBTUIPairedDevicesView::DeviceSearchComplete
-// ------------------------------------------------------	
-void CBTUIPairedDevicesView::DeviceSearchComplete(CBTDevice* aDevice, TInt aErr)
-	{
-	TRACE_FUNC_ENTRY	
-
-	TRAPD(err,	DeviceSearchCompleteL(aDevice, NULL, aErr);
-		);
-		// something went wrong.
-	if(err != KErrNone)
-		{
-		TRAP_IGNORE( TBTUIViewsCommonUtils::ShowGeneralErrorNoteL(); );
-		}			
-    iSearchOngoing=EFalse;
-	TRACE_FUNC_EXIT		
-	}
-
-// ------------------------------------------------------
-// From MBTEngSdpResultReceiver
-// CBTUIPairedDevicesView::DeviceSearchComplete
-// ------------------------------------------------------   
-void CBTUIPairedDevicesView::DeviceSearchComplete( CBTDevice* aDevice, 
-        TNameEntry* aNameEntry, TInt aErr )
-    {
-	TRACE_FUNC_ENTRY	
-
-	TRAPD(err,	DeviceSearchCompleteL(aDevice, aNameEntry, aErr);
-		);
-		// something went wrong.
-	if(err != KErrNone)
-		{
-		TRAP_IGNORE( TBTUIViewsCommonUtils::ShowGeneralErrorNoteL(); );
-		}
-    iSearchOngoing=EFalse;
-	TRACE_FUNC_EXIT		    
-    }
-
-// ------------------------------------------------------
-// CBTUIPairedDevicesView::DeviceSearchCompleteL
-// Leaving version of DeviceSearchComplete
-// ------------------------------------------------------
-
-void CBTUIPairedDevicesView::DeviceSearchCompleteL(CBTDevice* aDevice, 
-        TNameEntry* aNameEntry, TInt aErr)
-	{
-	TRACE_FUNC_ENTRY	
-    iSearchOngoing=EFalse;
-	if ( !iPairingDevice )
-	    {
-	    delete iModel;
-	    iModel = NULL;
-	    return;
-	    }
-		// we must  not have multiple pairings at the same time
-	__ASSERT_DEBUG(aDevice->BDAddr() == iPairingDevice->BDAddr(),
-		PANIC(EBTPanicTwoPairingAttemptsAtTheSameTime) );
-
-	// other error condition, most likely dialog cancel.
-	if(aErr != KErrNone && (aErr != KErrAlreadyExists))
-		{
-		delete iPairingDevice;
-		iPairingDevice=NULL;
-		return;
-		}
-
-    // In case user switches the view fast enough before searching starts, 
-	// It crashes the whole btui by iModel is null value.
-	// We add an extra check here
-	//
-	if ( !iModel )
-	    {
-	    delete iPairingDevice;
-	    iPairingDevice=NULL;
-	    return;
-	    }
-		
-	TBTDevice *tmpDevice=iModel->CreateDeviceL(aDevice, aNameEntry);
-	CleanupStack::PushL(tmpDevice);	
-    if(tmpDevice->iStatus & (EStatusPhysicallyConnected|EStatusBtuiConnected|EStatusPaired))	
-        {
-        ShowDisconnecNoteL(tmpDevice);        
-        CleanupStack::PopAndDestroy(tmpDevice);            
-	    delete iPairingDevice;
-	    iPairingDevice=NULL;                                  
-        return;
-        }
-    else        
-	    {
-    	// Launch wait note
-    	OpenWaitNoteL(iWaitForPairingDlg,R_BT_WAITING,R_BT_WAITING_PROMPT,
-           		ECmdShowBtWaitingNote,tmpDevice->iName);     
-
-    	CleanupStack::PopAndDestroy(tmpDevice); 
-    	tmpDevice=NULL;
-    	// and start the pairing	
-    	iModel->ChangeDevice(aDevice, aNameEntry, EOpPair);
-    	// aDevice is not deleted, since it points to iPairingDevice and it is still used
-    	// after this
-        }
-	TRACE_FUNC_EXIT		
-	}
-
-
-// ------------------------------------------------------
-// CBTUIPairedDevicesView::ShowDisconnecNote
-// ------------------------------------------------------	
-void CBTUIPairedDevicesView::ShowDisconnecNoteL(TBTDevice *aDevice)
-    {
-    RBuf stringholder;
-    CleanupClosePushL( stringholder );
-    BluetoothUiUtil::LoadResourceAndSubstringL( 
-            stringholder, R_BT_DISCONNECT_FIRST_PROMPT, aDevice->iName, 0 );
-    // Launch a waiting confirmation note
-    //
-    CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote(ETrue);
-
-    if(iCoverDisplayEnabled)
-    	{
-        CleanupStack::PushL(note); 				
-        note->PublishDialogL(ECmdShowBtSuccesfullyPairedNote, 
-          KUidCoverUiCategoryBtui); // initializes cover support    
-    	CAknMediatorFacade* covercl = AknMediatorFacade(note); // uses MOP, so control provided 
-    	if (covercl) // returns null if __COVER_DISPLAY is not defined
-    	    {	    
-    	    covercl->BufStream() << BTDeviceNameConverter::ToUTF8L(aDevice->iName);// takes copy so consts are ok too
-    	    covercl->BufStream().CommitL(); // no more data to send so commit buf
-    	    }  
-        CleanupStack::Pop(note); 				
-    	}
-
-    note->ExecuteLD(stringholder);
-
-    CleanupStack::PopAndDestroy(&stringholder); // stringholder    
-    
-    }
-
-void CBTUIPairedDevicesView::ConnectIfNeededAfterPairL( TInt aCount )
-    {
-    TRACE_FUNC_ENTRY
-    TBTDevice device;
-    device.iAddr = iPairConnectAddr;
-    iModel->GetDevice(device);
-    device.iOperation = EOpConnect;
-    ConnectL( device, ( aCount ) ? EFalse : ETrue );
-    TRACE_FUNC_EXIT
-    }
-
-// ------------------------------------------------------
-// CBTUIPairedDevicesView::BondingCompleted
-// called by NotifyChangeDeviceComplete
-// ------------------------------------------------------
-void CBTUIPairedDevicesView::BondingCompleteL(TInt aError, const TBTDevice& aDevice)
-	{
-    TRACE_INFO((_L("aError=%d"), aError))
-	// We need to make a copy of the device, since it may be cleaned up
-	// by device refresh.
-	TBTDevice bDevice= aDevice;
-	
-	// this may look useless, however if the device has a given shortName it is listed with it
-	// all the time. If you omnit this line it will be shown with its original deviceName,
-	// dispite it will be listed with the given name
-	iModel->GetDevice(bDevice);
-	 	
-	delete iPairingDevice;
-	iPairingDevice=NULL;
-	           
-    // Dismiss wait note
-    if(iWaitForPairingDlg)
-        {
-        iWaitForPairingDlg->ProcessFinishedL();
-        iWaitForPairingDlg = NULL;
-        }
-	
-    // Error handling
-    switch(aError)
-        {
-        case KErrCancel:
-            break;
-        case KErrAlreadyExists: // This is a legal return value
-        case KErrNone:
-        case KHCIErrorBase:
-            {
-	        if( (bDevice.iStatus & EStatusConnectable) 
-	                && (bDevice.iDeviceClass.MajorDeviceClass() != EMajorDeviceComputer)) 
-	            // Only automatically query for a connectable device but not a computer
-	        	{
-	            iPairConnectAddr = aDevice.iAddr;
-	        	iIsPairConnect = ETrue;
-	        	ConnectIfNeededAfterPairL( 0 );
-	        	}
-            break;
-			}
-        default:
-            {
-            break;
-          }
-        }  
-	TRACE_FUNC_EXIT
-	}
-
-// -----------------------------------------------
-// From MBTDeviceObserver
-// CBTUIPairedDevicesView::RefreshDeviceList
-// calls the container to refresh the deviceList
-// -----------------------------------------------
-void CBTUIPairedDevicesView::RefreshDeviceList(const RDeviceArray* aDevices,
-       TInt aSelectedItemIndex)
-	{
-	TRACE_FUNC_ENTRY	
-	TRAPD(err,
-		if(iContainer)
-			{			
-				iContainer->RefreshDeviceListL(aDevices,aSelectedItemIndex);			
-			}
-		);			
-	if (iActiveMenuPane && iActiveMenuPane->NumberOfItemsInPane()>0 ) 
-	    {
-		TInt index = iContainer->CurrentItemIndex();
-	    if ( index >=0 )
-		    {
-		    TBTDevice device;
-		    device.iIndex = index;
-		    iModel->GetDevice(device);
-			if ( iMenuDevice.iAddr == device.iAddr && 
-			    ( ( iMenuDevice.iStatus & EStatusBtuiConnected ) != ( device.iStatus & EStatusBtuiConnected ) ) )
-			    {
-			    TRACE_INFO(_L("Device status changed, update menupane"));
-			    iMenuDevice = device;
-			    iActiveMenuPane->Close();
-			    TRAP_IGNORE( this->ProcessCommandL(EAknSoftkeyContextOptions) );
-			    }
-		    }
-	    }
-	if(err!= KErrNone)	    
-        {
-		TRAP_IGNORE( TBTUIViewsCommonUtils::ShowGeneralErrorNoteL(); );
-        }
-	TRACE_FUNC_EXIT        
-	}
-
-
-// -----------------------------------------------
-// 
-// -----------------------------------------------
-void CBTUIPairedDevicesView::RequestCompletedL( CBTUIActive* aActive, TInt aId, 
-                        TInt aStatus )
-    {
-    TRACE_INFO( ( _L("CBTUIPairedDevicesView::RequestCompletedL err %d"), aStatus ) )
-    (void) aActive;
-    (void) aId;
-    (void) aStatus;
-    TRACE_INFO( _L("CBTUIPairedDevicesView, auto connect 2nd try ... ") )
-    ConnectIfNeededAfterPairL( 1 );
-    }
-
-// -----------------------------------------------
-// 
-// -----------------------------------------------
-void CBTUIPairedDevicesView::HandleError( CBTUIActive* aActive, TInt aId, 
-                  TInt aError )
-    {
-    (void) aActive;
-    (void) aId;
-    (void) aError;
-    iIsPairConnect = EFalse;
-    }
-
-// ---------------------------------------------------------
-// From MBTDeviceObserver
-// CBTUIPairedDevicesView::NotifyChangeDeviceComplete
-// This function implement the functionality of command complete.
-// The lists of shown devices are refreshed by RefreshDeviceList, 
-// not by this function
-// ---------------------------------------------------------
-//
-void CBTUIPairedDevicesView::NotifyChangeDeviceComplete(const TInt aErr, 
-		const TBTDevice& aDevice, const RBTDevNameArray* aDevNameArray)
-	{
-	TRACE_FUNC_ENTRY
-	TBTDevice tmpDevice=aDevice;
-	TRAPD(err,NotifyChangeDeviceCompleteL(aErr,tmpDevice,aDevNameArray
-		););
-	if(err!= KErrNone)	    
-        {
-		TRAP_IGNORE( TBTUIViewsCommonUtils::ShowGeneralErrorNoteL(); );
-        }
-	TRACE_FUNC_EXIT		
-	}
-// ---------------------------------------------------------
-// CBTUIPairedDevicesView::NotifyChangeDeviceCompleteL
-// Leaving version of notifyChangeDevice
-// ---------------------------------------------------------
-
-void CBTUIPairedDevicesView::NotifyChangeDeviceCompleteL(const TInt aErr, 
-		const TBTDevice& aDevice, const RBTDevNameArray* aDevNameArray)
-	{
-	TRACE_FUNC_ENTRY
-	if(iContainer == NULL) return;
-
-	TRACE_INFO((_L("aErr=%d"), aErr))
-	TRACE_INFO((_L("aDevice.iOperation=%d"), aDevice.iOperation))
-	TRACE_INFO((_L("aDevice.iStatus=%d"), aDevice.iStatus))
-	TRACE_INFO((_L("iIsAlreadyConnected=%d"), iIsAlreadyConnected))
-	
-    if (aDevice.iOperation == EOpDisconnect && iExpectedCallBack>0 )
-        {
-        TBTDevice device;
-        device.iIndex = aDevice.iIndex;
-        iModel->GetDevice(device);    
-        device.iOperation = EOpUnpair;
-        iModel->ChangeDevice(device); 
-        iExpectedCallBack--;
-        }
-	
-	if( aDevice.iOperation == EOpConnect )
-		{
-		if( aErr == KErrNone && iIsAlreadyConnected )
-		    {
-		    TRACE_INFO(_L("Don't show notes several times for the same device with different profile connections"))
-		    return; 
-		    }
-		ConnectCompleteL(aErr, aDevice, aDevNameArray );
-		iIsAlreadyConnected = ETrue;
-		TRACE_INFO(_L("iIsAlreadyConnected False -> True"))
-		return;
-		}
-	if(aDevice.iOperation == EOpPair)		
-		{		
-		BondingCompleteL(aErr, aDevice);
-		}
-	if(aErr != KErrNone)
-		{
-        // The user tried to rename to a name that allready exists.
-        if(aDevice.iOperation == EOpChangeName && aErr == KErrAlreadyExists)
-            {
-            CAknNoteDialog* dlg2 = new (ELeave) CAknNoteDialog(CAknNoteDialog::EErrorTone,
-                                                                CAknNoteDialog::ELongTimeout);
-            dlg2->ExecuteLD(R_BT_NAME_EXISTS_NOTE);
-
-            RenameDeviceDlgL();
-            return;
-            }
-        // Need to properly handle situation when "Disconnect from xxx" query 
-        // has been shown and paired device has been turned off simultaneously.
-        // CancelDisconnectQuery dialog need to be closed. 
-        if(aErr == KErrDisconnected)
-            {
-            if(iDisconnectQueryDlg && aDevice.iAddr == iDisconnectQueryDevice.iAddr)
-                CancelDisconnectQueryDlg();
-            
-            TRACE_FUNC_EXIT
-            return;
-            }
-        // show general error if any of these failed
-        if(	aDevice.iOperation== EOpTrust ||
-            aDevice.iOperation== EOpUntrust ||
-            aDevice.iOperation== EOpBlock ||
-            aDevice.iOperation== EOpChangeName)		
-            {
-            TBTUIViewsCommonUtils::ShowGeneralErrorNoteL();
-            }
-		return;
-		}		
-	
-        if(aDevice.iOperation == EOpUntrust) 	        
-            {		
-            // Unauthorise ok note,
-            CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(CAknNoteDialog::EConfirmationTone,
-                                                                   CAknNoteDialog::ELongTimeout);
-            
-            if(iCoverDisplayEnabled)
-                {
-                CleanupStack::PushL(dlg); 
-                dlg->PublishDialogL(ECmdShowBtDevSetAsUntrustNote, KUidCoverUiCategoryBtui); 
-                // initializes cover support    
-                CleanupStack::Pop(dlg); 
-                }
-            dlg->ExecuteLD( R_BT_DEVICE_UNTRUSTED_NOTE );				
-            }
-	TRACE_FUNC_EXIT		
-	}
-
-// ---------------------------------------------------------------------------
-// CBTUIPairedDevicesView::CreateTabIconL()
-// Creates icon for tab.
-// ---------------------------------------------------------------------------
-//    
-CGulIcon* CBTUIPairedDevicesView::CreateTabIconL()
-    {
-    TFileName bmpFilename;
-    bmpFilename += KBitmapFileDrive;
-    bmpFilename += KDC_APP_BITMAP_DIR;
-    bmpFilename += KBtuiBmpFileName;
-        
-    CGulIcon* icon = AknsUtils::CreateGulIconL(
-        AknsUtils::SkinInstance(), 
-        KAknsIIDQgnPropBtDevicesTab3,  
-        bmpFilename, 
-        EMbmBtuiQgn_prop_bt_devices_tab3, 
-        EMbmBtuiQgn_prop_bt_devices_tab3_mask );
-          
-    return icon;
-    }   
-
-
-void CBTUIPairedDevicesView::SetupMenuCmd(TInt aIndex, CEikMenuPane* aMenu)
-    {
-    TBTDevice device;
-    device.iIndex = aIndex;
-    iModel->GetDevice(device);
-    iMenuDevice = device;           
-                    
-    TRACE_INFO(_L("there are device in list"))
-    
-    TBool dim = (device.iStatus & EStatusTrusted) == EStatusTrusted;
-                    
-    aMenu->SetItemDimmed(EBTUICmdSetTrusted, dim);
-    aMenu->SetItemDimmed(EBTUICmdSetUnTrusted, !dim);
-                     
-    // Check if device can be connected or disconnected
-    dim = (! (device.iStatus & EStatusConnectable) 
-            || device.iStatus & EStatusBtuiConnected);
-                    
-    if (dim) 
-        {
-        aMenu->SetItemDimmed(EBTUICmdConnect, dim);
-        aMenu->SetItemDimmed(EBTUICmdConnectAudio, dim);
-        }
-    else
-        {
-        if ( device.iDeviceClass.MajorDeviceClass() == EMajorDeviceComputer) 
-            {
-            aMenu->SetItemDimmed(EBTUICmdConnect, ETrue);
-            }
-        else 
-            {
-            aMenu->SetItemDimmed(EBTUICmdConnectAudio, ETrue);
-            }
-        }
-    dim = (device.iStatus & EStatusBtuiConnected) != EStatusBtuiConnected;
-    aMenu->SetItemDimmed(EBTUICmdDisconnect, dim);
-    
-    if ( !iBTPluginMan->IsPluginAvaiable(device.iDeviceClass) ) 
-        {
-        aMenu->SetItemDimmed(EBTUICmdSettings, ETrue);
-        }
-    else
-        {                
-        dim = (device.iStatus & EStatusBtuiConnected) != EStatusBtuiConnected;
-        aMenu->SetItemDimmed(EBTUICmdSettings, dim);
-        }                    
-    }
-
-    
-// End of File
-