diff -r 0ba996a9b75d -r 613943a21004 bluetoothengine/btnotif/src/btnumcmpnotifier.cpp --- a/bluetoothengine/btnotif/src/btnumcmpnotifier.cpp Thu Aug 19 10:05:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -/* -* Copyright (c) 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: Declares Numeric Comparison notifier for Secure Simle Pairing -* -*/ - - -// INCLUDE FILES -#include // Localisation stringloader -#include // Unicode character conversion utilities -#include -#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#else -#include -#include -#endif -#include // Own resources -#include "btnotif.hrh" // Own resource header -#include "btnumcmpnotifier.h" // Own class definition -#include "btNotifDebug.h" // Debugging macros -#include -#include -#include -#include -#include "btnotifnameutils.h" - -#ifdef __SERIES60_HELP -#include -#include // The bt hrh info is needed, for help launching -#endif - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------------- -// CBTNumCmpNotifier::NewL -// Two-phased constructor. -// ---------------------------------------------------------- -// -CBTNumCmpNotifier* CBTNumCmpNotifier::NewL() - { - CBTNumCmpNotifier* self=new (ELeave) CBTNumCmpNotifier(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ---------------------------------------------------------- -// CBTNumCmpNotifier::CBTNumCmpNotifier -// C++ default constructor can NOT contain any code, that -// might leave. -// ---------------------------------------------------------- -// -CBTNumCmpNotifier::CBTNumCmpNotifier() - { - iPasskeyToShow.Zero(); - } - -// ---------------------------------------------------------- -// Destructor -// ---------------------------------------------------------- -// -CBTNumCmpNotifier::~CBTNumCmpNotifier() - { - } - -// ---------------------------------------------------------- -// CBTNumCmpNotifier::RegisterL -// Register notifier. -// ---------------------------------------------------------- -// -CBTNumCmpNotifier::TNotifierInfo CBTNumCmpNotifier::RegisterL() - { - iInfo.iUid = KBTNumericComparisonNotifierUid; - iInfo.iChannel = KBTNumericComparisonNotifierUid; - iInfo.iPriority=ENotifierPriorityVHigh; - return iInfo; - } - -// ---------------------------------------------------------- -// CBTNumCmpNotifier::GetParamsL -// Initialize parameters and check if device is already -// in registry. Jump to RunL as soon as possible. -// ---------------------------------------------------------- -// -void CBTNumCmpNotifier::GetParamsL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) - { - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::GetParamsL()")); - - CBTNPairNotifierBase::GetParamsL( aBuffer, aReplySlot, aMessage ); - - TBTNumericComparisonParamsPckg pckg; - pckg.Copy(aBuffer); - iBTAddr = pckg().DeviceAddress(); - if ( OtherOutgoPairing( iBTAddr) ) - { - // We won't allow incoming pairing during outgoing pairing: - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier: outgoing pair in progress, reject incoming pair")); - CompleteMessage(KErrCancel); - return; - } - - TUint32 passkey = pckg().NumericalValue(); - iLocallyInitiated = pckg().LocallyInitiated(); - iPasskeyToShow.AppendNumFixedWidth(passkey, EDecimal, Klength); - iPasskeyToShow.Insert(3,_L(" ")); - - // base class - ProcessParamsGetDeviceL( iBTAddr, pckg().DeviceName() ); - - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::GetParamsL() completed")); - } - -// ---------------------------------------------------------- -// CBTNumCmpNotifier::HandleGetDeviceCompletedL -// Ask user response and return it to caller. -// Store device into registry if user has accepted pairing. -// ---------------------------------------------------------- -// -void CBTNumCmpNotifier::HandleGetDeviceCompletedL(const CBTDevice* /*aDev*/) - { - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::HandleGetDeviceCompletedL()")); - - // Check if blocked device. - if( CheckBlockedDeviceL() ) - return; - - // Turn lights on and deactivate apps -key - iNotifUiUtil->TurnLightsOn(); - - // For incoming pairing request - if(!iLocallyInitiated) - { - TBool keypress = AuthoriseIncomingPairingL(); - if( !keypress ) - { - //User rejects the incoming pairing, complete message in QueryBlockDevice. - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::HandleGetDeviceCompletedL() <<")); - return; - } - } - - // For outgoing pairing request or accepted incoming pairing request, - // ask user to compare the pincodes in two devices. - TBTDeviceName nameCoverUi( KNullDesC ); - RBuf prompt; - prompt.CleanupClosePushL(); - GenerateQueryPromptL( prompt ); - TInt answer = iNotifUiUtil->ShowQueryL( prompt, R_BT_GENERIC_QUERY, ECmdShowBtOpenCoverNote, nameCoverUi ); - CleanupStack::PopAndDestroy( &prompt ); - - if( answer ) - { - CompleteMessage(answer, KErrNone); - } - else - { - // If the outgoing pairing mode is set, then this is bonding initiated by the user. - TBool incomingConn = ( OutgoPairingMode( iBTAddr ) == EBTOutgoingPairNone ); - - if( !iMessage.IsNull() ) - { - // No need to inform the user of the pairing result if the user cancelled it. - // If user doesn't answer anything but stack cancels, pairing result is needed - // to show for outgoing pairing. In this case, don't stop pairng observer. - CBTEngConnMan::StopPairingObserver( iBTAddr ); - } - // We may be asking for pairing (locally initiated), because a remote device is requesting - // accesss to a service for which we require authentication. - if( iLocallyInitiated && incomingConn ) - { - CheckAndHandleQueryIntervalL(); - } - CompleteMessage(KErrCancel); - } - - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::HandleGetDeviceCompletedL() completed")); - } - -// ---------------------------------------------------------- -// CBTNumCmpNotifier::GenerateQueryPromptL -// Generate prompt for Numeric Comparison query and return. -// ---------------------------------------------------------- -// -void CBTNumCmpNotifier::GenerateQueryPromptL( RBuf& aRBuf ) - { - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::GenerateQueryPromptL()")); - TBTDeviceName devName; - BtNotifNameUtils::GetDeviceDisplayName( devName, iDevice ); - TBuf shortName; - - TPtrC namePtr; - // Cut the name and put ellipsis in the middle if necessary - // By example "SampleSymbianDevice" after this operation will be shown in - // the dialog as "Sam...ice"(for 7 chars device name limit) - // This need to be done, because if name of the device is too long, the PIN - // codes aren't visible and user can't compare it with PIN code taken from - // other phone - if ( devName.Length() > KBTDeviceShortNameLength ) - { - shortName.Copy( devName.Left( KBTDeviceShortNameLength/2 ) ); - //adding ellipsis ("...") char in the middle of the string - shortName.Append( TChar( KEllipsis) ); - //adding only end of the name to the final string - shortName.Append( devName.Right( shortName.MaxLength() - - shortName.Length() ) ); - namePtr.Set( shortName ); - } - else - { - namePtr.Set( devName ); - } - - BluetoothUiUtil::LoadResourceAndSubstringL( - aRBuf, R_BT_SSP_PASSKEY_COMPARISON_PROMPT, namePtr, 0 ); - // Numeric comparison key shall not be localized either, use our own - // string loading: - BluetoothUiUtil::AddSubstringL( aRBuf, iPasskeyToShow, 1); - FLOG(_L("[BTNOTIF]\t CBTNumCmpNotifier::GenerateQueryPromptL() <<")); - - } - -// End of File