Convert more accurately decimal numbers to text.

Conflicts:
	src/misc.h
This commit is contained in:
sledgehammer999
2014-01-21 01:47:30 +02:00
parent 8790092a81
commit 1fc916865c
10 changed files with 39 additions and 48 deletions

View File

@@ -67,9 +67,7 @@ public:
case PROGRESS:{
QItemDelegate::drawBackground(painter, opt, index);
qreal progress = index.data().toDouble();
/* HACK because QString rounds up. Eg QString::number(0.999*100.0, 'f' ,1) == 99.9
** but QString::number(0.9999*100.0, 'f' ,1) == 100.0 */
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString::number((int)((progress*100.0)*10)/10.0, 'f', 1)+"%");
QItemDelegate::drawDisplay(painter, opt, opt.rect, misc::accurateDoubleToString(progress*100.0, 1)+"%");
break;
}
default:

View File

@@ -332,9 +332,7 @@ void PropertiesWidget::loadDynamicData() {
reannounce_lbl->setText(h.next_announce());
// Update ratio info
const qreal ratio = QBtSession::instance()->getRealRatio(h.hash());
/* HACK because QString rounds up. Eg QString::number(0.999*100.0, 'f' ,1) == 99.9
** but QString::number(0.9999*100.0, 'f' ,1) == 100.0 */
shareRatio->setText(ratio > QBtSession::MAX_RATIO ? QString::fromUtf8("") : QString::number((int)(ratio*100)/100.0, 'f', 2));
shareRatio->setText(ratio > QBtSession::MAX_RATIO ? QString::fromUtf8("") : misc::accurateDoubleToString(ratio*100, 2));
if (!h.is_seed()) {
showPiecesDownloaded(true);
// Downloaded pieces
@@ -347,17 +345,13 @@ void PropertiesWidget::loadDynamicData() {
std::vector<int> avail;
h.piece_availability(avail);
pieces_availability->setAvailability(avail);
/* HACK because QString rounds up. Eg QString::number(0.999*100.0, 'f' ,1) == 99.9
** but QString::number(0.9999*100.0, 'f' ,1) == 100.0 */
avail_average_lbl->setText(QString::number((int)(h.distributed_copies()*1000)/1000.0, 'f', 3));
avail_average_lbl->setText(misc::accurateDoubleToString(h.distributed_copies(), 3));
} else {
showPiecesAvailability(false);
}
// Progress
qreal progress = h.progress()*100.;
/* HACK because QString rounds up. Eg QString::number(0.999*100.0, 'f' ,1) == 99.9
** but QString::number(0.9999*100.0, 'f' ,1) == 100.0 */
progress_lbl->setText(QString::number((int)(progress*10)/10.0, 'f', 1)+"%");
progress_lbl->setText(misc::accurateDoubleToString(progress, 1)+"%");
} else {
showPiecesAvailability(false);
showPiecesDownloaded(false);

View File

@@ -78,9 +78,7 @@ public:
QStyleOptionProgressBarV2 newopt;
qreal progress = index.data().toDouble()*100.;
newopt.rect = opt.rect;
/* HACK because QString rounds up. Eg QString::number(0.999*100.0, 'f' ,1) == 99.9
** but QString::number(0.9999*100.0, 'f' ,1) == 100.0 */
newopt.text = QString::number((int)(progress*10)/10.0, 'f', 1)+"%";
newopt.text = misc::accurateDoubleToString(progress, 1);
newopt.progress = (int)progress;
newopt.maximum = 100;
newopt.minimum = 0;