simpsyconfigurator/src/simpsyuilbmodel.cpp
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/simpsyconfigurator/src/simpsyuilbmodel.cpp	Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,163 @@
+/*
+* Copyright (c) 2005-2006 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 SimPsyUi listbox model that holds the
+*				          currently selected NMEA File.
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32keys.h>
+#include <f32file.h>
+#include <StringLoader.h> // StringLoader
+#include <centralrepository.h>
+#include <simpsyui.rsg>
+#include "SimulationPSYInternalCRKeys.h"
+
+#include "simpsyuilbmodel.h"
+
+const TInt	KTabWidth = 1;
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::NewL()
+// Static Constuctor that completes the Symbian two-phase 
+// construction. 
+// ---------------------------------------------------------
+CSimPsyUiLBModel* CSimPsyUiLBModel::NewL()
+    {
+    CSimPsyUiLBModel* lbmodel = NewLC();
+    CleanupStack::Pop( lbmodel );
+    return lbmodel;
+    }
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::NewLC()
+// Static Constuctor that completes the Symbian two-phase 
+// construction. It places the created object on the 
+// Clean-up stack
+// ---------------------------------------------------------
+CSimPsyUiLBModel* CSimPsyUiLBModel::NewLC()
+    {
+    CSimPsyUiLBModel* lbmodel = new (ELeave) CSimPsyUiLBModel();
+    CleanupStack::PushL( lbmodel );
+    lbmodel->ConstructL();
+    return lbmodel;
+    }
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::CSimPsyUiLBModel()
+// C++ Default Constructor
+// ---------------------------------------------------------
+CSimPsyUiLBModel::CSimPsyUiLBModel()
+    {
+    }
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::ConstructL()
+// Symbian two phased constructor
+// ---------------------------------------------------------
+void CSimPsyUiLBModel::ConstructL()
+    {
+    iFileNameText = StringLoader::LoadL( R_SIMPSYUI_FILENAME_TEXT );
+    TInt lLength = iFileNameText->Length();
+    
+    /* The length of the buffer is the length needed for 
+     * the File name text, tab keys and the maximum file
+     * name length
+     */
+    iBuffer = HBufC::NewL(KMaxFileName + KTabWidth + KTabWidth + lLength ); 
+    
+    }
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::~CSimPsyUiLBModel()
+// C++ Destructor
+// ---------------------------------------------------------
+CSimPsyUiLBModel::~CSimPsyUiLBModel()
+    {
+    delete iBuffer;
+    iBuffer = NULL;
+    
+    delete iFileNameText;
+    iFileNameText = NULL;
+    }
+    
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::MdcaCount()
+// Returns the number of descriptor elements in a descriptor array.
+
+// @return The number of descriptor elements in a descriptor array.
+// ---------------------------------------------------------
+TInt CSimPsyUiLBModel::MdcaCount() const
+    {
+    return 1;
+    }
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::MdcaPoint()
+// Indexes into a descriptor array.
+//
+// @param aIndex The position of the descriptor element within
+// 				 a descriptor array. The position is relative 
+//				 to zero; i.e. zero implies the first descriptor
+//				 element in a descriptor array. 
+//	@return 	 A 16 bit non-modifiable pointer descriptor 
+//				 representing the descriptor element located at 
+//				 position aIndex within a descriptor array. 
+// ---------------------------------------------------------
+TPtrC16 CSimPsyUiLBModel::MdcaPoint( TInt aIndex ) const
+    {
+    	TRAP_IGNORE(MdcaPointL(aIndex));
+    	return *iBuffer;
+    }
+
+// ---------------------------------------------------------
+// CSimPsyUiLBModel::MdcaPointL()
+// Indexes into a descriptor array.
+//
+// @param aIndex The position of the descriptor element within
+// 				 a descriptor array. The position is relative 
+//				 to zero; i.e. zero implies the first descriptor
+//				 element in a descriptor array. 
+//	@return 	 A 16 bit non-modifiable pointer descriptor 
+//				 representing the descriptor element located at 
+//				 position aIndex within a descriptor array. 
+// ---------------------------------------------------------
+TPtrC16 CSimPsyUiLBModel::MdcaPointL( TInt /*aIndex*/ ) const
+{
+	TPtr ptr( iBuffer->Des() );
+    ptr.Zero();
+    ptr.Append( EKeyTab );
+    
+    ptr.Append( iFileNameText->Des() );
+
+    ptr.Append( EKeyTab );
+    
+    TBuf<KMaxFileName> nmeaFileName;
+	TParse FileParser;
+	/* The cenrep contains the filename with full path.
+	 * Hence only the filename is extracted and displayed in the Edwin
+	 */
+	CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	repository->Get(KCRKeySimPSYSimulationFile, nmeaFileName);
+	FileParser.Set(nmeaFileName,NULL,NULL);
+	nmeaFileName.Copy(FileParser.NameAndExt());
+	CleanupStack::PopAndDestroy(repository);
+	
+    ptr.Append(nmeaFileName);
+ 
+    return *iBuffer;	
+}
+