view src/mainwindow.cpp @ 2:97d2c8869c39

First prototype implementation of table view and player
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 23 Mar 2015 16:34:42 +0100
parents 147b08bc7d64
children 248d5d1cdb38
line wrap: on
line source
/* Copyright (C) 2014 by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */

/** @file See mainwindow.h */
#include "mainwindow.h"

#include "constants.h"
#include "metadataview.h"
#include "pngplayer.h"

#include <QDebug>
#include <QDialog>
#include <QWidget>
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QDir>
#include <QFileDialog>
#include <QMessageBox>
#include <QApplication>
#include <QDragEnterEvent>
#include <QDragLeaveEvent>
#include <QDropEvent>
#include <QDragMoveEvent>
#include <QMimeData>
#include <QStandardPaths>
#include <QStyle>
#include <QStatusBar>
#include <QTabWidget>
#include <QVBoxLayout>

MainWindow::MainWindow() :
    mDataView(NULL) {
    setStatusBar(new QStatusBar());
    resize(1190, 500);

    setupGUI();
    readSettings();
    setAcceptDrops(true);
    //QIcon windowIcon = QIcon(":/icon-64.png");
    //setWindowIcon(windowIcon);

}

void MainWindow::setupGUI() {
    QTabWidget *tabWidget = new QTabWidget;
    mDataView = new MetaDataView(this);
    mPlayer = new PNGPlayer(this);

    tabWidget->addTab(mPlayer, tr("Player"));
    tabWidget->addTab(mDataView, tr("Filter/Details"));
    tabWidget->setMovable(true);

    setCentralWidget(tabWidget);

    connect (mPlayer, &PNGPlayer::error, this, &MainWindow::showErrorMessage);
    connect (mPlayer, &PNGPlayer::advance, mDataView, &MetaDataView::selectNextRow);
    connect (mDataView, &MetaDataView::selectionChanged, mPlayer,
             &PNGPlayer::showPicture);
}

void MainWindow::showErrorMessage(const QString& errMsg) {
    QMessageBox::warning(this, tr("Error!"), errMsg);
    statusBar()->showMessage(errMsg);
}

void MainWindow::closeEvent(QCloseEvent *event) {
    mSettings.setValue("geometry", saveGeometry());
    mSettings.setValue("windowState", saveState());
    QMainWindow::closeEvent(event);
}

void MainWindow::readSettings() {
    restoreGeometry(mSettings.value("geometry").toByteArray());
    restoreState(mSettings.value("windowState").toByteArray());
}
/*
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        foreach (const QUrl & url, event->mimeData()->urls()) {
            if (url.isLocalFile()) {
                event->acceptProposedAction();
                return;
            }
        }
    }
}

void MainWindow::dragMoveEvent(QDragMoveEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        foreach (const QUrl & url, event->mimeData()->urls()) {
            if (url.isLocalFile()) {
                event->acceptProposedAction();
                return;
            }
        }
    }
}

void MainWindow::dropEvent(QDropEvent *event)
{
    const QMimeData *mimeData = event->mimeData();

    if (mimeData->hasUrls()) {
        foreach (const QUrl & url, mimeData->urls()) {
            if (!url.isLocalFile()) {
                qDebug() << "Ignoring drop of " << url;
                continue;
            }
        }
    }
}

void MainWindow::dragLeaveEvent(QDragLeaveEvent *event)
{
    event->accept();
}
*/
void MainWindow::setFolder(const QString& folder)
{
    QFileInfo fi(folder);
    if (!fi.isDir() || !fi.isReadable()) {
        showErrorMessage(tr("Failed to access directory: '%1'").arg(folder));
    }
    QDir dir = QDir(folder);
    QFileInfo metaData = dir.absoluteFilePath("metadata.csv");
    if (!metaData.exists() || !metaData.isReadable()) {
        showErrorMessage(tr("Failed to access meta data file: '%1'").arg(
                    metaData.filePath()));

    }
    QString errorMsg = mDataView->parseMetaData(metaData.filePath());
    if (!errorMsg.isEmpty()) {
        showErrorMessage(errorMsg);
        return;
    }
    statusBar()->showMessage(tr("Parsed: '%1'").arg(metaData.filePath()));
    qDebug() << "Parsed: " << metaData.filePath();
    mCurFolder = folder;
    mPlayer->setBaseDir(folder);
}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)