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