btobexprofiles/obexreceiveservices/mtmuibluetooth/src/btmtmui.cpp
author hgs
Fri, 28 May 2010 17:03:06 +0300
changeset 32 19bd632b5100
child 40 997690c3397a
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*       CBtMtmUi class
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include "btmtmui.h"
hgs
parents:
diff changeset
    22
#include "btmtmuidebug.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
//#include <obexmtmuilayer.h>
hgs
parents:
diff changeset
    25
#ifdef NO101APPDEPFIXES
hgs
parents:
diff changeset
    26
#include <MuiuMsvProgressReporterOperation.h>
hgs
parents:
diff changeset
    27
#endif  //NO101APPDEPFIXES
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#ifdef NO101APPDEPFIXES_NEW 
hgs
parents:
diff changeset
    30
#include <app/btcmtm.h>
hgs
parents:
diff changeset
    31
#endif //NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include <mtmuidef.hrh>
hgs
parents:
diff changeset
    34
#include <mtclreg.h>
hgs
parents:
diff changeset
    35
#include <obexutilsuilayer.h>
hgs
parents:
diff changeset
    36
#include <Obexutils.rsg>
hgs
parents:
diff changeset
    37
#include <msvuids.h>
hgs
parents:
diff changeset
    38
#include <msvids.h>
hgs
parents:
diff changeset
    39
#include <obexconstants.h>
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// CONSTANTS
hgs
parents:
diff changeset
    43
#ifdef NO101APPDEPFIXES
hgs
parents:
diff changeset
    44
const TInt KBtMtmUiToFromFieldBuffer     = 80;
hgs
parents:
diff changeset
    45
const TInt KBtMtmUiConnectionTimeout     = 20000000;
hgs
parents:
diff changeset
    46
const TInt KBtMtmUiConnectionPutTimeout  = 0;
hgs
parents:
diff changeset
    47
const TInt KBtMtmUiObexPort              = 1;
hgs
parents:
diff changeset
    48
const TInt KBtMtmUiAddressMaxLength      = 3;
hgs
parents:
diff changeset
    49
#endif  //NO101APPDEPFIXES
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// ENUMS
hgs
parents:
diff changeset
    52
enum TBtMtmAsyncCmds
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
    EBtMtmCmdSend
hgs
parents:
diff changeset
    55
    };
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ================= MEMBER FUNCTIONS =======================
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    60
// might leave.
hgs
parents:
diff changeset
    61
//
hgs
parents:
diff changeset
    62
CBtMtmUi::CBtMtmUi( CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll )
hgs
parents:
diff changeset
    63
	:	CBaseMtmUi( aBaseMtm, aRegisteredMtmDll )
hgs
parents:
diff changeset
    64
	{
hgs
parents:
diff changeset
    65
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: CBtMtmUi\t" ) );
hgs
parents:
diff changeset
    66
	}
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// Two-phased constructor.
hgs
parents:
diff changeset
    69
CBtMtmUi* CBtMtmUi::NewL( CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll )
hgs
parents:
diff changeset
    70
	{
hgs
parents:
diff changeset
    71
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: NewL\t" ) );
hgs
parents:
diff changeset
    72
	CBtMtmUi* self = new( ELeave ) CBtMtmUi( aBaseMtm, aRegisteredMtmDll );
hgs
parents:
diff changeset
    73
	CleanupStack::PushL( self );
hgs
parents:
diff changeset
    74
	self->ConstructL();
hgs
parents:
diff changeset
    75
	CleanupStack::Pop( self );
hgs
parents:
diff changeset
    76
	return self;
hgs
parents:
diff changeset
    77
	}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
// Destructor
hgs
parents:
diff changeset
    80
CBtMtmUi::~CBtMtmUi()
hgs
parents:
diff changeset
    81
	{
hgs
parents:
diff changeset
    82
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: ~CBtMtmUi\t" ) );
hgs
parents:
diff changeset
    83
	delete iClientRegistry;
hgs
parents:
diff changeset
    84
	}
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
// Symbian OS default constructor can leave.
hgs
parents:
diff changeset
    87
void CBtMtmUi::ConstructL()
hgs
parents:
diff changeset
    88
	{
hgs
parents:
diff changeset
    89
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: ConstructL\t" ) );
hgs
parents:
diff changeset
    90
    CBaseMtmUi::ConstructL();
hgs
parents:
diff changeset
    91
	}
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
// ---------------------------------------------------------
hgs
parents:
diff changeset
    94
// GetResourceFileName(...)
hgs
parents:
diff changeset
    95
// return progress status.
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------
hgs
parents:
diff changeset
    97
//
hgs
parents:
diff changeset
    98
void CBtMtmUi::GetResourceFileName( TFileName& aFileName ) const
hgs
parents:
diff changeset
    99
	{ 
hgs
parents:
diff changeset
   100
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: GetResourceFileName\t" ) );
hgs
parents:
diff changeset
   101
    aFileName = KObexUtilsFileDrive;
hgs
parents:
diff changeset
   102
    aFileName += KDC_RESOURCE_FILES_DIR;
hgs
parents:
diff changeset
   103
    aFileName += KObexUtilsResourceFileName;
hgs
parents:
diff changeset
   104
	}
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
// ---------------------------------------------------------
hgs
parents:
diff changeset
   107
// QueryCapability(TUid aCapability, TInt& aResponse)
hgs
parents:
diff changeset
   108
// return capability of mtm.
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------
hgs
parents:
diff changeset
   110
//
hgs
parents:
diff changeset
   111
TInt CBtMtmUi::QueryCapability(TUid aCapability, TInt& aResponse)
hgs
parents:
diff changeset
   112
	{ 
hgs
parents:
diff changeset
   113
    // Querying of menu availablility is done in syni.
hgs
parents:
diff changeset
   114
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: QueryCapability\t" ) );
hgs
parents:
diff changeset
   115
	if( aCapability.iUid == KUidMsvMtmUiQueryCanPrintMsgValue )
hgs
parents:
diff changeset
   116
		{
hgs
parents:
diff changeset
   117
		aResponse = ETrue;
hgs
parents:
diff changeset
   118
		return KErrNone;
hgs
parents:
diff changeset
   119
		}
hgs
parents:
diff changeset
   120
	return CBaseMtmUi::QueryCapability( aCapability, aResponse );
hgs
parents:
diff changeset
   121
	}
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------
hgs
parents:
diff changeset
   124
// InvokeSyncFunctionL(...)
hgs
parents:
diff changeset
   125
// Invoke sync -function from BaseMTM.
hgs
parents:
diff changeset
   126
// ---------------------------------------------------------
hgs
parents:
diff changeset
   127
//
hgs
parents:
diff changeset
   128
void CBtMtmUi::InvokeSyncFunctionL( TInt aFunctionId, 
hgs
parents:
diff changeset
   129
                                   const CMsvEntrySelection& aSelection, 
hgs
parents:
diff changeset
   130
                                   TDes8& aParameter )
