locationcentre/lcserver/src/lcregappinfo.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:16:03 +0200
changeset 0 522cd55cc3d7
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2007 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:  Registration information for a Location based Application.
*
*/



// SYSTEM INCLUDES
#include <bautils.h>
#include <f32file.h>

// USER INCLUDES
#include "lcregappinfo.h"
#include "lcregappnamelangid.h"
// CONST DEFINATION


// CLASS DEFINATION
/**
 *  Maximum length of a service name can be
 */
const TInt KAppNameMaxLength = 50;

// ----- Member funtions for CLcRegAppInfo ---------------------------------

// ---------------------------------------------------------------------------
// CLcRegAppInfo::CLcRegAppInfo
// ---------------------------------------------------------------------------
//
CLcRegAppInfo::CLcRegAppInfo( )
    {
    // C++ Default constructor. No allocations or functions which can Leave
    // should be called from here.Initiallize all the variable here
    iFilePresenceStatus = ETrue;
    }
         
// ---------------------------------------------------------------------------
// CLcRegAppInfo::~CLcRegAppInfo
// ---------------------------------------------------------------------------
//
CLcRegAppInfo::~CLcRegAppInfo()
    {
    // C++ Destructor. Free all resources associated with this class.
    iAppNameArray.ResetAndDestroy();
    iAppNameArray.Close();
    iAppLangArray.Reset();
    iAppLangArray.Close();
    iFileName.Delete( 0,iFileName.Length() );
    }
        
// ---------------------------------------------------------------------------
// CLcRegAppInfo* CLcRegAppInfo::NewL
// ---------------------------------------------------------------------------
//
CLcRegAppInfo* CLcRegAppInfo::NewL()
    {
    CLcRegAppInfo* self = new ( ELeave )CLcRegAppInfo();
    return self;         
    }

// ---------------------------------------------------------------------------
// void CLcRegAppInfo::SetAppNameL
// ---------------------------------------------------------------------------
//
void CLcRegAppInfo::SetAppNameL( const TDesC& aName )
	{
	HBufC* nameBuf = NULL;
	if( aName.Length() > KAppNameMaxLength )
	    {
	    nameBuf = HBufC::NewL( KAppNameMaxLength );	
	    nameBuf->Des().Copy( aName.Left( KAppNameMaxLength ));    
	    }
	else
	    {
	    nameBuf = HBufC::NewL( aName.Length() );
	    nameBuf->Des().Copy( aName );
	    }
    User::LeaveIfError( iAppNameArray.Append( nameBuf ) );	
	}

// ---------------------------------------------------------------------------
// TInt CLcRegAppInfo::SetNameLanguage
// ---------------------------------------------------------------------------
//
TInt CLcRegAppInfo::SetNameLanguage( const TDesC& aNameLang )
	{
	for (TInt i=0; i< NUMLANGOPTIONS; i++)
		{
		if ( !KLangOptions[i].iName.Compare( aNameLang ) )
			{
			return iAppLangArray.Append( ( TUint32 )KLangOptions[i].iNumber );
			}
		}
	return KErrNotFound;		
	}

// ---------------------------------------------------------------------------
// void CLcRegAppInfo::SetAppLangSpecificNameL
// ---------------------------------------------------------------------------
//
void CLcRegAppInfo::SetAppLangSpecificNameL( RFs& aFs )
	{
	TLanguage langcode = User::Language(); //current language
	TInt index = iAppLangArray.Find( ( TUint32 )langcode ); 
	if( index != KErrNotFound )
		{
		if( index < iAppNameArray.Count() )
			{
			SetNameL( *iAppNameArray[index] );	
			}
		}
	else
		{
		RArray<TLanguage> langs;
		CleanupClosePushL( langs );
	   	BaflUtils::GetDowngradePathL( aFs,langcode,langs );
	    for(TInt i = 0; i < iAppLangArray.Count(); ++i)
	    	{
	    	index = langs.Find( ( TLanguage )iAppLangArray[i] );
			if( index != KErrNotFound )
				{
				break;					
				}
			}
		if( index == KErrNotFound )			
			{
			index = langs.Count() - 1;	
			}
		if( index >= 0 && index < iAppNameArray.Count()  )
			{
			SetNameL( *iAppNameArray[index] );	
			}
		CleanupStack::PopAndDestroy( &langs );
		}
    iAppNameArray.ResetAndDestroy();
    iAppNameArray.Close();
    iAppLangArray.Reset();
    iAppLangArray.Close();
	}

// ---------------------------------------------------------------------------
// void CLcRegAppInfo::SetFileNameL
// ---------------------------------------------------------------------------
//
void CLcRegAppInfo::SetFileNameL( const TDesC& aFile )
	{
	if( aFile.Length() <= KMaxFileName )
		{
		iFileName.Copy( aFile );		
		}
	else
		{
		User::Leave( KErrBadName );	
		}		
	}	
	
// ---------------------------------------------------------------------------
// TFileName CLcRegAppInfo::FileName
// ---------------------------------------------------------------------------
//
TFileName CLcRegAppInfo::FileName()
	{
	return iFileName;	
	}	

// ---------------------------------------------------------------------------
// void CLcRegAppInfo::IsAppPresent
// ---------------------------------------------------------------------------
//
TBool CLcRegAppInfo::IsAppPresent( )
	{
	return iFilePresenceStatus;	
	}	
	
// ---------------------------------------------------------------------------
// void CLcRegAppInfo::SetFilePresenceStatus
// ---------------------------------------------------------------------------
//
void CLcRegAppInfo::SetFilePresenceStatus( TBool aPresenceStatus )
	{
	iFilePresenceStatus = aPresenceStatus;	
	}	
	
// ---------------------------------------------------------------------------
// void CLcRegAppInfo::SetMmcId
// ---------------------------------------------------------------------------
//
void CLcRegAppInfo::SetMmcId( TUint aUid )
	{
	iMmcId = aUid;	
	}	
	
// ---------------------------------------------------------------------------
// TFileName CLcRegAppInfo::MmcId
// ---------------------------------------------------------------------------
//
TUint CLcRegAppInfo::MmcId()
	{
	return iMmcId;	
	}	

// ---------------------------------------------------------------------------
// void CLcRegAppInfo::SetArrayIndex
// ---------------------------------------------------------------------------
//
void CLcRegAppInfo::SetArrayIndex( TInt aIndex )
	{
	iIndex = aIndex;	
	}	
	
// ---------------------------------------------------------------------------
// TFileName CLcRegAppInfo::Index
// ---------------------------------------------------------------------------
//
TInt CLcRegAppInfo::Index()
	{
	return iIndex;	
	}	

// ---------------------------------------------------------------------------
// TBool CLcRegAppInfo::IsAppNamePresent
// ---------------------------------------------------------------------------
//
TBool CLcRegAppInfo::IsAppNamePresent()	
    {
    if( iAppNameArray.Count() == 0 &&
        iAppLangArray.Count() == 0 )
        {
        return EFalse;
        }
    return ETrue;        
    }
//End of file