--- a/remotestoragefw/gsplugin/src/rsfwgsremotedrivesend.cpp Wed Jun 09 10:37:35 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,298 +0,0 @@
-/*
-* Copyright (c) 2006 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: Sending remote drive configuration entries
-*
-*/
-
-
-#include <eikenv.h>
-#include <sendui.h>
-#include <CMessageData.h>
-#include <SendUiConsts.h>
-#include <txtrich.h>
-#include <utf.h> // for CnvUtfConverter
-#include <StringLoader.h>
-#include <AknQueryDialog.h>
-#include <sysutil.h>
-#include <rsfwgspluginrsc.rsg>
-#include <rsfwmountentry.h>
-
-#include "rsfwgsremotedrivesend.h"
-#include "rsfwmountutils.h"
-#include "rsfwgsplugin.hrh"
-
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::NewL
-// Static constructor
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CRsfwGsRemoteDriveSend* CRsfwGsRemoteDriveSend::NewL(TInt aMenuCommandId)
- {
- CRsfwGsRemoteDriveSend* self = new (ELeave) CRsfwGsRemoteDriveSend();
- CleanupStack::PushL(self);
- self->ConstructL(aMenuCommandId);
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::CRsfwGsRemoteDriveSend
-// C++ constructor
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CRsfwGsRemoteDriveSend::CRsfwGsRemoteDriveSend()
- {
- }
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::ConstructL
-// 2nd phase constructor
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CRsfwGsRemoteDriveSend::ConstructL(TInt aMenuCommandId)
- {
- iSendUi = CSendUi::NewL();
- iSendAsCmdId=aMenuCommandId;
- iSendMtmsToDim = new (ELeave) CArrayFixFlat<TUid>(4);
-
- // for the time being, dim everything else but SMS
- // for some reason technology-group UIDs do not seem to work
- // e-mail Mtmss
- iSendMtmsToDim->AppendL(KSenduiMtmSmtpUid);
- iSendMtmsToDim->AppendL(KSenduiMtmImap4Uid);
- iSendMtmsToDim->AppendL(KSenduiMtmPop3Uid);
-
- // MMS, BT, Irda, Postcard
- iSendMtmsToDim->AppendL(KSenduiMtmMmsUid);
- iSendMtmsToDim->AppendL(KSenduiMtmPostcardUid);
- iSendMtmsToDim->AppendL(KSenduiMtmBtUid);
- iSendMtmsToDim->AppendL(KSenduiMtmIrUid);
-
- // Audio Message
- iSendMtmsToDim->AppendL(KSenduiMtmAudioMessageUid);
-
- iSendMtmsToDim->AppendL(KSenduiMtmSyncMLEmailUid );
-
- // filters out EMail Via Exchange, as we only support SMS
- // for some reason this cannot be found from headers currently
- const TUid KEmailViaExchange = { 0x102826F8 };
- iSendMtmsToDim->AppendL(KEmailViaExchange );
-
- }
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::~CRsfwGsRemoteDriveSend
-// Destructor
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CRsfwGsRemoteDriveSend::~CRsfwGsRemoteDriveSend()
- {
- delete iSendUi;
- delete iSendMtmsToDim;
- }
-
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::CanSendL
-// Check wheter sending is possible
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CRsfwGsRemoteDriveSend::CanSend()
- {
- if( iSelectedMtmUid != KNullUid )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::DisplaySendMenuItemL
-// Show sendui menu
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CRsfwGsRemoteDriveSend::DisplaySendMenuItemL(CEikMenuPane& aMenuPane,
- TInt aIndex)
- {
- iSendUi->AddSendMenuItemL( aMenuPane, aIndex, iSendAsCmdId, TSendingCapabilities() );
- }
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::DisplaySendCascadeMenuL
-// Show send quesry / cascaded menu
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CRsfwGsRemoteDriveSend::DisplaySendCascadeMenuL()
- {
- iSelectedMtmUid = iSendUi->ShowSendQueryL( NULL, KCapabilitiesForAllServices, iSendMtmsToDim, KNullDesC );
- }
-
-
-
-// ---------------------------------------------------------
-// CRsfwGsRemoteDriveSend::SendL
-// Send a remote drive entry via SendUi
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CRsfwGsRemoteDriveSend::SendL(const CRsfwMountEntry& anEntry)
- {
-
- // the old entry can be deleted in the middle of the operation
- // e.g. from the File Manager
- CRsfwMountEntry* entryToBeSent = anEntry.CloneL();
- CleanupStack::PushL(entryToBeSent);
-
- CEikonEnv* eikonEnv = CEikonEnv::Static();
- CRichText* text = CRichText::NewL(
- eikonEnv->SystemParaFormatLayerL(),
- eikonEnv->SystemCharFormatLayerL());
- CleanupStack::PushL(text);
-
-
- // if user name has been set
- // ask user whether he would like to send the login credentials
- TBool sendCredentials = EFalse;
- if ((entryToBeSent->Item(EMountEntryItemUserName))->Length() > 0)
- {
- HBufC* myDisplayMessage = NULL;
- myDisplayMessage = StringLoader::LoadLC(R_STR_RSFW_SEND_CREDENTIALS_QUERY);
- CAknQueryDialog* query = CAknQueryDialog::NewL
- (CAknQueryDialog::EConfirmationTone);
- sendCredentials =
- query->ExecuteLD( R_CONFIRMATION_QUERY, *myDisplayMessage);
- CleanupStack::PopAndDestroy(myDisplayMessage);
- }
-
-
- // Encode configuration entry
- HBufC* vcal = HBufC::NewLC(KMaxMountConfLength);
- TPtr p = vcal->Des();
- RsfwMountUtils::ExportMountEntryL(*entryToBeSent, sendCredentials, p);
-
- // convert to 8-bit
- // note that safe conversion is needed both when sending
- // as an attachement and when sending as message text
- HBufC8* temp = ConvertToUtf7LC(p);
-
- TUid mtmUid = iSelectedMtmUid;
- TSendingCapabilities capabilities;
- iSendUi->ServiceCapabilitiesL( mtmUid, capabilities );
- if (capabilities.iFlags & TSendingCapabilities::ESupportsAttachments)
- {
- // send as Attachment
- RFs fs;
- User::LeaveIfError( fs.Connect() );
- CleanupClosePushL( fs );
- // must share the handle between processes
- User::LeaveIfError( fs.ShareProtected() );
- TInt err = fs.MkDirAll(KRemoteDriveAttachmentFilename);
- RFile file;
- err = file.Replace(fs,KRemoteDriveAttachmentFilename,EFileWrite | EFileShareAny );
- CleanupClosePushL(file);
- TInt spaceNeeded = vcal->Size();
- if ( SysUtil::FFSSpaceBelowCriticalLevelL( &fs, spaceNeeded ) )
- {
- // don't show any own notes here
- User::Leave( KErrDiskFull );
- }
-
- User::LeaveIfError(file.Write(*temp));
-
- TParse parse;
- User::LeaveIfError(parse.SetNoWild(KRemoteDriveAttachmentFilename,
- NULL, NULL));
-
- CMessageData* messageData = CMessageData::NewL();
- CleanupStack::PushL( messageData );
- messageData->AppendAttachmentHandleL(file);
- iSendUi->CreateAndSendMessageL( iSelectedMtmUid, messageData, KUidBIOMountConfMsg, ETrue );
-
- CleanupStack::PopAndDestroy( 2 ); // messageData, file
- fs.Delete(parse.FullName());
- CleanupStack::PopAndDestroy( &fs );;
- }
- else
- {
- // send as message body
- // message data interface is 16-bit
- // however, along the way 8-bit interface is used
- // to pass the data without safe conversion
- // so the unicode conversion above is still needed
- HBufC* bufCnv = HBufC::NewLC(temp->Length());
- TPtr16 des(bufCnv->Des());
- des.Copy(p);
- text->InsertL(0, des);
-
- CMessageData* messageData = CMessageData::NewL();
- CleanupStack::PushL( messageData );
- messageData->SetBodyTextL( text );
- iSendUi->CreateAndSendMessageL( iSelectedMtmUid, messageData, KUidBIOMountConfMsg, ETrue );
- CleanupStack::PopAndDestroy(2); // messageData, bufCnv
- }
-
- CleanupStack::PopAndDestroy(4); // entryToBeSent, text, vcal, temp
-
- }
-
-// ------------------------------------------------------------------------------------------------
-// HBufC* CRsfwGsRemoteDriveSend::ConvertToUtf7LC
-// Encodes from Unicode UCS-2 to UTF-8
-// ------------------------------------------------------------------------------------------------
-HBufC8* CRsfwGsRemoteDriveSend::ConvertToUtf7LC(const TDesC16& aText)
- {
- TPtrC16 remainder( aText );
- TBuf8<20> utfBuffer;
- HBufC8 *ret = 0;
- CBufFlat *buffer = CBufFlat::NewL( 128 );
- CleanupStack::PushL( buffer );
-
- TBool finish = EFalse;
- while( !finish )
- {
- utfBuffer.Zero();
- TInt unconverted = CnvUtfConverter::ConvertFromUnicodeToUtf7(utfBuffer, remainder, EFalse );
- if( unconverted >= 0 )
- {
- remainder.Set( remainder.Right( unconverted ) );
- buffer->InsertL( buffer->Size(), utfBuffer );
- finish = (unconverted == 0);
- }
- else
- {
- User::Leave( unconverted );
- }
- }
-
- buffer->Compress();
- ret = buffer->Ptr( 0 ).Alloc();
- CleanupStack::PopAndDestroy( buffer );
- CleanupStack::PushL( ret );
- return ret;
- }
-
-
-
-// end of file