emailservices/emailframework/commonlib/src/CFSMailMessageBase.cpp
changeset 0 8466d47a6819
child 8 e1b6206813b4
equal deleted inserted replaced
-1:000000000000 0:8466d47a6819
       
     1 /*
       
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  common email base object
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "CFSMailRequestHandler.h"
       
    20 #include "emailtrace.h"
       
    21 #include "CFSMailMessageBase.h"
       
    22 #include "cmailmessageext.h"
       
    23 
       
    24 // ================= MEMBER FUNCTIONS ==========================================
       
    25 // -----------------------------------------------------------------------------
       
    26 // CFSMailMessageBase::NewLC
       
    27 // -----------------------------------------------------------------------------
       
    28 EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewLC( TFSMailMsgId aMessageId )
       
    29 {
       
    30   FUNC_LOG;
       
    31   CFSMailMessageBase* message = new (ELeave) CFSMailMessageBase();
       
    32   CleanupStack:: PushL(message);
       
    33   message->ConstructL(aMessageId);
       
    34   return message;
       
    35 } 
       
    36 
       
    37 // -----------------------------------------------------------------------------
       
    38 // CFSMailMessageBase::NewL
       
    39 // -----------------------------------------------------------------------------
       
    40 EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewL( TFSMailMsgId aMessageId )
       
    41 {
       
    42   FUNC_LOG;
       
    43   CFSMailMessageBase* message =  CFSMailMessageBase::NewLC(aMessageId);
       
    44   CleanupStack:: Pop(message);
       
    45   return message;
       
    46 }
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 // CFSMailMessageBase::CFSMailMessageBase
       
    50 // -----------------------------------------------------------------------------
       
    51 CFSMailMessageBase::CFSMailMessageBase()
       
    52 {
       
    53     FUNC_LOG;
       
    54 
       
    55 	iSubject = HBufC::New(1);
       
    56 	iSubject->Des().Copy(KNullDesC());
       
    57 
       
    58   	iSender = NULL;
       
    59   	iFlags = 0;
       
    60   	// set request handler pointer
       
    61 	iRequestHandler = static_cast<CFSMailRequestHandler*>(Dll::Tls());
       
    62 }
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // CFSMailMessageBase::ConstructL
       
    66 // -----------------------------------------------------------------------------
       
    67 EXPORT_C void CFSMailMessageBase::ConstructL( TFSMailMsgId aMessageId )
       
    68 {
       
    69     FUNC_LOG;
       
    70 	iMessageId = aMessageId;    
       
    71 }
       
    72 
       
    73 // -----------------------------------------------------------------------------
       
    74 // CFSMailMessageBase::~CFSMailMessageBase
       
    75 // -----------------------------------------------------------------------------
       
    76 EXPORT_C CFSMailMessageBase::~CFSMailMessageBase()
       
    77 {
       
    78     FUNC_LOG;
       
    79 	if(iSender)
       
    80 		{
       
    81 		delete iSender;
       
    82 		iSender = NULL;
       
    83 		}
       
    84 
       
    85 	if(iSubject)
       
    86 		{
       
    87 		delete iSubject;
       
    88 		iSubject = NULL;
       
    89 		}
       
    90 
       
    91 	// clear recipients lists
       
    92 	iToRecipients.ResetAndDestroy();		
       
    93 	iCcRecipients.ResetAndDestroy();
       
    94 	iBccRecipients.ResetAndDestroy();
       
    95 
       
    96 }
       
    97 
       
    98 // -----------------------------------------------------------------------------
       
    99 // CFSMailMessageBase::GetMessageId
       
   100 // -----------------------------------------------------------------------------
       
   101 EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMessageId(  ) const
       
   102 {
       
   103     FUNC_LOG;
       
   104 	return iMessageId;
       
   105 }
       
   106 
       
   107 // -----------------------------------------------------------------------------
       
   108 // CFSMailMessageBase::GetFolderId
       
   109 // -----------------------------------------------------------------------------
       
   110 EXPORT_C TFSMailMsgId CFSMailMessageBase::GetFolderId( ) const
       
   111 {
       
   112     FUNC_LOG;
       
   113 	return iFolderId;
       
   114 }
       
   115 
       
   116 // -----------------------------------------------------------------------------
       
   117 // CFSMailMessageBase::SetFolderId
       
   118 // -----------------------------------------------------------------------------
       
   119 EXPORT_C void CFSMailMessageBase::SetFolderId( const TFSMailMsgId aFolderId )
       
   120 {
       
   121     FUNC_LOG;
       
   122 	iFolderId = aFolderId;
       
   123 }
       
   124 
       
   125 // -----------------------------------------------------------------------------
       
   126 // CFSMailMessageBase::GetMailBoxId
       
   127 // -----------------------------------------------------------------------------
       
   128 EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMailBoxId( ) const
       
   129 {
       
   130     FUNC_LOG;
       
   131 	return iMailBoxId;
       
   132 }
       
   133 
       
   134 // -----------------------------------------------------------------------------
       
   135 // CFSMailMessageBase::SetMailBoxId
       
   136 // -----------------------------------------------------------------------------
       
   137 EXPORT_C void CFSMailMessageBase::SetMailBoxId( const TFSMailMsgId aMailBoxId )
       
   138 {
       
   139     FUNC_LOG;
       
   140 	iMailBoxId = aMailBoxId;
       
   141 }
       
   142 
       
   143 // -----------------------------------------------------------------------------
       
   144 // CFSMailMessageBase::SetSender
       
   145 // -----------------------------------------------------------------------------
       
   146 EXPORT_C void CFSMailMessageBase::SetSender(CFSMailAddress* aSender)
       
   147 {
       
   148     FUNC_LOG;
       
   149 	// store sender
       
   150 	if (iSender)
       
   151 		{
       
   152 		delete iSender;
       
   153 		}
       
   154 	iSender = aSender;
       
   155 
       
   156 }
       
   157 
       
   158 // -----------------------------------------------------------------------------
       
   159 // CFSMailMessageBase::GetSender
       
   160 // -----------------------------------------------------------------------------
       
   161 EXPORT_C CFSMailAddress* CFSMailMessageBase::GetSender() const
       
   162 {
       
   163     FUNC_LOG;
       
   164 	return iSender;
       
   165 }
       
   166 
       
   167 // -----------------------------------------------------------------------------
       
   168 // CFSMailMessageBase::GetToRecipients
       
   169 // -----------------------------------------------------------------------------
       
   170 EXPORT_C RPointerArray<CFSMailAddress>&  CFSMailMessageBase::GetToRecipients()
       
   171 {
       
   172 	return iToRecipients;
       
   173 }
       
   174 
       
   175 // -----------------------------------------------------------------------------
       
   176 // CFSMailMessageBase::GetCCRecipients
       
   177 // -----------------------------------------------------------------------------
       
   178 EXPORT_C RPointerArray<CFSMailAddress>&  CFSMailMessageBase::GetCCRecipients( )
       
   179 {
       
   180 	return iCcRecipients;
       
   181 }
       
   182 
       
   183 // -----------------------------------------------------------------------------
       
   184 // CFSMailMessageBase::GetBCCRecipients
       
   185 // -----------------------------------------------------------------------------
       
   186 EXPORT_C RPointerArray<CFSMailAddress>&  CFSMailMessageBase::GetBCCRecipients( )
       
   187 {
       
   188 	return iBccRecipients;
       
   189 }
       
   190 
       
   191 // -----------------------------------------------------------------------------
       
   192 // CFSMailMessageBase::AppendToRecipient
       
   193 // -----------------------------------------------------------------------------
       
   194 EXPORT_C void CFSMailMessageBase::AppendToRecipient(CFSMailAddress* aRecipient)
       
   195 {
       
   196     FUNC_LOG;
       
   197 	iToRecipients.Append(aRecipient);
       
   198 }
       
   199 
       
   200 // -----------------------------------------------------------------------------
       
   201 // CFSMailMessageBase::AppendCCRecipient
       
   202 // -----------------------------------------------------------------------------
       
   203 EXPORT_C void CFSMailMessageBase::AppendCCRecipient(CFSMailAddress* aRecipient )
       
   204 {
       
   205     FUNC_LOG;
       
   206 	iCcRecipients.Append(aRecipient);	
       
   207 }
       
   208 
       
   209 // -----------------------------------------------------------------------------
       
   210 // CFSMailMessageBase::AppendBCCRecipient
       
   211 // -----------------------------------------------------------------------------
       
   212 EXPORT_C void CFSMailMessageBase::AppendBCCRecipient( CFSMailAddress* aRecipient )
       
   213 {
       
   214     FUNC_LOG;
       
   215 	iBccRecipients.Append(aRecipient);			
       
   216 }
       
   217 
       
   218 // -----------------------------------------------------------------------------
       
   219 // CFSMailMessageBase::ClearToRecipients
       
   220 // -----------------------------------------------------------------------------
       
   221 EXPORT_C void CFSMailMessageBase::ClearToRecipients( )
       
   222 	{
       
   223     FUNC_LOG;
       
   224 		iToRecipients.ResetAndDestroy();
       
   225 	}
       
   226 
       
   227 // -----------------------------------------------------------------------------
       
   228 // CFSMailMessageBase::ClearCcRecipients
       
   229 // -----------------------------------------------------------------------------
       
   230 EXPORT_C void CFSMailMessageBase::ClearCcRecipients( )
       
   231 	{
       
   232     FUNC_LOG;
       
   233 		iCcRecipients.ResetAndDestroy();
       
   234 	}
       
   235 
       
   236 // -----------------------------------------------------------------------------
       
   237 // CFSMailMessageBase::ClearBccRecipients
       
   238 // -----------------------------------------------------------------------------
       
   239 EXPORT_C void CFSMailMessageBase::ClearBccRecipients( )
       
   240 	{
       
   241     FUNC_LOG;
       
   242 		iBccRecipients.ResetAndDestroy();
       
   243 	}
       
   244 
       
   245 // -----------------------------------------------------------------------------
       
   246 // CFSMailMessageBase::GetSubject
       
   247 // -----------------------------------------------------------------------------
       
   248 EXPORT_C TDesC& CFSMailMessageBase::GetSubject() const
       
   249 {
       
   250     FUNC_LOG;
       
   251 	return *iSubject;
       
   252 }
       
   253 
       
   254 // -----------------------------------------------------------------------------
       
   255 // CFSMailMessageBase::GetDate
       
   256 // -----------------------------------------------------------------------------
       
   257 EXPORT_C TTime CFSMailMessageBase::GetDate() const
       
   258 {
       
   259     FUNC_LOG;
       
   260   return iDate;
       
   261 }
       
   262 
       
   263 // -----------------------------------------------------------------------------
       
   264 // CFSMailMessageBase::SetDate
       
   265 // -----------------------------------------------------------------------------
       
   266 EXPORT_C void CFSMailMessageBase::SetDate( const TTime aDate )
       
   267 {
       
   268     FUNC_LOG;
       
   269 	iDate = aDate;
       
   270 }
       
   271 
       
   272 // -----------------------------------------------------------------------------
       
   273 // CFSMailMessageBase::SetSubject
       
   274 // -----------------------------------------------------------------------------
       
   275 EXPORT_C void CFSMailMessageBase::SetSubject(const TDesC& aSubject)
       
   276 {
       
   277     FUNC_LOG;
       
   278 	// init mailbox name
       
   279 	HBufC* subject = HBufC::New(aSubject.Length());
       
   280 	
       
   281 	// store new mailbox name
       
   282 	if(subject)
       
   283 	{
       
   284 		delete iSubject;
       
   285 		iSubject = subject;
       
   286 		iSubject->Des().Copy(aSubject);
       
   287 	}
       
   288 
       
   289 }
       
   290 
       
   291 // -----------------------------------------------------------------------------
       
   292 // CFSMailMessageBase::GetFlags
       
   293 // -----------------------------------------------------------------------------
       
   294 EXPORT_C TInt CFSMailMessageBase::GetFlags( ) const
       
   295 {
       
   296     FUNC_LOG;
       
   297 	return iFlags;
       
   298 }
       
   299 
       
   300 // -----------------------------------------------------------------------------
       
   301 // CFSMailMessageBase::SetFlag
       
   302 // -----------------------------------------------------------------------------
       
   303 EXPORT_C void CFSMailMessageBase::SetFlag(const TInt aFlag)
       
   304 {
       
   305     FUNC_LOG;
       
   306 	iFlags |= aFlag;
       
   307 }
       
   308 
       
   309 // -----------------------------------------------------------------------------
       
   310 // CFSMailMessageBase::ResetFlag
       
   311 // -----------------------------------------------------------------------------
       
   312 EXPORT_C void CFSMailMessageBase::ResetFlag(const TInt aFlag)
       
   313 {
       
   314     FUNC_LOG;
       
   315 	iFlags &= ~aFlag;
       
   316 }
       
   317 
       
   318 // -----------------------------------------------------------------------------
       
   319 // CFSMailMessageBase::IsFlagSet
       
   320 // -----------------------------------------------------------------------------
       
   321 EXPORT_C TBool CFSMailMessageBase::IsFlagSet(const TInt aFlag) const
       
   322 {
       
   323     FUNC_LOG;
       
   324 	if(iFlags & aFlag)
       
   325 		{
       
   326 		return ETrue;
       
   327 		}
       
   328 	else
       
   329 	{
       
   330 		return EFalse;
       
   331 	}
       
   332 }
       
   333 
       
   334 // -----------------------------------------------------------------------------
       
   335 // CFSMailMessageBase::IsRelatedTo
       
   336 // -----------------------------------------------------------------------------
       
   337 EXPORT_C TFSMailMsgId CFSMailMessageBase::IsRelatedTo() const
       
   338 	{
       
   339     FUNC_LOG;
       
   340 	return iRelatedTo;
       
   341 	}
       
   342 
       
   343 // -----------------------------------------------------------------------------
       
   344 // CFSMailMessageBase::SetRelatedTo
       
   345 // -----------------------------------------------------------------------------
       
   346 EXPORT_C void CFSMailMessageBase::SetRelatedTo( const TFSMailMsgId aMessageId )
       
   347 	{
       
   348     FUNC_LOG;
       
   349 	iRelatedTo = aMessageId;
       
   350 	}
       
   351 
       
   352 // -----------------------------------------------------------------------------
       
   353 // CFSMailMessageBase::SetReplyToAddress
       
   354 // -----------------------------------------------------------------------------
       
   355 EXPORT_C void CFSMailMessageBase::SetReplyToAddress(CFSMailAddress* aReplyToAddress)
       
   356 {
       
   357     FUNC_LOG;
       
   358 	// store sender
       
   359 	if (iReplyTo)
       
   360 		{
       
   361 		delete iReplyTo;
       
   362 		}
       
   363 	iReplyTo = aReplyToAddress;
       
   364 
       
   365 }
       
   366 
       
   367 // -----------------------------------------------------------------------------
       
   368 // CFSMailMessageBase::GetReplyToAddress
       
   369 // -----------------------------------------------------------------------------
       
   370 EXPORT_C const CFSMailAddress& CFSMailMessageBase::GetReplyToAddress()
       
   371 {
       
   372     FUNC_LOG;
       
   373 	return *iReplyTo;
       
   374 }
       
   375 
       
   376 EXPORT_C CFSMailRequestHandler& CFSMailMessageBase::RequestHandler( )
       
   377 {
       
   378 	return *iRequestHandler;
       
   379 }
       
   380 
       
   381 // -----------------------------------------------------------------------------
       
   382 // CFSMailMessageBase::ReleaseExtension
       
   383 // -----------------------------------------------------------------------------
       
   384 EXPORT_C void CFSMailMessageBase::ReleaseExtension( CEmailExtension* aExtension )
       
   385     {
       
   386     FUNC_LOG;
       
   387     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(iMessageId) )
       
   388         {
       
   389         // If plugin has created the extension, let it handle destruction.
       
   390         plugin->ReleaseExtension( aExtension );
       
   391         }
       
   392     else
       
   393         {
       
   394         CExtendableEmail::ReleaseExtension( aExtension );
       
   395         }
       
   396     }
       
   397     
       
   398 // -----------------------------------------------------------------------------
       
   399 // CFSMailMessageBase::ExtensionL
       
   400 // -----------------------------------------------------------------------------
       
   401 EXPORT_C CEmailExtension* CFSMailMessageBase::ExtensionL( 
       
   402     const TUid& aInterfaceUid )
       
   403     {
       
   404     FUNC_LOG;
       
   405     CEmailExtension* ext = CExtendableEmail::ExtensionL( aInterfaceUid );
       
   406     // didn't find already created instance, try now
       
   407     if ( !ext )
       
   408         {
       
   409         // check that plugin supports requested extension.
       
   410         if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(iMessageId) )
       
   411             {
       
   412             // request extension from plugin, leaves if not supported
       
   413             ext = plugin->ExtensionL( aInterfaceUid );            
       
   414             }
       
   415 
       
   416         }
       
   417     return ext;
       
   418     }