Browse Source

Prevent flickering preview dialog

Avoid instantiation of a preview dialog, when torrent is not
previewable
adaptive-webui-19844
silver 6 years ago committed by Chocobo1
parent
commit
0b47021504
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 4
      src/gui/previewselectdialog.cpp
  2. 18
      src/gui/transferlistwidget.cpp

4
src/gui/previewselectdialog.cpp

@ -93,10 +93,6 @@ PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, BitTorrent::TorrentHan @@ -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);

18
src/gui/transferlistwidget.cpp

@ -48,6 +48,7 @@ @@ -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 @@ -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 @@ -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"));
}
}

Loading…
Cancel
Save