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*e604d861SchristosSignalBar::SignalBar(QObject *parent) 16*e604d861Schristos : QStyledItemDelegate(parent) 17*e604d861Schristos { 18*e604d861Schristos } 19*e604d861Schristos 20*e604d861Schristos ~SignalBar()21*e604d861SchristosSignalBar::~SignalBar() 22*e604d861Schristos { 23*e604d861Schristos } 24*e604d861Schristos 25*e604d861Schristos paint(QPainter * painter,const QStyleOptionViewItem & option,const QModelIndex & index) const26*e604d861Schristosvoid 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