#ifndef HINT_H
#define HINT_H

#include <qobject.h>
#include <qwidget.h>
#include <qlabel.h>
#include <qcolor.h>
#include <qfont.h>
#include <qevent.h>
#include <qstring.h>
#include <qpixmap.h>
#include <qlayout.h>

#include "gadu.h"

class Hint : public QHBoxLayout
{
	Q_OBJECT

	private:
		QLabel *icon;
		QLabel *label;
		QColor bcolor; //kolor tła
		unsigned int secs;
		unsigned int ident; //identyfikator
		UserListElements users;
		void enter();//rozjaśnia dymek (tło)
		void leave();//ustawia domyślny kolor tła

	public:
		Hint(QWidget *parent, const QString &text, const QPixmap &pixmap, unsigned int timeout);
		~Hint();
		/**
			zwraca listę uinów dotyczących tego dymka
		**/
		UserListElements getUsers() const { return users; }

		/**
			zwraca identyfikator dymka
		**/
		unsigned int id() const {return ident;}

		void getData(QString &text, QPixmap &pixmap, unsigned int &timeout, QFont &font, QColor &fgcolor, QColor &bgcolor);

	protected:
		/**
			przy najechaniu myszką uruchamia enter(), przy opuszczeniu myszką dymka uruchamia leave()
			przy naciśnięciu któregoś przycisku myszy, emituje odpowiedni sygnał *ButtonClicked(uint)
		**/
		bool eventFilter(QObject *obj, QEvent *ev);

	public slots:
		/**
			minęła sekunda, zmniejsza licznik pozostałych sekund,
			zwraca true jeżeli jeszcze pozostał czas
			false, gdy czas się skończył
		**/
		bool nextSecond();
		/**
			gdy show==true pokazuje dymek
		**/
		void setShown(bool show);
		/**
			ustawia parametry dymka
			font - czcionka
			fgcolor - kolor czcionki
			bgcolor - kolor tła
			id - identyfikator dymka
			show - czy pokazać (teraz)
		**/
		void set(const QFont &font, const QColor &fgcolor, const QColor &bgcolor, unsigned int id, bool show = true);
		/**
			ustawia identyfikator
		**/
		void setId(unsigned int id) {ident = id;}
		/**
			ustawia listę uinów dotyczących tego dymka
		**/
		void setUsers(const UserListElements &i) { users = i; };

	signals:
		void leftButtonClicked(unsigned int id);
		void rightButtonClicked(unsigned int id);
		void midButtonClicked(unsigned int id);
};

#endif