hgs
parents:
diff changeset
   131
	{
hgs
parents:
diff changeset
   132
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: InvokeSyncFunctionL\t" ) );
hgs
parents:
diff changeset
   133
	CBaseMtmUi::InvokeSyncFunctionL( aFunctionId, aSelection, aParameter );
hgs
parents:
diff changeset
   134
	}
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
// ---------------------------------------------------------
hgs
parents:
diff changeset
   138
// CreateL(...)
hgs
parents:
diff changeset
   139
// Entry creation forbidden.
hgs
parents:
diff changeset
   140
// ---------------------------------------------------------
hgs
parents:
diff changeset
   141
//
hgs
parents:
diff changeset
   142
CMsvOperation* CBtMtmUi::CreateL( const TMsvEntry& /*aEntry*/,
hgs
parents:
diff changeset
   143
                                 CMsvEntry& /*aParent*/, 
hgs
parents:
diff changeset
   144
                                 TRequestStatus& /*aStatus*/ )
hgs
parents:
diff changeset
   145
	{
hgs
parents:
diff changeset
   146
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: CreateL\t" ) );
hgs
parents:
diff changeset
   147
    // Entries created through utility functions.
hgs
parents:
diff changeset
   148
	User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   149
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   150
    return NULL;
hgs
parents:
diff changeset
   151
	}
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
// ---------------------------------------------------------
hgs
parents:
diff changeset
   154
// OpenL(TRequestStatus& aStatus)
hgs
parents:
diff changeset
   155
// handles opening entry.
hgs
parents:
diff changeset
   156
// ---------------------------------------------------------
hgs
parents:
diff changeset
   157
//
hgs
parents:
diff changeset
   158
CMsvOperation* CBtMtmUi::OpenL( TRequestStatus& aStatus )
hgs
parents:
diff changeset
   159
	{
hgs
parents:
diff changeset
   160
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: OpenL\t" ) );
hgs
parents:
diff changeset
   161
	const TMsvEntry& context = iBaseMtm.Entry().Entry();
hgs
parents:
diff changeset
   162
	const TUid type( context.iType );
hgs
parents:
diff changeset
   163
	if( ( type == KUidMsvMessageEntry ) &&  
hgs
parents:
diff changeset
   164
         ( ( context.Parent() == KMsvSentEntryIdValue )
hgs
parents:
diff changeset
   165
         ||( context.Parent() == KMsvGlobalInBoxIndexEntryIdValue ) ) )
hgs
parents:
diff changeset
   166
        {
hgs
parents:
diff changeset
   167
		// Message is in the sent folder, so can't be edited
hgs
parents:
diff changeset
   168
		return ViewL( aStatus );
hgs
parents:
diff changeset
   169
        }
hgs
parents:
diff changeset
   170
	return EditL( aStatus );
hgs
parents:
diff changeset
   171
	}
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
// ---------------------------------------------------------
hgs
parents:
diff changeset
   174
// OpenL(...)
hgs
parents:
diff changeset
   175
// handles opening entry using selection.
hgs
parents:
diff changeset
   176
// ---------------------------------------------------------
hgs
parents:
diff changeset
   177
//
hgs
parents:
diff changeset
   178
CMsvOperation* CBtMtmUi::OpenL( TRequestStatus& aStatus, 
hgs
parents:
diff changeset
   179
                               const CMsvEntrySelection& aSelection )
hgs
parents:
diff changeset
   180
	{
hgs
parents:
diff changeset
   181
	iBaseMtm.Entry().SetEntryL( aSelection.At(0) );
hgs
parents:
diff changeset
   182
	return OpenL( aStatus );
hgs
parents:
diff changeset
   183
	}
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
// ---------------------------------------------------------
hgs
parents:
diff changeset
   186
// CloseL(TRequestStatus& aStatus)
hgs
parents:
diff changeset
   187
// Closes entry.
hgs
parents:
diff changeset
   188
// ---------------------------------------------------------
hgs
parents:
diff changeset
   189
//
hgs
parents:
diff changeset
   190
CMsvOperation* CBtMtmUi::CloseL( TRequestStatus& aStatus )
hgs
parents:
diff changeset
   191
	{
hgs
parents:
diff changeset
   192
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: CloseL\t" ) );
hgs
parents:
diff changeset
   193
	CMsvCompletedOperation* op = CMsvCompletedOperation::NewL( Session(), 
hgs
parents:
diff changeset
   194
        Type(), 
hgs
parents:
diff changeset
   195
        KNullDesC8, 
hgs
parents:
diff changeset
   196
        KMsvLocalServiceIndexEntryId, 
hgs
parents:
diff changeset
   197
        aStatus);
hgs
parents:
diff changeset
   198
	return op;
hgs
parents:
diff changeset
   199
	}
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
// ---------------------------------------------------------
hgs
parents:
diff changeset
   202
// CloseL(TRequestStatus& aStatus)
hgs
parents:
diff changeset
   203
// Closes entry using selection.
hgs
parents:
diff changeset
   204
// ---------------------------------------------------------
hgs
parents:
diff changeset
   205
//
hgs
parents:
diff changeset
   206
CMsvOperation* CBtMtmUi::CloseL(
hgs
parents:
diff changeset
   207
    TRequestStatus& aStatus, 
hgs
parents:
diff changeset
   208
    const CMsvEntrySelection& aSelection)
hgs
parents:
diff changeset
   209
	{
hgs
parents:
diff changeset
   210
	iBaseMtm.Entry().SetEntryL( aSelection.At(0) );
hgs
parents:
diff changeset
   211
	return CloseL( aStatus );
hgs
parents:
diff changeset
   212
	}
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
// ---------------------------------------------------------
hgs
parents:
diff changeset
   215
// EditL(...)
hgs
parents:
diff changeset
   216
// Handles message sending using selection.
hgs
parents:
diff changeset
   217
// ---------------------------------------------------------
hgs
parents:
diff changeset
   218
//
hgs
parents:
diff changeset
   219
CMsvOperation* CBtMtmUi::EditL( TRequestStatus& aStatus, const CMsvEntrySelection& aSelection )
hgs
parents:
diff changeset
   220
	{
hgs
parents:
diff changeset
   221
    FLOG( _L( "[BtMtmUi] CBtMtmUi: EditL 1 \t" ) );
hgs
parents:
diff changeset
   222
	iBaseMtm.Entry().SetEntryL( aSelection.At(0) );
hgs
parents:
diff changeset
   223
	return EditL( aStatus );
hgs
parents:
diff changeset
   224
	}
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
// ---------------------------------------------------------
hgs
parents:
diff changeset
   227
// EditL(TRequestStatus& aStatus)
hgs
parents:
diff changeset
   228
// Handles message sending over Bluetooth.
hgs
parents:
diff changeset
   229
