view src/mainwindow.cpp @ 0:147b08bc7d64

Initial commit of a basic Application framework.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 23 Mar 2015 12:41:52 +0100
parents
children 97d2c8869c39
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 <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>

MainWindow::MainWindow() :
    mHasValidFolder(false)
{
    setStatusBar(new QStatusBar());

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

}

void MainWindow::setupGUI()
{
}

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);

    // TODO;
}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)