emailservices/emailcommon/src/cemailextensionbase.cpp
changeset 43 99bcbff212ad
parent 20 ecc8def7944a
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    13 *
    13 *
    14 * Description:  email internal extension base class
    14 * Description:  email internal extension base class
    15 *
    15 *
    16 */
    16 */
    17 
    17 
       
    18 #include "emailtrace.h"
       
    19 
    18 #include "cemailextensionbase.h"
    20 #include "cemailextensionbase.h"
    19 #include "emailtrace.h"
       
    20 
    21 
    21 /**
    22 /**
    22 *
    23 *
    23 */
    24 */
    24 enum TEmailFwPanic {
    25 enum TEmailFwPanic {
    27 
    28 
    28 _LIT( KEmailExtensionPanic, "EmailFw" );
    29 _LIT( KEmailExtensionPanic, "EmailFw" );
    29     
    30     
    30 void Panic( TEmailFwPanic aPanic )
    31 void Panic( TEmailFwPanic aPanic )
    31     {
    32     {
    32     FUNC_LOG;
    33     NM_FUNCTION;
       
    34     
    33     User::Panic( KEmailExtensionPanic, aPanic );
    35     User::Panic( KEmailExtensionPanic, aPanic );
    34     }
    36     }
    35 
    37 
    36 // ---------------------------------------------------------------------------
    38 // ---------------------------------------------------------------------------
    37 // c++ constructor
    39 // c++ constructor
    38 // ---------------------------------------------------------------------------
    40 // ---------------------------------------------------------------------------
    39 //
    41 //
    40 CEmailExtension::CEmailExtension( const TUid& aUid ) : 
    42 CEmailExtension::CEmailExtension( const TUid& aUid ) : 
    41     iUid( TUid::Uid(aUid.iUid ) )
    43     iUid( TUid::Uid(aUid.iUid ) )
    42     {
    44     {
       
    45     NM_FUNCTION;
    43     }
    46     }
    44 
    47 
    45 // ---------------------------------------------------------------------------
    48 // ---------------------------------------------------------------------------
    46 // 
    49 // 
    47 // ---------------------------------------------------------------------------
    50 // ---------------------------------------------------------------------------
    48 //
    51 //
    49 CEmailExtension::~CEmailExtension()
    52 CEmailExtension::~CEmailExtension()
    50     {
    53     {
       
    54     NM_FUNCTION;
    51     }
    55     }
    52 
    56 
    53 // ---------------------------------------------------------------------------
    57 // ---------------------------------------------------------------------------
    54 // 
    58 // 
    55 // ---------------------------------------------------------------------------
    59 // ---------------------------------------------------------------------------
    56 //
    60 //
    57 TUid CEmailExtension::Uid() const
    61 TUid CEmailExtension::Uid() const
    58     {
    62     {
       
    63     NM_FUNCTION;
       
    64     
    59     return iUid;
    65     return iUid;
    60     }
    66     }
    61 
    67 
    62 // ---------------------------------------------------------------------------
    68 // ---------------------------------------------------------------------------
    63 // 
    69 // 
    64 // ---------------------------------------------------------------------------
    70 // ---------------------------------------------------------------------------
    65 //
    71 //
    66 TUint CEmailExtension::DecRef()
    72 TUint CEmailExtension::DecRef()
    67     {
    73     {
       
    74     NM_FUNCTION;
       
    75     
    68     if ( iRefCount )
    76     if ( iRefCount )
    69         {
    77         {
    70         iRefCount--;
    78         iRefCount--;
    71         }
    79         }
    72     return iRefCount;
    80     return iRefCount;
    76 // 
    84 // 
    77 // ---------------------------------------------------------------------------
    85 // ---------------------------------------------------------------------------
    78 //
    86 //
    79 void CEmailExtension::IncRef()
    87 void CEmailExtension::IncRef()
    80     {
    88     {
       
    89     NM_FUNCTION;
       
    90     
    81     ++iRefCount;
    91     ++iRefCount;
    82     }
    92     }
    83         
    93         
    84 // ---------------------------------------------------------------------------
    94 // ---------------------------------------------------------------------------
    85 // deletes extension and removes it from extension array
    95 // deletes extension and removes it from extension array
    86 // ---------------------------------------------------------------------------
    96 // ---------------------------------------------------------------------------
    87 //
    97 //
    88 void CExtendableEmail::ReleaseExtension( CEmailExtension* aExtension )
    98 void CExtendableEmail::ReleaseExtension( CEmailExtension* aExtension )
    89     {
    99     {
    90     FUNC_LOG;
   100     NM_FUNCTION;
       
   101     
    91     if ( !aExtension->DecRef() )
   102     if ( !aExtension->DecRef() )
    92         {
   103         {
    93         iExtensions.Remove( aExtension );
   104         iExtensions.Remove( aExtension );
    94         delete aExtension;
   105         delete aExtension;
    95         }
   106         }
    99 // Finds and returns extension
   110 // Finds and returns extension
   100 // ---------------------------------------------------------------------------
   111 // ---------------------------------------------------------------------------
   101 //
   112 //
   102 CEmailExtension* CExtendableEmail::ExtensionL( const TUid& aInterfaceUid )
   113 CEmailExtension* CExtendableEmail::ExtensionL( const TUid& aInterfaceUid )
   103     {
   114     {
   104     FUNC_LOG;
   115     NM_FUNCTION;
       
   116     
   105     TInt index = iExtensions.FindExtension( aInterfaceUid );
   117     TInt index = iExtensions.FindExtension( aInterfaceUid );
   106     CEmailExtension* ext = NULL;
   118     CEmailExtension* ext = NULL;
   107     if ( index != KErrNotFound )
   119     if ( index != KErrNotFound )
   108         {
   120         {
   109         ext = iExtensions.Extension( index );
   121         ext = iExtensions.Extension( index );
   117 // Constructor is required for sbs2 to generate the same .defs for urel/udeb
   129 // Constructor is required for sbs2 to generate the same .defs for urel/udeb
   118 // ---------------------------------------------------------------------------
   130 // ---------------------------------------------------------------------------
   119 //
   131 //
   120 CExtendableEmail::CExtendableEmail()
   132 CExtendableEmail::CExtendableEmail()
   121     {
   133     {
   122     FUNC_LOG;
   134     NM_FUNCTION;
       
   135     
   123     }
   136     }
   124 //</qmail>
   137 //</qmail>
   125 
   138 
   126 // ---------------------------------------------------------------------------
   139 // ---------------------------------------------------------------------------
   127 // destructor
   140 // destructor
   128 // ---------------------------------------------------------------------------
   141 // ---------------------------------------------------------------------------
   129 //
   142 //
   130 TEmailExtensions::~TEmailExtensions()
   143 TEmailExtensions::~TEmailExtensions()
   131     {
   144     {
       
   145     NM_FUNCTION;
       
   146     
   132     iExtensions.Close();
   147     iExtensions.Close();
   133     }
   148     }
   134 
   149 
   135 // ---------------------------------------------------------------------------
   150 // ---------------------------------------------------------------------------
   136 // c++ constructor
   151 // c++ constructor
   137 // ---------------------------------------------------------------------------
   152 // ---------------------------------------------------------------------------
   138 //
   153 //
   139 TEmailExtensions::TEmailExtensions() : iExtensions( 1 )
   154 TEmailExtensions::TEmailExtensions() : iExtensions( 1 )
   140     {
   155     {
       
   156     NM_FUNCTION;
       
   157     
   141     }
   158     }
   142 
   159 
   143 // ---------------------------------------------------------------------------
   160 // ---------------------------------------------------------------------------
   144 // returns index of extension in extension array
   161 // returns index of extension in extension array
   145 // ---------------------------------------------------------------------------
   162 // ---------------------------------------------------------------------------
   146 //
   163 //
   147 TInt TEmailExtensions::FindExtension( const TUid& aUid ) const
   164 TInt TEmailExtensions::FindExtension( const TUid& aUid ) const
   148     {
   165     {
       
   166     NM_FUNCTION;
       
   167     
   149     TInt index = KErrNotFound;
   168     TInt index = KErrNotFound;
   150     for ( TInt i = 0; i < iExtensions.Count(); i++ )
   169     for ( TInt i = 0; i < iExtensions.Count(); i++ )
   151         {        
   170         {        
   152         const CEmailExtension* tested = iExtensions[i];
   171         const CEmailExtension* tested = iExtensions[i];
   153         if ( aUid == tested->Uid() )
   172         if ( aUid == tested->Uid() )
   163 // Returns extension by index. Panics if index is out of range.
   182 // Returns extension by index. Panics if index is out of range.
   164 // ---------------------------------------------------------------------------
   183 // ---------------------------------------------------------------------------
   165 //
   184 //
   166 CEmailExtension* TEmailExtensions::Extension( const TInt aIndex ) const
   185 CEmailExtension* TEmailExtensions::Extension( const TInt aIndex ) const
   167     {
   186     {
       
   187     NM_FUNCTION;
       
   188     
   168     __ASSERT_ALWAYS( aIndex>=0 && aIndex < iExtensions.Count(),
   189     __ASSERT_ALWAYS( aIndex>=0 && aIndex < iExtensions.Count(),
   169         Panic( EEmailExtensionIndexOutOfRange ) );
   190         Panic( EEmailExtensionIndexOutOfRange ) );
   170     return iExtensions[aIndex];
   191     return iExtensions[aIndex];
   171     }
   192     }
   172 
   193 
   174 // 
   195 // 
   175 // ---------------------------------------------------------------------------
   196 // ---------------------------------------------------------------------------
   176 //
   197 //
   177 void TEmailExtensions::AddL( CEmailExtension* aExtension )
   198 void TEmailExtensions::AddL( CEmailExtension* aExtension )
   178     {
   199     {
   179     FUNC_LOG;
   200     NM_FUNCTION;
       
   201     
   180     if ( !aExtension )
   202     if ( !aExtension )
   181         {
   203         {
   182         User::Leave( KErrArgument );
   204         User::Leave( KErrArgument );
   183         }
   205         }
   184     CleanupStack::PushL( aExtension );
   206     CleanupStack::PushL( aExtension );
   192 // ---------------------------------------------------------------------------
   214 // ---------------------------------------------------------------------------
   193 //
   215 //
   194 void TEmailExtensions::Remove( 
   216 void TEmailExtensions::Remove( 
   195     const CEmailExtension* aExtension )
   217     const CEmailExtension* aExtension )
   196     {
   218     {
   197     FUNC_LOG;
   219     NM_FUNCTION;
       
   220     
   198     const TInt index( FindExtension( aExtension->Uid() ) );
   221     const TInt index( FindExtension( aExtension->Uid() ) );
   199     if ( index != KErrNotFound )    
   222     if ( index != KErrNotFound )    
   200         {
   223         {
   201         iExtensions.Remove( index );
   224         iExtensions.Remove( index );
   202         }    
   225         }