From f03be893a3b0b2d26736fb8f26ca92ef63a031d7 Mon Sep 17 00:00:00 2001 From: baydam Date: Tue, 5 Jan 2016 18:45:54 +0000 Subject: [PATCH] Fix: #159 Handle corrupted files --- MainWindow.cpp | 28 +++++++++++++++++++++++++--- MainWindow.h | 8 +++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index e1c7cb8..a35da83 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -753,7 +753,7 @@ void MainWindow::renameMappingItem() contentTab->setCurrentWidget(mappingSplitter); } -void MainWindow::renameMapping(uid mappingId, QString name) +void MainWindow::renameMapping(uid mappingId, const QString &name) { Mapping::ptr mapping = mappingManager->getMappingById(mappingId); if (!mapping.isNull()) { @@ -791,7 +791,7 @@ void MainWindow::renamePaintItem() contentTab->setCurrentWidget(paintSplitter); } -void MainWindow::renamePaint(uid paintId, QString name) +void MainWindow::renamePaint(uid paintId, const QString &name) { Paint::ptr paint = mappingManager->getPaintById(paintId); if (!paint.isNull()) { @@ -2045,6 +2045,9 @@ bool MainWindow::importMediaFile(const QString &fileName, bool isImage) QFile file(fileName); QDir currentDir; + if (!fileSupported(fileName, isImage)) + return false; + bool live = false; if (!file.open(QIODevice::ReadOnly)) { if (file.isSequential()) @@ -2357,7 +2360,7 @@ void MainWindow::clearWindow() clearProject(); } -bool MainWindow::fileExists(const QString file) +bool MainWindow::fileExists(const QString &file) { QFileInfo checkFile(file); @@ -2367,6 +2370,25 @@ bool MainWindow::fileExists(const QString file) return false; } +bool MainWindow::fileSupported(const QString &file, bool isImage) +{ + QFileInfo fileInfo(file); + QString fileExtension = fileInfo.suffix(); + + if (isImage) { + if (MM::IMAGE_FILES_FILTER.contains(fileExtension, Qt::CaseInsensitive)) + return true; + } else { + if (MM::VIDEO_FILES_FILTER.contains(fileExtension, Qt::CaseInsensitive)) + return true; + } + + QMessageBox::warning(this, tr("Warning"), + tr("The following file is not supported: %1") + .arg(fileInfo.fileName())); + return false; +} + QString MainWindow::locateMediaFile(const QString &uri, bool isImage) { // Get more info about url diff --git a/MainWindow.h b/MainWindow.h index 6397118..ea5683a 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -242,11 +242,13 @@ public: void addPaintItem(uid paintId, const QIcon& icon, const QString& name); void updatePaintItem(uid paintId, const QIcon& icon, const QString& name); void removePaintItem(uid paintId); - void renameMapping(uid mappingId, QString name); - void renamePaint(uid paintId, QString name); + void renameMapping(uid mappingId, const QString& name); + void renamePaint(uid paintId, const QString& name); void clearWindow(); // Check if the file exists - bool fileExists(const QString file); + bool fileExists(const QString& file); + // Check if the file is supported + bool fileSupported(const QString& file, bool isImage); // Locate the file not found QString locateMediaFile(const QString& uri, bool isImage);