diff --git a/src/qtlibtorrent/torrentmodel.cpp b/src/qtlibtorrent/torrentmodel.cpp index b600f3099..1c15733ff 100644 --- a/src/qtlibtorrent/torrentmodel.cpp +++ b/src/qtlibtorrent/torrentmodel.cpp @@ -109,7 +109,7 @@ QVariant TorrentModelItem::data(int column, int role) const if(role == Qt::ForegroundRole) { return m_fgColor; } - if(role != Qt::DisplayRole) return QVariant(); + if(role != Qt::DisplayRole && role != Qt::UserRole) return QVariant(); switch(column) { case TR_NAME: return m_name; @@ -122,21 +122,10 @@ QVariant TorrentModelItem::data(int column, int role) const case TR_STATUS: return state(); case TR_SEEDS: { - // XXX: Probably a better way to do this - qulonglong seeds = m_torrent.num_seeds()*1000000; - if(m_torrent.num_complete() >= m_torrent.num_seeds()) - seeds += m_torrent.num_complete()*10; - else - seeds += 1; - return seeds; + return (role == Qt::DisplayRole) ? m_torrent.num_seeds() : m_torrent.num_complete(); } case TR_PEERS: { - qulonglong peers = (m_torrent.num_peers()-m_torrent.num_seeds())*1000000; - if(m_torrent.num_incomplete() >= (m_torrent.num_peers()-m_torrent.num_seeds())) - peers += m_torrent.num_incomplete()*10; - else - peers += 1; - return peers; + return (role == Qt::DisplayRole) ? (m_torrent.num_peers()-m_torrent.num_seeds()) : m_torrent.num_incomplete(); } case TR_DLSPEED: return m_torrent.download_payload_rate(); diff --git a/src/qtlibtorrent/torrentmodel.h b/src/qtlibtorrent/torrentmodel.h index bd85d7f13..41dbc9549 100644 --- a/src/qtlibtorrent/torrentmodel.h +++ b/src/qtlibtorrent/torrentmodel.h @@ -42,7 +42,7 @@ private: QString m_name; mutable QIcon m_icon; mutable QColor m_fgColor; - QString m_hash; + QString m_hash; // Cached for safety reasons }; class TorrentModel : public QAbstractListModel @@ -56,7 +56,7 @@ public: inline int rowCount(const QModelIndex& index = QModelIndex()) const { Q_UNUSED(index); return m_torrents.size(); } int columnCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return TorrentModelItem::NB_COLUMNS; } QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole); QVariant headerData(int section, Qt::Orientation orientation, int role) const; int torrentRow(const QString &hash) const; QString torrentHash(int row) const; diff --git a/src/transferlistdelegate.h b/src/transferlistdelegate.h index 3e9200854..d71e4b7e6 100644 --- a/src/transferlistdelegate.h +++ b/src/transferlistdelegate.h @@ -73,11 +73,10 @@ public: } case TorrentModelItem::TR_SEEDS: case TorrentModelItem::TR_PEERS: { - const qulonglong tot_val = index.data().toULongLong(); - QString display = QString::number((qulonglong)tot_val/1000000); - if(tot_val%2 == 0) { + QString display = QString::number(index.data().toLongLong()); + if(index.data(Qt::UserRole).toLongLong() > 0) { // Scrape was successful, we have total values - display += " ("+QString::number((qulonglong)(tot_val%1000000)/10)+")"; + display += " ("+QString::number(index.data(Qt::UserRole).toLongLong())+")"; } QItemDelegate::drawBackground(painter, opt, index); opt.displayAlignment = Qt::AlignRight;