basiclocationinfodisplay/blid/ui/src/CBlidSettingsLBModel.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:27 +0100
branchRCL_3
changeset 18 870918037e16
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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