meetingrequest/mrmbutilsextension/src/cmrmbutilsmailboxlistener.cpp
branchRCL_3
changeset 12 4ce476e64c59
child 16 b5fbb9b25d57
equal deleted inserted replaced
11:0396474f30f5 12:4ce476e64c59
       
     1 /*
       
     2 * Copyright (c) 2008 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: MBUtils settings implementation
       
    15 *
       
    16 */
       
    17 
       
    18 //INCLUDE FILES
       
    19 #include "cmrmbutilsmailboxlistener.h"
       
    20 #include "CFSMailCommon.h"
       
    21 #include "CFSMailClient.h"
       
    22 #include "CFSMailBox.h"
       
    23 #include "fsmtmsuids.h"
       
    24 #include "emailtrace.h"
       
    25 
       
    26 #include <ct/rcpointerarray.h>
       
    27 #include <cmrmailboxinfo.h>
       
    28 #include <cmrmailboxutils.h>
       
    29 
       
    30 // CONSTANTS
       
    31 
       
    32 // Unnamed namespace for local definitions
       
    33 namespace {   // codescanner::namespace
       
    34 // Length for CRC buffer
       
    35 const TInt KCRCBufferLen(32);
       
    36 }
       
    37 
       
    38 // ======== MEMBER FUNCTIONS ========
       
    39 
       
    40 
       
    41 // ----------------------------------------------------------------------------
       
    42 // CMRMBUtilsMailboxListener::CMRMBUtilsMailboxListener
       
    43 // ----------------------------------------------------------------------------
       
    44 //
       
    45 CMRMBUtilsMailboxListener::CMRMBUtilsMailboxListener(
       
    46 			RPointerArray<CMRMailBoxInfo>& aMailboxes,
       
    47 			CFSMailClient& aMailClient,
       
    48 			MMRMailboxUtilsObserver& aMRMailboxObserver )
       
    49 :	iMailboxes( aMailboxes ),
       
    50     iMailClient( aMailClient ),
       
    51     iMRMailboxObserver( aMRMailboxObserver )
       
    52 	{
       
    53 	// No implementation
       
    54 	}
       
    55 
       
    56 // ----------------------------------------------------------------------------
       
    57 // CMRMBUtilsMailboxListener::~CMRMBUtilsMailboxListener
       
    58 // ----------------------------------------------------------------------------
       
    59 //
       
    60 CMRMBUtilsMailboxListener::~CMRMBUtilsMailboxListener()
       
    61 	{
       
    62 	// No implementation
       
    63 	}
       
    64 
       
    65 // ----------------------------------------------------------------------------
       
    66 // CMRMBUtilsMailboxListener::NewL
       
    67 // ----------------------------------------------------------------------------
       
    68 //
       
    69 CMRMBUtilsMailboxListener* CMRMBUtilsMailboxListener::NewL(
       
    70 			RPointerArray<CMRMailBoxInfo>& aMailboxes,
       
    71 			CFSMailClient& aMailClient,
       
    72 			MMRMailboxUtilsObserver& aMRMailboxObserver )
       
    73 	{
       
    74 	FUNC_LOG;
       
    75 
       
    76 	CMRMBUtilsMailboxListener* self =
       
    77 			new (ELeave) CMRMBUtilsMailboxListener(
       
    78 			        aMailboxes,
       
    79 			        aMailClient,
       
    80 			        aMRMailboxObserver );
       
    81 
       
    82 	CleanupStack::PushL( self );
       
    83 	self->ConstructL();
       
    84 	CleanupStack::Pop( self );
       
    85 	return self;
       
    86 	}
       
    87 
       
    88 // ----------------------------------------------------------------------------
       
    89 // CMRMBUtilsMailboxListener::ConstructL
       
    90 // ----------------------------------------------------------------------------
       
    91 //
       
    92 void CMRMBUtilsMailboxListener::ConstructL()
       
    93 	{
       
    94 	FUNC_LOG;
       
    95 
       
    96 	ListMailboxesL();
       
    97 	}
       
    98 
       
    99 // ----------------------------------------------------------------------------
       
   100 // CMRMBUtilsMailboxListener::EventL
       
   101 // ----------------------------------------------------------------------------
       
   102 //
       
   103 void CMRMBUtilsMailboxListener::EventL(
       
   104 			TFSMailEvent aEvent,
       
   105 			TFSMailMsgId /*aMailbox*/,
       
   106 			TAny* /*aParam1*/,
       
   107 			TAny* /*aParam2*/,
       
   108 			TAny* /*aParam3*/ )
       
   109 	{
       
   110 	FUNC_LOG;
       
   111 
       
   112 	MMRMailboxUtilsObserver::TEventType event(
       
   113 	        MMRMailboxUtilsObserver::EMRNullEvent);
       
   114 
       
   115 	switch ( aEvent )
       
   116 	    {
       
   117 	    case TFSEventNewMailbox:
       
   118 	        {
       
   119 	        event = MMRMailboxUtilsObserver::EMRMailboxCreated;
       
   120 	        }
       
   121 	        break;
       
   122 
       
   123 	    case TFSEventMailboxRenamed:
       
   124         case TFSEventMailboxCapabilityChanged:
       
   125         case TFSEventMailboxSettingsChanged:
       
   126             {
       
   127             event = MMRMailboxUtilsObserver::EMRMailboxCreated;
       
   128             }
       
   129             break;
       
   130 
       
   131 	    case TFSEventMailboxDeleted:
       
   132 	        {
       
   133 	        event = MMRMailboxUtilsObserver::EMRMailboxDeleted;
       
   134 	        }
       
   135 	        break;
       
   136 
       
   137 	    default:
       
   138 	        {
       
   139 	        // No actions for rest of the events
       
   140 	        }
       
   141 	        break;
       
   142 	    }
       
   143 
       
   144 	if ( MMRMailboxUtilsObserver::EMRNullEvent != event)
       
   145 	    {
       
   146 	    ListMailboxesL();
       
   147 	    iMRMailboxObserver.HandleMRMailboxEventL( event );
       
   148 	    }
       
   149 	}
       
   150 
       
   151 // ----------------------------------------------------------------------------
       
   152 // CMRMBUtilsMailboxListener::ListMailboxesL
       
   153 // ----------------------------------------------------------------------------
       
   154 //
       
   155 void CMRMBUtilsMailboxListener::ListMailboxesL()
       
   156     {
       
   157     FUNC_LOG;
       
   158 
       
   159     RCPointerArray<CFSMailBox> mailBoxes;
       
   160     CleanupClosePushL( mailBoxes );
       
   161 
       
   162     TFSMailMsgId msgId;
       
   163     iMailClient.ListMailBoxes( msgId, mailBoxes );
       
   164 
       
   165     iMailboxes.ResetAndDestroy();
       
   166     TInt mailboxCount( mailBoxes.Count() );
       
   167     for (TInt i(0); i < mailboxCount; ++i )
       
   168         {
       
   169         CFSMailBox* mailbox = mailBoxes[i];
       
   170 
       
   171         TBool supportRespond(
       
   172                 mailbox->HasCapability( EFSMBoxCapaMeetingRequestRespond ) );
       
   173 
       
   174         TBool supportCreate(
       
   175                 mailbox->HasCapability( EFSMBoxCapaMeetingRequestCreate ) );
       
   176 
       
   177         TBool supportUpdate(
       
   178                 mailbox->HasCapability( EFSMBoxCapaCanUpdateMeetingRequest ) );
       
   179 
       
   180         TBool supportsMeetingRequest(
       
   181                 supportRespond &&
       
   182                 supportCreate &&
       
   183                 supportUpdate );
       
   184 
       
   185         if ( supportsMeetingRequest )
       
   186             {
       
   187             // Mailbox supports meeting request creation
       
   188             TFSMailMsgId mailboxId( mailbox->GetId() );
       
   189 
       
   190             TBuf<KCRCBufferLen> crcBuffer;
       
   191             crcBuffer.AppendNum( mailboxId.PluginId().iUid );
       
   192             crcBuffer.AppendNum( mailboxId.Id() );
       
   193 
       
   194             TUint32 cmailMailboxCrc( 0 );
       
   195             Mem::Crc32( cmailMailboxCrc,
       
   196                     crcBuffer.Ptr(),
       
   197                     crcBuffer.Size() );
       
   198 
       
   199             TPtrC mailboxName( mailbox->GetName() );
       
   200             TPtrC mailboxUser( mailbox->OwnMailAddress().GetEmailAddress() );
       
   201 
       
   202             CMRMailBoxInfo* info = CMRMailBoxInfo::NewL(
       
   203                     mailboxName,
       
   204                     mailboxUser,
       
   205                     TUid::Uid( KUidMsgTypeFsMtmVal),
       
   206                     cmailMailboxCrc );
       
   207 
       
   208             CleanupStack::PushL( info );
       
   209             User::LeaveIfError( iMailboxes.Append( info ) );
       
   210             CleanupStack::Pop( info );
       
   211             }
       
   212         }
       
   213 
       
   214     // mailBoxes
       
   215     CleanupStack::PopAndDestroy(); // codescanner::cleanup
       
   216     }
       
   217 
       
   218 // EOF