idlefw/tsrc/devicestatusplugin/stub/src/stubdataholder.cpp
branchRCL_3
changeset 111 053c6c7c14f3
equal deleted inserted replaced
110:2c7f27287390 111:053c6c7c14f3
       
     1 /*
       
     2 * Copyright (c)  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:  ?Description
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "stubdataholder.h"
       
    20 
       
    21 
       
    22 CProfileName::~CProfileName()
       
    23     {
       
    24     delete iName;
       
    25     }
       
    26 
       
    27 
       
    28 TInt CProfileName::Id() const
       
    29     {
       
    30     return iId;
       
    31     }
       
    32 
       
    33 
       
    34 const TDesC& CProfileName::Name() const
       
    35     {
       
    36     if( iName )
       
    37         {
       
    38         return *iName;
       
    39         }
       
    40     return KNullDesC;
       
    41     }
       
    42 
       
    43 const TDesC& CProfileName::NaviName() const
       
    44     {
       
    45     if( iNaviName )
       
    46         {
       
    47         return *iNaviName;
       
    48         }
       
    49     return KNullDesC;
       
    50     }
       
    51 
       
    52 const TDesC& CProfileName::TitleName() const
       
    53     {
       
    54     if( iTitleName )
       
    55         {
       
    56         return *iTitleName;
       
    57         }
       
    58     return KNullDesC;
       
    59     }
       
    60 
       
    61 
       
    62 void CProfileName::SetL( const TDesC& aName, TInt aId )
       
    63     {
       
    64     delete iName;
       
    65     iName = NULL;
       
    66     iName = aName.AllocL();
       
    67     iId = aId;
       
    68     }
       
    69 
       
    70 
       
    71 const TDesC& CProfileName::ShortName() const
       
    72 	{
       
    73     if( iName )
       
    74         {
       
    75         return *iName;
       
    76         }
       
    77     return KNullDesC;
       
    78 	}
       
    79 
       
    80 
       
    81 // ======== MEMBER FUNCTIONS ========
       
    82 
       
    83 // ---------------------------------------------------------------------------
       
    84 // ?description_if_needed
       
    85 // ---------------------------------------------------------------------------
       
    86 //
       
    87 CStubDataHolder::CStubDataHolder()
       
    88     {
       
    89     }
       
    90 
       
    91 
       
    92 // ---------------------------------------------------------------------------
       
    93 // ?description_if_needed
       
    94 // ---------------------------------------------------------------------------
       
    95 //
       
    96 void CStubDataHolder::ConstructL()
       
    97     {
       
    98     iProfile = new( ELeave ) CProfileName;
       
    99 
       
   100     User::LeaveIfError( Dll::SetTls( this ) );
       
   101     }
       
   102 
       
   103 
       
   104 // ---------------------------------------------------------------------------
       
   105 // ?description_if_needed
       
   106 // ---------------------------------------------------------------------------
       
   107 //
       
   108 EXPORT_C CStubDataHolder* CStubDataHolder::InstanceL()
       
   109     {
       
   110     CStubDataHolder* ptr = static_cast<CStubDataHolder*>( Dll::Tls() );
       
   111 
       
   112     if( ptr )
       
   113         {
       
   114         return ptr;
       
   115         }
       
   116 
       
   117     CStubDataHolder* self = new( ELeave ) CStubDataHolder;
       
   118     CleanupStack::PushL( self );
       
   119     self->ConstructL();
       
   120     CleanupStack::Pop( self );
       
   121     return self;
       
   122     }
       
   123 
       
   124 
       
   125 EXPORT_C CStubDataHolder* CStubDataHolder::Instance()
       
   126     {
       
   127     CStubDataHolder* ptr = static_cast<CStubDataHolder*>( Dll::Tls() );
       
   128 
       
   129     if( !ptr )
       
   130         {
       
   131         User::Panic( _L("StubDataHolder"), 1 );
       
   132         }
       
   133 
       
   134     return ptr;
       
   135     }
       
   136 
       
   137 
       
   138 EXPORT_C void CStubDataHolder::Release()
       
   139     {
       
   140     CStubDataHolder* ptr = static_cast<CStubDataHolder*>( Dll::Tls() );
       
   141 
       
   142     if( ptr )
       
   143         {
       
   144         delete ptr;
       
   145         }
       
   146     }
       
   147 
       
   148 
       
   149 // ---------------------------------------------------------------------------
       
   150 // ?description_if_needed
       
   151 // ---------------------------------------------------------------------------
       
   152 //
       
   153 
       
   154 // ---------------------------------------------------------------------------
       
   155 // ?description_if_needed
       
   156 // ---------------------------------------------------------------------------
       
   157 //
       
   158 CStubDataHolder::~CStubDataHolder()
       
   159     {
       
   160     iSSSettingValues.Reset();
       
   161     iSSSettingsObservers.Reset();
       
   162     iProfileChangeObservers.Reset();
       
   163     delete iProfile;
       
   164     Dll::SetTls( NULL );
       
   165     }
       
   166 
       
   167 
       
   168 // ---------------------------------------------------------------------------
       
   169 // ?implementation_description
       
   170 // ---------------------------------------------------------------------------
       
   171 //
       
   172 EXPORT_C void CStubDataHolder::AddProfileChangeObserverL( MProfileChangeObserver& aObserver, CBase* aOwner )
       
   173     {
       
   174     TProfileObserver obs;
       
   175     obs.iOwner = aOwner;
       
   176     obs.iObserver = &aObserver;
       
   177     User::LeaveIfError( iProfileChangeObservers.Append( obs ) );
       
   178     }
       
   179 
       
   180 
       
   181 EXPORT_C void CStubDataHolder::RemoveProfileChangeObserver( CBase* aOwner )
       
   182     {
       
   183     const TInt count = iProfileChangeObservers.Count();
       
   184     
       
   185     for( TInt i( 0 ); i < count; i++ )
       
   186         {
       
   187         if( iProfileChangeObservers[i].iOwner == aOwner )        
       
   188             {
       
   189             iProfileChangeObservers.Remove( i );
       
   190             break;
       
   191             }
       
   192         }
       
   193     }
       
   194 
       
   195 
       
   196 EXPORT_C RArray<TProfileObserver>& CStubDataHolder::ProfileChangeObservers()
       
   197     {
       
   198     return iProfileChangeObservers;
       
   199     }
       
   200 
       
   201 
       
   202 EXPORT_C void CStubDataHolder::SetCurrentProfileL( const TDesC& aName, TInt aId )
       
   203     {
       
   204     iProfile->SetL( aName, aId );
       
   205     }
       
   206 
       
   207 
       
   208 EXPORT_C MProfileName* CStubDataHolder::CurrentProfile()
       
   209     {
       
   210     return iProfile;
       
   211     }
       
   212 
       
   213 
       
   214 EXPORT_C void CStubDataHolder::SetNWMessageObserver( MNWMessageObserver& aObserver, TNWInfo& aInfo )
       
   215     {
       
   216     iNWObserver = &aObserver;
       
   217     iNWInfo = &aInfo;
       
   218     }
       
   219 
       
   220 
       
   221 EXPORT_C MNWMessageObserver* CStubDataHolder::NWMessageObserver()
       
   222     {
       
   223     return iNWObserver;
       
   224     }
       
   225 
       
   226 
       
   227 EXPORT_C TNWInfo* CStubDataHolder::NWInfo()
       
   228     {
       
   229     return iNWInfo;
       
   230     }
       
   231 
       
   232 // ---------------------------------------------------------------------------
       
   233 // From class ?base_class.
       
   234 // ?implementation_description
       
   235 // ---------------------------------------------------------------------------
       
   236 //
       
   237 void CStubDataHolder::AddSSSettingsObserverL( MSSSettingsObserver& aObserver )
       
   238     {
       
   239     User::LeaveIfError( iSSSettingsObservers.Append( &aObserver ) );    
       
   240     };
       
   241 
       
   242 
       
   243 TInt CStubDataHolder::GetSSSettingsValueL( TSSSettingsSetting aSetting )
       
   244     {
       
   245     const TInt count = iSSSettingValues.Count();
       
   246     
       
   247     for( TInt i( 0 ); i < count; i++ )    
       
   248         {
       
   249         if( iSSSettingValues[i].iSetting == aSetting )
       
   250             {
       
   251             return iSSSettingValues[i].iValue;
       
   252             }
       
   253         }
       
   254         
       
   255     User::Leave( KErrNotFound );
       
   256     return KErrNotFound;
       
   257     }
       
   258     
       
   259 
       
   260 void CStubDataHolder::RemoveSSSettingsObserver( MSSSettingsObserver& aObserver )
       
   261     {
       
   262     const TInt count = iSSSettingsObservers.Count();
       
   263     
       
   264     for( TInt i( 0 ); i < count; i++ )
       
   265         {
       
   266         if( iSSSettingsObservers[i] == &aObserver )
       
   267             {
       
   268             iSSSettingsObservers.Remove( i );
       
   269             break;
       
   270             }
       
   271         }
       
   272     }
       
   273     
       
   274 
       
   275 EXPORT_C RArray<MSSSettingsObserver*>& CStubDataHolder::SSSettingsObservers()
       
   276     {
       
   277     return iSSSettingsObservers;    
       
   278     }
       
   279 
       
   280 
       
   281 EXPORT_C void CStubDataHolder::SetSSSettingsValueL( TSSSettingsSetting aSetting, TInt aValue )
       
   282     {
       
   283     TSSSettingsValue ss;
       
   284     ss.iSetting = aSetting;
       
   285     ss.iValue = aValue;
       
   286     User::LeaveIfError( iSSSettingValues.Append( ss ) );
       
   287     }
       
   288 
       
   289 
       
   290 EXPORT_C void CStubDataHolder::RemoveSSSetting( TSSSettingsSetting aSetting )
       
   291     {
       
   292     const TInt count = iSSSettingValues.Count();
       
   293     
       
   294     for( TInt i( count - 1 ); i >= 0; i-- )    
       
   295         {
       
   296         if( iSSSettingValues[i].iSetting == aSetting )
       
   297             {
       
   298             iSSSettingValues.Remove( i );
       
   299             }
       
   300         }
       
   301     }