#ifndef KADU_CHAT_STYLES_H
#define KADU_CHAT_STYLES_H

#include <qstring.h>

/**
	Klasa określająca wygląd styli
	wykorzystywanych w oknie rozmowy.
	\class ChatStyle
	\brief Styl okna Chat
**/
class ChatStyle
{
	private:
		QString FormatStringFull; /*!< łańcuch opisujący pełen styl */
		QString FormatStringPure; /*!< łańcuch opisujący styl bez nagłówka */

	public:
		/**
			Konstruktor stylu okna rozmowy
			\fn ChatStyle(const QString& format_string_full,
				const QString& format_string_pure)
			\param format_string_full pełny styl okna
			\param format_string_pure styl bez nagłówka
		**/
		ChatStyle(const QString& format_string_full,
			const QString& format_string_pure);

		/**
			Konstruktor stylu okna rozmowy
			\fn ChatStyle(const QString& format_string_full)
			\param format_string_full pełny styl okna
		**/
		ChatStyle(const QString& format_string_full);

		/**
			\fn const QString& formatStringFull() const
			Zwraca łańcuch dla pełnego stylu
		**/
		const QString& formatStringFull() const;

		/**
			\fn const QString& formatStringPure() const
			Zwraca łańcuch dla stylu bez nagłówka
		**/
		const QString& formatStringPure() const;

		/**
			Destruktor styli w oknie Chat
			\fn ~ChatStyle()
		**/
		virtual ~ChatStyle();
};

/**
	Klasa opisująca wygląd stylu Kadu.
	\class KaduChatStyle
	\brief Styl Kadu dla okna Chat
**/
class KaduChatStyle : public ChatStyle
{
	public:
		/**
			Konstruktor stylu Kadu
			\fn KaduChatStyle()
		**/
		KaduChatStyle();
};

/**
	Klasa opisująca wygląd stylu Hapi.
	\class HapiChatStyle
	\brief Styl Hapi dla okna Chat
**/
class HapiChatStyle : public ChatStyle
{
	public:
		/**
			Konstruktor stylu Hapi
			\fn HapiChatStyle()
		**/
		HapiChatStyle();
};

/**
	Klasa opisująca wygląd stylu Irc.
	\class IrcChatStyle
	\brief Styl Irc dla okna Chat
**/
class IrcChatStyle : public ChatStyle
{
	public:
		/**
			Konstruktor stylu Irc
			\fn IrcChatStyle()
		**/
		IrcChatStyle();
};

/**
	Klasa opisująca wygląd stylu stworzonego
	przez użytkownika.
	\class CustomChatStyle
	\brief Styl Custom dla okna Chat
**/
class CustomChatStyle : public ChatStyle
{
	public:
		/**
			Konstruktor stylu Custom
			\fn CustomChatStyle()
			\param full_style własna składnia stylu
		**/
		CustomChatStyle(const QString& full_style);
};

#endif
