diff -r 000000000000 -r e6b17d312c8b imservices/ossprotocoladaptation/tsrc/ossadapmt/src/uscontextobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imservices/ossprotocoladaptation/tsrc/ossadapmt/src/uscontextobserver.cpp Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,753 @@ +/* +* Copyright (c) 2007-2008 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: uscontextobserver.cpp +* +*/ + +#include "uscontextobserver.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ossadapmt.h" +#include +#include +#include "ximpcontextstate.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include "imconversationevent.h" +#include + +#include "imconversationinfo.h" +#include +#include +#include + +#include +#include +#include +// ============================ MEMBER FUNCTIONS =============================== + +// CONSTRUCTION +CUSContextObserver* CUSContextObserver::NewLC() + { + CUSContextObserver* self = new ( ELeave ) CUSContextObserver(); + CleanupStack::PushL ( self ); + return self; + } + + +CUSContextObserver::~CUSContextObserver() + { + } + + +CUSContextObserver::CUSContextObserver() + { + } + + + +// =========================================================================== +// PUBLIC FUNCTIONS +// =========================================================================== +// +void CUSContextObserver::WaitOpToCompleteL ( const TXIMPRequestId& aOpToWait ) + { + iReqToWait = aOpToWait; + + iWait.Start(); + + } + +/*void CUSContextObserver::WaitCompleteL() + { + iWait.AsyncStop(); + }*/ + +// =========================================================================== +// FROM MXIMPContextObserver +// =========================================================================== +// +void CUSContextObserver::HandlePresenceContextEvent ( + const MXIMPContext& /*aContext*/, + const MXIMPBase& aEvent ) + { + + TOssAdapMtLogger::Log ( _L ( "HandlePresenceContextEvent called" ) ); + + TInt32 eventId = aEvent.GetInterfaceId(); + + switch ( aEvent.GetInterfaceId() ) + { + _LIT ( KDir, "EVENT_LOG" ); // here we hv to write a folder name in wch we want to create log file + _LIT ( KFile, "event.txt" ); //here we hv to write a file name in wch we want to log default path is " c:/Logs/" + + case MXIMPRequestCompleteEvent::KInterfaceId: + { + TOssAdapMtLogger::Log ( _L ( "CUSContextObserver::MXIMPRequestCompleteEvent() start" ) ); + + const MXIMPRequestCompleteEvent* complEvent = + TXIMPGetInterface< const MXIMPRequestCompleteEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + _LIT ( KMsg, "Recvd RequestCompleteEvent " ); // here we hv to write message or text wch we want to write in log file + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, KMsg ); + + if ( iWait.IsStarted() && ( complEvent->RequestId() == iReqToWait ) ) + { + iReqResult = complEvent->CompletionResult().ResultCode(); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Error code for the request is %d " ), iReqResult ); + iWait.AsyncStop(); + } + + TOssAdapMtLogger::Log ( _L ( "CUSContextObserver::MXIMPRequestCompleteEvent() end" ) ); + + break; + } + + case MXIMPContextStateEvent::KInterfaceId: + { + const MXIMPContextStateEvent* ctxtStateEvent = + TXIMPGetInterface< const MXIMPContextStateEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + _LIT ( KMsg, "Recvd PresenceContextStateEvent " ); // here we hv to write message or text wch we want to write in log file + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, KMsg ); + const MXIMPStatus* fwStatus = ctxtStateEvent->StateChangeReason(); + const MXIMPContextState& cState = ctxtStateEvent->ContextState(); + MXIMPContextState::TState state = cState.ContextState(); + break; + } + + case MPresentityGroupListEvent::KInterfaceId: + { + const MPresentityGroupListEvent* groupListEvent = + TXIMPGetInterface< const MPresentityGroupListEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + + TBuf<100> sdstate; + TBuf<100> ssstate; + _LIT ( Kna, " Susbcription state is unavailable" ); + _LIT ( Kava, " Susbcription state is available" ); + _LIT ( KDef, " Susbcription state is ERROR" ); + + const MXIMPDataSubscriptionState& dstate = groupListEvent->DataSubscriptionState(); + + switch ( dstate.SubscriptionState() ) + { + + case 0: + ssstate.Copy ( Kna ); + break; + + case 1: + ssstate.Copy ( Kava ); + break; + + default: + ssstate.Copy ( KDef ); + break; + } + + _LIT ( Kdna, " Data state is unavailable" ); + + _LIT ( Kdava, " Data state is available" ); + _LIT ( KdDef, " Data state is ERROR" ); + + + switch ( dstate.SubscriptionState() ) + { + + case 0: + sdstate.Copy ( Kdna ); + break; + + case 1: + sdstate.Copy ( Kdava ); + break; + + default: + sdstate.Copy ( KdDef ); + break; + } + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd PresentityGroupListEvent New:%d, Updt:%d, Disappeared:%d, Current:%d, SubscrState:%d, DataState:%d" ), groupListEvent->NewGroupsCount(), groupListEvent->UpdatedGroupsCount(), groupListEvent->DisappearedGroupsCount(), groupListEvent->CurrentGroupsCount(), dstate.SubscriptionState(), dstate.DataState() );//KMsg); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, sdstate ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, ssstate ); + break; + } + + + case MPresentityGroupContentEvent::KInterfaceId: + { + const MPresentityGroupContentEvent* groupContentEvent = + TXIMPGetInterface< const MPresentityGroupContentEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + TBuf<100> sdstate; + TBuf<100> ssstate; + _LIT ( Kna, " Susbcription state is unavailable" ); + _LIT ( Kava, " Susbcription state is available" ); + _LIT ( KDef, " Susbcription state is ERROR" ); + + const MXIMPDataSubscriptionState& dstate = groupContentEvent->DataSubscriptionState(); + + switch ( dstate.SubscriptionState() ) + { + + case 0: + ssstate.Copy ( Kna ); + break; + + case 1: + ssstate.Copy ( Kava ); + break; + + default: + ssstate.Copy ( KDef ); + break; + } + + _LIT ( Kdna, " Data state is unavailable" ); + + _LIT ( Kdava, " Data state is available" ); + _LIT ( KdDef, " Data state is ERROR" ); + + + switch ( dstate.SubscriptionState() ) + { + + case 0: + sdstate.Copy ( Kdna ); + break; + + case 1: + sdstate.Copy ( Kdava ); + break; + + default: + sdstate.Copy ( KdDef ); + break; + } + + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd PresentityGroupContentEvent New:%d, Updt:%d, Disappeared:%d, Current:%d, SubscrState:%d, DataState:%d" ), groupContentEvent->NewMembersCount(), groupContentEvent->UpdatedMembersCount(), groupContentEvent->DisappearedMembersCount(), groupContentEvent->CurrentMembersCount(), dstate.SubscriptionState(), dstate.DataState() ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, sdstate ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, ssstate ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, groupContentEvent->GroupId().Identity() ); + // print the list contents + + for ( TInt i = 0; i < groupContentEvent->CurrentMembersCount(); i++ ) + { + const MPresentityGroupMemberInfo& gi = groupContentEvent->CurrentMember ( i ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Id and displayname for cur group member %d X" ), i ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.GroupMemberId().Identity() ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.GroupMemberDisplayName() ); +// EUNIT_ASSERT_EQUALS_DESC( gi.GroupMemberId().Identity(), iContactid[i], "contact id's does'nt match"); +// EUNIT_ASSERT_EQUALS_DESC( gi.GroupMemberDisplayName(), iNickname[i], "contact nickname does'nt match"); + + } + + // print the list contents + for ( TInt i = 0; i < groupContentEvent->NewMembersCount(); i++ ) + { + const MPresentityGroupMemberInfo& gi = groupContentEvent->NewMember ( i ); + + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Id and displayname for new group member %d X" ), i ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.GroupMemberId().Identity() ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.GroupMemberDisplayName() ); +// EUNIT_ASSERT_EQUALS_DESC( gi.GroupMemberId().Identity(), iContactid[i], "contact id's does'nt match"); +// EUNIT_ASSERT_EQUALS_DESC( gi.GroupMemberDisplayName(), iNickname[i], "contact nickname does'nt match"); + } + + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************END*******************" ) ); + + break; + } + + case MPresenceGrantRequestListEvent::KInterfaceId: + { + const MPresenceGrantRequestListEvent* grantreqEvent = + TXIMPGetInterface< const MPresenceGrantRequestListEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + TBuf<100> sdstate; + TBuf<100> ssstate; + _LIT ( Kna, " Susbcription state is unavailable" ); + _LIT ( Kava, " Susbcription state is available" ); + _LIT ( KDef, " Susbcription state is ERROR" ); + + const MXIMPDataSubscriptionState& dstate = grantreqEvent->DataSubscriptionState(); + + switch ( dstate.SubscriptionState() ) + { + + case 0: + ssstate.Copy ( Kna ); + break; + + case 1: + ssstate.Copy ( Kava ); + break; + + default: + ssstate.Copy ( KDef ); + break; + } + + _LIT ( Kdna, " Data state is unavailable" ); + + _LIT ( Kdava, " Data state is available" ); + _LIT ( KdDef, " Data state is ERROR" ); + + + switch ( dstate.SubscriptionState() ) + { + + case 0: + sdstate.Copy ( Kdna ); + break; + + case 1: + sdstate.Copy ( Kdava ); + break; + + default: + sdstate.Copy ( KdDef ); + break; + } + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd Presentity Grant event" ) ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, sdstate ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, ssstate ); + + TInt index = grantreqEvent->NewRequestsCount(); + + for ( TInt i = 0; i < index; i++ ) + { + const MPresenceGrantRequestInfo& grantinfo = grantreqEvent->NewRequest ( i ); + + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, grantinfo.RequestorId().Identity() ); + const TDesC16 dispname = grantinfo.RequestorDisplayName(); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, dispname ); + } + + index = grantreqEvent->CurrentRequestsCount(); + + for ( TInt i = 0; i < index; i++ ) + { + const MPresenceGrantRequestInfo& grantinfo = grantreqEvent->CurrentRequest ( i ); + + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, grantinfo.RequestorId().Identity() ); + const TDesC16 dispname = grantinfo.RequestorDisplayName(); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, dispname ); + } + + break; + } + + case MPresenceBlockListEvent::KInterfaceId: + { + const MPresenceBlockListEvent* blockListEvent = + TXIMPGetInterface< const MPresenceBlockListEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + TBuf<100> sdstate; + TBuf<100> ssstate; + _LIT ( Kna, " Susbcription state is unavailable" ); + _LIT ( Kava, " Susbcription state is available" ); + _LIT ( KDef, " Susbcription state is ERROR" ); + + const MXIMPDataSubscriptionState& dstate = blockListEvent->DataSubscriptionState(); + + switch ( dstate.SubscriptionState() ) + { + + case 0: + ssstate.Copy ( Kna ); + break; + + case 1: + ssstate.Copy ( Kava ); + break; + + default: + ssstate.Copy ( KDef ); + break; + } + + _LIT ( Kdna, " Data state is unavailable" ); + + _LIT ( Kdava, " Data state is available" ); + _LIT ( KdDef, " Data state is ERROR" ); + + + switch ( dstate.SubscriptionState() ) + { + + case 0: + sdstate.Copy ( Kdna ); + break; + + case 1: + sdstate.Copy ( Kdava ); + break; + + default: + sdstate.Copy ( KdDef ); + break; + } + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd Presentity Grant event" ) ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, sdstate ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, ssstate ); + + TInt index = blockListEvent->NewBlocksCount(); + + for ( TInt i = 0; i < index; i++ ) + { + const MPresenceBlockInfo& blockinfo = blockListEvent->NewBlock ( i ); + + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, blockinfo.BlockedEntityId().Identity() ); + const TDesC16& dispname = blockinfo.BlockedEntityDisplayName(); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, dispname ); + } + + index = blockListEvent->CurrentBlocksCount(); + + for ( TInt i = 0; i < index; i++ ) + { + const MPresenceBlockInfo& blockinfo = blockListEvent->CurrentBlock ( i ); + + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, blockinfo.BlockedEntityId().Identity() ); + const TDesC16& dispname = blockinfo.BlockedEntityDisplayName(); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, dispname ); + } + + break; + } + + case MPresentityPresenceEvent::KInterfaceId: + { + const MPresentityPresenceEvent* PresentityPresenceEvent = + TXIMPGetInterface< const MPresentityPresenceEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + TBuf<100> sdstate; + TBuf<100> ssstate; + _LIT ( Kna, " Susbcription state is unavailable" ); + _LIT ( Kava, " Susbcription state is available" ); + _LIT ( KDef, " Susbcription state is ERROR" ); + + const MXIMPDataSubscriptionState& dstate = PresentityPresenceEvent->DataSubscriptionState(); + + switch ( dstate.SubscriptionState() ) + { + + case 0: + ssstate.Copy ( Kna ); + break; + + case 1: + ssstate.Copy ( Kava ); + break; + + default: + ssstate.Copy ( KDef ); + break; + } + + _LIT ( Kdna, " Data state is unavailable" ); + + _LIT ( Kdava, " Data state is available" ); + _LIT ( KdDef, " Data state is ERROR" ); + + + switch ( dstate.SubscriptionState() ) + { + + case 0: + sdstate.Copy ( Kdna ); + break; + + case 1: + sdstate.Copy ( Kdava ); + break; + + default: + sdstate.Copy ( KdDef ); + break; + } + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************BEGIN******************" ) ); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd Presentity PresenceEvent" ) ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, sdstate ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, ssstate ); + + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, PresentityPresenceEvent->PresentityId().Identity() ); + + const MPresenceInfo& pi = PresentityPresenceEvent->SubscribedPresence(); + const MPersonPresenceInfo* ppi = pi.PersonPresence(); + const MPresenceInfoFieldCollection& presinf = ppi->Fields(); + TInt index = presinf.FieldCount(); + // const MXIMPBase base; + + for ( TInt i = 0; i < index; i++ ) + { + const MPresenceInfoField& infofield = presinf.FieldAt ( i ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, infofield.FieldType() ); + const MPresenceInfoFieldValueText* PresentityPresencestatus = + TXIMPGetInterface< const MPresenceInfoFieldValueText >::From ( infofield.FieldValue(), + MXIMPBase::EPanicIfUnknown ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, PresentityPresencestatus->TextValue() ); + // EUNIT_ASSERT_EQUALS_DESC(PresentityPresencestatus->TextValue(), iPersonpresattributes[i], "statustext does'nt match"); + } + + index = pi.ServicePresenceCount(); + + for ( TInt i = 0; i < index; i++ ) + { + const MServicePresenceInfo& servicePresinfo = pi.ServicePresenceAt ( i ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, servicePresinfo.ServiceType() ); +// EUNIT_ASSERT_EQUALS_DESC(servicePresinfo.ServiceType(), servctype, "service does'nt match"); + const MPresenceInfoFieldCollection& fields = servicePresinfo.Fields(); + + for ( TInt j = 0; j < fields.FieldCount(); j++ ) + { + const MPresenceInfoField& infofield = fields.FieldAt ( j ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, infofield.FieldType() ); + const MPresenceInfoFieldValueText* Presenceavailability = + TXIMPGetInterface< const MPresenceInfoFieldValueText >::From ( infofield.FieldValue(), + MXIMPBase::EPanicIfUnknown ); + +// EUNIT_ASSERT_EQUALS_DESC(Presenceavailability->TextValue(), _L("OPEN") , "Comm capability does'nt match"); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, Presenceavailability->TextValue() ); + } + } + + index = pi.DevicePresenceCount(); + + for ( TInt i = 0; i < index; i++ ) + { + const MDevicePresenceInfo& DevicePresinfo = pi.DevicePresenceAt ( i ); + const TPtrC8 devicename = DevicePresinfo.DeviceName(); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, DevicePresinfo.DeviceName() ); + const MPresenceInfoFieldCollection& fields = DevicePresinfo.Fields(); + TInt fieldcount = fields.FieldCount(); + + for ( TInt j = 0; j < fieldcount; j++ ) + { + const MPresenceInfoField& infofield = fields.FieldAt ( j ); + const TDesC8* fieldtype = & ( infofield.FieldType() ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, *fieldtype ); + const MXIMPBase& base = infofield.FieldValue(); + const MPresenceInfoFieldValueText* Presentityvalue = + TXIMPGetInterface< const MPresenceInfoFieldValueText >::From ( infofield.FieldValue(), + MXIMPBase::EPanicIfUnknown ); + + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, Presentityvalue->TextValue() ); +// EUNIT_ASSERT_EQUALS_DESC(Presentityvalue->TextValue(), clienttype, "Clienttype does'nt match"); + } + + + } + + _LIT ( KMsg, " presentity presence event is getting " ); // here we hv to write message or text wch we want to write in log file + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, KMsg ); + break; + } + + case MPresenceWatcherListEvent::KInterfaceId: + { + const MPresenceWatcherListEvent* watcherListEvent = + TXIMPGetInterface< const MPresenceWatcherListEvent >::From ( aEvent, + MXIMPBase::EPanicIfUnknown ); + TBuf<100> sdstate; + TBuf<100> ssstate; + + const MXIMPDataSubscriptionState& dstate = watcherListEvent->DataSubscriptionState(); + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd watcher event" ) ); + // print the list contents + + for ( TInt i = 0; i < watcherListEvent->CurrentWatchersCount(); i++ ) + { + const MPresenceWatcherInfo& gi = watcherListEvent->CurrentWatcher ( i ); + + gid[i].Copy ( gi.WatcherId().Identity() ); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Id and displayname for cur watcher group %d X" ), i ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.WatcherId().Identity() ); +// EUNIT_ASSERT_EQUALS_DESC(gi.WatcherId().Identity(), KContact1, "watcher does'nt match"); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.WatcherDisplayName() ); + // EUNIT_ASSERT_EQUALS_DESC(gi.WatcherDisplayName(), KNickname1, "Devicename does'nt match"); + } + + gidcount = watcherListEvent->CurrentWatchersCount(); + + // print the list contents + + for ( TInt i = 0; i < watcherListEvent->NewWatchersCount(); i++ ) + { + const MPresenceWatcherInfo& gi = watcherListEvent->NewWatcher ( i ); + gid[i].Copy ( gi.WatcherId().Identity() ); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Id and displayname for new group %d X" ), i ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.WatcherId().Identity() ); +// EUNIT_ASSERT_EQUALS_DESC(gi.WatcherId().Identity(), KContact1, "watcher does'nt match"); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, gi.WatcherDisplayName() ); + // EUNIT_ASSERT_EQUALS_DESC(gi.WatcherDisplayName(), KNickname1, "Devicename does'nt match"); + } + + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "*************END*******************" ) ); + + gidcount = watcherListEvent->NewWatchersCount(); + + break; + } + + case MImConversationEvent::KInterfaceId: + { + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "Recvd conversation event" ) ); + + const MImConversationEvent* convEvent = + TXIMPGetInterface< const MImConversationEvent >::From + ( aEvent, MXIMPBase::EPanicIfUnknown ); + TInt count = convEvent->NewTextMessageCount(); + const MImConversationInfo& convInfo = convEvent->NewTextMessage ( 0 ); + const MXIMPIdentity& identity = convInfo.MessageId(); + const TDesC16& msg = convInfo.TextMessage(); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "message is" ) ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, convInfo.TextMessage() ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, convInfo.MessageId().Identity() ); + + /* const MDesCArray& array= convInfo.RecipientL(); + TPtrC sender=array.MdcaPoint(0);*/ + break; + } + case MSearchEvent::KInterfaceId: + { + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "search event")); + const MSearchEvent* srchEvent = + TXIMPGetInterface< const MSearchEvent >::From + (aEvent, MXIMPBase::EPanicIfUnknown); + TInt count= srchEvent->SearchResultCount(); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend,_L("result count :%d "),count); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, srchEvent->SearchId().Identity() ); + + TInt64 radn; + TInt random = Math::Rand( radn ); + + for(TInt i=0;iSearchResult(i); + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend,_L("Result No:%d "),i); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, info.GetFieldInfo(EFirstName) ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, info.GetFieldInfo(ELastName) ); + RFileLogger::Write ( KDir, KFile, EFileLoggingModeAppend, info.GetFieldInfo(EEmailAddress) ); + //take a random contact + if ( i == random % count ) + { + + RFs fs; + RFile file; + TBuf8<100> buf; + User::LeaveIfError( fs.Connect() ); + User::LeaveIfError( file.Replace( fs, + KAddContactFileName, EFileWrite ) ); + + CnvUtfConverter::ConvertFromUnicodeToUtf8( buf, + info.GetFieldInfo(EEmailAddress) ); + file.Write( buf ); + file.Close(); + fs.Close(); + + } + } + RFileLogger::WriteFormat ( KDir, KFile, EFileLoggingModeAppend, _L ( "search event processed")); + break; + } + + case MSearchKeysEvent::KInterfaceId: + { + const MSearchKeysEvent* srchEvent = + TXIMPGetInterface< const MSearchKeysEvent >::From + (aEvent, MXIMPBase::EPanicIfUnknown); + TInt count= srchEvent->InfoCount(); + + for(TInt a=0; a < count; a++) + { + const MSearchKeyInfo& keyInfo=srchEvent->SearchKeyInfo( a); + switch(keyInfo.Type()) + { + case EKey: + { + TInt key= keyInfo.Key(); + } + break; + + case ELabel: + { + TPtrC label = keyInfo.Label(); + break; + } + } + } + + break; + } + + default: + { + break; + } + } + } + + +// end of file + + + + + +