diff -r 625f43ae9362 -r 5ebadcda06cb btobexprofiles/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp --- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp Fri Aug 06 16:43:21 2010 +0300 +++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp Fri Sep 03 16:17:59 2010 +0300 @@ -27,7 +27,7 @@ #include #include #include -#include +#include // CONSTANTS @@ -41,18 +41,11 @@ const TUid KUidMsgTypeBt = {0x10009ED5}; //todo need to find a suitable header to include. This is from obexutilslayer.h -const TInt KMaxDesCLength = 256; +const TInt KMinStringSize = 10; -//_LIT(KSendingDialog,"com.nokia.hb.btdevicedialog/1.0"); -_LIT(KLocFileName, "btdialogs_"); -_LIT(KPath, "z:/resource/qt/translations/"); - -_LIT(KFilesSentText, "txt_bt_dpophead_all_files_sent");//All files sent -_LIT(KDeviceText,"txt_bt_dpopinfo_sent_to_1"); -//_LIT(KNotConnectedText,"txt_bt_info_unable_to_connect_with_bluetooth"); -_LIT(KSendingFailedText,"txt_bt_dpophead_sending_failed"); +_LIT( KBTDevDialogId, "com.nokia.hb.btdevicedialog/1.0" ); // ============================ MEMBER FUNCTIONS =============================== @@ -73,7 +66,8 @@ iUserCancel(EFalse), iFeatureManagerInitialized(EFalse), iTriedBIP(EFalse), - iTriedOPP(EFalse) + iTriedOPP(EFalse), + iShowDialogNote(EFalse) { CActiveScheduler::Add( this ); } @@ -91,7 +85,6 @@ iDelayedDestroyer = CBTServiceDelayedDestroyer::NewL(CActive::EPriorityStandard); FeatureManager::InitializeLibL(); iFeatureManagerInitialized = ETrue; - iLocalisationInit = HbTextResolverSymbian::Init(KLocFileName, KPath); FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL() completed")); } @@ -127,6 +120,7 @@ delete iBTEngDiscovery; delete iDialog; delete iDelayedDestroyer; + iRemoteDeviceName.Close(); if(iWaiter && iWaiter->IsStarted() ) { @@ -139,6 +133,11 @@ FeatureManager::UnInitializeLib(); } + if (iNotificationDialog) + { + iNotificationDialog->Cancel(); + delete iNotificationDialog; + } FLOG(_L("[BTSU]\t CBTServiceStarter::Destructor() completed")); } @@ -448,6 +447,7 @@ } else { + iShowDialogNote = ETrue; //todo need to do the localisation here _LIT(KConnectText, "Connecting..."); iDialog->LaunchWaitDialogL(KConnectText); @@ -490,20 +490,20 @@ if ( !iProgressDialogActive ) { + iShowDialogNote = ETrue; // todo need to change the last parameter because we are now using the textmap id which is a string // whether we replace it with that or remove the parameter is to be decided iMessageServerIndex = TObexUtilsMessageHandler::CreateOutboxEntryL( KUidMsgTypeBt, 0 ); - deviceName.CreateL(KMaxDesCLength); if ( iDevice->IsValidFriendlyName() ) { - deviceName.Copy( iDevice->FriendlyName() ); + deviceName.CreateL( iDevice->FriendlyName() ); } else { - deviceName.Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName())); + deviceName.CreateL( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName())); } iDialog->LaunchProgressDialogL( this, aFileCount, deviceName, KBTProgressInterval ); @@ -550,6 +550,20 @@ { // this condition is hit for the progress dialog and connecting dialog cancel FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDissmissed(), cancelled by user")); iUserCancel=ETrue; + iShowDialogNote = EFalse; +/* if ( iDevice->IsValidFriendlyName() ) + { + TRAP_IGNORE(iRemoteDeviceName.CreateL( iDevice->FriendlyName()) ); + } + else + { + TRAP_IGNORE( iRemoteDeviceName.CreateL( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName()))); + } + + iRemoteDeviceClass = iDevice->DeviceClass().DeviceClass(); + + TRAP_IGNORE( ShowSendCompleteNoteL(ESendCancelled) );*/ + if ( iController ) { iController->Abort(); @@ -563,6 +577,7 @@ { // user abortion // + iShowDialogNote = EFalse; iUserCancel = ETrue; StopTransfer( KErrCancel ); CancelWaitNote(); @@ -578,33 +593,35 @@ // CBTServiceStarter::ShowErrorNote // ----------------------------------------------------------------------------- // -void CBTServiceStarter::ShowErrorNote( TInt aReason ) const +void CBTServiceStarter::ShowErrorNote( TInt aReason ) { FLOG(_L("[BTSU]\t CBTServiceStarter::ShowErrorNote()")); - TBuf buf; - TPtrC sendTextMapId; - if ( iDevice->IsValidFriendlyName() ) { - buf.Copy( iDevice->FriendlyName() ); + iRemoteDeviceName.CreateL( iDevice->FriendlyName() ); } else { - TRAP_IGNORE( buf.Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName()))); + TRAP_IGNORE( iRemoteDeviceName.CreateL( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName()))); } + iRemoteDeviceClass = iDevice->DeviceClass().DeviceClass(); switch ( aReason ) { case EBTSNoError: { - sendTextMapId.Set(KFilesSentText()); + TRAP_IGNORE( ShowSendCompleteNoteL(ESendCompleted) ); break; } case EBTSConnectingFailed: case EBTSGettingFailed: case EBTSPuttingFailed: + { + TRAP_IGNORE( ShowErrorMessageL(TBluetoothDialogParams::ESendFailed) ); + break; + } case EBTSNoSuitableProfiles: //todo below three enums are not valid and it is not being used at anywhere do we need to have it @@ -612,27 +629,8 @@ // case EBTSBIPOneNotSend: // case EBTSBIPNoneSend: default: - { - sendTextMapId.Set(KSendingFailedText()); break; - } } - - - if(iLocalisationInit) - { - TRAP_IGNORE( - HBufC* sendText = HbTextResolverSymbian::LoadLC(sendTextMapId); - HBufC* deviceName = HbTextResolverSymbian::LoadLC(KDeviceText,buf); - CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, deviceName->Des(), sendText->Des()); - CleanupStack::PopAndDestroy( deviceName ); - CleanupStack::PopAndDestroy( sendText ); - ); - } - else - { - TRAP_IGNORE(CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, KDeviceText(), sendTextMapId)); - } FLOG(_L("[BTSU]\t CBTServiceStarter::ShowErrorNote() completed")); } @@ -644,7 +642,9 @@ // void CBTServiceStarter::LaunchConfirmationQuery(const TDesC& aConfirmText) { - TRAP_IGNORE(iDialog->LaunchQueryDialogL(aConfirmText )); + TInt dialogTitle = TBluetoothDialogParams::EUnsupportedImages; + iRemoteDeviceClass = iDevice->DeviceClass().DeviceClass(); + ShowErrorMessageL(dialogTitle,aConfirmText); } // ----------------------------------------------------------------------------- @@ -695,7 +695,7 @@ // Reset states // iServiceStarted = EFalse; - if ( iWaiter && iWaiter->IsStarted() ) + if (( iWaiter && iWaiter->IsStarted() )&&(!iShowDialogNote)) { iWaiter->AsyncStop(); } @@ -1053,6 +1053,109 @@ return KErrNone; } +void CBTServiceStarter::ShowSendCompleteNoteL(const TInt aDialogTitle) + { + iNotificationDialog = CHbDeviceDialogSymbian::NewL(); + iNotificationDialog->SetObserver(this); + + CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL(); + CleanupStack::PushL(variantMap); + + TInt dialogIdx = TBluetoothDialogParams::EGlobalNotif; + AddDataL(variantMap,TBluetoothDialogParams::EDialogType,&dialogIdx,CHbSymbianVariant::EInt); + + + AddDataL(variantMap,TBluetoothDeviceDialog::EDeviceName,&iRemoteDeviceName, + CHbSymbianVariant::EDes); + + AddDataL(variantMap,TBluetoothDialogParams::EResource,&aDialogTitle, + CHbSymbianVariant::EInt); + + AddDataL(variantMap,TBluetoothDeviceDialog::EDeviceClass,&iRemoteDeviceClass, + CHbSymbianVariant::EInt); + + iNotificationDialog->Show( KBTDevDialogId(), *variantMap, this ); + CleanupStack::PopAndDestroy(variantMap); + } + +void CBTServiceStarter::ShowErrorMessageL(const TInt aDialogTitle, + const TDesC& aConfirmText) + { + iNotificationDialog = CHbDeviceDialogSymbian::NewL(); + iNotificationDialog->SetObserver(this); + + CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL(); + CleanupStack::PushL(variantMap); + + TInt dialogIdx = TBluetoothDialogParams::EInformationDialog; + AddDataL(variantMap,TBluetoothDialogParams::EDialogType,&dialogIdx,CHbSymbianVariant::EInt); + + if(aDialogTitle == TBluetoothDialogParams::EUnsupportedImages ) + { + AddDataL(variantMap,TBluetoothDeviceDialog::EAdditionalDesc,&aConfirmText, + CHbSymbianVariant::EDes); + } + else + { + AddDataL(variantMap,TBluetoothDeviceDialog::EDeviceName,&iRemoteDeviceName, + CHbSymbianVariant::EDes); + } + + AddDataL(variantMap,TBluetoothDialogParams::EDialogTitle,&aDialogTitle, + CHbSymbianVariant::EInt); + + AddDataL(variantMap,TBluetoothDeviceDialog::EDeviceClass,&iRemoteDeviceClass, + CHbSymbianVariant::EInt); + + iNotificationDialog->Show( KBTDevDialogId(), *variantMap, this ); + CleanupStack::PopAndDestroy(variantMap); + } + +void CBTServiceStarter::AddDataL(CHbSymbianVariantMap* aMap, const TInt aKey, + const TAny* aData, CHbSymbianVariant::TType aDataType) + { + TBuf key; + key.Num(aKey); + + CHbSymbianVariant* value = CHbSymbianVariant::NewL(aData, aDataType); + CleanupStack::PushL( value ); + User::LeaveIfError( aMap->Add( key, value ) ); // aMap takes the ownership of value + CleanupStack::Pop( value ); + } +void CBTServiceStarter::DataReceived(CHbSymbianVariantMap& aData) + { + if(aData.Keys().MdcaPoint(0).Compare(_L("actionResult"))==KErrNone) + { + TBool val = *(static_cast(aData.Get(_L("actionResult"))->Data())); + if(val) + { + DialogDismissed(EYesButton); + } + else + { + DialogDismissed(ENoButton); + } + if(iNotificationDialog) + { + delete iNotificationDialog; + iNotificationDialog = NULL; + } + } + } +void CBTServiceStarter::DeviceDialogClosed(TInt aCompletionCode) + { + (void) aCompletionCode; + if(iNotificationDialog) + { + delete iNotificationDialog; + iNotificationDialog = NULL; + } + if ( iWaiter && iWaiter->IsStarted() ) + { + iWaiter->AsyncStop(); + } + } +