#ifndef KADU_CHAT_WINDOW_H
#define KADU_CHAT_WINDOW_H

#include <qmainwindow.h>
#include <qstring.h>

#include "chat_widget.h"
#include "configuration_aware_object.h"

class ChatWindow : public QMainWindow, public ChatContainer, ConfigurationAwareObject 
{
	Q_OBJECT

private:
	ChatWidget* currentChatWidget;
	QTimer* title_timer;  /*!< zmienna przechowująca czas od ostatniego odświeżenia tytułu okna */

	void storeGeometry();
	void restoreGeometry();

	bool activateWithNewMessages; /*!< czy aktywujemy okno po przyjściu nowej wiadomości */
	bool showNewMessagesNum; /*!< czy pokazujemy liczbę nowych wiadomości w tytule nieaktywnego okna */
	bool blinkChatTitle; /*!< czy tytuł nieaktywnego okna z nieprzeczytanymi wiadomościami powinien mrugać */

private slots:
	void updateTitle();

protected:
	/**
		\fn virtual void closeEvent(QCloseEvent* e)
		Funkcja obsługująca zamknięcie okna
	**/
	virtual void closeEvent(QCloseEvent* e);

	/**
		\fn virtual void windowActivationChange(bool oldActive)
		Funkcja sterująca mruganiem napisu okna
	**/
	virtual void windowActivationChange(bool oldActive);

	virtual void configurationUpdated();

public:
	ChatWindow(QWidget *parent = 0, const char *name = 0);
	virtual ~ChatWindow();

	void setChatWidget(ChatWidget *chatWidget);
	ChatWidget* chatWidget();

	void closeChatWidget(ChatWidget *chatWidget);

public slots:
	// TODO: rename
	void blinkTitle();
	void showNewMessagesNumInTitle();

	/**
		\fn void alertNewMessage()
		Slot informujący o nowej wiadomości
		mruganie jeśli okno jest nieaktywne
	**/
	void alertNewMessage();

signals:
	void chatWidgetActivated(ChatWidget *);

};

#endif
