|
|
|
@ -33,69 +33,89 @@
@@ -33,69 +33,89 @@
|
|
|
|
|
|
|
|
|
|
#include <QItemDelegate> |
|
|
|
|
#include <QPainter> |
|
|
|
|
|
|
|
|
|
#include "base/preferences.h" |
|
|
|
|
#include "base/utils/misc.h" |
|
|
|
|
#include "base/utils/string.h" |
|
|
|
|
#include "base/preferences.h" |
|
|
|
|
|
|
|
|
|
class PeerListDelegate: public QItemDelegate { |
|
|
|
|
Q_OBJECT |
|
|
|
|
Q_OBJECT |
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
enum PeerListColumns {COUNTRY, IP, PORT, CONNECTION, FLAGS, CLIENT, PROGRESS, DOWN_SPEED, UP_SPEED, |
|
|
|
|
TOT_DOWN, TOT_UP, RELEVANCE, DOWNLOADING_PIECE, IP_HIDDEN, COL_COUNT}; |
|
|
|
|
enum PeerListColumns |
|
|
|
|
{ |
|
|
|
|
COUNTRY, |
|
|
|
|
IP, |
|
|
|
|
PORT, |
|
|
|
|
CONNECTION, |
|
|
|
|
FLAGS, |
|
|
|
|
CLIENT, |
|
|
|
|
PROGRESS, |
|
|
|
|
DOWN_SPEED, |
|
|
|
|
UP_SPEED, |
|
|
|
|
TOT_DOWN, |
|
|
|
|
TOT_UP, RELEVANCE, |
|
|
|
|
DOWNLOADING_PIECE, |
|
|
|
|
IP_HIDDEN, |
|
|
|
|
|
|
|
|
|
COL_COUNT |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
PeerListDelegate(QObject *parent) : QItemDelegate(parent) {} |
|
|
|
|
PeerListDelegate(QObject *parent) : QItemDelegate(parent) {} |
|
|
|
|
|
|
|
|
|
~PeerListDelegate() {} |
|
|
|
|
~PeerListDelegate() {} |
|
|
|
|
|
|
|
|
|
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { |
|
|
|
|
painter->save(); |
|
|
|
|
const bool hideValues = Preferences::instance()->getHideZeroValues(); |
|
|
|
|
QStyleOptionViewItem opt = QItemDelegate::setOptions(index, option); |
|
|
|
|
switch(index.column()) { |
|
|
|
|
case PORT: |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, option.rect, index.data().toString()); |
|
|
|
|
break; |
|
|
|
|
case TOT_DOWN: |
|
|
|
|
case TOT_UP: { |
|
|
|
|
qlonglong size = index.data().toLongLong(); |
|
|
|
|
if (hideValues && (size <= 0)) |
|
|
|
|
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const |
|
|
|
|
{ |
|
|
|
|
painter->save(); |
|
|
|
|
const bool hideValues = Preferences::instance()->getHideZeroValues(); |
|
|
|
|
QStyleOptionViewItem opt = QItemDelegate::setOptions(index, option); |
|
|
|
|
switch(index.column()) { |
|
|
|
|
case PORT: { |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, option.rect, index.data().toString()); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, option.rect, Utils::Misc::friendlyUnit(size)); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case DOWN_SPEED: |
|
|
|
|
case UP_SPEED:{ |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
qreal speed = index.data().toDouble(); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
if (speed > 0.0) |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, opt.rect, Utils::Misc::friendlyUnit(speed, true)); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case PROGRESS: |
|
|
|
|
case RELEVANCE:{ |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
qreal progress = index.data().toDouble(); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, opt.rect, Utils::String::fromDouble(progress*100.0, 1)+"%"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
default: |
|
|
|
|
QItemDelegate::paint(painter, option, index); |
|
|
|
|
case TOT_DOWN: |
|
|
|
|
case TOT_UP: { |
|
|
|
|
qlonglong size = index.data().toLongLong(); |
|
|
|
|
if (hideValues && (size <= 0)) |
|
|
|
|
break; |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, option.rect, Utils::Misc::friendlyUnit(size)); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case DOWN_SPEED: |
|
|
|
|
case UP_SPEED:{ |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
qreal speed = index.data().toDouble(); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
if (speed > 0.0) |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, opt.rect, Utils::Misc::friendlyUnit(speed, true)); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case PROGRESS: |
|
|
|
|
case RELEVANCE: { |
|
|
|
|
QItemDelegate::drawBackground(painter, opt, index); |
|
|
|
|
qreal progress = index.data().toDouble(); |
|
|
|
|
opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; |
|
|
|
|
QItemDelegate::drawDisplay(painter, opt, opt.rect, Utils::String::fromDouble(progress*100.0, 1)+"%"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
QItemDelegate::paint(painter, option, index); |
|
|
|
|
} |
|
|
|
|
painter->restore(); |
|
|
|
|
} |
|
|
|
|
painter->restore(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const { |
|
|
|
|
// No editor here
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const |
|
|
|
|
{ |
|
|
|
|
// No editor here
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|