Mercurial > retraceit
view src/mainwindow.cpp @ 3:248d5d1cdb38
Add functionalty to control buttons and make picture resizable
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 23 Mar 2015 19:10:01 +0100 |
parents | 97d2c8869c39 |
children | 107e435cb569 |
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 (mPlayer, &PNGPlayer::back, mDataView, &MetaDataView::selectPrevRow); connect (mPlayer, &PNGPlayer::jumpToFrame, mDataView, &MetaDataView::selectRow); connect (mDataView, &MetaDataView::selectionChanged, mPlayer, &PNGPlayer::showPicture); mPlayer->setSpeed(mSettings.value(REPLAY_SPEED_KEY, REPLAY_SPEED_DEFAULT).toInt()); } 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); mDataView->selectNextRow(); }