Diffstat (limited to 'noncore/net/wellenreiter/gui/graphwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.cpp | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/noncore/net/wellenreiter/gui/graphwindow.cpp b/noncore/net/wellenreiter/gui/graphwindow.cpp index b4174d3..d53421c 100644 --- a/noncore/net/wellenreiter/gui/graphwindow.cpp +++ b/noncore/net/wellenreiter/gui/graphwindow.cpp @@ -10,24 +10,51 @@ ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** **********************************************************************/ #include "graphwindow.h" #include <qpainter.h> #include <qpixmap.h> #include <qtimer.h> +/* XPM */ +static char * background[] = { +"16 16 6 1", +" c None", +". c #52676E", +"+ c #3F545B", +"@ c #394E56", +"# c #2F454C", +"$ c #364B52", +".+++++++++++++++", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############", +"+$$$$$$$$$$$$$$$", +"@###############"}; + + MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const char* name, WFlags f) :QWidget( parent, name,f ), _channels( channels ) { _values = new int[_channels]; _dirty = new bool[_channels]; for ( int i = 0; i < channels; ++i ) { _values[i] = 0; _dirty[i] = true; } // we draw everything on our own setBackgroundMode( QWidget::NoBackground ); @@ -76,25 +103,25 @@ void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int heig int s = (s2-s1)*i/maxheight + s1; int v = (v2-v1)*i/maxheight + v1; if ( i == 0 ) drawBottomLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); else if ( i == height-1 ) drawTopLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); else drawLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); } } -void MFrequencySpectrum::paintEvent( QPaintEvent* e ) +void MFrequencySpectrum::paintEvent( QPaintEvent* ) { QPixmap pm( size() ); QPainter p; p.begin( &pm ); p.drawTiledPixmap( 0, 0, size().width(), size().height(), QPixmap( (const char**) &background ) ); int xmargin = 5; int ymargin = 2; int y = size().height() - 2 * ymargin; int x = 0; int width = ( size().width() - 2 * xmargin ) / _channels; @@ -109,50 +136,47 @@ void MFrequencySpectrum::paintEvent( QPaintEvent* e ) } p.end(); bitBlt( this, 0, 0, &pm ); } void MFrequencySpectrum::mousePressEvent( QMouseEvent* e ) { int xmargin = 5; int ymargin = 2; int y = size().height() - 2 * ymargin; - int x = 0; int width = ( size().width() - 2 * xmargin ) / _channels; QPoint pos = e->pos(); int channel = ( pos.x()-xmargin ) / width; int height = 100 - ( pos.y()-ymargin )*100/y; if ( channel < 15 ) _values[channel] = height; } Legende::Legende( int channels, QWidget* parent, const char* name, WFlags f ) :QFrame( parent, name, f ), _channels( channels ) { setLineWidth( 2 ); setFrameStyle( Panel + Sunken ); setFixedHeight( 16 ); } void Legende::drawContents( QPainter* p ) { int xmargin = 5; - int ymargin = 2; - int x = 0; int width = ( contentsRect().width() - 2 * xmargin ) / _channels; for ( int i = 0; i < _channels; ++i ) p->drawText( xmargin + (width*i), 12, QString().sprintf( "%02d", i+1 ) ); } MGraphWindow::MGraphWindow( QWidget* parent, const char* name, WFlags f ) :QVBox( parent, name, f ) { spectrum = new MFrequencySpectrum( 14, this ); legende = new Legende( 14, this ); @@ -161,25 +185,25 @@ MGraphWindow::MGraphWindow( QWidget* parent, const char* name, WFlags f ) void MGraphWindow::testGraph() { static int i = 0; spectrum->setValue( i++, 100 ); if ( i == 14 ) i = 0; QTimer::singleShot( 2000, this, SLOT( testGraph() ) ); } -void MGraphWindow::timerEvent( QTimerEvent* e ) +void MGraphWindow::timerEvent( QTimerEvent* ) { for ( int i = 0; i < 14; i++ ) { spectrum->decrease( i, 1 ); } spectrum->repaint(); } void MGraphWindow::traffic( int channel, int signal ) { spectrum->setValue( channel-1, signal ); |