diff --git a/src/gui/previewselectdialog.cpp b/src/gui/previewselectdialog.cpp index 4627d8be6..730591c2d 100644 --- a/src/gui/previewselectdialog.cpp +++ b/src/gui/previewselectdialog.cpp @@ -93,10 +93,6 @@ PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, BitTorrent::TorrentHan } } - if (m_previewListModel->rowCount() == 0) { - QMessageBox::critical(this->parentWidget(), tr("Preview impossible"), tr("Sorry, we can't preview this file")); - close(); - } connect(this, SIGNAL(readyToPreviewFile(QString)), parent, SLOT(previewFile(QString))); m_previewListModel->sort(NAME); previewList->header()->setSortIndicator(0, Qt::AscendingOrder); diff --git a/src/gui/transferlistwidget.cpp b/src/gui/transferlistwidget.cpp index 79606171f..c46bb64e2 100644 --- a/src/gui/transferlistwidget.cpp +++ b/src/gui/transferlistwidget.cpp @@ -48,6 +48,7 @@ #include "base/preferences.h" #include "base/torrentfilter.h" #include "base/utils/fs.h" +#include "base/utils/misc.h" #include "base/utils/string.h" #include "autoexpandabledialog.h" #include "deletionconfirmationdialog.h" @@ -198,6 +199,19 @@ namespace setDefaultWidget(new MenuCheckBox(text, onToggle, initialState)); } }; + + bool torrentContainsPreviewableFiles(const BitTorrent::TorrentHandle *const torrent) + { + if (!torrent->hasMetadata()) + return false; + + for (int i = 0; i < torrent->filesCount(); ++i) { + if (Utils::Misc::isPreviewable(Utils::Fs::fileExtension(torrent->fileName(i)))) + return true; + } + + return false; + } } TransferListWidget::TransferListWidget(QWidget *parent, MainWindow *mainWindow) @@ -589,8 +603,10 @@ void TransferListWidget::openSelectedTorrentsFolder() const void TransferListWidget::previewSelectedTorrents() { for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents())) { - if (torrent->hasMetadata()) + if (torrentContainsPreviewableFiles(torrent)) new PreviewSelectDialog(this, torrent); + else + QMessageBox::critical(this, tr("Unable to preview"), tr("The selected torrent does not contain previewable files")); } }