// ---------------------------------------------------------
hgs
parents:
diff changeset
   230
//
hgs
parents:
diff changeset
   231
CMsvOperation* CBtMtmUi::EditL( TRequestStatus& aStatus )
hgs
parents:
diff changeset
   232
	{
hgs
parents:
diff changeset
   233
	FLOG( _L( "[BtMtmUi] CBtMtmUi: EditL 2 \t" ) );
hgs
parents:
diff changeset
   234
	switch( iBaseMtm.Entry().Entry().iType.iUid )
hgs
parents:
diff changeset
   235
		{
hgs
parents:
diff changeset
   236
	    case KUidMsvMessageEntryValue:
hgs
parents:
diff changeset
   237
		    {
hgs
parents:
diff changeset
   238
		    if( iBaseMtm.Entry().Entry().Parent() != KMsvDraftEntryId &&
hgs
parents:
diff changeset
   239
		       iBaseMtm.Entry().Entry().Parent() != KMsvGlobalOutBoxIndexEntryId )
hgs
parents:
diff changeset
   240
			    {
hgs
parents:
diff changeset
   241
			    //   Edit/"use" entries in the Inbox
hgs
parents:
diff changeset
   242
			    return LaunchEditorApplicationL( aStatus, iBaseMtm.Entry().Session() );   
hgs
parents:
diff changeset
   243
			    }
hgs
parents:
diff changeset
   244
#ifdef NO101APPDEPFIXES
hgs
parents:
diff changeset
   245
		    else
hgs
parents:
diff changeset
   246
			    {
hgs
parents:
diff changeset
   247
			    TInt resourceId;
hgs
parents:
diff changeset
   248
                HBufC* password = HBufC::NewL(1);
hgs
parents:
diff changeset
   249
                CleanupStack::PushL( password );  // 1st push
hgs
parents:
diff changeset
   250
                BaseMtm().LoadMessageL();
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
                TBTDevAddr address;
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
                CBtClientMtm::SBtcCmdSendParams sendparams;
hgs
parents:
diff changeset
   255
			    sendparams.iTimeouts.iConnectTimeout    = KBtMtmUiConnectionTimeout;
hgs
parents:
diff changeset
   256
			    sendparams.iTimeouts.iPutTimeout        = KBtMtmUiConnectionPutTimeout;
hgs
parents:
diff changeset
   257
			    sendparams.iRemoteObexPort              = KBtMtmUiObexPort;
hgs
parents:
diff changeset
   258
			    sendparams.iConnectPassword             = password;
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
                iDiscovery = CBTEngDiscovery::NewL(this);
hgs
parents:
diff changeset
   261
				CBTDevice* iDevice = CBTDevice::NewL( );
hgs
parents:
diff changeset
   262
				
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
                if ( iDiscovery->SearchRemoteDevice( iDevice ) == KErrNone )
hgs
parents:
diff changeset
   265
                    {
hgs
parents:
diff changeset
   266
                    TInt retVal=0;
hgs
parents:
diff changeset
   267
				    iWaiter.Start();
hgs
parents:
diff changeset
   268
				    
hgs
parents:
diff changeset
   269
				    if ( iState ==KErrNone)
hgs
parents:
diff changeset
   270
				        {
hgs
parents:
diff changeset
   271
					    address = iDevice->BDAddr();
hgs
parents:
diff changeset
   272
				        FLOG( _L( "[BtMtmUi] CBtMtmUi:SearchRemoteChannelL \t" ) );
hgs
parents:
diff changeset
   273
                        retVal = iDiscovery->RemoteProtocolChannelQuery(address, TUUID(KBTSdpObjectPush));
hgs
parents:
diff changeset
   274
                        if(retVal == KErrNone)
hgs
parents:
diff changeset
   275
                            {
hgs
parents:
diff changeset
   276
                            iWaiter.Start();
hgs
parents:
diff changeset
   277
                            }
hgs
parents:
diff changeset
   278
                        }
hgs
parents:
diff changeset
   279
                    if ( retVal != KErrNone ||iState  != KErrNone )
hgs
parents:
diff changeset
   280
                        {
hgs
parents:
diff changeset
   281
                        resourceId = R_BT_DEV_NOT_AVAIL;                        
hgs
parents:
diff changeset
   282
						TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
hgs
parents:
diff changeset
   283
                        CleanupStack::PopAndDestroy(3); // BtDevice, BtConnection, password
hgs
parents:
diff changeset
   284
                        return CMsvCompletedOperation::NewL(
hgs
parents:
diff changeset
   285
                             Session(), 
hgs
parents:
diff changeset
   286
                             Type(), 
hgs
parents:
diff changeset
   287
                             KNullDesC8, 
hgs
parents:
diff changeset
   288
                             KMsvLocalServiceIndexEntryId, 
hgs
parents:
diff changeset
   289
                            aStatus );
hgs
parents:
diff changeset
   290
                        }                     
hgs
parents:
diff changeset
   291
                    sendparams.iRemoteObexPort = iClientChannel;
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
			        TPtrC8 ptr8 = address.Des();
hgs
parents:
diff changeset
   294
                    TBuf16<KBtMtmUiAddressMaxLength> convertedaddress16;//48 bits
hgs
parents:
diff changeset
   295
                    // Bt address conversion
hgs
parents:
diff changeset
   296
			        TInt i;
hgs
parents:
diff changeset
   297
                    for( i=0; i<3; i++ )
hgs
parents:
diff changeset
   298
                        {
hgs
parents:
diff changeset
   299
			            TUint16 word = ptr8[( i*2 )+1];
hgs
parents:
diff changeset
   300
			            word = ( TUint16 )( word << 8 );
hgs
parents:
diff changeset
   301
			            word = ( TUint16 )( word + ptr8[i*2] );
hgs
parents:
diff changeset
   302
			            convertedaddress16.Append( &word, 1 );
hgs
parents:
diff changeset
   303
			            }
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
			        BaseMtm().AddAddresseeL( convertedaddress16 );
hgs
parents:
diff changeset
   306
                    }
hgs
parents:
diff changeset
   307
                else
hgs
parents:
diff changeset
   308
                    {
hgs
parents:
diff changeset
   309
                    CleanupStack::PopAndDestroy(3); // BtDevice, BTConnection, password
hgs
parents:
diff changeset
   310
				    FLOG( _L( "[BTMTMUI] CBtMtmUi:CMsvCompletedOperation NewL\t" ) );
hgs
parents:
diff changeset
   311
                    return CMsvCompletedOperation::NewL(
hgs
parents:
diff changeset
   312
                        Session(), 
hgs
parents:
diff changeset
   313
                        Type(), 
hgs
parents:
diff changeset
   314
                        KNullDesC8, 
hgs
parents:
diff changeset
   315
                        KMsvLocalServiceIndexEntryId, 
hgs
parents:
diff changeset
   316
                        aStatus );
hgs
parents:
diff changeset
   317
                    }
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
			    CMsvEntrySelection* sel = new( ELeave ) CMsvEntrySelection();
hgs
parents:
diff changeset
   320
			    CleanupStack::PushL( sel );					// 4th push
hgs
parents:
diff changeset
   321
			    sel->AppendL( BaseMtm().Entry().EntryId() );
hgs
parents:
diff changeset
   322
			    
hgs
parents:
diff changeset
   323
			    CMsvOperationWait* waiter = CMsvOperationWait::NewLC();	// 5th push
hgs
parents:
diff changeset
   324
                
hgs
parents:
diff changeset
   325
                TBuf<KBtMtmUiToFromFieldBuffer> toFrom;
hgs
parents:
diff changeset
   326
                resourceId = R_BT_SEND_OUTBOX_SENDING;                
hgs
parents:
diff changeset
   327
				TObexUtilsUiLayer::ReadResourceL( toFrom, resourceId );
hgs
parents:
diff changeset
   328
                                
hgs
parents:
diff changeset
   329
                BaseMtm().SaveMessageL();
hgs
parents:
diff changeset
   330
			    
hgs
parents:
diff changeset
   331
                TMsvEntry newTEntry( iBaseMtm.Entry().Entry() );
hgs
parents:
diff changeset
   332
			    newTEntry.iDetails.Set( toFrom );
hgs
parents:
diff changeset
   333
                newTEntry.SetVisible( ETrue );
hgs
parents:
diff changeset
   334
                newTEntry.SetInPreparation( ETrue );
hgs
parents:
diff changeset
   335
hgs
parents:
diff changeset
   336
                iBaseMtm.Entry().ChangeL( newTEntry );
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
			    CMsvEntry* entry = 
hgs
parents:
diff changeset
   339
                    BaseMtm().Session().GetEntryL( KMsvDraftEntryId );
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
                CleanupStack::PushL( entry );  // 6th push
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
			    CMsvOperation* moveOp = entry->MoveL(
hgs
parents:
diff changeset
   344
                    *sel,
hgs
parents:
diff changeset
   345
                    KMsvGlobalOutBoxIndexEntryId, 
hgs
parents:
diff changeset
   346
                    waiter->iStatus );
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
                CleanupStack::PopAndDestroy( entry );
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
			    waiter->Start();
hgs
parents:
diff changeset
   351
			    CActiveScheduler::Start();
hgs
parents:
diff changeset
   352
			    delete moveOp;
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
                CMsvProgressReporterOperation* reporter 
hgs
parents:
diff changeset
   355
                    = CMsvProgressReporterOperation::NewL( Session(), aStatus );
hgs
parents:
diff changeset
   356
			    CleanupStack::PushL( reporter );  // 6th push
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
   			    TPckgBuf<CBtClientMtm::SBtcCmdSendParams> paramBuf( sendparams );
hgs
parents:
diff changeset
   359
			    
hgs
parents:
diff changeset
   360
  			    CMsvOperation* op = BaseMtm().InvokeAsyncFunctionL(
hgs
parents:
diff changeset
   361
                    EBtMtmCmdSend, 
hgs
parents:
diff changeset
   362
                    *sel,
hgs
parents:
diff changeset
   363
                    paramBuf, 
hgs
parents:
diff changeset
   364
                    reporter->RequestStatus() );
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
                // ownership of op transfered to reporter
hgs
parents:
diff changeset
   367
		        reporter->SetOperationL( op ); 
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
                aStatus = KRequestPending;
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
                CleanupStack::Pop( reporter );
hgs
parents:
diff changeset
   372
                CleanupStack::PopAndDestroy(3);  // waiter, sel,  password
hgs
parents:
diff changeset
   373
                return reporter;
hgs
parents:
diff changeset
   374
			    }
hgs
parents:
diff changeset
   375
#endif  //NO101APPDEPFIXES
hgs
parents:
diff changeset
   376
		    }
hgs
parents:
diff changeset
   377
	    case KUidMsvServiceEntryValue:
hgs
parents:
diff changeset
   378
	    case KUidMsvAttachmentEntryValue:
hgs
parents:
diff changeset
   379
	    case KUidMsvFolderEntryValue:
hgs
parents:
diff changeset
   380
            {
hgs
parents:
diff changeset
   381
		    User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   382
            }
hgs
parents:
diff changeset
   383
        default:
hgs
parents:
diff changeset
   384
            {
hgs
parents:
diff changeset
   385
            break;
hgs
parents:
diff changeset
   386
            }
hgs
parents:
diff changeset
   387
		}
hgs
parents:
diff changeset
   388
hgs
parents:
diff changeset
   389
	CMsvCompletedOperation* op = CMsvCompletedOperation::NewL(
hgs
parents:
diff changeset
   390
        Session(), 
hgs
parents:
diff changeset
   391
        Type(), 
hgs
parents:
diff changeset
   392
        KNullDesC8, 
hgs
parents:
diff changeset
   393
        KMsvLocalServiceIndexEntryId, 
hgs
parents:
diff changeset
   394
        aStatus );
hgs
parents:
diff changeset
   395
    aStatus = KRequestPending;
hgs
parents:
diff changeset
   396
	return op;
hgs
parents:
diff changeset
   397
	}
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
// ---------------------------------------------------------
hgs
parents:
diff changeset
   400
