1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-11 15:27:54 +00:00

Prevent flickering preview dialog

Avoid instantiation of a preview dialog, when torrent is not
previewable
This commit is contained in:
silver 2018-10-24 19:20:33 +02:00 committed by Chocobo1
parent 4e8ab08425
commit 0b47021504
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
2 changed files with 17 additions and 5 deletions

View File

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

View File

@ -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"));
}
}