/***************************************************************************
 * trackmodel.h
 *
 * This file is part of KTabEdit, a KDE tabulature editor
 *
 * copyright (C) 2007- 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 TRACKMODEL_H
#define TRACKMODEL_H

#include <QObject>

#include "tabtrack.h"

class TrackModel : public QObject, public TabTrack
{
/*	Q_OBJECT
public:
	TrackModel();
	TrackModel(TrackMode tm, const QString& name, int channel, int bank, uchar patch, char string, char frets);
	TrackModel(const TabTrack& track);
	virtual ~TrackModel();
	
	virtual TabTrack& operator=(const TabTrack& track);
	
	virtual void addBar(TabBar* bar);
	virtual void insertBar(int barNumber, TabBar* bar);
	virtual void insertEmptyBar(const TrackPos& position);
	virtual void insertEmptyBar(int barNumber);
	virtual void setBar(int barNumber, TabBar* bar);
	virtual void deleteBar(int barNumber);
	
	virtual void setTime(const TrackPos& position, TabTimes* tabTime);
	virtual void setTime(int barNumber, uint timeNumber, TabTimes* tabTime);
	virtual void insertTime(const TrackPos& position, TabTimes* tabTime);
	virtual void insertTime(int barNumber, TabTimes* tabTime);
	virtual void deleteTime(int barNumber, uint timeNumber);
	virtual void deleteTime(const TrackPos& position);
	virtual TabTimes* time(const TrackPos& position) const;
	virtual TabTimes* time(int barNumber, uint timeNumber) const;
	virtual void setTimeDuration(const TrackPos& position, Duration duration);
	virtual void setTimeDuration(int barNumber, uint timeNumber, Duration duration);
	virtual Duration timeDuration(const TrackPos& position) const;
	virtual Duration timeDuration(int barNumber, uint timeNumber) const;
	virtual bool isEmptyTime(const TrackPos& position) const;
	virtual bool isEmptyTime(int barNumber, uint timeNumber) const;
	virtual void setRest(int barNumber, uint timeNumber, bool b);
	virtual void setRest(const TrackPos& position, bool b);
	virtual void setDotted(int barNumber, uint timeNumber, bool b);
	virtual void setDotted(const TrackPos& position, bool b);
	
	virtual void setNote(const TrackPos& position, TabNote* tabNote);
	virtual void setNote(int barNumber, uint timeNumber, uint stringNumber, TabNote* tabNote);
	virtual TabNote* note(const TrackPos& position) const;
	virtual TabNote* note(int barNumber, uint timeNumber, uint stringNumber) const;
	virtual void deleteNote(int barNumber, uint timeNumber, uint stringNumber);
	virtual void deleteNote(const TrackPos& position);
	
	virtual void setFret(const TrackPos& position, uint fret);
	virtual void setFret(int barNumber, uint timeNumber, uint stringNumber, uint fret);
	virtual void deleteFret(int barNumber, uint time, uint stringNumber);
	virtual void deleteFret(const TrackPos& position);
	
	virtual void setProperties(TrackProperties* properties);
	virtual void setMode(TrackMode mode);
	virtual void setName(const QString &string);
	virtual void setColor(const QColor& c);
	virtual void setNbStrings(uchar i);
	virtual void setNbFrets(uchar i);
	virtual void setTune(uchar i, uchar j);
	virtual void setCapo(uchar c);
	
	virtual void setMidiProperties(TrackMidiProperties* midiProperties);
	virtual void setPatch(uchar i);
	virtual void setChannel(uchar i);
	virtual void setChannelEffects(uchar i);
	virtual void setMidiPort(int i);
	virtual void setBank(unsigned int i);
	virtual void setVolume(uchar i);
	virtual void setBalance(char i);
	virtual void setChorus(uchar i);
	virtual void setReverb(uchar i);
	virtual void setPhaser(uchar i);
	virtual void setTremolo(uchar i);
	virtual void setTimeSignature(TimeSignature* timeSignature);
	virtual void setNumerator(uchar c);
	virtual void setDenominator(uchar c);
	
signals:
	void trackChanged();
	
	void barAdded(uint bar);
	void barDeleted(uint bar);
	void barChanged(uint bar);
	
	void timeChanged(const TrackPos&);
	*/
};

#endif
