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

@@ -138,9 +138,7 @@ public:
case TorrentModelItem::TR_DLLIMIT:{
QItemDelegate::drawBackground(painter, opt, index);
const qlonglong limit = index.data().toLongLong();
/* 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, limit > 0 ? QString::number((int)((limit/1024.)*10)/10.0, 'f', 1) + " " + tr("KiB/s", "KiB/second (.i.e per second)") : QString::fromUtf8(""));
QItemDelegate::drawDisplay(painter, opt, opt.rect, limit > 0 ? misc::accurateDoubleToString(limit/1024., 1) + " " + tr("KiB/s", "KiB/second (.i.e per second)") : QString::fromUtf8(""));
break;
}
case TorrentModelItem::TR_TIME_ELAPSED: {
@@ -160,9 +158,7 @@ public:
case TorrentModelItem::TR_RATIO:{
QItemDelegate::drawBackground(painter, opt, index);
const qreal ratio = 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, ratio > QBtSession::MAX_RATIO ? QString::fromUtf8("") : QString::number((int)(ratio*100)/100.0, 'f', 2));
QItemDelegate::drawDisplay(painter, opt, opt.rect, ratio > QBtSession::MAX_RATIO ? QString::fromUtf8("") : misc::accurateDoubleToString(ratio, 2));
break;
}
case TorrentModelItem::TR_PRIORITY: {
@@ -179,9 +175,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;