/***************************************************************************
 * settrack.h: implementation of SetTrack class
 *
 * This file is part of KTabEdit, a KDE tabulature editor
 *
 * copyright (C) 2003-2006 the KTabEdit development team <mrgwen@gmail.com>
 * copyright (C) 2002-2003 the KGuitar 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 SETTRACK_H
#define SETTRACK_H

#include "ui_trackproperties.h"

#include "global.h"
#include "tablature/trackmode.h"

class SetTab;
class SetTabFret;
class SetTabDrum;
class SetTabMidi;
class TabTrack;
class TabSongModel;
class TrackProperties;

class SetTrack : public QDialog, public Ui::TrackPropertiesDialog
{
    Q_OBJECT
public:
	SetTrack(const TrackProperties* trackProperties, const TabSongModel* tabSong);
	
	virtual void fillFret();
	virtual void fillDrum();
	virtual void fillTrackMode(TrackMode mode);
	virtual void fill();
	
	virtual void showFret();
	virtual void showDrum();
public slots:
	virtual void selectTrackMode(int sel);
	
public:
	virtual QString title() const;
	virtual uint channel() const;
	virtual uint bank() const;
	virtual uint patch() const;
	virtual TrackMode mode() const;
	
	virtual uint volume() const;
	virtual uint balance() const;
	virtual uint chorus() const;
	virtual uint reverb() const;
	
	virtual uint strings() const;
	virtual uint frets() const;
	
	virtual uint tune(uchar i) const;
	
private:
	const TrackProperties* mTrackProperties;
	const TabSongModel* mTabSong;
	
	SetTabFret* mSetTabFret;
	SetTabDrum* mSetTabDrum;
	
	bool mFretVisible;
};

#endif
