lowlevellibsandfws/apputils/src/inc/BaSsndStore.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 02:56:42 +0300
changeset 68 ff3fc7722556
parent 0 e4d67989cc36
permissions -rw-r--r--
Revision: 201039 Kit: 201039

// Copyright (c) 2006-2009 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:
//

/**
 @file
 @internalTechnology
*/

#ifndef __BASSNDSTORE_H__
#define __BASSNDSTORE_H__

#include <bassnd.h>
#include <centralrepository.h>


/**
This class encapsulates storing and retrieving sound data
to and from persistent storage.
*/
NONSHARABLE_CLASS(CBaSsndStore) : public CBase
	{
public:
	static CBaSsndStore* NewL();
	~CBaSsndStore();

	TInt GetSound(const TBaSystemSoundType& aSoundType,
				  TBaSystemSoundInfo& aInfo) const;
	TInt GetSoundCategory(const TBaSystemSoundUid& aSSUid,
						  CArrayFixFlat<TBaSystemSoundInfo>& aArray) const;
	void SetSoundL(const TBaSystemSoundInfo& aInfo) const;

protected:
	// These are protected to facilitate testing concurrent SetSound
	CBaSsndStore();
	void ConstructL();

	virtual void KeyOfSoundTypeL(TBaSystemSoundType& aSoundType, TUint32& aKey) const;
	virtual void SetSoundInTransactionL(TBaSystemSoundType& aSoundType,
										const TDesC8& aDes8) const;

private:
	void GetSoundL(const TBaSystemSoundType& aSoundType,
				   TBaSystemSoundInfo& aInfo) const;
	void GetSoundCategoryL(const TBaSystemSoundUid& aSSUid,
						  CArrayFixFlat<TBaSystemSoundInfo>& aArray) const;
	void FindKeyL(const TBaSystemSoundType& aSoundType,
				  TUint32& aKey,
				  TBool aNoLeaveIfNotFound) const;
	void FindKeyL(const TBaSystemSoundUid& aSSUid, RArray<TUint32>& aKeys) const;
	void FindNextEmptySlotL(TUint32& aKey) const;

protected:
	CRepository*	iRepository;
	};
#endif