diff -r 0ba996a9b75d -r 613943a21004 bluetoothengine/btnotif/src/btnssppasskeyentrynotifier.cpp --- a/bluetoothengine/btnotif/src/btnssppasskeyentrynotifier.cpp Thu Aug 19 10:05:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -/* -* Copyright (c) 2002 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 authentication (PIN query) notifier class. -* -*/ - - -// INCLUDE FILES -#include // Localisation stringloader -#include // Unicode character conversion utilities -#include -#include -#include -#include -#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#else -#include -#include -#endif -#include // Own resources -#include -#include -#include "btnotif.hrh" // Own resource header -#include "btnssppasskeyentrynotifier.h" // Own class definition -#include "btNotifDebug.h" // Debugging macros -#include "btnotifnameutils.h" - -#ifdef __SERIES60_HELP -#include -#include // The bt hrh info is needed, for help launching -#endif - - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::NewL -// Two-phased constructor. -// ---------------------------------------------------------- -// -CBTSSPPasskeyEntryNotifier* CBTSSPPasskeyEntryNotifier::NewL() - { - CBTSSPPasskeyEntryNotifier* self=new (ELeave) CBTSSPPasskeyEntryNotifier(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::CBTSSPPasskeyEntryNotifier -// C++ default constructor can NOT contain any code, that -// might leave. -// ---------------------------------------------------------- -// -CBTSSPPasskeyEntryNotifier::CBTSSPPasskeyEntryNotifier() - { - iPasskey.Zero(); - } - -// ---------------------------------------------------------- -// Destructor -// ---------------------------------------------------------- -// -CBTSSPPasskeyEntryNotifier::~CBTSSPPasskeyEntryNotifier() - { - } - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::RegisterL -// Register notifier. -// ---------------------------------------------------------- -// -CBTSSPPasskeyEntryNotifier::TNotifierInfo CBTSSPPasskeyEntryNotifier::RegisterL() - { - iInfo.iUid = KBTPasskeyDisplayNotifierUid; - iInfo.iChannel = KBTPasskeyDisplayNotifierUid; - iInfo.iPriority = ENotifierPriorityVHigh; - return iInfo; - } - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::GetParamsL -// Initialize parameters and check if device is already -// in registry. Jump to RunL as soon as possible. -// ---------------------------------------------------------- -// -void CBTSSPPasskeyEntryNotifier::GetParamsL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) - { - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::GetParamsL()")); - - CBTNPairNotifierBase::GetParamsL( aBuffer, aReplySlot, aMessage ); - - TBTPasskeyDisplayParamsPckg pckg; - pckg.Copy(aBuffer); - iBTAddr = pckg().DeviceAddress(); - if ( OtherOutgoPairing(iBTAddr) ) - { - // We won't allow incoming pairing during outgoing pairing: - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier: outgoing pair in progress, reject incoming pair")); - CompleteMessage(KErrCancel); - return; - } - - iLocallyInitiated = pckg().LocallyInitiated(); - iPasskey.AppendNumFixedWidth(pckg().NumericalValue(), EDecimal, KPassKeylength); - iPasskey.Insert(3,_L(" ")); - - ProcessParamsGetDeviceL( iBTAddr, pckg().DeviceName() ); - - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::GetParamsL() completed")); - } - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::UpdateL -// Notifier update. Stores the received bluetooth -// device name into registry and show it on screen. -// ---------------------------------------------------------- -// -TPtrC8 CBTSSPPasskeyEntryNotifier::UpdateL(const TDesC8& aBuffer) - { - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::UpdateL()")); - - TBTPasskeyDisplayUpdateParamsPckg pckg; - pckg.Copy(aBuffer); - - if(pckg().Type() != TBTNotifierUpdateParams2::EPasskeyDisplay) - { - TPtrC8 ret(KNullDesC8); - return (ret); - } - - switch (pckg().KeypressNotification()) - { - case EPasskeyEntryStarted: - { - iBuf.Zero(); - iBuf.Append(iPasskey); - iBuf.Append(_L(" ")); - break; - } - case EPasskeyDigitEntered: - { - // show an '*' - iBuf.Append(_L("*")); - break; - } - case EPasskeyDigitDeleted: - { - // remove an '*' from the tail of iBuf - iBuf.Delete(iBuf.Length()-1, 1); - break; - } - case EPasskeyCleared: - { - // remove all '*' - iBuf.Zero(); - iBuf.Append(iPasskey); - iBuf.Append(_L(" ")); - break; - } - case EPasskeyEntryCompleted: - { - // complete passkey entry - // Set iAnswer to 1 , - // Continue pairing in Run() - iAnswer = 1; - //iPasskeyDlg->DismissQueryL(); - iNotifUiUtil->DismissDialog(); - break; - } - } - if ( !iNotifUiUtil->IsQueryReleased() ) - { - RBuf prompt; - prompt.CleanupClosePushL(); - GenerateQueryPromptL( prompt ); - iNotifUiUtil->UpdateQueryDlgL( prompt ); - CleanupStack::PopAndDestroy( &prompt ); - } - - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::UpdateL() completed")); - TPtrC8 ret(KNullDesC8); - return (ret); - } - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::HandleGetDeviceCompletedL -// Ask user response and return it to caller. -// Store device into registry if user rejects the incoming pairing. -// ---------------------------------------------------------- -// -void CBTSSPPasskeyEntryNotifier::HandleGetDeviceCompletedL(const CBTDevice* /*aDev*/) - { - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::HandleGetDeviceCompletedL()")); - iAnswer = 0; - - // Check if blocked device. - if( CheckBlockedDeviceL() ) - return; - - // For pairing request from remote device - if ( !iLocallyInitiated ) - { - TBool keypress = AuthoriseIncomingPairingL(); - if( !keypress ) - { - //User rejects the incoming pairing, complete message in QueryBlockDevice. - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::HandleGetDeviceCompletedL() <<")); - return; - } - } - - TBTDeviceName nameCoverUi( KNullDesC ); - - iBuf.Zero(); - iBuf.Append(iPasskey); - iBuf.Append(_L(" ")); - - RBuf prompt; - prompt.CleanupClosePushL(); - GenerateQueryPromptL( prompt ); - - TInt answer = iNotifUiUtil->ShowQueryL( prompt, R_BT_PASSKEY_QUERY, - ECmdBTnotifUnavailable, nameCoverUi ); - CleanupStack::PopAndDestroy( &prompt ); - - if( iAnswer ) // user pressed entry key from remote keyboard. - { - CompleteMessage(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. - (void) 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 CBTSSPPasskeyEntryNotifier::HandleGetDeviceCompletedL() completed")); - } - -// ---------------------------------------------------------- -// CBTSSPPasskeyEntryNotifier::GenerateQueryPromptL -// ---------------------------------------------------------- -// -void CBTSSPPasskeyEntryNotifier::GenerateQueryPromptL( RBuf& aRBuf ) - { - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::GenerateQueryPromptL()")); - TBTDeviceName devName; - BtNotifNameUtils::GetDeviceDisplayName(devName, iDevice); - BluetoothUiUtil::LoadResourceAndSubstringL( - aRBuf, R_BT_SSP_PASSKEY_ENTRY, devName, 0 ); - BluetoothUiUtil::AddSubstringL( aRBuf, iBuf, 1 ); - FLOG(_L("[BTNOTIF]\t CBTSSPPasskeyEntryNotifier::GenerateQueryPromptL() << ")); - - } -// End of File