// ViewL(TRequestStatus& aStatus)
hgs
parents:
diff changeset
   401
// Handles viewing of received object.
hgs
parents:
diff changeset
   402
// ---------------------------------------------------------
hgs
parents:
diff changeset
   403
//
hgs
parents:
diff changeset
   404
CMsvOperation* CBtMtmUi::ViewL( TRequestStatus& aStatus )
hgs
parents:
diff changeset
   405
	{
hgs
parents:
diff changeset
   406
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: ViewL\t" ) );
hgs
parents:
diff changeset
   407
	return LaunchEditorApplicationL( aStatus, iBaseMtm.Entry().Session() );
hgs
parents:
diff changeset
   408
	}
hgs
parents:
diff changeset
   409
hgs
parents:
diff changeset
   410
// ---------------------------------------------------------
hgs
parents:
diff changeset
   411
// ViewL(...)
hgs
parents:
diff changeset
   412
// Handles viewing of received object using selection.
hgs
parents:
diff changeset
   413
// ---------------------------------------------------------
hgs
parents:
diff changeset
   414
//
hgs
parents:
diff changeset
   415
CMsvOperation* CBtMtmUi::ViewL( TRequestStatus& aStatus, 
hgs
parents:
diff changeset
   416
                               const CMsvEntrySelection& aSelection )
hgs
parents:
diff changeset
   417
	{
hgs
parents:
diff changeset
   418
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: ViewL 1\t" ) );
hgs
parents:
diff changeset
   419
	iBaseMtm.Entry().SetEntryL( aSelection.At(0) );
hgs
parents:
diff changeset
   420
	return ViewL( aStatus );
hgs
parents:
diff changeset
   421
	}
