email/imum/Utils/Src/ImumInSettingsDataArray.cpp
changeset 0 72b543305e3a
equal deleted inserted replaced
-1:000000000000 0:72b543305e3a
       
     1 /*
       
     2 * Copyright (c) 2002 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:  ImumInSettingsDataArray.cpp
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include <e32base.h>
       
    21 
       
    22 #include "ImumInSettingsDataArray.h"
       
    23 #include "ImumDaErrorCodes.h"
       
    24 #include "ImumDaSettingsKeys.h"
       
    25 #include "ImumInSettingsKeys.h"
       
    26 #include "ImumInSettingsDataAttribute.h"
       
    27 #include "ImumMboxDefaultData.h"
       
    28 #include "ImumPanic.h"
       
    29 #include "ImumUtilsLogging.h"
       
    30 
       
    31 // EXTERNAL DATA STRUCTURES
       
    32 // EXTERNAL FUNCTION PROTOTYPES
       
    33 // CONSTANTS
       
    34 // MACROS
       
    35 // LOCAL CONSTANTS AND MACROS
       
    36 // MODULE DATA STRUCTURES
       
    37 // LOCAL FUNCTION PROTOTYPES
       
    38 // FORWARD DECLARATIONS
       
    39 
       
    40 // ============================ MEMBER FUNCTIONS ===============================
       
    41 
       
    42 // ----------------------------------------------------------------------------
       
    43 // CImumInSettingsDataArray::CImumInSettingsDataArray()
       
    44 // ----------------------------------------------------------------------------
       
    45 //
       
    46 CImumInSettingsDataArray::CImumInSettingsDataArray()
       
    47     {
       
    48     }
       
    49 
       
    50 // ----------------------------------------------------------------------------
       
    51 // CImumInSettingsDataArray::~CImumInSettingsDataArray()
       
    52 // ----------------------------------------------------------------------------
       
    53 //
       
    54 CImumInSettingsDataArray::~CImumInSettingsDataArray()
       
    55     {
       
    56     iSettings.ResetAndDestroy();
       
    57     iSettings.Close();
       
    58 
       
    59     delete iSearchItem;
       
    60     iSearchItem = NULL;
       
    61     }
       
    62 
       
    63 // ----------------------------------------------------------------------------
       
    64 // CImumInSettingsDataArray::ConstructL()
       
    65 // ----------------------------------------------------------------------------
       
    66 //
       
    67 void CImumInSettingsDataArray::ConstructL()
       
    68     {
       
    69     // This item is need to search the array for the specific id. Only required
       
    70     // value is the id of the item, other can be ignored. The id is specified
       
    71     // just before the search begins.
       
    72     iSearchItem = CImumInSettingsDataAttribute::NewL(
       
    73         0, ECmpTInt32, 0, NULL, NULL );
       
    74     }
       
    75 
       
    76 // ----------------------------------------------------------------------------
       
    77 // CImumInSettingsDataArray::NewL()
       
    78 // ----------------------------------------------------------------------------
       
    79 //
       
    80 CImumInSettingsDataArray* CImumInSettingsDataArray::NewL()
       
    81     {
       
    82     CImumInSettingsDataArray* self = NewLC();
       
    83     CleanupStack::Pop( self );
       
    84 
       
    85     return self;
       
    86     }
       
    87 
       
    88 // ----------------------------------------------------------------------------
       
    89 // CImumInSettingsDataArray::NewLC()
       
    90 // ----------------------------------------------------------------------------
       
    91 //
       
    92 CImumInSettingsDataArray* CImumInSettingsDataArray::NewLC()
       
    93     {
       
    94     CImumInSettingsDataArray* self = new ( ELeave ) CImumInSettingsDataArray();
       
    95     CleanupStack::PushL( self );
       
    96     self->ConstructL();
       
    97 
       
    98     return self;
       
    99     }
       
   100 
       
   101 // ---------------------------------------------------------------------------
       
   102 // CImumInSettingsDataArray::HasItem()
       
   103 // ---------------------------------------------------------------------------
       
   104 //
       
   105 TBool CImumInSettingsDataArray::HasItem(
       
   106     const TUint aAttributeKey,
       
   107     TInt& aIndex ) const
       
   108     {
       
   109     iSearchItem->SetId( aAttributeKey );
       
   110     TIdentityRelation<CImumInSettingsDataAttribute> relation(
       
   111         CImumInSettingsDataAttribute::IdCompare );
       
   112 
       
   113     aIndex = iSettings.Find( iSearchItem, relation );
       
   114 
       
   115     return ( aIndex >= 0 );
       
   116     }
       
   117 
       
   118 // ---------------------------------------------------------------------------
       
   119 // CImumInSettingsDataArray::GetAttr()
       
   120 // ---------------------------------------------------------------------------
       
   121 //
       
   122 TInt CImumInSettingsDataArray::GetAttr(
       
   123     const TUint aAttributeKey,
       
   124     CImumInSettingsDataAttribute*& aAttribute ) const
       
   125     {
       
   126     // Try to find the key from the settings key list
       
   127     TInt index = KErrNotFound;
       
   128     TInt error = KErrNone;
       
   129 
       
   130     // Find the item from the list
       
   131     if ( HasItem( aAttributeKey, index ) )
       
   132         {
       
   133         aAttribute = iSettings[index];
       
   134         }
       
   135     else
       
   136         {
       
   137         error = TImumDaErrorCode::ESettingNotFound;
       
   138         }
       
   139 
       
   140     return error;
       
   141     }
       
   142 
       
   143 // ---------------------------------------------------------------------------
       
   144 // CImumInSettingsDataArray::SetAttr()
       
   145 // ---------------------------------------------------------------------------
       
   146 //
       
   147 TInt CImumInSettingsDataArray::SetAttr(
       
   148     CImumInSettingsDataAttribute& aAttribute )
       
   149     {
       
   150     TInt error = KErrNone;
       
   151 
       
   152     // Try to find the key from the settings key list
       
   153     TInt index = KErrNotFound;
       
   154 
       
   155     // Find the item from the list
       
   156     if ( !HasItem( aAttribute.Id(), index ) )
       
   157         {
       
   158         TRAP( error, iSettings.AppendL( &aAttribute ) );
       
   159         }
       
   160     // Key exists, replace the old value with the new one
       
   161     else
       
   162         {
       
   163         delete iSettings[index];
       
   164         iSettings.Remove( index );
       
   165         iSettings.Insert( &aAttribute, index );
       
   166         }
       
   167 
       
   168     return error;
       
   169     }
       
   170 
       
   171 // ---------------------------------------------------------------------------
       
   172 // CImumInSettingsDataArray::ResetAttr()
       
   173 // ---------------------------------------------------------------------------
       
   174 //
       
   175 void CImumInSettingsDataArray::ResetAttr( const TUint aAttributeKey )
       
   176     {
       
   177     CImumInSettingsDataAttribute* attr = NULL;
       
   178     if ( GetAttr( aAttributeKey, attr ) == KErrNone )
       
   179         {
       
   180         attr->Reset();
       
   181         }
       
   182     }
       
   183 
       
   184 // ---------------------------------------------------------------------------
       
   185 // CImumInSettingsDataArray::ResetAll()
       
   186 // ---------------------------------------------------------------------------
       
   187 //
       
   188 void CImumInSettingsDataArray::ResetAll( const RArray<TUint>& /* aExcludeList */ )
       
   189     {
       
   190 	// Start from the last item
       
   191 	TInt settingsCount = iSettings.Count() - 1;
       
   192     for ( TInt setting = settingsCount; setting >= 0; --setting )
       
   193         {
       
   194         iSettings[setting]->Reset();
       
   195         }
       
   196     }
       
   197 
       
   198 // ---------------------------------------------------------------------------
       
   199 // CImumInSettingsDataArray::CloneL()
       
   200 // ---------------------------------------------------------------------------
       
   201 //
       
   202 CImumInSettingsDataArray* CImumInSettingsDataArray::CloneL() const
       
   203     {
       
   204     CImumInSettingsDataArray* clone = NewLC();
       
   205 
       
   206     for ( TInt setting = iSettings.Count(); --setting >= 0; )
       
   207         {
       
   208         clone->iSettings.Append( iSettings[setting]->CloneL() );
       
   209         }
       
   210 
       
   211     CleanupStack::Pop( clone );
       
   212 
       
   213     return clone;
       
   214     }
       
   215 
       
   216 // ---------------------------------------------------------------------------
       
   217 // CImumInSettingsDataArray::Count()
       
   218 // ---------------------------------------------------------------------------
       
   219 //
       
   220 TInt CImumInSettingsDataArray::Count() const
       
   221     {
       
   222     return iSettings.Count();
       
   223     }
       
   224 
       
   225 
       
   226 
       
   227 // End of File