signalbar.cpp revision 1f69aa52ea2e0a73ac502565df8c666ee49cab6a
11f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt/* 21f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * wpa_gui - SignalBar class 31f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * Copyright (c) 2011, Kel Modderman <kel@otaku42.de> 41f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * 51f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * This program is free software; you can redistribute it and/or modify 61f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * it under the terms of the GNU General Public License version 2 as 71f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * published by the Free Software Foundation. 81f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * 91f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD 101f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * license. 111f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * 121f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * See README and COPYING for more details. 131f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt */ 141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include <cstdio> 161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include <qapplication.h> 171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include "signalbar.h" 191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 211f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry ShmidtSignalBar::SignalBar(QObject *parent) 221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt : QStyledItemDelegate(parent) 231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 251f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry ShmidtSignalBar::~SignalBar() 281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 291f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 301f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 311f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 321f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid SignalBar::paint(QPainter *painter, 331f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const QStyleOptionViewItem &option, 341f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const QModelIndex &index) const 351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 361f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt QStyleOptionProgressBar opts; 371f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int signal; 381f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 391f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (index.column() != 3) { 401f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt QStyledItemDelegate::paint(painter, option, index); 411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt return; 421f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt } 431f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 441f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (index.data().toInt() > 0) 451f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt signal = 0 - (256 - index.data().toInt()); 461f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt else 471f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt signal = index.data().toInt(); 481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.minimum = -95; 501f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.maximum = -35; 511f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (signal < opts.minimum) 521f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.progress = opts.minimum; 531f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt else if (signal > opts.maximum) 541f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.progress = opts.maximum; 551f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt else 561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.progress = signal; 571f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 581f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.text = QString::number(signal) + " dBm"; 591f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.textVisible = true; 601f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.rect = option.rect; 611f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 621f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt QApplication::style()->drawControl(QStyle::CE_ProgressBar, 631f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt &opts, painter); 641f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 65