diff -r 000000000000 -r 094583676ce7 wvuing/wvuieng/EngSrc/camessageutil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuieng/EngSrc/camessageutil.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: General helper methods for message handling +* +*/ + + +#include +#include + +#include "chatdebugprint.h" +#include "camessageutil.h" +#include "mcamessage.h" +#include "mcamessagecreator.h" +#include "mcamessageswriteinterface.h" + +#include // Resource +#include + +// CONSTANTS +const TInt KMaxDateStringLength = 25; // max length of date message + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CAMessageUtil::AppendDateStampL +// --------------------------------------------------------------------------- +// +void CAMessageUtil::AppendDateStampL( + TTime aNewTime, + MCAMessagesWriteInterface& aWriteInterface, + MCAMessageCreator& aMessageCreator ) + { + // DateStamp is NOT appended if: + // 1. There are no previous messages + // 2. Previous message is from the same day as aNewTime + + CHAT_DP_FUNC_ENTER( "CAMessageUtil::AppendDateStampL" ) + TTime lastTime = aWriteInterface.Time(); + + if ( lastTime == Time::NullTTime() ) + { + // no previous messages + return; + } + + // Compare timestamps + TDateTime lastDate = lastTime.DateTime(); + TDateTime newDate = aNewTime.DateTime(); + + if ( lastDate.Day() != newDate.Day() || + lastDate.Month() != newDate.Month() || + lastDate.Year() != newDate.Year() ) + { + // Day is not the same + // Create a system message about new date + + // Format Date eg. "11.12.2006" + HBufC* dateFormat = NULL; + dateFormat = StringLoader::LoadLC( R_QTN_DATE_USUAL_WITH_ZERO ); + HBufC* dateString = HBufC::NewLC( KMaxDateStringLength ); + TPtr dateStringPtr( dateString->Des() ); + aNewTime.FormatL( dateStringPtr, *dateFormat ); + + CHAT_DP( + D_CHAT_LIT( "Adding datestamp to container: %U" ), dateStringPtr ); + + // Load date message + HBufC* dateMessage = + StringLoader::LoadLC( R_SYSTEM_MESSAGE_DATE_CHANGE, + dateStringPtr ); + + // Cleanupstack not needed because ownership + // is transferred to aWriteInterface + MCAMessage* message = aMessageCreator.CreateSystemMessageL( // CSI: 35 # See comment above + MCAMessage::ESystemMessageDateChange, *dateMessage ); + + // Append message to container + // ownership is transferred + aWriteInterface.AppendL( message ); + + // dateformat, datestring, dateMessage + CleanupStack::PopAndDestroy( 3, dateFormat ); + } + + CHAT_DP_FUNC_DONE( "CAMessageUtil::AppendDateStampL" ) + } + + +// --------------------------------------------------------------------------- +// CAMessageUtil::AppendMessageWithDateStampL +// --------------------------------------------------------------------------- +// +void CAMessageUtil::AppendMessageWithDateStampL( + MCAMessage& aNewMessage, + MCAMessagesWriteInterface& aWriteInterface, + MCAMessageCreator& aMessageCreator, + TBool aSharedOwnership ) + { + // Make sure this does not leave before the new message is + // appended to interface, + TRAP_IGNORE( AppendDateStampL( aNewMessage.TimeStamp(), + aWriteInterface, + aMessageCreator ) ); + aWriteInterface.AppendL( &aNewMessage, aSharedOwnership ); + } + +// End of file