--- a/bluetoothengine/btnotif/btnotifsrv/src/bluetoothnotification.cpp Tue Aug 31 15:25:10 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,395 +0,0 @@
-/*
-* Copyright (c) 2010 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: Description: Class for managing an actual user notification or query.
-* It hides UI framework-specifics in a private class.
-*
-*/
-
-#include "bluetoothnotification.h"
-#include <hb/hbcore/hbsymbianvariant.h>
-#include "btnotificationmanager.h"
-#include "btnotifserver.h"
-#include "bluetoothtrace.h"
-#include <utf.h> // for debugging
-
-/** Identifier of Bluetooth device dialog plug-in. */
-_LIT( KBTDevDialogId, "com.nokia.hb.btdevicedialog/1.0" );
-/** Key name of result. */
-_LIT( KBTDevDialogResult, "result" );
-_LIT( KBTDevDialogInput, "input" );
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// C++ default constructor
-// ---------------------------------------------------------------------------
-//
-CBluetoothNotification::CBluetoothNotification( CBTNotificationManager* aManager )
-: iManager( aManager )
- {
- }
-
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CBluetoothNotification::ConstructL()
- {
- iNotificationData = CHbSymbianVariantMap::NewL();
- iDialog = CHbDeviceDialogSymbian::NewL();
- }
-
-
-// ---------------------------------------------------------------------------
-// NewL.
-// ---------------------------------------------------------------------------
-//
-CBluetoothNotification* CBluetoothNotification::NewL(
- CBTNotificationManager* aManager )
- {
- BOstraceFunctionEntry0( DUMMY_DEVLIST );
- CBluetoothNotification* self = new( ELeave ) CBluetoothNotification( aManager );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- BOstraceFunctionExit0( DUMMY_DEVLIST );
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CBluetoothNotification::~CBluetoothNotification()
-{
- BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
- delete iDialog;
- delete iNotificationData;
- delete iReturnData;
- BOstraceFunctionExit1( DUMMY_DEVLIST, this )
-}
-
-// ---------------------------------------------------------------------------
-// Sets the data to be shown to the user.
-// ---------------------------------------------------------------------------
-//
-TInt CBluetoothNotification::SetData( TInt aDataType, const TDesC& aData )
- {
- TRAPD( err, SetDataL( aDataType, aData ) );
- return (int) err;
- }
-
-
-// ---------------------------------------------------------------------------
-// Sets the data to be shown to the user.
-// ---------------------------------------------------------------------------
-//
-TInt CBluetoothNotification::SetData( TInt aDataType, TInt aData )
- {
- TRAPD( err, SetDataL( aDataType, aData ) );
- return (int) err;
- }
-
-// ---------------------------------------------------------------------------
-// Updates the data to be shown to the user.
-// ---------------------------------------------------------------------------
-//
-TInt CBluetoothNotification::Update( const TDesC& aData )
- {
- BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
- (void) aData;
- int ret = iDialog->Update( *iNotificationData );
- delete iNotificationData;
- iNotificationData = NULL;
- TRAP( ret, iNotificationData = CHbSymbianVariantMap::NewL() );
- BOstraceFunctionExit1( DUMMY_DEVLIST, this );
- return ret;
- }
-
-
-// ---------------------------------------------------------------------------
-// Show the notification, which means that it is added to the queue.
-// ---------------------------------------------------------------------------
-//
-void CBluetoothNotification::ShowL()
- {
- BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
- SetDataL( TBluetoothDialogParams::EDialogType, iType );
- SetDataL( TBluetoothDialogParams::EResource, iResourceId );
- delete iReturnData;
- iReturnData = NULL;
- iReturnData = CHbSymbianVariantMap::NewL();
- iDialog->Show( KBTDevDialogId(), *iNotificationData, this );
- delete iNotificationData;
- iNotificationData = NULL;
- iNotificationData = CHbSymbianVariantMap::NewL();
- BOstraceFunctionExit1( DUMMY_DEVLIST, this );
- }
-
-// ---------------------------------------------------------------------------
-// Stop showing the notification.
-// ---------------------------------------------------------------------------
-//
-TInt CBluetoothNotification::Close()
- {
- BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
- iDialog->Cancel();
- iManager->ReleaseNotification( this );
- BOstraceFunctionExit0( DUMMY_DEVLIST );
- return KErrNone;
- }
-
-
-// ---------------------------------------------------------------------------
-// Sets the data to be shown to the user.
-// ---------------------------------------------------------------------------
-//
-void CBluetoothNotification::SetDataL( TInt aType, const TDesC& aData )
- {
- BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aType );
- TBuf16<6> key;
- CHbSymbianVariant* value = NULL;
- switch( aType )
- {
- case TBluetoothDialogParams::EAddress:
- case TBluetoothDeviceDialog::EDeviceName:
- case TBluetoothDeviceDialog::EAdditionalDesc:
- case TBluetoothDialogParams::EDialogTitle:
- key.Num(aType);
- value = CHbSymbianVariant::NewL( (TAny*) &aData, CHbSymbianVariant::EDes );
- BtTraceBlock(
- TBuf<32> buf;
- switch (aType) {
- case TBluetoothDialogParams::EAddress:
- _LIT(KAddress,"EAddress");
- buf.Append(KAddress);
- break;
- case TBluetoothDeviceDialog::EDeviceName:
- _LIT(KDeviceName,"EDeviceName");
- buf.Append(KDeviceName);
- break;
- case TBluetoothDeviceDialog::EAdditionalDesc:
- _LIT(KAdditionalDesc,"EAdditionalDesc");
- buf.Append(KAdditionalDesc);
- break;
- }
- TPtrC p(buf);
- TPtrC16 *ptr = (TPtrC16 *)value->Data();
- BOstraceExt2( TRACE_DEBUG, DUMMY_DEVLIST, "SetData [%S] = [%S]", &p, ptr);
- );
- User::LeaveIfError(iNotificationData->Add( key, value )); // Takes ownership of value
- break;
- case TBluetoothDialogParams::EResource:
- case TBluetoothDeviceDialog::EDeviceClass:
- case TBluetoothDeviceDialog::EAdditionalInt:
- PanicServer( EBTNotifPanicBadArgument );
- break;
- case TBluetoothDialogParams::ENoParams:
- case TBluetoothDeviceDialog::ENoParams:
- default:
- break;
- }
- BOstraceFunctionExit1( DUMMY_DEVLIST, this );
- }
-
-
-// ---------------------------------------------------------------------------
-// Sets the data to be shown to the user.
-// ---------------------------------------------------------------------------
-//
-void CBluetoothNotification::SetDataL( TInt aType, TInt aData )
- {
- BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aType );
- TBuf<6> key;
- CHbSymbianVariant* value = NULL;
- switch( aType )
- {
- case TBluetoothDialogParams::EDialogType:
- case TBluetoothDialogParams::EResource:
- case TBluetoothDialogParams::EDialogTitle:
- case TBluetoothDeviceDialog::EDeviceClass:
- case TBluetoothDeviceDialog::EAdditionalInt:
- key.Num(aType);
- value = CHbSymbianVariant::NewL( (TAny*) &aData, CHbSymbianVariant::EInt );
- BtTraceBlock(
- TBuf<32> buf;
- switch (aType) {
- case TBluetoothDialogParams::EDialogType:
- buf = _L("EDialogType");
- break;
- case TBluetoothDialogParams::EResource:
- buf = _L("EResource");
- break;
- case TBluetoothDeviceDialog::EDeviceClass:
- buf = _L("EDeviceClass");
- break;
- case TBluetoothDeviceDialog::EAdditionalInt:
- buf = _L("EAdditionalInt");
- break;
- }
- TPtrC p(buf);
- TInt *intPtr = (TInt *)value->Data();
- BOstraceExt2( TRACE_DEBUG, DUMMY_DEVLIST, "SetData [%S] = [%d]", &p, *intPtr);
- );
- User::LeaveIfError(iNotificationData->Add( key, value )); // Takes ownership of value
- break;
- case TBluetoothDialogParams::EAddress:
- case TBluetoothDeviceDialog::EDeviceName:
- PanicServer( EBTNotifPanicBadArgument );
- break;
- case TBluetoothDialogParams::ENoParams:
- case TBluetoothDeviceDialog::ENoParams:
- default:
- break;
- }
- BOstraceFunctionExit1( DUMMY_DEVLIST, this );
- }
-
-// ---------------------------------------------------------------------------
-// From class MHbDeviceDialogObserver.
-// Callback called when data is received from a device dialog.
-// ---------------------------------------------------------------------------
-//
-void CBluetoothNotification::DataReceived( CHbSymbianVariantMap& aData )
- {
- BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
- BtTraceBlock( debugHbSymbianVariantMap(aData); );
- CHbSymbianVariant* value = NULL;
- for( TInt i = 0; i < aData.Keys().MdcaCount(); i++ )
- {
- TPtrC key( aData.Keys().MdcaPoint( i ).Ptr(), aData.Keys().MdcaPoint( i ).Length() );
- const CHbSymbianVariant* valueRef = aData.Get( key );
- value = NULL;
- TRAP_IGNORE( value =
- CHbSymbianVariant::NewL( valueRef->Data(), valueRef->Type() ) );
- if ( value )
- {
- TInt err = iReturnData->Add( key, value );
- if ( err )
- {
- // todo: better exception handing than ignoring this failure?
- }
- }
- }
- if( iObserver )
- {
- iObserver->MBRDataReceived( aData );
- }
- BOstraceFunctionExit1( DUMMY_DEVLIST, this );
- }
-
-#ifdef BLUETOOTHTRACE_ENABLED
-
-void CBluetoothNotification::debugHbSymbianVariantMap( CHbSymbianVariantMap& aData)
- {
- for( TInt i = 0; i < aData.Keys().MdcaCount(); i++ )
- {
- TBuf<128> buf;
- TPtrC key( aData.Keys().MdcaPoint( i ).Ptr(), aData.Keys().MdcaPoint( i ).Length() );
- buf = key;
- buf.Append(_L(" = "));
- const CHbSymbianVariant* value = aData.Get( key );
- TBuf<16> nbr;
- TBuf<32> newBuf;
- switch (value->Type()) {
- case CHbSymbianVariant::EInt :
- buf.Append(_L("[EInt] "));
- nbr.Num(*((TInt*)value->Data()));
- buf.Append(nbr);
- break;
- case CHbSymbianVariant::EBool :
- buf.Append(_L("[EBool] "));
- buf.Append(*((TBool*)value->Data()) ? _L("True") : _L("False"));
- break;
- case CHbSymbianVariant::EUint :
- buf.Append( _L("[EUint] "));
- nbr.Num(*((TUint*)value->Data()));
- buf.Append(nbr);
- break;
- case CHbSymbianVariant::EReal :
- buf.Append(_L("[EReal] "));
- nbr.Num(*((TReal*)value->Data()));
- buf.Append(nbr);
- break;
- case CHbSymbianVariant::EDes : // TDesC
- buf.Append(_L("[EDes] "));
- buf.Append(*((TPtrC16 *)value->Data()));
- break;
- case CHbSymbianVariant::EBinary : // TDesC8
- buf.Append(_L("[EBinary] "));
- // the following function caused problems when converting this function to
- // a trace function in bluetoothtrace.h
- CnvUtfConverter::ConvertToUnicodeFromUtf8(newBuf,*((TPtrC8 *)value->Data()) );
- buf.Append(newBuf);
- break;
- case CHbSymbianVariant::EChar : // a TChar
- buf.Append(_L("[EChar] "));
- buf.Append(*((TChar *)value->Data()));
- break;
- case CHbSymbianVariant::ERect : // a TRect
- case CHbSymbianVariant::EPoint : // a TPoint
- case CHbSymbianVariant::ESize : // a TSize
- case CHbSymbianVariant::EDesArray : // a MDesCArray
- break;
- default:
- break;
- }
- TPtrC p(buf);
- BOstraceExt1( TRACE_DEBUG, DUMMY_DEVLIST, "HbSymbianVariantMap [%S]", &p);
- }
- }
-#endif // BLUETOOTHTRACE_ENABLED
-// ---------------------------------------------------------------------------
-// From class MHbDeviceDialogObserver.
-// Callback called when a device dialog is closed.
-// ---------------------------------------------------------------------------
-//
-void CBluetoothNotification::DeviceDialogClosed( TInt aCompletionCode )
- {
- BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aCompletionCode );
- TPckg<TBool> result( EFalse );
- TPtrC8 resultPtr( result );
- const CHbSymbianVariant* value = iReturnData->Get( KBTDevDialogResult );
- if( value && value->IsValid() )
- {
- result() = *value->Value<TBool>();
- }
- RBuf8 resultBuf;
- value = iReturnData->Get( KBTDevDialogInput );
- if( value && value->IsValid() )
- {
- HBufC8* data = value->Value<HBufC8>();
- if( !resultBuf.Create( data->Length() + result.Length() ) )
- {
- resultBuf = *data;
- resultBuf.Insert( 0, result );
- resultPtr.Set( resultBuf );
- }
- }
- if( iObserver )
- {
- if( aCompletionCode == CHbDeviceDialogSymbian::ECancelledError )
- {
- aCompletionCode = KErrCancel;
- }
- iObserver->MBRNotificationClosed( aCompletionCode, resultPtr );
- }
- resultBuf.Close();
- iManager->ReleaseNotification( this );
- // Note that we might get deleted after releasing ourselves.
- BOstraceFunctionExit0( DUMMY_DEVLIST );
- }
-