30 BtSettingModel* settingModel, |
30 BtSettingModel* settingModel, |
31 BtDeviceModel* deviceModel, |
31 BtDeviceModel* deviceModel, |
32 QObject *parent) : |
32 QObject *parent) : |
33 BtAbstractDelegate(settingModel, deviceModel, parent), mBtEngDevMan(0), |
33 BtAbstractDelegate(settingModel, deviceModel, parent), mBtEngDevMan(0), |
34 mDisconnectDelegate(0), mBtEngAddr(0), mRegDevArray(0), mOperation(0), |
34 mDisconnectDelegate(0), mBtEngAddr(0), mRegDevArray(0), mOperation(0), |
35 mDevice(0),mNewDev(0), mActiveHandling(false),mAddingBlockedDev(false) |
35 mDevice(0),mNewDev(0), mActiveHandling(false),mAddingDevToRegistry(false) |
36 { |
36 { |
37 BOstraceFunctionEntry1( DUMMY_DEVLIST, this ); |
37 BOstraceFunctionEntry1( DUMMY_DEVLIST, this ); |
38 mRegDevArray = new CBTDeviceArray(1); |
38 mRegDevArray = new CBTDeviceArray(1); |
39 BTUI_ASSERT_X( mRegDevArray, "BtDelegateDevSecurity::BtDelegateDevSecurity()", |
39 BTUI_ASSERT_X( mRegDevArray, "BtDelegateDevSecurity::BtDelegateDevSecurity()", |
40 "can't allocate regdevarray"); |
40 "can't allocate regdevarray"); |
185 |
185 |
186 void BtDelegateDevSecurity::cancel() |
186 void BtDelegateDevSecurity::cancel() |
187 { |
187 { |
188 BOstraceFunctionEntry1( DUMMY_DEVLIST, this ); |
188 BOstraceFunctionEntry1( DUMMY_DEVLIST, this ); |
189 if ( mActiveHandling ) { |
189 if ( mActiveHandling ) { |
190 mAddingBlockedDev = false; |
|
191 emitCommandComplete(KErrNone); |
190 emitCommandComplete(KErrNone); |
192 } |
191 } |
193 BOstraceFunctionExit1( DUMMY_DEVLIST, this ); |
192 BOstraceFunctionExit1( DUMMY_DEVLIST, this ); |
194 } |
193 } |
195 |
194 |
211 if ( !mActiveHandling ) { |
210 if ( !mActiveHandling ) { |
212 BOstraceFunctionExit1( DUMMY_DEVLIST, this ); |
211 BOstraceFunctionExit1( DUMMY_DEVLIST, this ); |
213 return; |
212 return; |
214 } |
213 } |
215 if ( !err ) { |
214 if ( !err ) { |
216 if ( mAddingBlockedDev ) { |
215 if ( mAddingDevToRegistry ) { |
217 // blocked a device which was not in the registry originally |
216 // blocked a device which was not in the registry originally |
218 mAddingBlockedDev = false; |
217 mAddingDevToRegistry = false; |
219 delete mNewDev; |
218 delete mNewDev; |
220 mNewDev = 0; |
219 mNewDev = 0; |
221 } |
220 } |
222 else if ( mOperation == BtBlock || mOperation == BtUnpair) { |
221 else if ( mOperation == BtBlock || mOperation == BtUnpair) { |
223 // disconnect after blocking/unpairing if device is connected; |
222 // disconnect after blocking/unpairing if device is connected; |
269 default: |
268 default: |
270 // wrong parameter |
269 // wrong parameter |
271 emitCommandComplete( KErrArgument ); |
270 emitCommandComplete( KErrArgument ); |
272 } |
271 } |
273 } |
272 } |
274 else if ( err == KErrNotFound && mOperation == BtBlock) { // device not in registry, need to add it |
273 else if ( err == KErrNotFound && ((mOperation == BtBlock) || |
275 mAddingBlockedDev = true; |
274 (mOperation == BtAuthorize))) { // device not in registry, need to add it |
|
275 mAddingDevToRegistry = true; |
276 TRAP( err, { |
276 TRAP( err, { |
277 mNewDev = CBTDevice::NewL( mBtEngAddr ); |
277 mNewDev = CBTDevice::NewL( mBtEngAddr ); |
278 }); |
278 }); |
279 if ( !err ) { |
279 if ( !err ) { |
280 // get needed info about device from model, e.g. name, cod |
280 // get needed info about device from model, e.g. name, cod |
291 TRAP( err, mNewDev->SetDeviceNameL( BTDeviceNameConverter::ToUTF8L( buf ) )); |
291 TRAP( err, mNewDev->SetDeviceNameL( BTDeviceNameConverter::ToUTF8L( buf ) )); |
292 if( !err ) { |
292 if( !err ) { |
293 int cod = (index.data(BtDeviceModel::CoDRole)).toInt(); |
293 int cod = (index.data(BtDeviceModel::CoDRole)).toInt(); |
294 mNewDev->SetDeviceClass(cod); |
294 mNewDev->SetDeviceClass(cod); |
295 TBTDeviceSecurity security = mNewDev->GlobalSecurity(); |
295 TBTDeviceSecurity security = mNewDev->GlobalSecurity(); |
296 security.SetBanned( ETrue ); |
296 if (mOperation == BtBlock) { |
297 security.SetNoAuthorise( EFalse ); // set trust status to false |
297 security.SetBanned( ETrue ); |
|
298 security.SetNoAuthorise( EFalse ); // set trust status to false |
|
299 mNewDev->DeleteLinkKey(); |
|
300 mNewDev->SetPaired(EFalse); |
|
301 } else { // BtAuthorize |
|
302 security.SetNoAuthorise( ETrue ); // set trust status to true |
|
303 security.SetBanned( EFalse ); |
|
304 } |
298 mNewDev->SetGlobalSecurity( security ); |
305 mNewDev->SetGlobalSecurity( security ); |
299 mNewDev->DeleteLinkKey(); |
|
300 mNewDev->SetPaired(EFalse); |
|
301 err = mBtEngDevMan->AddDevice( *mNewDev ); // see callback HandleDevManComplete() |
306 err = mBtEngDevMan->AddDevice( *mNewDev ); // see callback HandleDevManComplete() |
302 } |
307 } |
303 } |
308 } |
304 } |
309 } |
305 if (err) { |
310 if (err) { |
306 mAddingBlockedDev = false; |
|
307 emitCommandComplete( err ); |
311 emitCommandComplete( err ); |
308 } |
312 } |
309 } |
313 } |
310 BOstraceFunctionExit1( DUMMY_DEVLIST, this ); |
314 BOstraceFunctionExit1( DUMMY_DEVLIST, this ); |
311 } |
315 } |
314 { |
318 { |
315 BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, error ); |
319 BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, error ); |
316 // no dialogs here since stack provides "unpaired to %1" dialog |
320 // no dialogs here since stack provides "unpaired to %1" dialog |
317 // and failures are not reported |
321 // and failures are not reported |
318 mActiveHandling = false; |
322 mActiveHandling = false; |
319 mAddingBlockedDev = false; |
323 mAddingDevToRegistry = false; |
320 if ( mNewDev ) { |
324 if ( mNewDev ) { |
321 delete mNewDev; |
325 delete mNewDev; |
322 mNewDev = 0; |
326 mNewDev = 0; |
323 } |
327 } |
324 emit delegateCompleted(error, this); |
328 emit delegateCompleted(error, this); |