1 /*
2 * wpa_gui - SignalBar class
3 * Copyright (c) 2011, Kel Modderman <kel@otaku42.de>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * Alternatively, this software may be distributed under the terms of BSD
10 * license.
11 *
12 * See README and COPYING for more details.
13 */
14
15 #include <cstdio>
16 #include <qapplication.h>
17
18 #include "signalbar.h"
19
20
SignalBar(QObject * parent)21 SignalBar::SignalBar(QObject *parent)
22 : QStyledItemDelegate(parent)
23 {
24 }
25
26
~SignalBar()27 SignalBar::~SignalBar()
28 {
29 }
30
31
paint(QPainter * painter,const QStyleOptionViewItem & option,const QModelIndex & index) const32 void SignalBar::paint(QPainter *painter,
33 const QStyleOptionViewItem &option,
34 const QModelIndex &index) const
35 {
36 QStyleOptionProgressBar opts;
37 int signal;
38
39 if (index.column() != 3) {
40 QStyledItemDelegate::paint(painter, option, index);
41 return;
42 }
43
44 if (index.data().toInt() > 0)
45 signal = 0 - (256 - index.data().toInt());
46 else
47 signal = index.data().toInt();
48
49 opts.minimum = -95;
50 opts.maximum = -35;
51 if (signal < opts.minimum)
52 opts.progress = opts.minimum;
53 else if (signal > opts.maximum)
54 opts.progress = opts.maximum;
55 else
56 opts.progress = signal;
57
58 opts.text = QString::number(signal) + " dBm";
59 opts.textVisible = true;
60 opts.rect = option.rect;
61
62 QApplication::style()->drawControl(QStyle::CE_ProgressBar,
63 &opts, painter);
64 }
65