xref: /netbsd-src/external/bsd/wpa/dist/wpa_supplicant/wpa_gui-qt4/signalbar.cpp (revision e604d8611dacba7ab12396e19398c8a39b20a815)
1*e604d861Schristos /*
2*e604d861Schristos  * wpa_gui - SignalBar class
3*e604d861Schristos  * Copyright (c) 2011, Kel Modderman <kel@otaku42.de>
4*e604d861Schristos  *
5*e604d861Schristos  * This software may be distributed under the terms of the BSD license.
6*e604d861Schristos  * See README for more details.
7*e604d861Schristos  */
8*e604d861Schristos 
9*e604d861Schristos #include <cstdio>
10*e604d861Schristos #include <qapplication.h>
11*e604d861Schristos 
12*e604d861Schristos #include "signalbar.h"
13*e604d861Schristos 
14*e604d861Schristos 
SignalBar(QObject * parent)15*e604d861Schristos SignalBar::SignalBar(QObject *parent)
16*e604d861Schristos 	: QStyledItemDelegate(parent)
17*e604d861Schristos {
18*e604d861Schristos }
19*e604d861Schristos 
20*e604d861Schristos 
~SignalBar()21*e604d861Schristos SignalBar::~SignalBar()
22*e604d861Schristos {
23*e604d861Schristos }
24*e604d861Schristos 
25*e604d861Schristos 
paint(QPainter * painter,const QStyleOptionViewItem & option,const QModelIndex & index) const26*e604d861Schristos void SignalBar::paint(QPainter *painter,
27*e604d861Schristos 		      const QStyleOptionViewItem &option,
28*e604d861Schristos 		      const QModelIndex &index) const
29*e604d861Schristos {
30*e604d861Schristos 	QStyleOptionProgressBar opts;
31*e604d861Schristos 	int signal;
32*e604d861Schristos 
33*e604d861Schristos 	if (index.column() != 3) {
34*e604d861Schristos 		QStyledItemDelegate::paint(painter, option, index);
35*e604d861Schristos 		return;
36*e604d861Schristos 	}
37*e604d861Schristos 
38*e604d861Schristos 	if (index.data().toInt() > 0)
39*e604d861Schristos 		signal = 0 - (256 - index.data().toInt());
40*e604d861Schristos 	else
41*e604d861Schristos 		signal = index.data().toInt();
42*e604d861Schristos 
43*e604d861Schristos 	opts.minimum = -95;
44*e604d861Schristos 	opts.maximum = -35;
45*e604d861Schristos 	if (signal < opts.minimum)
46*e604d861Schristos 		opts.progress = opts.minimum;
47*e604d861Schristos 	else if (signal > opts.maximum)
48*e604d861Schristos 		opts.progress = opts.maximum;
49*e604d861Schristos 	else
50*e604d861Schristos 		opts.progress = signal;
51*e604d861Schristos 
52*e604d861Schristos 	opts.text = QString::number(signal) + " dBm";
53*e604d861Schristos 	opts.textVisible = true;
54*e604d861Schristos 	opts.rect = option.rect;
55*e604d861Schristos 
56*e604d861Schristos 	QApplication::style()->drawControl(QStyle::CE_ProgressBar,
57*e604d861Schristos 					   &opts, painter);
58*e604d861Schristos }
59