Add functionality to new data fields, cleanups

This commit is contained in:
Chocobo1 2015-06-14 19:38:21 +08:00
commit cd708bb665

View file

@ -208,7 +208,7 @@ void PropertiesWidget::clear() {
qDebug("Clearing torrent properties"); qDebug("Clearing torrent properties");
save_path->clear(); save_path->clear();
lbl_creationDate->clear(); lbl_creationDate->clear();
pieceSize_lbl->clear(); label_total_pieces_val->clear();
hash_lbl->clear(); hash_lbl->clear();
comment_text->clear(); comment_text->clear();
progress_lbl->clear(); progress_lbl->clear();
@ -229,8 +229,16 @@ void PropertiesWidget::clear() {
listWebSeeds->clear(); listWebSeeds->clear();
m_contentFilerLine->clear(); m_contentFilerLine->clear();
PropListModel->model()->clear(); PropListModel->model()->clear();
showPiecesAvailability(false); label_eta_val->clear();
showPiecesDownloaded(false); label_seeds_val->clear();
label_peers_val->clear();
label_dl_speed_val->clear();
label_upload_speed_val->clear();
label_total_size_val->clear();
label_completed_on_val->clear();
label_last_complete_val->clear();
label_created_by_val->clear();
label_added_on_val->clear();
} }
QTorrentHandle PropertiesWidget::getCurrentTorrent() const { QTorrentHandle PropertiesWidget::getCurrentTorrent() const {
@ -270,13 +278,18 @@ void PropertiesWidget::loadTorrentInfos(const QTorrentHandle& _h)
PropListModel->model()->clear(); PropListModel->model()->clear();
if (h.has_metadata()) { if (h.has_metadata()) {
// Creation date // Creation date
lbl_creationDate->setText(h.creation_date()); lbl_creationDate->setText(misc::toQString(h.creation_date_unix(), Qt::DefaultLocaleShortDate));
// Piece size
pieceSize_lbl->setText(misc::friendlyUnit(h.piece_length())); label_total_size_val->setText(misc::friendlyUnit(h.total_size()));
// Comment // Comment
comment_text->setHtml(misc::parseHtmlLinks(h.comment())); comment_text->setHtml(misc::parseHtmlLinks(h.comment()));
// URL seeds // URL seeds
loadUrlSeeds(); loadUrlSeeds();
label_created_by_val->setText(h.creator());
// List files in torrent // List files in torrent
#if LIBTORRENT_VERSION_NUM < 10000 #if LIBTORRENT_VERSION_NUM < 10000
PropListModel->model()->setupModelData(h.get_torrent_info()); PropListModel->model()->setupModelData(h.get_torrent_info());
@ -284,10 +297,12 @@ void PropertiesWidget::loadTorrentInfos(const QTorrentHandle& _h)
PropListModel->model()->setupModelData(*h.torrent_file()); PropListModel->model()->setupModelData(*h.torrent_file());
#endif #endif
filesList->setExpanded(PropListModel->index(0, 0), true); filesList->setExpanded(PropListModel->index(0, 0), true);
// Load file priorities // Load file priorities
PropListModel->model()->updateFilesPriorities(h.file_priorities()); PropListModel->model()->updateFilesPriorities(h.file_priorities());
} }
} catch(const invalid_handle& e) { } } catch(const invalid_handle& e) { }
// Load dynamic data // Load dynamic data
loadDynamicData(); loadDynamicData();
} }
@ -343,31 +358,48 @@ void PropertiesWidget::loadDynamicData() {
// Refresh only if the torrent handle is valid and if visible // Refresh only if the torrent handle is valid and if visible
if (!h.is_valid() || main_window->getCurrentTabWidget() != transferList || state != VISIBLE) return; if (!h.is_valid() || main_window->getCurrentTabWidget() != transferList || state != VISIBLE) return;
try { try {
switch(stackedProperties->currentIndex()) {
case PropTabBar::MAIN_TAB: {
// Transfer infos // Transfer infos
if (stackedProperties->currentIndex() == PropTabBar::MAIN_TAB) {
libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters
| torrent_handle::query_distributed_copies | torrent_handle::query_distributed_copies
| torrent_handle::query_pieces); | torrent_handle::query_pieces);
wasted->setText(misc::friendlyUnit(status.total_failed_bytes + status.total_redundant_bytes)); wasted->setText(misc::friendlyUnit(status.total_failed_bytes + status.total_redundant_bytes));
upTotal->setText(misc::friendlyUnit(status.all_time_upload) + " ("+misc::friendlyUnit(status.total_payload_upload)+" "+tr("this session")+")"); upTotal->setText(misc::friendlyUnit(status.all_time_upload) + " (" + misc::friendlyUnit(status.total_payload_upload) + " " + tr("session") + ")");
dlTotal->setText(misc::friendlyUnit(status.all_time_download) + " ("+misc::friendlyUnit(status.total_payload_download)+" "+tr("this session")+")"); dlTotal->setText(misc::friendlyUnit(status.all_time_download) + " (" + misc::friendlyUnit(status.total_payload_download) + " " + tr("session") + ")");
lbl_uplimit->setText(h.upload_limit() <= 0 ? QString::fromUtf8("") : misc::friendlyUnit(h.upload_limit()) + tr("/s", "/second (i.e. per second)")); lbl_uplimit->setText(h.upload_limit() <= 0 ? QString::fromUtf8("") : misc::friendlyUnit(h.upload_limit()) + tr("/s", "/second (i.e. per second)"));
lbl_dllimit->setText(h.download_limit() <= 0 ? QString::fromUtf8("") : misc::friendlyUnit(h.download_limit()) + tr("/s", "/second (i.e. per second)")); lbl_dllimit->setText(h.download_limit() <= 0 ? QString::fromUtf8("") : misc::friendlyUnit(h.download_limit()) + tr("/s", "/second (i.e. per second)"));
QString elapsed_txt = misc::userFriendlyDuration(status.active_time); QString elapsed_txt = misc::userFriendlyDuration(status.active_time);
if (h.is_seed(status)) { if (h.is_seed(status))
elapsed_txt += " (" + tr("Seeded for %1", "e.g. Seeded for 3m10s").arg(misc::userFriendlyDuration(status.seeding_time)) + ")"; elapsed_txt += " (" + tr("Seeded for %1", "e.g. Seeded for 3m10s").arg(misc::userFriendlyDuration(status.seeding_time)) + ")";
}
lbl_elapsed->setText(elapsed_txt); lbl_elapsed->setText(elapsed_txt);
if (status.connections_limit > 0)
lbl_connections->setText(QString::number(status.num_connections)+" ("+tr("%1 max", "e.g. 10 max").arg(QString::number(status.connections_limit))+")");
else
lbl_connections->setText(QString::number(status.num_connections)); lbl_connections->setText(QString::number(status.num_connections));
label_eta_val->setText(misc::userFriendlyDuration(h.eta()));
// Update next announce time // Update next announce time
reannounce_lbl->setText(misc::userFriendlyDuration(status.next_announce.total_seconds())); reannounce_lbl->setText(misc::userFriendlyDuration(status.next_announce.total_seconds()));
// Update ratio info // Update ratio info
const qreal ratio = QBtSession::instance()->getRealRatio(status); const qreal ratio = QBtSession::instance()->getRealRatio(status);
shareRatio->setText(ratio > QBtSession::MAX_RATIO ? QString::fromUtf8("") : misc::accurateDoubleToString(ratio, 2)); shareRatio->setText(ratio > QBtSession::MAX_RATIO ? QString::fromUtf8("") : misc::accurateDoubleToString(ratio, 2));
label_seeds_val->setText(QString::number(status.num_seeds) + " " + tr("(%1 total)","e.g. (10 total)").arg(QString::number(status.list_seeds)));
label_peers_val->setText(QString::number(status.num_peers - status.num_seeds) + " " + tr("(%1 total)","e.g. (10 total)").arg(QString::number(status.list_peers - status.list_seeds)));
label_dl_speed_val->setText(misc::friendlyUnit(status.download_payload_rate) + tr("/s", "/second (i.e. per second)") + " "
+ tr("(%1/s avg.)","e.g. (100KiB/s avg.)").arg(misc::friendlyUnit(status.all_time_download / (1 + status.active_time - status.finished_time))));
label_upload_speed_val->setText(misc::friendlyUnit(status.upload_payload_rate) + tr("/s", "/second (i.e. per second)") + " "
+ tr("(%1/s avg.)", "e.g. (100KiB/s avg.)").arg(misc::friendlyUnit(status.all_time_upload / (1 + status.active_time))));
label_last_complete_val->setText(status.last_seen_complete != 0 ? misc::toQString(status.last_seen_complete, Qt::DefaultLocaleShortDate) : tr("Never"));
label_completed_on_val->setText(status.completed_time != 0 ? misc::toQString(status.completed_time, Qt::DefaultLocaleShortDate) : "");
label_added_on_val->setText(misc::toQString(status.added_time, Qt::DefaultLocaleShortDate));
if (status.has_metadata)
label_total_pieces_val->setText(tr("%1 x %2 (have %3)", "(torrent pieces) eg 152 x 4MB (have 25)").arg(status.pieces.size()).arg(misc::friendlyUnit(h.piece_length())).arg(status.num_pieces));
if (!h.is_seed(status) && status.has_metadata) { if (!h.is_seed(status) && status.has_metadata) {
showPiecesDownloaded(true); showPiecesDownloaded(true);
// Downloaded pieces // Downloaded pieces
@ -385,29 +417,34 @@ void PropertiesWidget::loadDynamicData() {
h.piece_availability(avail); h.piece_availability(avail);
pieces_availability->setAvailability(avail); pieces_availability->setAvailability(avail);
avail_average_lbl->setText(misc::accurateDoubleToString(status.distributed_copies, 3)); avail_average_lbl->setText(misc::accurateDoubleToString(status.distributed_copies, 3));
} else { }
else {
showPiecesAvailability(false); showPiecesAvailability(false);
} }
// Progress // Progress
qreal progress = h.progress(status)*100.; qreal progress = h.progress(status)*100.;
progress_lbl->setText(misc::accurateDoubleToString(progress, 1) + "%"); progress_lbl->setText(misc::accurateDoubleToString(progress, 1) + "%");
} else { }
else {
showPiecesAvailability(false); showPiecesAvailability(false);
showPiecesDownloaded(false); showPiecesDownloaded(false);
} }
return; return;
} }
if (stackedProperties->currentIndex() == PropTabBar::TRACKERS_TAB) {
case PropTabBar::TRACKERS_TAB:
// Trackers // Trackers
trackerList->loadTrackers(); trackerList->loadTrackers();
return; return;
}
if (stackedProperties->currentIndex() == PropTabBar::PEERS_TAB) { case PropTabBar::PEERS_TAB:
// Load peers // Load peers
peersList->loadPeers(h); peersList->loadPeers(h);
return; return;
}
if (stackedProperties->currentIndex() == PropTabBar::FILES_TAB) { case PropTabBar::FILES_TAB: {
libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters
| torrent_handle::query_distributed_copies | torrent_handle::query_distributed_copies
| torrent_handle::query_pieces); | torrent_handle::query_pieces);
@ -424,6 +461,11 @@ void PropertiesWidget::loadDynamicData() {
// PropListModel->model()->updateFilesPriorities(h.file_priorities()); // PropListModel->model()->updateFilesPriorities(h.file_priorities());
filesList->setUpdatesEnabled(true); filesList->setUpdatesEnabled(true);
} }
return;
}
default:
return;
} }
} catch(const invalid_handle& e) { } catch(const invalid_handle& e) {
qWarning() << "Caught exception in PropertiesWidget::loadDynamicData(): " << misc::toQStringU(e.what()); qWarning() << "Caught exception in PropertiesWidget::loadDynamicData(): " << misc::toQStringU(e.what());