diff -r 000000000000 -r e6b17d312c8b imservices/ossprotocoladaptation/tsrc/ossadapmt/src/ossadapmtBlocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imservices/ossprotocoladaptation/tsrc/ossadapmt/src/ossadapmtBlocks.cpp Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,3168 @@ +/* +* Copyright (c) 2002 - 2007 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: ossadapmtBlocks.cpp +* +*/ + + + +// [INCLUDE FILES] - do not remove +#include +#include +#include +#include "ossadapmt.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "uscontextobserver.h" +#include +#include +#include +#include +#include +#include +#include "cuserafter.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include "immessageinfoimp.h" +const TInt KProtocolUid = 0x101FB3E7; // 0x10282EE9; +_LIT8( KInstantMessaging, "instant-messaging"); + +// StatusText attribute value tags +_LIT8( KStatusTextfield, "StatusText"); + +// Online Status attribute value tags +_LIT8( KOnlineStatusfield, "OnlineStatus" ); +_LIT ( KMsgId, "MessageID1" ); +_LIT( KContact1, "meco5555@gmail.com"); + +// EXTERNAL DATA STRUCTURES +//extern ?external_data; + +// EXTERNAL FUNCTION PROTOTYPES +//extern ?external_function( ?arg_type,?arg_type ); + +// CONSTANTS +//const ?type ?constant_var = ?constant; + +// MACROS +//#define ?macro ?macro_def + +// LOCAL CONSTANTS AND MACROS +//const ?type ?constant_var = ?constant; +//#define ?macro_name ?macro_def + +// MODULE DATA STRUCTURES +//enum ?declaration +//typedef ?declaration + +// LOCAL FUNCTION PROTOTYPES +//?type ?function_name( ?arg_type, ?arg_type ); + +// FORWARD DECLARATIONS +//class ?FORWARD_CLASSNAME; + +// ============================= LOCAL FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// ?function_name ?description. +// ?description +// Returns: ?value_1: ?description +// ?value_n: ?description_line1 +// ?description_line2 +// ----------------------------------------------------------------------------- +// +/* +?type ?function_name( + ?arg_type arg, // ?description + ?arg_type arg) // ?description + { + + ?code // ?comment + + // ?comment + ?code + } +*/ + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// Cossadapmt::Delete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- +// +void Cossadapmt::Delete() + { + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::RunMethodL +// Run specified method. Contains also table of test mothods and their names. +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::RunMethodL ( + CStifItemParser& aItem ) + { + + static TStifFunctionInfo const KFunctions[] = + { + // Copy this line for every implemented function. + // First string is the function name used in TestScripter script file. + // Second is the actual implementation member function. + ENTRY ( "SecondSearchL",Cossadapmt::SecondSearchL ), + ENTRY ( "Login", Cossadapmt::LoginL ), + ENTRY ( "Login_InvalidData", Cossadapmt::Login_InvalidDataL ), + ENTRY ( "AcceptnotificationRequest", Cossadapmt::AcceptnotificationRequestL ), + ENTRY ( "Login_Logout_sequential", Cossadapmt::LoginLogout_LoginLogoutL ), + ENTRY ( "Login_8Hrs_Logout", Cossadapmt::Login8HrsLogoutL ), + ENTRY ( "Unbind", Cossadapmt::UnBindL ), + ENTRY ( "GetContacts", Cossadapmt::GetContactsL ), + ENTRY ( "Add_conatct", Cossadapmt::AddConatctL ), + ENTRY ( "Add_Blank_Conatct", Cossadapmt::AddBlankConatctL ), + ENTRY ( "Add_Blank_Conatct1", Cossadapmt::AddBlankConatct1L ), + ENTRY ( "Delete_conatct", Cossadapmt::DeleteConatctL ), + ENTRY ( "Delete_Blank_Conatct", Cossadapmt::DeleteBlankConatctL ), + ENTRY ( "Sendmessage", Cossadapmt::SendMessageL ), + ENTRY ( "Sendemptymessage", Cossadapmt::SendEmptyMessageL ), + ENTRY ( "Send_ten_messages", Cossadapmt::SendTenMessageL ), + ENTRY ( "Send_twenty_messages", Cossadapmt::SendTwentyMessageL ), + ENTRY ( "Sendmessage_multiplecontacts", Cossadapmt::SendMessage_MultipleContactsL ), + ENTRY ( "Receivemessage", Cossadapmt::ReceiveMessageL ), + ENTRY ( "Receiveemptymessage", Cossadapmt::ReceiveEmptyMessageL ), + ENTRY ( "Receive_ten_messages", Cossadapmt::ReceiveTenMessageL ), + ENTRY ( "Receive_twenty_message", Cossadapmt::ReceiveTwentyMessageL ), + ENTRY ( "Publish_ownpresence", Cossadapmt::PublishOwnPresenceL ), + ENTRY ( "Publish_ownpresence_emptytext", Cossadapmt::PublishOwnPresenceEmptyTextL ), + ENTRY ( "RejectAddnotificationRequest", Cossadapmt::RejectAddnotificationRequestL ), + ENTRY ( "ImOperations_Coverage", Cossadapmt::ImOperationsCoverageL ), + + ENTRY ( "SimpleSearchL", Cossadapmt::SimpleSearchL ), + ENTRY ( "MultipleSearchL", Cossadapmt::MultipleSearchL ), + ENTRY ( "NoResultSearchL", Cossadapmt::NoResultSearchL ), + ENTRY ( "ManyResultsSearchL", Cossadapmt::ManyResultsSearchL ), + ENTRY ( "BlankSearchL", Cossadapmt::BlankSearchL ), + ENTRY ( "MaxCharSearchL", Cossadapmt::MaxCharSearchL ), + ENTRY ( "SpecialCharSearchL", Cossadapmt::SpecialCharSearchL ), + ENTRY ( "SearchEmailIDL",Cossadapmt::SearchEmailIDL ), + ENTRY ( "SearchAndAddToIML",Cossadapmt::SearchAndAddToIML ), + ENTRY ( "GetSearchKeyEnumL",Cossadapmt::GetSearchKeyEnumL ), + ENTRY ( "GetSearchKeyLabelL",Cossadapmt::GetSearchKeyLabelL ), + ENTRY ( "GetSearchKeyEnumNLabelL",Cossadapmt::GetSearchKeyEnumNLabelL ), + ENTRY ( "SetAvtar",Cossadapmt::SetAvtarL ), + //ADD NEW ENTRY HERE + // [test cases entries] - Do not remove + + }; + + const TInt count = sizeof ( KFunctions ) / + sizeof ( TStifFunctionInfo ); + + return RunInternalL ( KFunctions, count, aItem ); + + } + + + +// ----------------------------------------------------------------------------- +// Cossadapmt::SearchL +// Search test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SearchL ( CStifItemParser& aItem, TSearch aSearchType ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + + MSearchFeature* srFeature = NULL; + srFeature = MSearchFeature::NewL ( presecenCtx ); +// CleanupStack::PushL( srFeature ); + + MSearch& srch=srFeature->Search(); + MSearchObjectFactory& searchObjFact=srFeature->SearchObjectFactory(); + + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + +//------------------------------------------Fetch Start------------------------------------------ + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + MXIMPIdentity* newGroupId = presecenCtx->ObjectFactory().NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MXIMPIdentity* newmemberId = presecenCtx->ObjectFactory().NewIdentityLC(); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + +//------------------------------------------Fetch End------------------------------------------ + + + MXIMPIdentity* searchId = presecenCtx->ObjectFactory().NewIdentityLC(); + searchId->SetIdentityL(_L("SEARCH")); + + MXIMPIdentity* firstId = presecenCtx->ObjectFactory().NewIdentityLC(); + + + MSearchElement* srchElement1=searchObjFact.NewSearchElementLC(); + + + MXIMPIdentity* secondId = presecenCtx->ObjectFactory().NewIdentityLC(); + + + MSearchElement* srchElement2=searchObjFact.NewSearchElementLC(); + + + RPointerArray< MSearchElement > searchList; + CleanupClosePushL( searchList ); + + switch ( aSearchType ) + { + + case EGetSearchKeyEnum: + { + + req = srch.GetSearchKeysL(); + eventObserver->WaitOpToCompleteL ( req ); + + firstId->SetIdentityL(_L("james")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append(srchElement1); + + req=srch.SearchL(*searchId,searchList,10 ); + break; + + } + + + case EGetSearchKeyLabel: + { + + req = srch.GetSearchKeysL(); + eventObserver->WaitOpToCompleteL ( req ); + + MXIMPIdentity* label = presecenCtx->ObjectFactory().NewIdentityLC(); + label->SetIdentityL( _L( "Family Name" ) ); + + secondId->SetIdentityL(_L("BOND")); + + srchElement2->SetRequestL( *secondId, *label ); + + searchList.Append( srchElement1 ); + searchList.Append( srchElement2 ); + + req=srch.SearchL(*searchId,searchList,10 ); + + CleanupStack::PopAndDestroy (); + + break; + + } + + + case EGetSearchKeyEnumNLabel: + { + + req = srch.GetSearchKeysL(); + eventObserver->WaitOpToCompleteL ( req ); + + + firstId->SetIdentityL(_L("james")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + secondId->SetIdentityL(_L("BOND")); + + MXIMPIdentity* label = presecenCtx->ObjectFactory().NewIdentityLC(); + label->SetIdentityL( _L( "Family Name" ) ); + + srchElement2->SetRequestL( *secondId, *label ); + + searchList.Append( srchElement1 ); + searchList.Append( srchElement2 ); + + req=srch.SearchL(*searchId,searchList,10 ); + + CleanupStack::PopAndDestroy (); + + break; + } + + + case ESimpleSearch : + { + + req = srch.GetSearchKeysL(); + eventObserver->WaitOpToCompleteL ( req ); + + firstId->SetIdentityL(_L("james")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append(srchElement1); + + req=srch.SearchL(*searchId,searchList,10 ); + + break; + } + + + case EMultipleSearch : + { + + req = srch.GetSearchKeysL(); + eventObserver->WaitOpToCompleteL ( req ); + + + firstId->SetIdentityL(_L("james")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + secondId->SetIdentityL(_L("BOND")); + + MXIMPIdentity* label = presecenCtx->ObjectFactory().NewIdentityLC(); + label->SetIdentityL( _L( "Family Name" ) ); + + srchElement2->SetRequestL( *secondId, *label ); + + searchList.Append( srchElement1 ); + searchList.Append( srchElement2 ); + + req=srch.SearchL(*searchId,searchList,10 ); + + CleanupStack::PopAndDestroy (); + + break; + } + + + case ESearchNoResults : + { + firstId->SetIdentityL(_L("Santhosh")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + secondId->SetIdentityL(_L("I C")); + srchElement2->SetRequestL( *secondId, EUserLastName ); + + searchList.Append( srchElement1 ); + searchList.Append( srchElement2 ); + + req=srch.SearchL(*searchId,searchList,10 ); + break; + } + + + case ESearchManyResults : + { + firstId->SetIdentityL(_L("a")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append(srchElement1); + + req=srch.SearchL(*searchId,searchList,10 ); + + break; + } + + + case ESearchBlank : + { + firstId->SetIdentityL(_L("")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append(srchElement1); + + req=srch.SearchL(*searchId,searchList,10 ); + break; + } + + + + case ESearchMaxChars : + { + firstId->SetIdentityL( _L( "fbg agh ggd sad ghda gh dhg hgasdg dh jggd gsdg g \ + kjdg g gsd gfhsdg fhasgd hasdh ghfgahfg hgsdg dg gdgsgkj" ) ); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append( srchElement1 ); + + req=srch.SearchL( *searchId,searchList,10 ); + break; + } + + + case ESearchSpecialChars : + { + firstId->SetIdentityL( _L( "*%#@$%^#%^&^^%)(" ) ); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append( srchElement1 ); + + req=srch.SearchL( *searchId,searchList,10 ); + + break; + } + case ESearchEmailid: + { + firstId->SetIdentityL( _L( "wordjames@chat.gizmoproject.com" ) ); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append( srchElement1 ); + + req=srch.SearchL( *searchId,searchList,10 ); + break; + } + + case ESearchAndAddToIm: + { + firstId->SetIdentityL( _L( "sharath" ) ); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append( srchElement1 ); + + req=srch.SearchL( *searchId,searchList,10 ); + //Wait for search to complete + eventObserver->WaitOpToCompleteL( req ); + CUserAfter::AfterL ( 5000000 ); + + //And then call the AddToContactList + RFs fs; + RFile file; + TBuf8<100> buf; + User::LeaveIfError( fs.Connect() ); + User::LeaveIfError( file.Open( fs, KAddContactFileName, EFileRead ) ); + file.Read( buf ); + file.Close(); + fs.Close(); + TBuf16<100> h_buf; + CnvUtfConverter::ConvertToUnicodeFromUtf8( h_buf, + buf ); +//-------------------Adding Contact Start----------------------------------------- + + newmemberId->SetIdentityL ( h_buf ); + + req = groups.AddPresentityGroupMemberL( + *newGroupId, + *newmemberId, + KNullDesC()) ; + + //eventObserver->WaitOpToCompleteL ( req ); + //CUserAfter::AfterL ( 5000000 ); + //Wait at the below eventObserver->WaitOpToCompleteL( req ); + + +//-------------------Adding Contact End----------------------------------------- + break; + } + case ESecondSearch: + { + + firstId->SetIdentityL(_L("sharath")); + srchElement1->SetRequestL( *firstId, EUserFirstName ); + + searchList.Append(srchElement1); + + req=srch.SearchL(*searchId,searchList,10 ); + + eventObserver->WaitOpToCompleteL( req ); + + CUserAfter::AfterL(100000); + searchList.Reset(); + + //Second Search + secondId->SetIdentityL(_L("Jeppu")); + srchElement1->SetRequestL( *secondId, EUserLastName ); + + searchList.Append(srchElement1); + + req=srch.SearchL(*searchId,searchList,10 ); + + break; + } + + } + + CleanupStack::PopAndDestroy (); //newmemberId + CleanupStack::PopAndDestroy ();//newGroupId + CleanupStack::PopAndDestroy ();//presenceFeatures + + CleanupStack::PopAndDestroy (); // + CleanupStack::PopAndDestroy (); + CleanupStack::PopAndDestroy (); + + CleanupStack::PopAndDestroy (); + CleanupStack::PopAndDestroy (); + + CleanupStack::PopAndDestroy (); + + eventObserver->WaitOpToCompleteL( req ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + +// CleanupStack::PopAndDestroy ();//Search feature plugin + CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SearchL() End" ) ); + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::GetSearchKeyEnum +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::GetSearchKeyEnumL( CStifItemParser& aItem ) + { + return SearchL ( aItem, EGetSearchKeyEnum ); + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::GetSearchKeyLabel +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::GetSearchKeyLabelL( CStifItemParser& aItem ) + { + return SearchL ( aItem, EGetSearchKeyLabel ); + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::GetSearchKeyEnumNLabel +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::GetSearchKeyEnumNLabelL( CStifItemParser& aItem ) + { + return SearchL ( aItem, EGetSearchKeyEnumNLabel ); + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::SearchAndAddToIML +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +TInt Cossadapmt::SecondSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESecondSearch ); + } + + +// ----------------------------------------------------------------------------- +// Cossadapmt::SearchAndAddToIML +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +TInt Cossadapmt::SearchAndAddToIML( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchAndAddToIm ); + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::SimpleSearchL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +TInt Cossadapmt::SimpleSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESimpleSearch ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::MultipleSearchL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::MultipleSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, EMultipleSearch ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::NoResultSearchL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::NoResultSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchNoResults ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::ManyResultsSearchL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::ManyResultsSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchManyResults ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::BlankSearchL. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::BlankSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchBlank ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::MaxCharSearchL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::MaxCharSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchMaxChars ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::SpecialCharSearchL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SpecialCharSearchL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchSpecialChars ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::SearchEmailIDL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SearchEmailIDL( CStifItemParser& aItem ) + { + return SearchL ( aItem, ESearchEmailid ); + } +// ----------------------------------------------------------------------------- +// Cossadapmt::LoginL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::LoginL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginL() End" ) ); + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::Login_InvalidDataL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::Login_InvalidDataL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login_InvalidDataL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login_InvalidDataL() End" ) ); + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::Login8HrsLogoutL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::Login8HrsLogoutL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login8HrsLogoutL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + CUserAfter::After8HrsL (); + + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login8HrsLogoutL() End" ) ); + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::LoginLogout_LoginLogoutL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::LoginLogout_LoginLogoutL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginLogout_Log() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called - Sequence 1" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end- Sequence 1 complete" ) ); + + +/// Login --- Logout - Sequence 2 + //Bind context to desired presence service + req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called - Sequence 2" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end - Sequence 2 complete" ) ); + + + CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginLogout_Log() End" ) ); + return KErrNone; + + } + + +// ----------------------------------------------------------------------------- +// Cossadapmt::GetContactsL +// Fetch contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::GetContactsL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::GetContactsL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::GetContactsL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::AddConatctL +// AddConatctL contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::AddConatctL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddContactsL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MXIMPIdentity* newmemberId = objFactory.NewIdentityLC(); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC contact; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( contact ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + + newmemberId->SetIdentityL ( contact ); + + req = groups.AddPresentityGroupMemberL( + *newGroupId, + *newmemberId, + KNullDesC()) ; + + eventObserver->WaitOpToCompleteL ( req ); + CUserAfter::AfterL ( 5000000 ); + CleanupStack::PopAndDestroy();//newmemberId + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddContactsL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::AddBlankConatctL +// AddConatctL contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::AddBlankConatctL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MXIMPIdentity* newmemberId = objFactory.NewIdentityLC(); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + _LIT ( KBlankContact, "" ); + newmemberId->SetIdentityL ( KBlankContact ); + + + req = groups.AddPresentityGroupMemberL( + *newGroupId, + *newmemberId, + KNullDesC()) ; + + eventObserver->WaitOpToCompleteL ( req ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + CleanupStack::PopAndDestroy(); + CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::AddBlankConatct1L +// AddConatctL contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::AddBlankConatct1L ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MXIMPIdentity* newmemberId = objFactory.NewIdentityLC(); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + _LIT ( KBlankContact, "" ); + newmemberId->SetIdentityL ( KBlankContact ); + + req = groups.AddPresentityGroupMemberL( + *newGroupId, + *newmemberId, + KNullDesC()) ; + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(); //newmemberId + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::DeleteConatctL +// DeleteConatctL contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::DeleteConatctL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteConatctL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MXIMPIdentity* newmemberId = objFactory.NewIdentityLC(); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC contact; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( contact ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + + newmemberId->SetIdentityL ( contact ); + + req = groups.RemovePresentityGroupMemberL( + *newGroupId, + *newmemberId) ; + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy();//newmemberId + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteConatctL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::DeleteBlankConatctL +// DeleteConatctL contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::DeleteBlankConatctL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteBlankConatctL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MXIMPIdentity* newmemberId = objFactory.NewIdentityLC(); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 1000000 ); + _LIT ( KBlankContact, "" ); + newmemberId->SetIdentityL (KBlankContact); + + req = groups.RemovePresentityGroupMemberL( + *newGroupId, + *newmemberId) ; + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(); //newmemberId + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteBlankConatctL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::UnBindL +// UnBind test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::UnBindL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::UnBindL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + + + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + + CleanupStack::Pop ( 3 ); //presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::UnBindL() End" ) ); + return KErrNone; + + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::SendMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SendMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + TPtrC recipient; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + aItem.GetNextString ( recipient ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( recipient );//userid's + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + //Unbind the context and wait completion + CUserAfter::AfterL ( 2000000 ); + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessageL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::SendEmptyMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SendEmptyMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendEmptyMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC recipient; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( recipient ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + _LIT ( KEmptyMessage, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( KEmptyMessage ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( recipient );//userid's + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendEmptyMessageL() end" ) ); + + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::SendTenMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SendTenMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTenMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + TPtrC recipient; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + aItem.GetNextString ( recipient ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( recipient ); //userid's + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + for ( TInt i = 0;i < 10;i++ ) + { + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + + } + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTenMessageL() end" ) ); + + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::SendTwentyMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SendTwentyMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTwentyMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + TPtrC recipient; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + aItem.GetNextString ( recipient ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); //userid's + aRecipients->AppendL ( recipient ); + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + for ( TInt i = 0;i < 20;i++ ) + { + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + + } + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTwentyMessageL() end" ) ); + + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::SendMessage_MultipleContactsL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SendMessage_MultipleContactsL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessage_MultipleContactsL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + TPtrC recipient; + TPtrC recipient1; + TPtrC recipient2; + TPtrC recipient3; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + aItem.GetNextString ( recipient ); + aItem.GetNextString ( recipient1 ); + aItem.GetNextString ( recipient2 ); + aItem.GetNextString ( recipient3 ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( recipient ); //userid's + aRecipients->AppendL ( recipient1 ); + aRecipients->AppendL ( recipient2 ); + aRecipients->AppendL ( recipient3 ); + + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + CUserAfter::AfterL ( 1000000 ); + + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessage_MultipleContactsL() end" ) ); + + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::ReceiveMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::ReceiveMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 1 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( username ); //userid of own + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + //send message is to own + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + //send message to other guy + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveMessageL() start" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::ReceiveEmptyMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::ReceiveEmptyMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveEmptyMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + _LIT ( KEmptyMessage, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( KEmptyMessage ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 1 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( username ); //userid of own + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + //send message is to own + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + //send message to other guy + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveEmptyMessageL() start" ) ); + + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::ReceiveTenMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::ReceiveTenMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTenMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( username ); //userid of own + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + for ( TInt i = 0;i < 10;i++ ) + { + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + + } + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTenMessageL() end" ) ); + + return KErrNone; + + } + +// ----------------------------------------------------------------------------- +// Cossadapmt::ReceiveTwentyMessageL +// SendMessage test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::ReceiveTwentyMessageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTwentyMessageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( username ); //userid's of own + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + + for ( TInt i = 0;i < 20;i++ ) + { + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + } + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTwentyMessageL() end" ) ); + + return KErrNone; + + } + + +// ----------------------------------------------------------------------------- +// Cossadapmt::PublishOwnPresenceL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::PublishOwnPresenceL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL(presecenCtx); + CleanupDeletePushL( presenceFeatures ); + + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TInt availability; + TPtrC statustext; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextInt ( availability ); + aItem.GetNextString ( statustext ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + // Take handles to object factory and publish interface + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MPresencePublishing& publisher = presenceFeatures->PresencePublishing(); + //Fill presence doc with presence components and attributes + MPresenceInfo* myPresence = presenceFeatures->PresenceObjectFactory().NewPresenceInfoLC();//1 + MServicePresenceInfo* myServicePresence = presenceFeatures->PresenceObjectFactory().NewServicePresenceInfoLC();//2 + myServicePresence->SetServiceTypeL( NPresenceInfo::NServiceType::KInstantMessaging ); + //MPresenceInfoFieldCollection& attributeFields = myServicePresence->Fields(); + + MPersonPresenceInfo *PersonPresence = presenceFeatures->PresenceObjectFactory().NewPersonPresenceInfoLC(); + MPresenceInfoFieldCollection& attributeFields = PersonPresence->Fields(); + + MPresenceInfoField* infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//3 + + // "availability" attribute + MPresenceInfoFieldValueEnum* availabilityField = presenceFeatures->PresenceObjectFactory().NewEnumInfoFieldLC();//4 + availabilityField->SetValueL( availability ); + infoField->SetFieldTypeL( NPresenceInfo::NFieldType::KAvailability ); + infoField->SetFieldValue( availabilityField ); + CleanupStack::Pop(); // availabilityField + + attributeFields.AddOrReplaceFieldL(infoField ); + //TInt count = serviceFields.FieldCount(); + CleanupStack::Pop(); // infoField + + //status text + infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7 + MPresenceInfoFieldValueText* statustextField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8 + statustextField->SetTextValueL( statustext ); // some status text + infoField->SetFieldTypeL( KStatusTextfield ); + infoField->SetFieldValue( statustextField ); + CleanupStack::Pop(); // statustextField + attributeFields.AddOrReplaceFieldL( infoField ); + CleanupStack::Pop(); // infoField + + + //online status + + infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7 + MPresenceInfoFieldValueText* onlineField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8 + onlineField->SetTextValueL( _L("T" ) ); // some status text + infoField->SetFieldTypeL( KOnlineStatusfield ); + infoField->SetFieldValue( onlineField ); + CleanupStack::Pop(); // devmodelField + attributeFields.AddOrReplaceFieldL( infoField ); + CleanupStack::Pop(); // infoField + + + myPresence->AddServicePresenceL( myServicePresence ); + myPresence->SetPersonPresenceL(PersonPresence); + TInt count = attributeFields.FieldCount(); + CleanupStack::Pop(2); // myServicePresence,PersonPresence + + + //publish the presence + req = publisher.PublishOwnPresenceL( *myPresence ); + + // wait completion + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(1); // myPresence + + CUserAfter::AfterL ( 1000000 ); + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 4 ); //presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceL() End" ) ); + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::PublishOwnPresenceEmptyTextL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::PublishOwnPresenceEmptyTextL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceEmptyTextL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL(presecenCtx); + CleanupDeletePushL( presenceFeatures ); + + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TInt availability; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextInt ( availability ); + _LIT ( KBlankStatusText, "" ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + // Take handles to object factory and publish interface + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MPresencePublishing& publisher = presenceFeatures->PresencePublishing(); + //Fill presence doc with presence components and attributes + MPresenceInfo* myPresence = presenceFeatures->PresenceObjectFactory().NewPresenceInfoLC();//1 + MServicePresenceInfo* myServicePresence = presenceFeatures->PresenceObjectFactory().NewServicePresenceInfoLC();//2 + myServicePresence->SetServiceTypeL( NPresenceInfo::NServiceType::KInstantMessaging ); + //MPresenceInfoFieldCollection& attributeFields = myServicePresence->Fields(); + + MPersonPresenceInfo *PersonPresence = presenceFeatures->PresenceObjectFactory().NewPersonPresenceInfoLC(); + MPresenceInfoFieldCollection& attributeFields = PersonPresence->Fields(); + + MPresenceInfoField* infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//3 + + // "availability" attribute + MPresenceInfoFieldValueEnum* availabilityField = presenceFeatures->PresenceObjectFactory().NewEnumInfoFieldLC();//4 + availabilityField->SetValueL( availability ); + infoField->SetFieldTypeL( NPresenceInfo::NFieldType::KAvailability ); + infoField->SetFieldValue( availabilityField ); + CleanupStack::Pop(); // availabilityField + + attributeFields.AddOrReplaceFieldL(infoField ); + //TInt count = serviceFields.FieldCount(); + CleanupStack::Pop(); // infoField + + //status text + infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7 + MPresenceInfoFieldValueText* statustextField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8 + statustextField->SetTextValueL( KBlankStatusText ); // some status text + infoField->SetFieldTypeL( KStatusTextfield ); + infoField->SetFieldValue( statustextField ); + CleanupStack::Pop(); // statustextField + attributeFields.AddOrReplaceFieldL( infoField ); + CleanupStack::Pop(); // infoField + + + //online status + + infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7 + MPresenceInfoFieldValueText* onlineField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8 + onlineField->SetTextValueL( _L("T" ) ); // some status text + infoField->SetFieldTypeL( KOnlineStatusfield ); + infoField->SetFieldValue( onlineField ); + CleanupStack::Pop(); // devmodelField + attributeFields.AddOrReplaceFieldL( infoField ); + CleanupStack::Pop(); // infoField + + + myPresence->AddServicePresenceL( myServicePresence ); + myPresence->SetPersonPresenceL(PersonPresence); + TInt count = attributeFields.FieldCount(); + CleanupStack::Pop(2); // myServicePresence,PersonPresence + + + //publish the presence + req = publisher.PublishOwnPresenceL( *myPresence ); + + // wait completion + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(1); // myPresence + + CUserAfter::AfterL ( 1000000 ); + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 4 ); //presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceEmptyTextL() End" ) ); + return KErrNone; + + } +TInt Cossadapmt::AcceptnotificationRequestL ( CStifItemParser& aItem ) + { + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AcceptAddnotificationRequestL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MPresenceAuthorization& authorization = presenceFeatures->PresenceAuthorization(); + MPresenceInfoFilter* infoFilt = presenceFeatures->PresenceObjectFactory().NewPresenceInfoFilterLC(); + + infoFilt->AcceptPersonFilterL( NPresenceInfo::NFieldType::KAcceptAll ); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + req = authorization.SubscribePresenceGrantRequestListL(); + + // wait completion + + eventObserver->WaitOpToCompleteL( req ); + + CUserAfter::AfterL( 1000000 ); + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + + CUserAfter::AfterL ( 5000000 ); + + MXIMPIdentity* testContactId = objFactory.NewIdentityLC(); + testContactId->SetIdentityL( KContact1 ); + req = authorization.GrantPresenceForPresentityL(*testContactId ,*infoFilt ); + + // wait completion + eventObserver->WaitOpToCompleteL( req ); + + + CleanupStack::PopAndDestroy();//testContactId + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 6 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient,infoFilt + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AcceptAddnotificationRequestL() end" ) ); + + return KErrNone; + } + + +// ----------------------------------------------------------------------------- +// Cossadapmt::RejectAddnotificationRequestL +// AddConatctL contacts test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::RejectAddnotificationRequestL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::RejectAddnotificationRequestL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + MPresenceAuthorization& authorization = presenceFeatures->PresenceAuthorization(); + MPresenceInfoFilter* infoFilt = presenceFeatures->PresenceObjectFactory().NewPresenceInfoFilterLC(); + + infoFilt->AcceptPersonFilterL( NPresenceInfo::NFieldType::KAcceptAll ); + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "list" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + req = authorization.SubscribePresenceGrantRequestListL(); + + // wait completion + + eventObserver->WaitOpToCompleteL( req ); + + CUserAfter::AfterL( 1000000 ); + + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CUserAfter::AfterL ( 5000000 ); + + MXIMPIdentity* testContactId = objFactory.NewIdentityLC(); + testContactId->SetIdentityL( KContact1 ); + req = authorization.WithdrawPresenceGrantFromPresentityL(*testContactId); + + // wait completion + eventObserver->WaitOpToCompleteL( req ); + + CUserAfter::AfterL( 1000000 ); + + CleanupStack::PopAndDestroy();//testContactId + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 6 );//infoFilt,newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::RejectAddnotificationRequestL() end" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::ImOperationsCoverageL +// ImOperationsCoverageL test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::ImOperationsCoverageL ( CStifItemParser& aItem ) + { + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ImOperationsCoverageL() start" ) ); + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + //Bind context to desired presence service + presecenCtx->RegisterObserverL ( *eventObserver ); + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( presenceFeatures ); + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC message; + TPtrC contact; + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( message ); + aItem.GetNextString ( contact ); + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) ); + eventObserver->WaitOpToCompleteL ( req ); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MPresentityGroups& groups = presenceFeatures->PresentityGroups() ; + + TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) ); + _LIT ( KDummyListId, "" ); + HBufC16* iListId; + iListId = KDummyListId().AllocL(); + iListId->Des().Fold(); + newGroupId->SetIdentityL ( *iListId ); + delete iListId; + iListId = NULL; + req = groups.SubscribePresentityGroupContentL ( *newGroupId ); + + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) ); + + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures + + CUserAfter::AfterL ( 1000000 ); + //Bind context to desired presence service + MImFeatures* imFeatures = NULL; + imFeatures = MImFeatures::NewL ( presecenCtx ); + CleanupDeletePushL ( imFeatures ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) ); + MImConversation& imconversation = imFeatures->ImConversation(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) ); + MImConversationInfo *aImMessage = NULL; + aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC(); + MXIMPIdentity* identity = objFactory.NewIdentityLC(); + identity->SetIdentityL ( KMsgId ); + aImMessage->SetMessageIdL ( identity ); + aImMessage->SetTextMessageL ( message ); + CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 1 ); + CleanupStack::PushL ( aRecipients ); + aRecipients->AppendL ( username ); //userid of own + aImMessage->SetRecipientL ( aRecipients ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) ); + //send message is to own + req = imconversation.SendMessageL ( *aImMessage ); + eventObserver->WaitOpToCompleteL ( req ); + CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage + //send message to other guy + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) ); + //Unbind the context and wait completion + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient, + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ImOperationsCoverageL() start" ) ); + + return KErrNone; + + } +// ----------------------------------------------------------------------------- +// Cossadapmt::SetAvtarL +// Login test method function. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt Cossadapmt::SetAvtarL ( CStifItemParser& aItem ) + { + + + + //Initialize XIMP client + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SetAvtarL() start" ) ); + + MXIMPClient* ximpClient = MXIMPClient::NewClientL(); + CleanupDeletePushL ( ximpClient ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) ); + + //Create new sink to receive presence context events + CUSContextObserver* eventObserver = CUSContextObserver::NewLC(); + + //Create new presence context + MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC(); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) ); + presecenCtx->RegisterObserverL ( *eventObserver ); + + MPresenceFeatures* presenceFeatures = NULL; + presenceFeatures = MPresenceFeatures::NewL(presecenCtx); + CleanupDeletePushL( presenceFeatures ); + + + //read data from cfg file + TPtrC username; + TPtrC password; + TInt serviceId; + TPtrC filename; + aItem.GetNextString ( username ); + aItem.GetNextString ( password ); + aItem.GetNextInt ( serviceId ); + aItem.GetNextString ( filename ); + TUid protocolUid = TUid::Uid ( KProtocolUid ); + + //Bind context to desired presence service + TXIMPRequestId req = presecenCtx->BindToL ( protocolUid, + username, + password, + serviceId ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) ); + //Wait with CActiveSchedulerWait the binding to complete + //If binding fails, it is handled with leave + eventObserver->WaitOpToCompleteL ( req ); + // Take handles to object factory and publish interface + // Take handles to object factory and publish interface + presenceFeatures = MPresenceFeatures::NewL(presecenCtx); + MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory(); + + MXIMPIdentity* newGroupId = objFactory.NewIdentityLC(); + MXIMPIdentity* newmemberId = objFactory.NewIdentityLC(); + + CleanupDeletePushL( presenceFeatures ); + + MPresencePublishing& publisher = presenceFeatures->PresencePublishing(); + + //Fill presence doc with presence components and attributes + MPresenceInfo* myPresence = presenceFeatures->PresenceObjectFactory().NewPresenceInfoLC();//1 + MPersonPresenceInfo *PersonPresence = presenceFeatures->PresenceObjectFactory().NewPersonPresenceInfoLC(); + MPresenceInfoFieldCollection& attributeFields = PersonPresence->Fields(); + + MPresenceInfoField* infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//3 + + //based on the state conver it to ximpfw status. + + + // "availability" attribute + MPresenceInfoFieldValueBinary* avatarField = presenceFeatures->PresenceObjectFactory().NewBinaryInfoFieldLC();//4 + //avatarField->SetBinaryValueL(*(aImageLoader->GetContentData())); + _LIT8(KMimeType,"image/gif"); + TBufC8<20> mimetype(KMimeType); + + avatarField->SetMimeTypeL(mimetype.Des()); + RFile file; + RFs iFs; + User::LeaveIfError( iFs.Connect() ); + User::LeaveIfError( file.Open( iFs, _L("c:\\index.gif"), EFileRead ) ); + CleanupClosePushL( file ); + + // Get file size + TInt fileSize = 0; + User::LeaveIfError( file.Size( fileSize ) ); + + // Check file size, if bigger than max transaction content -> leave + /* if ( fileSize > + iImpsFactory.CreateImClientL()->MaxTransactionContentLengthL() ) + { + User::Leave( KErrOverflow ); + }*/ + + // Get file content + HBufC8* Content = HBufC8::NewL( fileSize ); + TPtr8 ptr( Content->Des() ); + User::LeaveIfError( file.Read( ptr, fileSize ) ); + + avatarField->SetBinaryValueL(*Content); + infoField->SetFieldTypeL( NPresenceInfo::NFieldType::KAvatar ); + infoField->SetFieldValue( avatarField ); + CleanupStack::Pop(); // availabilityField + + attributeFields.AddOrReplaceFieldL(infoField ); + + CleanupStack::Pop(); // infoField + + myPresence->SetPersonPresenceL(PersonPresence); + CleanupStack::Pop(1); // PersonPresence + + req = publisher.PublishOwnPresenceL( *myPresence ); + + // wait completion + eventObserver->WaitOpToCompleteL( req ); + CleanupStack::PopAndDestroy(1); // myPresence + + req = presecenCtx->UnbindL(); + eventObserver->WaitOpToCompleteL( req ); + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) ); + + CleanupStack::PopAndDestroy ( 4 ); //presenceFeatures,presecenCtx,eventObserver,ximpClient + TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SetAvtarL() End" ) ); + return KErrNone; + + } +// [End of File] - Do not remove