#ifndef TOPLEVEL_H
#define TOPLEVEL_H

#include <kmainwindow.h>

class PlayCanvas;
class Playground;
class Splash;
class Network;
class QSocketDevice;
class QDataStream;
class KPopupMenu;
class Rule;

class TopLevel : public KMainWindow
{
	Q_OBJECT
	public:
		TopLevel(int ggzmode);
		~TopLevel();

		void setTheme(QString theme);

		void selectNewGame(int bots);
		void newGame(QString level, QString theme, int players);

	public slots:
		void key(int keycode);
		void slotMenu(int id);
		void slotEndGame();
		void slotInput(int fd);
		void slotError();
		void menuStatusBar(int lives, int bombs, int power);
		void menuStatusBarScore(int time, int score);
		void menuStatusBarSetup();
		void slotPosition(int x, int y);

	protected:
		void keyPressEvent(QKeyEvent *e);

	private:
		void scale(int difference);
		void disconnect();

		enum MenuItems
		{
			game_new,
			game_newlevels,
			game_exit,

			display_larger,
			display_smaller,
			display_fullscreen,

			livescount,
			livestext,
			powercount,
			powertext,
			bombscount,
			bombstext,

			clockcount,
			clocktext,
			scorecount,
			scoretext,

			game_menu,
			display_menu,
			help_menu
		};

		PlayCanvas *canvas;
		Playground *playground;
		Splash *splash;
		int m_ggzmode;
		bool network_enabled;
		Network *network;
		QSocketDevice *m_sock;
		QDataStream *m_s;
		KPopupMenu *gamemenu, *displaymenu;
		bool m_isfullscreen;
		QRect m_geometry;
		int m_tilesize;
		bool m_pause;
};

#endif

