diff -r 001a94c71129 -r 16e4b9007960 bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.cpp --- a/bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.cpp Wed Sep 29 13:09:05 2010 +0300 +++ b/bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.cpp Wed Oct 13 13:15:31 2010 +0300 @@ -32,7 +32,7 @@ QObject *parent) : BtAbstractDelegate(settingModel, deviceModel, parent), mBtEngDevMan(0), mDisconnectDelegate(0), mBtEngAddr(0), mRegDevArray(0), mOperation(0), - mDevice(0),mNewDev(0), mActiveHandling(false),mAddingBlockedDev(false) + mDevice(0),mNewDev(0), mActiveHandling(false),mAddingDevToRegistry(false) { BOstraceFunctionEntry1( DUMMY_DEVLIST, this ); mRegDevArray = new CBTDeviceArray(1); @@ -187,7 +187,6 @@ { BOstraceFunctionEntry1( DUMMY_DEVLIST, this ); if ( mActiveHandling ) { - mAddingBlockedDev = false; emitCommandComplete(KErrNone); } BOstraceFunctionExit1( DUMMY_DEVLIST, this ); @@ -213,9 +212,9 @@ return; } if ( !err ) { - if ( mAddingBlockedDev ) { + if ( mAddingDevToRegistry ) { // blocked a device which was not in the registry originally - mAddingBlockedDev = false; + mAddingDevToRegistry = false; delete mNewDev; mNewDev = 0; } @@ -271,8 +270,9 @@ emitCommandComplete( KErrArgument ); } } - else if ( err == KErrNotFound && mOperation == BtBlock) { // device not in registry, need to add it - mAddingBlockedDev = true; + else if ( err == KErrNotFound && ((mOperation == BtBlock) || + (mOperation == BtAuthorize))) { // device not in registry, need to add it + mAddingDevToRegistry = true; TRAP( err, { mNewDev = CBTDevice::NewL( mBtEngAddr ); }); @@ -293,17 +293,21 @@ int cod = (index.data(BtDeviceModel::CoDRole)).toInt(); mNewDev->SetDeviceClass(cod); TBTDeviceSecurity security = mNewDev->GlobalSecurity(); - security.SetBanned( ETrue ); - security.SetNoAuthorise( EFalse ); // set trust status to false + if (mOperation == BtBlock) { + security.SetBanned( ETrue ); + security.SetNoAuthorise( EFalse ); // set trust status to false + mNewDev->DeleteLinkKey(); + mNewDev->SetPaired(EFalse); + } else { // BtAuthorize + security.SetNoAuthorise( ETrue ); // set trust status to true + security.SetBanned( EFalse ); + } mNewDev->SetGlobalSecurity( security ); - mNewDev->DeleteLinkKey(); - mNewDev->SetPaired(EFalse); err = mBtEngDevMan->AddDevice( *mNewDev ); // see callback HandleDevManComplete() } } } if (err) { - mAddingBlockedDev = false; emitCommandComplete( err ); } } @@ -316,7 +320,7 @@ // no dialogs here since stack provides "unpaired to %1" dialog // and failures are not reported mActiveHandling = false; - mAddingBlockedDev = false; + mAddingDevToRegistry = false; if ( mNewDev ) { delete mNewDev; mNewDev = 0;