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