#ifndef OPTIONS_H
#define OPTIONS_H

#include <QStringList>

/*! \brief A single option which is listed in Options */
class Option
{
public:
	/*! Types of options */
	enum Type  {
		Switch,	//!< No paramater
		String	//!< Parameter is a string
	};

	Option();
	Option(const QString &, const Type &, const QString &, const QString &);
	void set (const QString &, const Type &, const QString &, const QString &);
	QString getName();
	QString getShort();
	QString getLong();
	Type getType();
	void setArg(const QString &);
	QString getArg();
	void setActive();
	bool isActive();
private:
	QString name;
	Type type;
	QString sName;
	QString lName;
	QString sarg;
	bool active;
};


/*! \brief Simple class to deal with command line options */

class Options
{
public:
	Options();
	int parse();
	void add (Option );
	void add (const QString &,const Option::Type &, const QString &, const QString&);
	void setHelpText(const QString&);
	QString getHelpText();
	QString getProgramName();
	QStringList getFileList();
	bool isOn (const QString &);
	QString getArg (const QString &);

private:
	QString progname;
	QString helptext;
	QStringList filelist;
    QList <Option> optlist;
};

#endif
