11f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt/* 21f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * wpa_gui - SignalBar class 31f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * Copyright (c) 2011, Kel Modderman <kel@otaku42.de> 41f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * 504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * This software may be distributed under the terms of the BSD license. 604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * See README for more details. 71f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt */ 81f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 91f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include <cstdio> 101f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include <qapplication.h> 111f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 121f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include "signalbar.h" 131f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry ShmidtSignalBar::SignalBar(QObject *parent) 161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt : QStyledItemDelegate(parent) 171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 211f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry ShmidtSignalBar::~SignalBar() 221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 251f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid SignalBar::paint(QPainter *painter, 271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const QStyleOptionViewItem &option, 281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const QModelIndex &index) const 291f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 301f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt QStyleOptionProgressBar opts; 311f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int signal; 321f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 331f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (index.column() != 3) { 341f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt QStyledItemDelegate::paint(painter, option, index); 351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt return; 361f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt } 371f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 381f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (index.data().toInt() > 0) 391f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt signal = 0 - (256 - index.data().toInt()); 401f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt else 411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt signal = index.data().toInt(); 421f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 431f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.minimum = -95; 441f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.maximum = -35; 451f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (signal < opts.minimum) 461f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.progress = opts.minimum; 471f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt else if (signal > opts.maximum) 481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.progress = opts.maximum; 491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt else 501f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.progress = signal; 511f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 521f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.text = QString::number(signal) + " dBm"; 531f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.textVisible = true; 541f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt opts.rect = option.rect; 551f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt QApplication::style()->drawControl(QStyle::CE_ProgressBar, 571f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt &opts, painter); 581f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 59