meetingui/attendeeview/EngSrc/CAttendeeItem.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingui/attendeeview/EngSrc/CAttendeeItem.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,352 @@
+/*
+* Copyright (c) 2004 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:  Provides methods for CAttendeeItem class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "CAttendeeItem.h"
+#include <caluser.h>
+
+/// Unnamed namespace for local definitions
+namespace {
+
+// LOCAL CONSTANTS AND MACROS
+#ifdef _DEBUG
+_LIT( KPanicMsg, "CAttendeeItem" );
+
+enum TPanicCode
+    {
+    KAttPanicNullPointer = 1,
+    KAttPanicUnknownOperation
+    };
+
+void Panic( TPanicCode aReason )
+    {
+    User::Panic( KPanicMsg, aReason );
+    }
+#endif
+}  // namespace
+// ============================ MEMBER FUNCTIONS ==============================
+// ----------------------------------------------------------------------------
+// CAttendeeItem::NewL
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CAttendeeItem* CAttendeeItem::NewL( CCalAttendee* aCalAttendee )
+    {
+    CAttendeeItem* self = NewLC( aCalAttendee );
+    CleanupStack::Pop(self); // self
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::NewLC
+// ---------------------------------------------------------
+//
+CAttendeeItem* CAttendeeItem::NewLC( CCalAttendee* aCalAttendee )
+    {
+    CAttendeeItem* self = new(ELeave)CAttendeeItem( aCalAttendee );
+    CleanupStack::PushL( self );    
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeItem::CAttendeeItem
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ----------------------------------------------------------------------------
+//
+CAttendeeItem::CAttendeeItem( CCalAttendee* aCalAttendee ) :                                  
+                                 iContactID( KNullContactId ),
+                                 iCalAttendee( aCalAttendee ),
+                                 iOwnership( EFalse ),
+                                 iOrganizerSatus( EFalse )
+    {
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::~CAttendeeItem
+// ---------------------------------------------------------
+//
+CAttendeeItem::~CAttendeeItem()
+    {
+    delete iContactTitle;   
+    if ( iOwnership )
+        {
+        delete iCalAttendee;        
+        }
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::ContactId
+// ---------------------------------------------------------
+//
+TContactItemId CAttendeeItem::ContactId() const
+    {
+    return iContactID;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::ContactTitle
+// ---------------------------------------------------------
+//
+HBufC* CAttendeeItem::ContactTitle() const
+    {
+    return iContactTitle;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::AgnAttendee
+// ---------------------------------------------------------
+//
+CCalAttendee* CAttendeeItem::AgnAttendee() const
+    {
+    return iCalAttendee;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::SetContactId
+// ---------------------------------------------------------
+//
+void CAttendeeItem::SetContactId( TContactItemId aId )
+    {
+    iContactID = aId;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::SetContactTitle
+// ---------------------------------------------------------
+//
+void CAttendeeItem::SetContactTitle( HBufC* aTitle )
+    {
+    if ( iContactTitle )
+        {
+        delete iContactTitle;
+        iContactTitle = NULL;
+        }
+    iContactTitle = aTitle;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::SetOwnership
+// ---------------------------------------------------------
+//
+void CAttendeeItem::SetOwnership( TBool aOwnership )
+    {
+    iOwnership = aOwnership;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::Ownership
+// ---------------------------------------------------------
+//
+TBool CAttendeeItem::Ownership() const
+    {
+    return iOwnership;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::SetAgnAttendee
+// ---------------------------------------------------------
+//
+void CAttendeeItem::SetAgnAttendee( CCalAttendee* aCalAttendee )
+    {
+    __ASSERT_DEBUG( aCalAttendee, Panic( KAttPanicNullPointer ) );
+    if ( iOwnership && iCalAttendee )
+        {
+        delete iCalAttendee;
+        iCalAttendee = NULL;
+        }
+
+    iCalAttendee = aCalAttendee;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::SetAttendance
+// ---------------------------------------------------------
+//
+void CAttendeeItem::SetAttendanceL( TAttendance aAttendance )
+    {    
+    __ASSERT_DEBUG( iCalAttendee, Panic( KAttPanicNullPointer ) );
+
+    switch( aAttendance )
+        {
+        case ERequire:
+            {
+            iCalAttendee->SetRoleL( CCalAttendee::EReqParticipant );
+            break;
+            }
+        case EOptional: 
+            {
+            iCalAttendee->SetRoleL( CCalAttendee::EOptParticipant );
+            break;
+            }
+        /*case ENone:
+            {
+            iCalAttendee->SetRoleL( CCalAttendee::ENonParticipant );
+            break;
+            }               
+        */            
+        default:
+            {            
+            iCalAttendee->SetRoleL( CCalAttendee::EReqParticipant );
+            break;
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::Attendance
+// ---------------------------------------------------------
+//
+CAttendeeItem::TAttendance CAttendeeItem::AttendanceL() const
+    {
+    __ASSERT_DEBUG( iCalAttendee, Panic( KAttPanicNullPointer ) );
+
+    TAttendance attendance( ERequire );        
+
+    switch( iCalAttendee->RoleL() )
+        {
+        case CCalAttendee::EChair:
+            {
+            attendance = ERequire;
+            break;
+            }
+        case CCalAttendee::EReqParticipant:
+            {
+            attendance = ERequire;                
+            break;
+            } 
+        case CCalAttendee::EOptParticipant:
+            {
+            attendance = EOptional;
+            break;
+            }
+        /*case CCalAttendee::ENonParticipant:
+            {
+            attendance = ENone;
+            break;
+            }
+        */    
+        default:
+            {   
+            attendance = ERequire;                
+            break;
+            }
+        }
+    return attendance;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::Compare
+// ---------------------------------------------------------
+//
+TInt CAttendeeItem::CompareL( const CAttendeeItem& aLhs, 
+                             const CAttendeeItem& aRhs )
+    {
+    TInt result( 0 );
+
+    result = CompareAttendancesL( aLhs, aRhs );
+    if ( result == 0 )
+        {
+        result = CompareStatusL( aLhs, aRhs );        
+        }
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::CompareAttendances
+// ---------------------------------------------------------
+//
+TInt CAttendeeItem::CompareAttendancesL( const CAttendeeItem& aLhs, 
+                                        const CAttendeeItem& aRhs )
+    {
+    __ASSERT_DEBUG( aLhs.iCalAttendee && aRhs.iCalAttendee, 
+                    Panic( KAttPanicNullPointer ) );
+    TInt result( 0 );       
+        
+    if (( aLhs.AttendanceL() == aRhs.AttendanceL()) && 
+        (aRhs.IsOrganizer() == aLhs.IsOrganizer()))
+        {
+        result = 0;    
+        }
+    else if ( ( aLhs.IsOrganizer() ) ||
+              ( aLhs.AttendanceL() == ERequire  && !aRhs.IsOrganizer() ))
+        {
+        result = -1;
+        }
+    else
+        {
+        result = 1;
+        }
+        
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::CompareStatus
+// ---------------------------------------------------------
+//
+TInt CAttendeeItem::CompareStatusL( const CAttendeeItem& aLhs, 
+                                   const CAttendeeItem& aRhs )
+    {
+    __ASSERT_DEBUG( aLhs.iCalAttendee && aRhs.iCalAttendee, 
+                    Panic( KAttPanicNullPointer ) );
+    
+    TInt result( 0 );
+
+    if ( aLhs.iCalAttendee->StatusL() == aRhs.iCalAttendee->StatusL() ) 
+        {
+        result = 0;
+        }
+    else if ( ( aLhs.iCalAttendee->StatusL() == CCalAttendee::EAccepted ) ||           
+              ( aLhs.iCalAttendee->StatusL() == CCalAttendee::ETentative && 
+                aRhs.iCalAttendee->StatusL() != CCalAttendee::EAccepted  ) || 
+              ( aLhs.iCalAttendee->StatusL() == CCalAttendee::EDeclined && 
+                ( aRhs.iCalAttendee->StatusL() != CCalAttendee::EAccepted &&
+                  aRhs.iCalAttendee->StatusL() != CCalAttendee::ETentative  ) )
+            )
+        {
+        result = -1;
+        }
+    else
+        {
+        result = 1;
+        }
+
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeItem::IsOrganizer
+// ---------------------------------------------------------
+//
+TBool CAttendeeItem::IsOrganizer() const
+    {
+    return iOrganizerSatus;
+    }
+    
+// ---------------------------------------------------------
+// CAttendeeItem::SetOrganizerStatus
+// ---------------------------------------------------------
+//
+void CAttendeeItem::SetOrganizerStatus(TBool aOrganizerStatus)
+    {
+    iOrganizerSatus = aOrganizerStatus;
+    }
+    
+// End of File