mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-01 01:43:32 +03:00
parent
cfedbf8e6b
commit
60faba60ea
6 changed files with 28 additions and 3 deletions
|
@ -192,6 +192,18 @@ void TransferListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
QItemDelegate::drawDisplay(painter, opt, option.rect, elapsedString);
|
||||
}
|
||||
break;
|
||||
|
||||
case TransferListModel::TR_AVAILABILITY: {
|
||||
const qreal availability = index.data().toReal();
|
||||
if (hideValues && (availability <= 0))
|
||||
break;
|
||||
|
||||
const QString availabilityStr = Utils::String::fromDouble(availability, 3);
|
||||
opt.displayAlignment = (Qt::AlignRight | Qt::AlignVCenter);
|
||||
QItemDelegate::drawDisplay(painter, opt, option.rect, availabilityStr);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
QItemDelegate::paint(painter, option, index);
|
||||
}
|
||||
|
|
|
@ -124,8 +124,8 @@ QVariant TransferListModel::headerData(int section, Qt::Orientation orientation,
|
|||
case TR_SEEN_COMPLETE_DATE: return tr("Last Seen Complete", "Indicates the time when the torrent was last seen complete/whole");
|
||||
case TR_LAST_ACTIVITY: return tr("Last Activity", "Time passed since a chunk was downloaded/uploaded");
|
||||
case TR_TOTAL_SIZE: return tr("Total Size", "i.e. Size including unwanted data");
|
||||
default:
|
||||
return {};
|
||||
case TR_AVAILABILITY: return tr("Availability", "The number of distributed copies of the torrent");
|
||||
default: return {};
|
||||
}
|
||||
}
|
||||
else if (role == Qt::TextAlignmentRole) {
|
||||
|
@ -149,6 +149,7 @@ QVariant TransferListModel::headerData(int section, Qt::Orientation orientation,
|
|||
case TR_RATIO:
|
||||
case TR_QUEUE_POSITION:
|
||||
case TR_LAST_ACTIVITY:
|
||||
case TR_AVAILABILITY:
|
||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||
default:
|
||||
return QAbstractListModel::headerData(section, orientation, role);
|
||||
|
@ -239,6 +240,8 @@ QVariant TransferListModel::data(const QModelIndex &index, int role) const
|
|||
if (torrent->isPaused() || torrent->isChecking())
|
||||
return -1;
|
||||
return torrent->timeSinceActivity();
|
||||
case TR_AVAILABILITY:
|
||||
return torrent->distributedCopies();
|
||||
case TR_TOTAL_SIZE:
|
||||
return torrent->totalSize();
|
||||
}
|
||||
|
|
|
@ -77,6 +77,7 @@ public:
|
|||
TR_RATIO_LIMIT,
|
||||
TR_SEEN_COMPLETE_DATE,
|
||||
TR_LAST_ACTIVITY,
|
||||
TR_AVAILABILITY,
|
||||
|
||||
NB_COLUMNS
|
||||
};
|
||||
|
|
|
@ -125,6 +125,7 @@ QVariantMap serialize(const BitTorrent::TorrentHandle &torrent)
|
|||
ret[KEY_TORRENT_LAST_SEEN_COMPLETE_TIME] = torrent.lastSeenComplete().toTime_t();
|
||||
ret[KEY_TORRENT_AUTO_TORRENT_MANAGEMENT] = torrent.isAutoTMMEnabled();
|
||||
ret[KEY_TORRENT_TIME_ACTIVE] = torrent.activeTime();
|
||||
ret[KEY_TORRENT_AVAILABILITY] = torrent.distributedCopies();
|
||||
|
||||
if (torrent.isPaused() || torrent.isChecking()) {
|
||||
ret[KEY_TORRENT_LAST_ACTIVITY_TIME] = 0;
|
||||
|
|
|
@ -78,5 +78,6 @@ const char KEY_TORRENT_LAST_ACTIVITY_TIME[] = "last_activity";
|
|||
const char KEY_TORRENT_TOTAL_SIZE[] = "total_size";
|
||||
const char KEY_TORRENT_AUTO_TORRENT_MANAGEMENT[] = "auto_tmm";
|
||||
const char KEY_TORRENT_TIME_ACTIVE[] = "time_active";
|
||||
const char KEY_TORRENT_AVAILABILITY[] = "availability";
|
||||
|
||||
QVariantMap serialize(const BitTorrent::TorrentHandle &torrent);
|
||||
|
|
|
@ -828,12 +828,12 @@ const TorrentsTable = new Class({
|
|||
this.newColumn('max_ratio', '', 'QBT_TR(Ratio Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false);
|
||||
this.newColumn('seen_complete', '', 'QBT_TR(Last Seen Complete)QBT_TR[CONTEXT=TransferListModel]', 100, false);
|
||||
this.newColumn('last_activity', '', 'QBT_TR(Last Activity)QBT_TR[CONTEXT=TransferListModel]', 100, false);
|
||||
this.newColumn('availability', '', 'QBT_TR(Availability)QBT_TR[CONTEXT=TransferListModel]', 100, false);
|
||||
|
||||
this.columns['state_icon'].onclick = '';
|
||||
this.columns['state_icon'].dataProperties[0] = 'state';
|
||||
|
||||
this.columns['num_seeds'].dataProperties.push('num_complete');
|
||||
|
||||
this.columns['num_leechs'].dataProperties.push('num_incomplete');
|
||||
|
||||
this.initColumnsFunctions();
|
||||
|
@ -1181,6 +1181,13 @@ const TorrentsTable = new Class({
|
|||
td.set('html', time);
|
||||
td.set('title', time);
|
||||
};
|
||||
|
||||
// availability
|
||||
this.columns['availability'].updateTd = function(td, row) {
|
||||
const value = (Math.floor(1000 * this.getRowValue(row)) / 1000).toFixed(3); // Don't round up
|
||||
td.set('html', value);
|
||||
td.set('title', value);
|
||||
};
|
||||
},
|
||||
|
||||
applyFilter: function(row, filterName, categoryHash, tagHash, filterTerms) {
|
||||
|
|
Loading…
Reference in a new issue