/*
 * Copyright 2009-2010  Stefan Gehn <stefan@srcbox.net>
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of 
 * the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "MainWindow.hpp"
#include "PhotoScene.hpp"

#include <qgraphicsview.h>
#include <qgl.h>
#include <qlayout.h>

MainWindow::MainWindow() : QGraphicsView()
{
  setObjectName("MainWindow");

	setViewport(new QGLWidget());
  setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);
  setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
  showFullScreen();

  QRect sceneRect;
  sceneRect.setSize(size());
  sceneRect.adjust(0, 0, -2, -2);

  mScene = new PhotoScene(this, sceneRect);
  mScene->setObjectName("mScene");

  setScene(mScene);
  viewport()->installEventFilter(mScene);
}

MainWindow::~MainWindow()
{
}

void MainWindow::keyPressEvent(QKeyEvent *kev)
{
	switch (kev->key())
	{
		case Qt::Key_Escape:
		case Qt::Key_F1:
		case Qt::Key_F11:
			kev->accept();
			break;

		default:
			QWidget::keyPressEvent(kev);
	}
}

void MainWindow::keyReleaseEvent(QKeyEvent *kev)
{
	switch (kev->key())
	{
		case Qt::Key_Escape:
			kev->accept();
			close();
			break;

		case Qt::Key_F1:
			kev->accept();
			mScene->setDisplayTouchDebug(!mScene->displayTouchDebug());
			break;

		case Qt::Key_F11:
			kev->accept();
			if (isFullScreen())
				showNormal();
			else
				showFullScreen();
			break;

		default:
			QWidget::keyReleaseEvent(kev);
	}
}

#include "moc_MainWindow.cpp"
