FEATURE: Added "Amount downloaded/left" columns to transfer list

Fix bug in column display menu
This commit is contained in:
Christophe Dumez 2010-11-16 17:43:54 +00:00
parent 3144bfebc7
commit a640b08414
7 changed files with 21 additions and 3 deletions

View file

@ -9,6 +9,7 @@
- FEATURE: The optimal piece size is now automatically computed in the torrent creation tool
- FEATURE: Bring up the connection settings when clicking on the connection status icon
- FEATURE: Major code refactoring and optimization
- FEATURE: Added "Amount downloaded/left" columns to transfer list
- COSMETIC: Replaced message box by on-screen notification for download errors
- COSMETIC: Improved the torrent creation tool appearance
- OTHERS: Dropped support for Qt <= 4.4

View file

@ -146,6 +146,10 @@ size_type QTorrentHandle::total_wanted_done() const {
return torrent_handle::status().total_wanted_done;
}
size_type QTorrentHandle::total_wanted() const {
return torrent_handle::status().total_wanted;
}
float QTorrentHandle::download_payload_rate() const {
return torrent_handle::status().download_payload_rate;
}

View file

@ -67,6 +67,7 @@ class QTorrentHandle : public torrent_handle {
size_type piece_length() const;
int num_pieces() const;
size_type total_wanted_done() const;
size_type total_wanted() const;
float download_payload_rate() const;
float upload_payload_rate() const;
int num_connections() const;

View file

@ -180,6 +180,10 @@ QVariant TorrentModelItem::data(int column, int role) const
return m_torrent.download_limit();
case TR_UPLIMIT:
return m_torrent.upload_limit();
case TR_AMOUNT_DOWNLOADED:
return static_cast<qlonglong>(m_torrent.total_wanted_done());
case TR_AMOUNT_LEFT:
return static_cast<qlonglong>(m_torrent.total_wanted() - m_torrent.total_wanted_done());
default:
return QVariant();
}
@ -241,6 +245,8 @@ QVariant TorrentModel::headerData(int section, Qt::Orientation orientation,
case TorrentModelItem::TR_TRACKER: return tr("Tracker");
case TorrentModelItem::TR_DLLIMIT: return tr("Down Limit", "i.e: Download limit");
case TorrentModelItem::TR_UPLIMIT: return tr("Up Limit", "i.e: Upload limit");
case TorrentModelItem::TR_AMOUNT_DOWNLOADED: return tr("Amount downloaded", "Amount of data downloaded (e.g. in MB)");
case TorrentModelItem::TR_AMOUNT_LEFT: return tr("Amount left", "Amount of data left to download (e.g. in MB)");
default:
return QVariant();
}
@ -256,6 +262,8 @@ QVariant TorrentModel::headerData(int section, Qt::Orientation orientation,
case TorrentModelItem::TR_RATIO:
case TorrentModelItem::TR_DLLIMIT:
case TorrentModelItem::TR_UPLIMIT:
case TorrentModelItem::TR_AMOUNT_DOWNLOADED:
case TorrentModelItem::TR_AMOUNT_LEFT:
return Qt::AlignRight;
case TorrentModelItem::TR_PROGRESS:
return Qt::AlignHCenter;
@ -299,7 +307,7 @@ int TorrentModel::torrentRow(const QString &hash) const
QList<TorrentModelItem*>::const_iterator it;
int row = 0;
for(it = m_torrents.constBegin(); it != m_torrents.constEnd(); it++) {
if((*it)->hash() == hash) return row;
if((*it)->hash() == hash) return row;
++row;
}
return -1;

View file

@ -49,7 +49,7 @@ Q_OBJECT
public:
enum State {STATE_DOWNLOADING, STATE_STALLED_DL, STATE_STALLED_UP, STATE_SEEDING, STATE_PAUSED_DL, STATE_PAUSED_UP, STATE_QUEUED_DL, STATE_QUEUED_UP, STATE_CHECKING_UP, STATE_CHECKING_DL, STATE_INVALID};
enum Column {TR_NAME, TR_PRIORITY, TR_SIZE, TR_PROGRESS, TR_STATUS, TR_SEEDS, TR_PEERS, TR_DLSPEED, TR_UPSPEED, TR_ETA, TR_RATIO, TR_LABEL, TR_ADD_DATE, TR_SEED_DATE, TR_TRACKER, TR_DLLIMIT, TR_UPLIMIT, NB_COLUMNS};
enum Column {TR_NAME, TR_PRIORITY, TR_SIZE, TR_PROGRESS, TR_STATUS, TR_SEEDS, TR_PEERS, TR_DLSPEED, TR_UPSPEED, TR_ETA, TR_RATIO, TR_LABEL, TR_ADD_DATE, TR_SEED_DATE, TR_TRACKER, TR_DLLIMIT, TR_UPLIMIT, TR_AMOUNT_DOWNLOADED, TR_AMOUNT_LEFT, NB_COLUMNS};
public:
TorrentModelItem(const QTorrentHandle& h);

View file

@ -60,6 +60,8 @@ public:
QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option);
painter->save();
switch(index.column()){
case TorrentModelItem::TR_AMOUNT_DOWNLOADED:
case TorrentModelItem::TR_AMOUNT_LEFT:
case TorrentModelItem::TR_SIZE:{
QItemDelegate::drawBackground(painter, opt, index);
opt.displayAlignment = Qt::AlignRight;

View file

@ -512,6 +512,8 @@ bool TransferListWidget::loadHiddenColumns() {
setColumnHidden(TorrentModelItem::TR_UPLIMIT, true);
setColumnHidden(TorrentModelItem::TR_DLLIMIT, true);
setColumnHidden(TorrentModelItem::TR_TRACKER, true);
setColumnHidden(TorrentModelItem::TR_AMOUNT_DOWNLOADED, true);
setColumnHidden(TorrentModelItem::TR_AMOUNT_LEFT, true);
}
return loaded;
}
@ -521,7 +523,7 @@ void TransferListWidget::displayDLHoSMenu(const QPoint&){
QMenu hideshowColumn(this);
hideshowColumn.setTitle(tr("Column visibility"));
QList<QAction*> actions;
for(int i=0; i < listModel->rowCount(); ++i) {
for(int i=0; i < listModel->columnCount(); ++i) {
if(!BTSession->isQueueingEnabled() && i == TorrentModelItem::TR_PRIORITY) {
actions.append(0);
continue;