/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/***************************************************************************
 *            mainwindow.cc
 *
 *  Sat Aug 21 19:49:34 2004
 *  Copyright  2004  deva
 *  deva@aasimon.org
 ****************************************************************************/

/*
 *    This file is part of MIaV.
 *
 *    MIaV 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.
 *
 *    MIaV 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 MIaV; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
 */
#include "mainwindow.h"
#include "info.h"
#include "miav_config.h"
#include "splashscreen.h"
#include "aboutwindow.h"

#include <QGridLayout>

#include "historywidget.h"

#include <QX11Info>
#include <QMoveEvent>

QPushButton *MainWindow::createButton(char* icon)
{
  QPixmap pixmap(icon);

  int w = (int)((double)x11Info().appDpiX() / 1.5);
  int h = (int)((double)x11Info().appDpiY() / 1.5);

  Qt::AspectRatioMode aspect =  pixmap.width()<pixmap.height()?
    Qt::KeepAspectRatio:Qt::KeepAspectRatioByExpanding;

  pixmap = pixmap.scaled(w,h, aspect, Qt::SmoothTransformation);
  

  QPushButton *btn = new QPushButton();
  btn->setIconSize(QSize(50,50));
  btn->setIcon(pixmap);

  return btn;
}

#include <QApplication>
MainWindow::MainWindow(): QWidget()
{
  MIaV::info->log("Starting MIaV v. %s.", VERSION);

  // Create the overlaying splashscreen
  SplashScreen splash(this);
  /*
  sleep(3);
  splash.setProgress("Loading some items", 10);
  sleep(3);
  splash.setProgress("Established connections",50);
  sleep(3);
  */

  // Create layout
  QGridLayout *layout = new QGridLayout(this);
  setLayout(layout);

  // Create the videoarea
  video = new VideoWidget();
  layout->addWidget(video, 0,0, 1,4);

  // Create the control buttons
  QPushButton *button;

  button = createButton(PIXMAP_CPR);
  layout->addWidget(button, 1,3, 1,1);
  connect(button, SIGNAL(clicked()), this, SLOT(cpr_clicked()));

  button = createButton(PIXMAP_RECORD);
  layout->addWidget(button, 2,0, 1,1);
  connect(button, SIGNAL(clicked()), this, SLOT(record_clicked()));

  button = createButton(PIXMAP_SNAPSHOT);
  layout->addWidget(button, 2,1, 1,1);
  connect(button, SIGNAL(clicked()), this, SLOT(snapshot_clicked()));

  button = createButton(PIXMAP_FREEZE);
  layout->addWidget(button, 2,2, 1,1);
  connect(button, SIGNAL(clicked()), this, SLOT(freeze_clicked()));

  button = createButton(PIXMAP_MUTE);
  layout->addWidget(button, 2,3, 1,1);
  connect(button, SIGNAL(clicked()), this, SLOT(mute_clicked()));

  button = createButton(PIXMAP_CLEAR);
  layout->addWidget(button, 2,4, 1,1);
  connect(button, SIGNAL(clicked()), this, SLOT(clear_clicked()));

  // Create history bar
  history = new HistoryFrame();
  layout->addWidget(history, 0,4, 2,1);
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_MUTE)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_UNMUTE)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_STOP)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_RECORD)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_FREEZE)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_UNFREEZE)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_CPR)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_CLEAR)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_DUMMY)));
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_LOGO_SMALL)));


  // Create statusbar
  
  show();
  //  setWindowState(Qt::WindowFullScreen);

  MIaV::info->log("MIaV is ready.");
}

MainWindow::~MainWindow()
{
  MIaV::info->log("MIaV is shutting down.");

  MIaV::info->log("MIaV is shut down.");
}

void MainWindow::about_clicked()
{
  AboutWindow about;
  about.exec();
}

void MainWindow::clear_clicked()
{
  printf("clear\n");
}

void MainWindow::cpr_clicked()
{
}

void MainWindow::record_clicked()
{
}

void MainWindow::snapshot_clicked()
{
  history->addHistoryItem(new HistoryWidget(new QPixmap(PIXMAP_LOGO_SMALL)));
}

void MainWindow::freeze_clicked()
{
}

void MainWindow::mute_clicked()
{
}

// A hack to ensure we draw the video in the right place
void MainWindow::moveEvent(QMoveEvent *event)
{
  QMoveEvent evt(video->pos(),video->pos());
  video->moveEvent(&evt);
}