/*
* Copyright (c) 2007-2010 Sebastian Brannstrom, Lars Persson, EmbedDev AB
*
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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:
* EmbedDev AB - initial contribution.
*
* Contributors:
*
* Description:
*
*/
#ifndef SHOWINFO_H_
#define SHOWINFO_H_
#include <e32base.h>
#include <e32cmn.h>
#include <e32std.h>
#include <f32file.h>
#include <s32strm.h>
const int KShowInfoVersion = 8;
enum TPlayState {
	ENeverPlayed,
	EPlayed,
	EPlaying
};
enum TDownloadState {
	ENotDownloaded,
	EQueued,
	EDownloading,
	EFailedDownload,
	EDownloaded
};
enum TShowType {
	EAudioPodcast = 0,
	EVideoPodcast,
	EOtherPodcast
};
class CShowInfo: public CBase {
public:
	IMPORT_C static CShowInfo* NewL(TUint aVersion=KShowInfoVersion);
	IMPORT_C static CShowInfo* NewLC(TUint aVersion=KShowInfoVersion);
	~CShowInfo();
	IMPORT_C CShowInfo(CShowInfo *aInfo); // copy constructor
public:
	IMPORT_C const TDesC& Title() const;
	IMPORT_C void SetTitleL(const TDesC& aTitle);
	IMPORT_C const TDesC& Url() const;
	IMPORT_C void SetUrlL(const TDesC &aUrl);
	
	IMPORT_C const TDesC& Description() const;
	IMPORT_C void SetDescriptionL(const TDesC &aDescription);
		
	IMPORT_C TTimeIntervalMicroSeconds Position() const;
	IMPORT_C void SetPosition(TTimeIntervalMicroSeconds aPosition);
	IMPORT_C TUint PlayTime() const;
	IMPORT_C void SetPlayTime(TUint aPlayTime);
	IMPORT_C TPlayState PlayState() const;
	IMPORT_C void SetPlayState(TPlayState aPlayState);
	IMPORT_C TDownloadState DownloadState() const;
	IMPORT_C void SetDownloadState(TDownloadState aDownloadState);
	IMPORT_C TUint FeedUid() const;
	IMPORT_C void SetFeedUid(TUint aFeedUid);
	IMPORT_C void SetUid(TUint aUid);
	IMPORT_C TUint Uid() const;
	
	IMPORT_C TUint ShowSize() const;
	IMPORT_C void SetShowSize(TUint aShowSize);
	
	IMPORT_C const TTime PubDate() const;
	IMPORT_C void SetPubDate(TTime aPubDate);
	
	IMPORT_C const TDesC &FileName() const;
	IMPORT_C void SetFileNameL(const TDesC &aFileName);
	
	IMPORT_C void SetShowType(TShowType aShowType);
	IMPORT_C TShowType ShowType() const;
	IMPORT_C void SetTrackNo(TUint aTrackNo);
	IMPORT_C TUint TrackNo() const;
	
	IMPORT_C void SetLastError(TInt aLastError);
	IMPORT_C TInt LastError() const;
private:
	CShowInfo();
	void ConstructL();
private:
	HBufC* iTitle;
	HBufC* iUrl;
	HBufC* iDescription;
	HBufC* iFileName;
	TTimeIntervalMicroSeconds iPosition;
	TUint   iPlayTime;
	TPlayState iPlayState;
	TDownloadState iDownloadState;
	TUint iFeedUid;
	TUint iUid;
	TUint iShowSize;
	TUint iTrackNo;
	TTime iPubDate;
	TBool iDelete;
	TShowType iShowType;
	TInt  iLastError;
};
typedef RPointerArray<CShowInfo> RShowInfoArray;
#endif