hgs
parents:
diff changeset
   422
hgs
parents:
diff changeset
   423
// ---------------------------------------------------------
hgs
parents:
diff changeset
   424
// CopyFromL(...)
hgs
parents:
diff changeset
   425
// Not supported.
hgs
parents:
diff changeset
   426
// ---------------------------------------------------------
hgs
parents:
diff changeset
   427
//
hgs
parents:
diff changeset
   428
CMsvOperation* CBtMtmUi::CopyFromL( const CMsvEntrySelection& /*aSelection*/, 
hgs
parents:
diff changeset
   429
                                   TMsvId /*aTargetId*/, 
hgs
parents:
diff changeset
   430
                                   TRequestStatus& /*aStatus*/ )
hgs
parents:
diff changeset
   431
	{
hgs
parents:
diff changeset
   432
    User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   433
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   434
    return NULL;
hgs
parents:
diff changeset
   435
	}
hgs
parents:
diff changeset
   436
hgs
parents:
diff changeset
   437
// ---------------------------------------------------------
hgs
parents:
diff changeset
   438
// MoveFromL(...)
hgs
parents:
diff changeset
   439
// Not supported.
hgs
parents:
diff changeset
   440
// ---------------------------------------------------------
hgs
parents:
diff changeset
   441
//
hgs
parents:
diff changeset
   442
CMsvOperation* CBtMtmUi::MoveFromL( const CMsvEntrySelection& /*aSelection*/, 
hgs
parents:
diff changeset
   443
                                   TMsvId /*aTargetId*/, 
hgs
parents:
diff changeset
   444
                                   TRequestStatus& /*aStatus*/ )
hgs
parents:
diff changeset
   445
	{
hgs
parents:
diff changeset
   446
    User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   447
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   448
    return NULL;
hgs
parents:
diff changeset
   449
	}
hgs
parents:
diff changeset
   450
hgs
parents:
diff changeset
   451
// ---------------------------------------------------------
hgs
parents:
diff changeset
   452
// MoveToL(...)
hgs
parents:
diff changeset
   453
// Not supported.
hgs
parents:
diff changeset
   454
// ---------------------------------------------------------
hgs
parents:
diff changeset
   455
//
hgs
parents:
diff changeset
   456
CMsvOperation* CBtMtmUi::MoveToL( const CMsvEntrySelection& /*aSelection*/, 
hgs
parents:
diff changeset
   457
                                 TRequestStatus& /*aStatus*/)
hgs
parents:
diff changeset
   458
	{
hgs
parents:
diff changeset
   459
    User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   460
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   461
    return NULL;
hgs
parents:
diff changeset
   462
	}
hgs
parents:
diff changeset
   463
hgs
parents:
diff changeset
   464
// ---------------------------------------------------------
hgs
parents:
diff changeset
   465
// CopyToL(...)
hgs
parents:
diff changeset
   466
// Not supported.
hgs
parents:
diff changeset
   467
// ---------------------------------------------------------
hgs
parents:
diff changeset
   468
//
hgs
parents:
diff changeset
   469
CMsvOperation* CBtMtmUi::CopyToL( const CMsvEntrySelection& /*aSelection*/, 
hgs
parents:
diff changeset
   470
                                 TRequestStatus& /*aStatus*/)
hgs
parents:
diff changeset
   471
	{
hgs
parents:
diff changeset
   472
    User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   473
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   474
    return NULL;
hgs
parents:
diff changeset
   475
	}
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
// ---------------------------------------------------------
hgs
parents:
diff changeset
   478
// DisplayProgressSummary(const TDesC8& aProgress) const
hgs
parents:
diff changeset
   479
// calls leaving DisplayProgressSummaryL -function and
hgs
parents:
diff changeset
   480
// traps the error.
hgs
parents:
diff changeset
   481
// ---------------------------------------------------------
hgs
parents:
diff changeset
   482
//
hgs
parents:
diff changeset
   483
TInt CBtMtmUi::DisplayProgressSummary( const TDesC8& aProgress ) const
hgs
parents:
diff changeset
   484
    {
hgs
parents:
diff changeset
   485
    TInt retVal = KErrNone;
hgs
parents:
diff changeset
   486
    TRAP( retVal, retVal = DisplayProgressSummaryL( aProgress ) );
hgs
parents:
diff changeset
   487
    return retVal;
hgs
parents:
diff changeset
   488
    }
hgs
parents:
diff changeset
   489
hgs
parents:
diff changeset
   490
// ---------------------------------------------------------
hgs
parents:
diff changeset
   491
// DisplayProgressSummary(const TDesC8& aProgress) const
hgs
parents:
diff changeset
   492
// calls leaving DisplayProgressSummaryL -function and
hgs
parents:
diff changeset
   493
// traps the error.
hgs
parents:
diff changeset
   494
// ---------------------------------------------------------
hgs
parents:
diff changeset
   495
//
hgs
parents:
diff changeset
   496
