diff --git a/src/gui/previewselectdialog.cpp b/src/gui/previewselectdialog.cpp index 4627d8be6..07da7aec2 100644 --- a/src/gui/previewselectdialog.cpp +++ b/src/gui/previewselectdialog.cpp @@ -35,6 +35,7 @@ #include #include +#include "base/bittorrent/torrenthandle.h" #include "base/preferences.h" #include "base/utils/fs.h" #include "base/utils/misc.h" @@ -93,10 +94,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/previewselectdialog.h b/src/gui/previewselectdialog.h index 715643b8a..1b9e6bb47 100644 --- a/src/gui/previewselectdialog.h +++ b/src/gui/previewselectdialog.h @@ -31,12 +31,15 @@ #include -#include "base/bittorrent/torrenthandle.h" #include "base/settingvalue.h" #include "ui_previewselectdialog.h" class QStandardItemModel; +namespace BitTorrent +{ + class TorrentHandle; +} class PreviewListDelegate; class PreviewSelectDialog : public QDialog, private Ui::preview 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")); } }