basiclocationinfodisplay/blid/ui/src/CBlidSettingsLBModel.cpp
branchRCL_3
changeset 18 870918037e16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/basiclocationinfodisplay/blid/ui/src/CBlidSettingsLBModel.cpp	Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,248 @@
+/*
+* Copyright (c) 2005 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 Blid request view listbox model.
+*
+*/
+
+
+// INCLUDE FILES
+#include <StringLoader.h> 
+#include <AknUtils.h>
+#include <blid.rsg>
+#include "CBlidSettingsLBModel.h"
+#include "MBlidSettings.h"
+#include "bliduiconsts.h" 
+#include "Blidutils.h"
+#include "Blid.hrh"
+
+// ================= MEMBER FUNCTIONS =======================
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::NewLC
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CBlidSettingsLBModel* CBlidSettingsLBModel::NewLC( 
+                       MBlidSettings* aSettingsModel )
+    {
+    CBlidSettingsLBModel* self =
+		new (ELeave) CBlidSettingsLBModel( aSettingsModel );
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::CBlidSettingsLBModel
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ----------------------------------------------------------------------------
+//
+CBlidSettingsLBModel::CBlidSettingsLBModel(MBlidSettings* aSettingsModel):
+    iSettingsModel(aSettingsModel)
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::ConstructL
+// Symbian 2nd phase constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CBlidSettingsLBModel::ConstructL()
+    {
+    iLocale = new(ELeave)TLocale();
+
+    iEnv = CEikonEnv::Static();
+    iBuffer = HBufC::NewL( KBlidLBLineMaxLen );
+    
+    iBlidArrivalToneName = HBufC::NewL( 257 );
+    	    
+    iBlidAltitude =  StringLoader::LoadL( R_BLID_ALTITUDE_CALIBRATION, iEnv);
+    iAltitudeFormatM =  iEnv->AllocReadResourceL( R_BLID_METRIC_METER );
+    iAltitudeFormatFt =  iEnv->AllocReadResourceL( 
+                         R_BLID_IMPERIAL_FOOT );
+    iBlidBacklight = iEnv->AllocReadResourceL( 
+		         R_BLID_BACKLIGHT);
+    iBlidBacklightNormal = iEnv->AllocReadResourceL( 
+		         R_BLID_BACKLIGHT_NORMAL);
+    iBlidBacklightOn = iEnv->AllocReadResourceL( 
+		         R_BLID_BACKLIGHT_ON);		         
+    iBlidArrivalTone = iEnv->AllocReadResourceL( 
+		         R_BLID_ARRIVAL_RINGING_TONE );
+    iBlidResetOdom = iEnv->AllocReadResourceL( 
+		         R_BLID_RESET_ODOMETER );
+    iBlidArrivalToneOff = iEnv->AllocReadResourceL( 
+		         R_BLID_ARRIVAL_TONE_OFF );		         		         
+    }
+
+// ---------------------------------------------------------
+// CBlidSettingsLBModel::~CBlidSettingsLBModel
+// ---------------------------------------------------------
+//
+CBlidSettingsLBModel::~CBlidSettingsLBModel()
+    {
+    delete iBlidAltitude;
+    delete iAltitudeFormatM;
+    delete iAltitudeFormatFt;
+    delete iBuffer;
+    delete iLocale;
+    delete iBlidBacklight;
+    delete iBlidBacklightNormal;
+    delete iBlidBacklightOn;
+    delete iBlidArrivalTone;
+    delete iBlidResetOdom;
+    delete iBlidArrivalToneOff;
+    delete iBlidArrivalToneName;
+    }
+
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::MdcaCount
+// ----------------------------------------------------------------------------
+//
+TInt CBlidSettingsLBModel::MdcaCount() const
+    {
+    return 4;
+    }
+
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::MdcaPoint
+// ----------------------------------------------------------------------------
+//
+TPtrC16 CBlidSettingsLBModel::MdcaPoint(TInt aIndex) const
+    {
+    TPtr ptr( iBuffer->Des() );
+    ptr.Zero();
+    switch ( aIndex )
+        {
+        case EBlidSettingsCalibration:
+            {
+            TBuf<KBlidLBItemMaxLen> altitudeString;
+            CalibrationFormat( altitudeString );
+
+            ptr.Append( EKeyTab ); // EKeyTab is same as "\t"
+            ptr.Append( *iBlidAltitude );
+            ptr.Append( EKeyTab );
+            ptr.Append( EKeyTab );            
+            ptr.Append( altitudeString );
+            break;
+            }      
+        case EBlidSettingsBacklight:
+            {
+            TBuf<KBlidLBItemMaxLen> backlightString;
+            BacklightFormat( backlightString );
+
+            ptr.Append( EKeyTab ); // EKeyTab is same as "\t"
+            ptr.Append( *iBlidBacklight );
+            ptr.Append( EKeyTab );
+            ptr.Append( EKeyTab );            
+            ptr.Append( backlightString );
+            break;
+            }
+        case EBlidSettingsArrivalTone:
+            {
+            TBuf<KMaxFileName> arrivalTone;
+            ArrivalToneFormat( arrivalTone );
+
+            ptr.Append( EKeyTab ); // EKeyTab is same as "\t"
+            ptr.Append( *iBlidArrivalTone );
+            ptr.Append( EKeyTab );
+            ptr.Append( EKeyTab );            
+            ptr.Append( arrivalTone );
+            break;
+            }                 
+        case EBlidSettingsResetOdometer:
+            {
+            ptr.Append( EKeyTab ); // EKeyTab is same as "\t"
+            ptr.Append( *iBlidResetOdom );
+            ptr.Append( EKeyTab );
+            break;
+            }                 
+        default:
+            {
+            break;
+            }
+        }
+
+    AknTextUtils::LanguageSpecificNumberConversion( ptr );
+    return iBuffer->Des();
+    }
+
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::CalibrationFormat
+// ----------------------------------------------------------------------------
+//
+void CBlidSettingsLBModel::CalibrationFormat( TDes& aCalibrationString ) const
+    {
+    TInt result(0);    
+    HBufC* formatter = NULL;
+    TInt error( KErrNone );
+    if ( iSettingsModel->UnitOfMeasurement() == EUnitsMetric )
+        {
+        formatter = iAltitudeFormatM;        
+        error = BlidUtils::TRealToTInt( 
+                    iSettingsModel->AltCalibration(), result );
+        }
+    else
+        {        
+        formatter = iAltitudeFormatFt;        
+        TReal calibrationFt((iSettingsModel->AltCalibration()*KMetreToFoot));
+        error = BlidUtils::TRealToTInt( calibrationFt, result );                
+        }
+    if(error!=KErrNone)
+        {
+        iEnv->HandleError( error );
+        result = 0;
+        }
+    StringLoader::Format( aCalibrationString, *formatter, 0, result );
+    }
+
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::BacklightFormat
+// ----------------------------------------------------------------------------
+//
+void CBlidSettingsLBModel::BacklightFormat( TDes& aBacklightString ) const
+    {
+    
+    if ( iSettingsModel->GetBacklightOption() == EBlidBackLightNormal )
+        {
+        aBacklightString = *iBlidBacklightNormal;  
+        }
+    else
+        {        
+        aBacklightString = *iBlidBacklightOn; 
+        }
+    
+    }
+    
+// ----------------------------------------------------------------------------
+// CBlidSettingsLBModel::ArrivalToneFormat
+// ----------------------------------------------------------------------------
+//
+void CBlidSettingsLBModel::ArrivalToneFormat( TDes& aRrivalTone ) const
+    {
+    if( iSettingsModel->GetArrivedToneName().Length() > 0 )
+	    {
+        TParse parseFile;
+        TBuf<KMaxFileName> toneFileName;
+        toneFileName.Copy( iSettingsModel->GetArrivedToneName() );
+        parseFile.Set( toneFileName, NULL, NULL );
+
+	    iBlidArrivalToneName->Des().Copy( parseFile.NameAndExt() );
+	    aRrivalTone = *iBlidArrivalToneName;
+	    }
+    else
+	    {
+	    aRrivalTone = *iBlidArrivalToneOff;    	
+	    }
+    }     
+// End of File