59 lines
1.1 KiB
C++
59 lines
1.1 KiB
C++
|
/*
|
||
|
* wpa_gui - SignalBar class
|
||
|
* Copyright (c) 2011, Kel Modderman <kel@otaku42.de>
|
||
|
*
|
||
|
* This software may be distributed under the terms of the BSD license.
|
||
|
* See README for more details.
|
||
|
*/
|
||
|
|
||
|
#include <cstdio>
|
||
|
#include <qapplication.h>
|
||
|
|
||
|
#include "signalbar.h"
|
||
|
|
||
|
|
||
|
SignalBar::SignalBar(QObject *parent)
|
||
|
: QStyledItemDelegate(parent)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
SignalBar::~SignalBar()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
void SignalBar::paint(QPainter *painter,
|
||
|
const QStyleOptionViewItem &option,
|
||
|
const QModelIndex &index) const
|
||
|
{
|
||
|
QStyleOptionProgressBar opts;
|
||
|
int signal;
|
||
|
|
||
|
if (index.column() != 3) {
|
||
|
QStyledItemDelegate::paint(painter, option, index);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (index.data().toInt() > 0)
|
||
|
signal = 0 - (256 - index.data().toInt());
|
||
|
else
|
||
|
signal = index.data().toInt();
|
||
|
|
||
|
opts.minimum = -95;
|
||
|
opts.maximum = -35;
|
||
|
if (signal < opts.minimum)
|
||
|
opts.progress = opts.minimum;
|
||
|
else if (signal > opts.maximum)
|
||
|
opts.progress = opts.maximum;
|
||
|
else
|
||
|
opts.progress = signal;
|
||
|
|
||
|
opts.text = QString::number(signal) + " dBm";
|
||
|
opts.textVisible = true;
|
||
|
opts.rect = option.rect;
|
||
|
|
||
|
QApplication::style()->drawControl(QStyle::CE_ProgressBar,
|
||
|
&opts, painter);
|
||
|
}
|