Improve drawing speed of transferlist with many torrents.

Conflicts:
	Changelog
This commit is contained in:
sledgehammer999
2013-06-29 17:58:41 +03:00
parent ae3eda2c7e
commit d095d7fc17
3 changed files with 17 additions and 1 deletions

View File

@@ -9,7 +9,8 @@
- LIBTORRENT: SOCKS5 fixes (0.16.10) - LIBTORRENT: SOCKS5 fixes (0.16.10)
- LIBTORRENT: Fix hanging issue on Windows when closing files (0.16.10) - LIBTORRENT: Fix hanging issue on Windows when closing files (0.16.10)
- LIBTORRENT: Cache can now be returned to the OS (0.16.10) - LIBTORRENT: Cache can now be returned to the OS (0.16.10)
- PERFORMANCE: Impove drawing speed of tranferlist when there are many torrents(>100)
* Sat Mar 16 2013 - Christophe Dumez <chris@qbittorrent.org> - v3.0.9 * Sat Mar 16 2013 - Christophe Dumez <chris@qbittorrent.org> - v3.0.9
- BUGFIX: Raise qBittorrent windows when another instance is launched - BUGFIX: Raise qBittorrent windows when another instance is launched
- BUGFIX: Show human readable names for network interfaces in preferences (Windows) - BUGFIX: Show human readable names for network interfaces in preferences (Windows)

View File

@@ -29,6 +29,7 @@
*/ */
#include <QDebug> #include <QDebug>
#include <QFontMetrics>
#include "torrentmodel.h" #include "torrentmodel.h"
#include "torrentpersistentdata.h" #include "torrentpersistentdata.h"
@@ -297,6 +298,19 @@ QVariant TorrentModel::data(const QModelIndex &index, int role) const
if (!index.isValid()) return QVariant(); if (!index.isValid()) return QVariant();
try { try {
if (index.row() >= 0 && index.row() < rowCount() && index.column() >= 0 && index.column() < columnCount()) if (index.row() >= 0 && index.row() < rowCount() && index.column() >= 0 && index.column() < columnCount())
if (role == Qt::SizeHintRole)
{
QSize size(m_torrents[index.row()]->data(index.column(), role).toSize());
QFont font;
QFontMetrics fm(font);
QIcon icon(":/Icons/skin/downloading.png");
int fm_height(fm.height());
QList<QSize> ic_sizes(icon.availableSizes());
int icon_height(ic_sizes[0].height());
size.setHeight(fm_height > icon_height ? fm_height : icon_height);
return QVariant(size);
}
else
return m_torrents[index.row()]->data(index.column(), role); return m_torrents[index.row()]->data(index.column(), role);
} catch(invalid_handle&) {} } catch(invalid_handle&) {}
return QVariant(); return QVariant();

View File

@@ -67,6 +67,7 @@ using namespace libtorrent;
TransferListWidget::TransferListWidget(QWidget *parent, MainWindow *main_window, QBtSession *_BTSession): TransferListWidget::TransferListWidget(QWidget *parent, MainWindow *main_window, QBtSession *_BTSession):
QTreeView(parent), BTSession(_BTSession), main_window(main_window) { QTreeView(parent), BTSession(_BTSession), main_window(main_window) {
setUniformRowHeights(true);
// Load settings // Load settings
bool column_loaded = loadSettings(); bool column_loaded = loadSettings();