/***************************************************************************
 * optionsmusictheory.h: implementation of OptionsMusicTheory 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 OPTIONSMUSICTHEORY_H
#define OPTIONSMUSICTHEORY_H

#include <KConfig>
#include <QWidget>
#include <QVBoxLayout>
#include <QRadioButton>

#include "optionspage.h"

/**
	The OptionsMusic class. This class creates a widget inside this widget
	the user can configure the music theory options.
*/
class OptionsMusicTheory: public OptionsPage {
	Q_OBJECT
public:
	/**
		Construct the music theory widget.
		The constructor creates the widget and inits the parent (optionPage). Here are
		the music theory options :
			kind of notations, dom 7th, alterations, note naming.
		@param config config is used to read and write the KTabEdit config file.
		@param parent the widget parent
		@param name the widget name
	*/
	OptionsMusicTheory(KConfig* config, QWidget* parent);
	
	/**
		Called when the user click on the Apply button.
		The music theory configuration is written on the KTabEdit config file.
	*/
	virtual void applyBtnClicked();
	
	/**
		Called when the user click on the Default button.
		It does nothing.
	*/
	virtual void defaultBtnClicked();
	
private slots:
	bool jazzWarning();

private:
	QVBoxLayout* mMaj7Group;
	QVBoxLayout* mFlatGroup;
	QVBoxLayout* mNoteNameGroup;
	
	QRadioButton* mMaj7[3];
	QRadioButton* mFlat[2];
	QRadioButton* mNoteName[9];
};

#endif
