/***************************************************************************
 * tabproperties.h
 *
 * This file is part of KGuitar, a KDE tabulature editor
 *
 * copyright (C) 2006- the KTabEdit development team <mrgwen@gmail.com>
 ***************************************************************************/

/***************************************************************************
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * See the file COPYING for more information.
 ***************************************************************************/

#ifndef TABPROPERTIES_H
#define TABPROPERTIES_H

#include <QObject>
#include <QString>

class SongKey;
class TabLyrics;

class TabProperties
{
public:
	TabProperties();
	virtual ~TabProperties();
	
	virtual void clone(const TabProperties* properties);
	
	virtual void setTitle(const QString& s);
	virtual QString title() const;
	
	virtual void setSubTitle(const QString& s);
	virtual QString subTitle() const;
	
	virtual void setArtist(const QString& s);
	virtual QString artist() const;
	
	virtual void setAlbum(const QString& s);
	virtual QString album() const;
	
	virtual void setAuthor(const QString& s);
	virtual QString author() const;
	
	virtual void setCopyright(const QString& s);
	virtual QString copyright() const;
	
	virtual void setTranscriber(const QString& s);
	virtual QString transcriber() const;
	
	virtual void setInstructions(const QString& s);
	virtual QString instructions() const;
	
	virtual void setComments(const QString& s);
	virtual QString comments() const;
	
	virtual void setShuffle(bool i);
	virtual bool isShuffle() const;
	
	virtual void setTempo(unsigned int i);
	virtual unsigned int tempo() const;
	
	virtual void setOctave(int i);
	virtual int octave() const;
	
	virtual void setSongKey(SongKey* songKey);
	virtual SongKey* songKey() const;
	virtual bool hasSongKey() const;
	
	virtual void setKey(QChar c);
	virtual QChar key() const;
	virtual char asciiCodeOfKey() const;
	virtual QString nameOfKey() const;
	
	virtual void setMinor(bool i);
	virtual bool isMinor() const;
	
	virtual void setTabLyrics(TabLyrics* lyrics);
	virtual TabLyrics* tabLyrics() const;
	virtual bool hasLyrics() const;
	
	virtual void setLyricsTrack(int i);
	virtual int lyricsTrack() const;
	
	virtual void setLyricsMeasure(int i, int j);
	virtual int lyricsMeasure(int i) const;
	
	virtual void setLyrics(int i, const QString& s);
	virtual QString lyrics(int i) const;
	
	virtual bool operator==(const TabProperties& tabProperties) const;
	virtual bool operator!=(const TabProperties& tabProperties) const;
	
private:
	QString titleProp;
	QString subTitleProp;
	QString artistProp;
	QString albumProp;
	QString authorProp;
	QString copyrightProp;
	QString transcriberProp;
	QString instructionsProp;
	QString commentsProp;
	bool shuffle;
	unsigned int tempoProp;
	int octaveProp;
	
	SongKey* mSongKey;
	TabLyrics* mLyrics;
};

#endif