TInt CBtMtmUi::DisplayProgressSummaryL( const TDesC8& aProgress ) const
hgs
parents:
diff changeset
   497
    {
hgs
parents:
diff changeset
   498
    #ifndef NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   499
    (void) aProgress;
hgs
parents:
diff changeset
   500
    #endif //NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   501
hgs
parents:
diff changeset
   502
    #ifdef NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   503
    FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL\t" ) );
hgs
parents:
diff changeset
   504
    TInt resourceId;
hgs
parents:
diff changeset
   505
    if( ( !aProgress.Length() ) || ( aProgress.Size() == sizeof( TMsvLocalOperationProgress ) ) )
hgs
parents:
diff changeset
   506
        {
hgs
parents:
diff changeset
   507
        // Probably a CMsvCompletedOperation
hgs
parents:
diff changeset
   508
        return KErrCancel;
hgs
parents:
diff changeset
   509
        }
hgs
parents:
diff changeset
   510
	TPckgBuf<TObexMtmProgress> paramPack;
hgs
parents:
diff changeset
   511
	paramPack.Copy( aProgress );
hgs
parents:
diff changeset
   512
	TObexMtmProgress& progress = paramPack();
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
	const TObexMtmProgress::TSendState progressType	= progress.iSendState;
hgs
parents:
diff changeset
   515
	const TInt error = progress.iError;
hgs
parents:
diff changeset
   516
    if ( error == KErrInUse )
hgs
parents:
diff changeset
   517
		{
hgs
parents:
diff changeset
   518
        resourceId = R_BT_DEV_NOT_AVAIL;
hgs
parents:
diff changeset
   519
		TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
hgs
parents:
diff changeset
   520
	    return KErrNone;
hgs
parents:
diff changeset
   521
		}
hgs
parents:
diff changeset
   522
    
hgs
parents:
diff changeset
   523
	switch( progressType )
hgs
parents:
diff changeset
   524
		{
hgs
parents:
diff changeset
   525
	    case TObexMtmProgress::EDisconnected:
hgs
parents:
diff changeset
   526
            {
hgs
parents:
diff changeset
   527
            FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: EDisconnected\t" ) );
hgs
parents:
diff changeset
   528
            // Allowed to send again.
hgs
parents:
diff changeset
   529
            resourceId = R_BT_DATA_SENT;
hgs
parents:
diff changeset
   530
			TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
hgs
parents:
diff changeset
   531
		    break;
hgs
parents:
diff changeset
   532
            }
hgs
parents:
diff changeset
   533
        case TObexMtmProgress::ESendError:
hgs
parents:
diff changeset
   534
            {
hgs
parents:
diff changeset
   535
            FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: ESendError\t" ) );
hgs
parents:
diff changeset
   536
            if( error == KErrIrObexClientNoDevicesFound )
hgs
parents:
diff changeset
   537
                {
hgs
parents:
diff changeset
   538
                resourceId = R_BT_DEV_NOT_AVAIL;
hgs
parents:
diff changeset
   539
				TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
hgs
parents:
diff changeset
   540
                }
hgs
parents:
diff changeset
   541
            else
hgs
parents:
diff changeset
   542
                {
hgs
parents:
diff changeset
   543
                resourceId = R_BT_FAILED_TO_SEND;
hgs
parents:
diff changeset
   544
				TObexUtilsUiLayer::ShowErrorNoteL( resourceId );
hgs
parents:
diff changeset
   545
                }
hgs
parents:
diff changeset
   546
            break;
hgs
parents:
diff changeset
   547
            }
hgs
parents:
diff changeset
   548
        case TObexMtmProgress::ESendComplete:
hgs
parents:
diff changeset
   549
            {
hgs
parents:
diff changeset
   550
            FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: ESendComplete\t" ) );
hgs
parents:
diff changeset
   551
            break;
hgs
parents:
diff changeset
   552
            }
hgs
parents:
diff changeset
   553
        case TObexMtmProgress::EInitialise:
hgs
parents:
diff changeset
   554
	    case TObexMtmProgress::EConnect:
hgs
parents:
diff changeset
   555
	    case TObexMtmProgress::EConnectAttemptComplete:
hgs
parents:
diff changeset
   556
	    case TObexMtmProgress::ESendObject:
hgs
parents:
diff changeset
   557
	    case TObexMtmProgress::ESendNextObject:
hgs
parents:
diff changeset
   558
            {
hgs
parents:
diff changeset
   559
            FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: ESendObject\t" ) );
hgs
parents:
diff changeset
   560
            return KErrCancel;
hgs
parents:
diff changeset
   561
            }
hgs
parents:
diff changeset
   562
        case TObexMtmProgress::EUserCancelled:
hgs
parents:
diff changeset
   563
            {
hgs
parents:
diff changeset
   564
            FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: EUserCancelled\t" ) );
hgs
parents:
diff changeset
   565
            return KErrCancel;
hgs
parents:
diff changeset
   566
            }
hgs
parents:
diff changeset
   567
	    default:
hgs
parents:
diff changeset
   568
            {
hgs
parents:
diff changeset
   569
            FTRACE( FPrint(_L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: Default\t %d" ), progressType ) );
hgs
parents:
diff changeset
   570
            return KErrCancel;
hgs
parents:
diff changeset
   571
            }
hgs
parents:
diff changeset
   572
        }
hgs
parents:
diff changeset
   573
  #endif //NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   574
	return KErrNone;
hgs
parents:
diff changeset
   575
	}
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
hgs
parents:
diff changeset
   578
// ---------------------------------------------------------
hgs
parents:
diff changeset
   579
// GetProgress(...)
hgs
parents:
diff changeset
   580
// return progress status.
hgs
parents:
diff changeset
   581
// ---------------------------------------------------------
hgs
parents:
diff changeset
   582
//
hgs
parents:
diff changeset
   583
TInt CBtMtmUi::GetProgress( const TDesC8& aProgress,
hgs
parents:
diff changeset
   584
                           TBuf<EProgressStringMaxLen>& aReturnString, 
hgs
parents:
diff changeset
   585
                           TInt& aTotalEntryCount, 
hgs
parents:
diff changeset
   586
                           TInt& aEntriesDone, 
hgs
parents:
diff changeset
   587
                           TInt& aCurrentEntrySize, 
hgs
parents:
diff changeset
   588
                           TInt& aCurrentBytesTrans ) const
hgs
parents:
diff changeset
   589
	{
hgs
parents:
diff changeset
   590
	#ifndef NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   591
	(void) aProgress;
hgs
parents:
diff changeset
   592
	(void) aReturnString;
hgs
parents:
diff changeset
   593
	(void) aTotalEntryCount;
hgs
parents:
diff changeset
   594
	(void) aEntriesDone;
hgs
parents:
diff changeset
   595
	(void) aCurrentEntrySize;
hgs
parents:
diff changeset
   596
	(void) aCurrentBytesTrans;	
hgs
parents:
diff changeset
   597
	#endif //NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   598
	
hgs
parents:
diff changeset
   599
   #ifdef  NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   600
    TInt resourceId;    
hgs
parents:
diff changeset
   601
hgs
parents:
diff changeset
   602
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: GetProgress\t" ) );	
hgs
parents:
diff changeset
   603
	TPckgBuf<TObexMtmProgress> paramPack;
hgs
parents:
diff changeset
   604
	paramPack.Copy( aProgress );
hgs
parents:
diff changeset
   605
	TObexMtmProgress& progress = paramPack();
hgs
parents:
diff changeset
   606
    const TObexMtmProgress::TSendState progressType	= progress.iSendState;
hgs
parents:
diff changeset
   607
	aTotalEntryCount	= progress.iTotalEntryCount;
hgs
parents:
diff changeset
   608
	aEntriesDone		= progress.iEntriesDone;
hgs
parents:
diff changeset
   609
	aCurrentEntrySize	= progress.iCurrentEntrySize; 
hgs
parents:
diff changeset
   610
	aCurrentBytesTrans	= progress.iCurrentBytesTrans;
hgs
parents:
diff changeset
   611
hgs
parents:
diff changeset
   612
    if( aTotalEntryCount > 1 ) // This is for progress bar multisending
hgs
parents:
diff changeset
   613
        {
hgs
parents:
diff changeset
   614
        aCurrentEntrySize = 0;
hgs
parents:
diff changeset
   615
        }
hgs
parents:
diff changeset
   616
hgs
parents:
diff changeset
   617
	switch( progressType )
hgs
parents:
diff changeset
   618
		{
hgs
parents:
diff changeset
   619
	    case TObexMtmProgress::ENullOp:
hgs
parents:
diff changeset
   620
	    case TObexMtmProgress::ESendError:
hgs
parents:
diff changeset
   621
            {
hgs
parents:
diff changeset
   622
		    aReturnString = KNullDesC;
hgs
parents:
diff changeset
   623
		    break;
hgs
parents:
diff changeset
   624
            }
hgs
parents:
diff changeset
   625
	    case TObexMtmProgress::EInitialise:
hgs
parents:
diff changeset
   626
	    case TObexMtmProgress::EConnect:
hgs
parents:
diff changeset
   627
	    case TObexMtmProgress::EConnectAttemptComplete:
hgs
parents:
diff changeset
   628
            {
hgs
parents:
diff changeset
   629
            resourceId = R_BT_CONNECTING;
hgs
parents:
diff changeset
   630
			TRAPD( retVal, TObexUtilsUiLayer::ReadResourceL( aReturnString, resourceId ) );
hgs
parents:
diff changeset
   631
						retVal=retVal; //avoid warning
hgs
parents:
diff changeset
   632
            // Leave causes progress note to be empty. Not fatal
hgs
parents:
diff changeset
   633
		    break;
hgs
parents:
diff changeset
   634
            }
hgs
parents:
diff changeset
   635
	    case TObexMtmProgress::ESendObject:
hgs
parents:
diff changeset
   636
	    case TObexMtmProgress::ESendNextObject:
hgs
parents:
diff changeset
   637
	    case TObexMtmProgress::ESendComplete:
hgs
parents:
diff changeset
   638
            {
hgs
parents:
diff changeset
   639
            resourceId = R_BT_SENDING_DATA;
hgs
parents:
diff changeset
   640
			TRAPD( retVal, TObexUtilsUiLayer::ReadResourceL( aReturnString, resourceId ) );
hgs
parents:
diff changeset
   641
            // Leave causes progress note to be empty. Not fatal
hgs
parents:
diff changeset
   642
            retVal=retVal; //avoid warning
hgs
parents:
diff changeset
   643
		    break;
hgs
parents:
diff changeset
   644
            }
hgs
parents:
diff changeset
   645
	    case TObexMtmProgress::EDisconnected:
hgs
parents:
diff changeset
   646
            {
hgs
parents:
diff changeset
   647
		    break;
hgs
parents:
diff changeset
   648
            }
hgs
parents:
diff changeset
   649
	    default:
hgs
parents:
diff changeset
   650
            {
hgs
parents:
diff changeset
   651
		    return KErrCancel;
hgs
parents:
diff changeset
   652
            }
hgs
parents:
diff changeset
   653
		}
hgs
parents:
diff changeset
   654
	FLOG( _L( "[CBtMtmUi] CBtMtmUi: GetProgress Done\t" ) );
hgs
parents:
diff changeset
   655
	#endif //NO101APPDEPFIXES_NEW
hgs
parents:
diff changeset
   656
	return KErrNone;
hgs
parents:
diff changeset
   657
	}
hgs
parents:
diff changeset
   658
hgs
parents:
diff changeset
   659
// ---------------------------------------------------------
hgs
parents:
diff changeset
   660
// LaunchEditorApplicationL(...)
hgs
parents:
diff changeset
   661
// Launch viewer for selected object. The first is object's 
hgs
parents:
diff changeset
   662
// recognition(document handler).
hgs
parents:
diff changeset
   663
// ---------------------------------------------------------
hgs
parents:
diff changeset
   664
//
hgs
parents:
diff changeset
   665
CMsvOperation* CBtMtmUi::LaunchEditorApplicationL( TRequestStatus& aStatus, 
hgs
parents:
diff changeset
   666
                                                  CMsvSession& aSession)
hgs
parents:
diff changeset
   667
	{
hgs
parents:
diff changeset
   668
	FLOG( _L( "[CommonMtmUi] CBtMtmUi: LaunchEditorApplicationL\t" ) );
hgs
parents:
diff changeset
   669
	CMsvEntry* message;
hgs
parents:
diff changeset
   670
	message = &iBaseMtm.Entry();    
hgs
parents:
diff changeset
   671
	return TObexUtilsUiLayer::LaunchEditorApplicationOperationL( aSession, message, aStatus );
hgs
parents:
diff changeset
   672
	}
hgs
parents:
diff changeset
   673
hgs
parents:
diff changeset
   674
// ---------------------------------------------------------
hgs
parents:
diff changeset
   675
// GetClientMtmLC(TUid aMtmType)
hgs
parents:
diff changeset
   676
// Handles MTM registration.
hgs
parents:
diff changeset
   677
// ---------------------------------------------------------
hgs
parents:
diff changeset
   678
//
hgs
parents:
diff changeset
   679
CBaseMtm* CBtMtmUi::GetClientMtmLC( TUid aMtmType )
hgs
parents:
diff changeset
   680
	{
hgs
parents:
diff changeset
   681
    FLOG( _L( "[CBtMtmUi] CBtMtmUi: GetClientMtmLC\t" ) );
hgs
parents:
diff changeset
   682
	if( !iClientRegistry )
hgs
parents:
diff changeset
   683
        {
hgs
parents:
diff changeset
   684
		iClientRegistry = CClientMtmRegistry::NewL( Session() );
hgs
parents:
diff changeset
   685
        }
hgs
parents:
diff changeset
   686
	CBaseMtm* mtm = iClientRegistry->NewMtmL( aMtmType );
hgs
parents:
diff changeset
   687
	CleanupStack::PushL( mtm );
hgs
parents:
diff changeset
   688
	return mtm;
hgs
parents:
diff changeset
   689
	}
hgs
parents:
diff changeset
   690
hgs
parents:
diff changeset
   691
// ---------------------------------------------------------
hgs
parents:
diff changeset
   692
// DeleteFromL(TUid aMtmType)
hgs
parents:
diff changeset
   693
// passes entry selection to Base for deletion.
hgs
parents:
diff changeset
   694
// ---------------------------------------------------------
hgs
parents:
diff changeset
   695
//
hgs
parents:
diff changeset
   696
CMsvOperation* CBtMtmUi::DeleteFromL( const CMsvEntrySelection& aSelection, 
hgs
parents:
diff changeset
   697
                                     TRequestStatus& aStatus )
hgs
parents:
diff changeset
   698
	{
hgs
parents:
diff changeset
   699
	return CBaseMtmUi::DeleteFromL( aSelection, aStatus );
hgs
parents:
diff changeset
   700
	}
hgs
parents:
diff changeset
   701
hgs
parents:
diff changeset
   702
// ---------------------------------------------------------
hgs
parents:
diff changeset
   703
// DeleteServiceL(...)
hgs
parents:
diff changeset
   704
// has no service, just complete it.
hgs
parents:
diff changeset
   705
// ---------------------------------------------------------
hgs
parents:
diff changeset
   706
//
hgs
parents:
diff changeset
   707
CMsvOperation* CBtMtmUi::DeleteServiceL( const TMsvEntry& /*aService*/, 
hgs
parents:
diff changeset
   708
                                        TRequestStatus& aStatus)
hgs
parents:
diff changeset
   709
	{
hgs
parents:
diff changeset
   710
	return CMsvCompletedOperation::NewL(
hgs
parents:
diff changeset
   711
        Session(), 
hgs
parents:
diff changeset
   712
        Type(), 
hgs
parents:
diff changeset
   713
        KNullDesC8, 
hgs
parents:
diff changeset
   714
        KMsvLocalServiceIndexEntryId, 
hgs
parents:
diff changeset
   715
        aStatus);
hgs
parents:
diff changeset
   716
	}
hgs
parents:
diff changeset
   717
hgs
parents:
diff changeset
   718
// ---------------------------------------------------------
hgs
parents:
diff changeset
   719
// ReplyL(...)
hgs
parents:
diff changeset
   720
// Reply is forbidden.
hgs
parents:
diff changeset
   721
// ---------------------------------------------------------
hgs
parents:
diff changeset
   722
//
hgs
parents:
diff changeset
   723
CMsvOperation* CBtMtmUi::ReplyL( TMsvId /*aDestination*/, 
hgs
parents:
diff changeset
   724
                                TMsvPartList /*aPartlist*/, 
hgs
parents:
diff changeset
   725
                                TRequestStatus& /*aCompletionStatus*/ )
hgs
parents:
diff changeset
   726
	{
hgs
parents:
diff changeset
   727
	User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   728
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   729
    return NULL;
hgs
parents:
diff changeset
   730
	}
hgs
parents:
diff changeset
   731
hgs
parents:
diff changeset
   732
// ---------------------------------------------------------
hgs
parents:
diff changeset
   733
// ForwardL(...)
hgs
parents:
diff changeset
   734
// Forward is forbidden.
hgs
parents:
diff changeset
   735
// ---------------------------------------------------------
hgs
parents:
diff changeset
   736
//
hgs
parents:
diff changeset
   737
CMsvOperation* CBtMtmUi::ForwardL( TMsvId /*aDestination*/, 
hgs
parents:
diff changeset
   738
                                  TMsvPartList /*aPartList*/, 
hgs
parents:
diff changeset
   739
                                  TRequestStatus& /*aCompletionStatus*/ )
hgs
parents:
diff changeset
   740
	{
hgs
parents:
diff changeset
   741
	User::Leave( KErrNotSupported );
hgs
parents:
diff changeset
   742
    // Return value is needed for removing compilation errors
hgs
parents:
diff changeset
   743
    return NULL;
hgs
parents:
diff changeset
   744
	}
hgs
parents:
diff changeset
   745
hgs
parents:
diff changeset
   746
// ---------------------------------------------------------
hgs
parents:
diff changeset
   747
// CancelL(...)
hgs
parents:
diff changeset
   748
// No MS way of sending a message from the outbox, so no need to cancel.
hgs
parents:
diff changeset
   749
// Just complete it.
hgs
parents:
diff changeset
   750
// ---------------------------------------------------------
hgs
parents:
diff changeset
   751
//
hgs
parents:
diff changeset
   752
CMsvOperation* CBtMtmUi::CancelL( TRequestStatus& aStatus, 
hgs
parents:
diff changeset
   753
                                 const CMsvEntrySelection& /*aSelection*/)
hgs
parents:
diff changeset
   754
    { 
hgs
parents:
diff changeset
   755
	return CMsvCompletedOperation::NewL(
hgs
parents:
diff changeset
   756
        Session(), 
hgs
parents:
diff changeset
   757
        Type(), 
hgs
parents:
diff changeset
   758
        KNullDesC8, 
hgs
parents:
diff changeset
   759
        KMsvLocalServiceIndexEntryId, 
hgs
parents:
diff changeset
   760
        aStatus, 
hgs
parents:
diff changeset
   761
        KErrNone);
hgs
parents:
diff changeset
   762
    }
hgs
parents:
diff changeset
   763
    
hgs
parents:
diff changeset
   764
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   765
//  CBtMtmUi::ServiceSearchComplete
hgs
parents:
diff changeset
   766
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   767
//	
hgs
parents:
diff changeset
   768
void CBtMtmUi::ServiceSearchComplete( const RSdpRecHandleArray& /*aResult*/, 
hgs
parents:
diff changeset
   769
                                         TUint /*aTotalRecordsCount*/, TInt /*aErr */)
hgs
parents:
diff changeset
   770
    {
hgs
parents:
diff changeset
   771
    }
hgs
parents:
diff changeset
   772
hgs
parents:
diff changeset
   773
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   774
// CBtMtmUi::AttributeSearchComplete(
hgs
parents:
diff changeset
   775
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   776
//	
hgs
parents:
diff changeset
   777
void CBtMtmUi::AttributeSearchComplete( TSdpServRecordHandle /*aHandle*/, 
hgs
parents:
diff changeset
   778
                                           const RSdpResultArray& aAttr, 
hgs
parents:
diff changeset
   779
                                           TInt aErr )
hgs
parents:
diff changeset
   780
    {
hgs
parents:
diff changeset
   781
   iState=aErr;     
hgs
parents:
diff changeset
   782
    if (aErr==KErrNone)
hgs
parents:
diff changeset
   783
        {            
hgs
parents:
diff changeset
   784
        RSdpResultArray results=aAttr;    
hgs
parents:
diff changeset
   785
        iDiscovery->ParseRfcommChannel(results,iClientChannel);                        
hgs
parents:
diff changeset
   786
        }   
hgs
parents:
diff changeset
   787
    iWaiter.AsyncStop();
hgs
parents:
diff changeset
   788
    }
hgs
parents:
diff changeset
   789
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   790
// CBtMtmUi::ServiceAttributeSearchComplete
hgs
parents:
diff changeset
   791
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   792
//	
hgs
parents:
diff changeset
   793
void CBtMtmUi::ServiceAttributeSearchComplete( TSdpServRecordHandle /*aHandle*/, 
hgs
parents:
diff changeset
   794
                                                          const RSdpResultArray& /*aAttr*/, 
hgs
parents:
diff changeset
   795
                                                          TInt /*aErr*/ )
hgs
parents:
diff changeset
   796
    {
hgs
parents:
diff changeset
   797
    }
hgs
parents:
diff changeset
   798
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   799
// CBtMtmUi::DeviceSearchComplete
hgs
parents:
diff changeset
   800
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   801
//	
hgs
parents:
diff changeset
   802
void CBtMtmUi::DeviceSearchComplete( CBTDevice* /*aDevice*/, TInt aErr )
hgs
parents:
diff changeset
   803
    {
hgs
parents:
diff changeset
   804
    iState=aErr;        
hgs
parents:
diff changeset
   805
    iWaiter.AsyncStop();
hgs
parents:
diff changeset
   806
    }            
hgs
parents:
diff changeset
   807
hgs
parents:
diff changeset
   808
// End of File