Released version 6.1.3
This commit is contained in:
		
				commit
				
					
						a94503cb82
					
				
			
		
					 1885 changed files with 276310 additions and 0 deletions
				
			
		
							
								
								
									
										201
									
								
								examples/radio/ampfrm.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								examples/radio/ampfrm.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,201 @@
 | 
			
		|||
#include "ampfrm.h"
 | 
			
		||||
#include <qwt_knob.h>
 | 
			
		||||
#include <qwt_thermo.h>
 | 
			
		||||
#include <qwt_round_scale_draw.h>
 | 
			
		||||
#include <qwt_math.h>
 | 
			
		||||
#include <qlayout.h>
 | 
			
		||||
#include <qlabel.h>
 | 
			
		||||
#include <qfont.h>
 | 
			
		||||
#include <qpen.h>
 | 
			
		||||
#include <qevent.h>
 | 
			
		||||
 | 
			
		||||
#if QT_VERSION < 0x040600
 | 
			
		||||
#define qFastSin(x) ::sin(x)
 | 
			
		||||
#define qFastCos(x) ::cos(x)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
class Knob: public QWidget
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    Knob( const QString &title, double min, double max, QWidget *parent ):
 | 
			
		||||
        QWidget( parent )
 | 
			
		||||
    {
 | 
			
		||||
        d_knob = new QwtKnob( this );
 | 
			
		||||
        d_knob->setScale( min, max );
 | 
			
		||||
        d_knob->setTotalSteps( 0 ); // disable
 | 
			
		||||
        d_knob->setScaleMaxMajor( 10 );
 | 
			
		||||
 | 
			
		||||
        d_knob->setKnobStyle( QwtKnob::Raised );
 | 
			
		||||
        d_knob->setKnobWidth( 50 );
 | 
			
		||||
        d_knob->setBorderWidth( 2 );
 | 
			
		||||
        d_knob->setMarkerStyle( QwtKnob::Notch );
 | 
			
		||||
        d_knob->setMarkerSize( 8 );
 | 
			
		||||
 | 
			
		||||
        d_knob->scaleDraw()->setTickLength( QwtScaleDiv::MinorTick, 4 );
 | 
			
		||||
        d_knob->scaleDraw()->setTickLength( QwtScaleDiv::MediumTick, 4 );
 | 
			
		||||
        d_knob->scaleDraw()->setTickLength( QwtScaleDiv::MajorTick, 6 );
 | 
			
		||||
 | 
			
		||||
        d_label = new QLabel( title, this );
 | 
			
		||||
        d_label->setAlignment( Qt::AlignTop | Qt::AlignHCenter );
 | 
			
		||||
 | 
			
		||||
        setSizePolicy( QSizePolicy::MinimumExpanding,
 | 
			
		||||
            QSizePolicy::MinimumExpanding );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual QSize sizeHint() const
 | 
			
		||||
    {
 | 
			
		||||
        QSize sz1 = d_knob->sizeHint();
 | 
			
		||||
        QSize sz2 = d_label->sizeHint();
 | 
			
		||||
 | 
			
		||||
        const int w = qMax( sz1.width(), sz2.width() );
 | 
			
		||||
        const int h = sz1.height() + sz2.height();
 | 
			
		||||
 | 
			
		||||
        int off = qCeil( d_knob->scaleDraw()->extent( d_knob->font() ) );
 | 
			
		||||
        off -= 10; // spacing
 | 
			
		||||
 | 
			
		||||
        return QSize( w, h - off );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void setValue( double value )
 | 
			
		||||
    {
 | 
			
		||||
        d_knob->setValue( value );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    double value() const
 | 
			
		||||
    {
 | 
			
		||||
        return d_knob->value();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual void resizeEvent( QResizeEvent *e )
 | 
			
		||||
    {
 | 
			
		||||
        const QSize sz = e->size();
 | 
			
		||||
 | 
			
		||||
        int h = d_label->sizeHint().height();
 | 
			
		||||
 | 
			
		||||
        d_label->setGeometry( 0, sz.height() - h, sz.width(), h );
 | 
			
		||||
 | 
			
		||||
        h = d_knob->sizeHint().height();
 | 
			
		||||
        int off = qCeil( d_knob->scaleDraw()->extent( d_knob->font() ) );
 | 
			
		||||
        off -= 10; // spacing
 | 
			
		||||
 | 
			
		||||
        d_knob->setGeometry( 0, d_label->pos().y() - h + off,
 | 
			
		||||
            sz.width(), h );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QwtKnob *d_knob;
 | 
			
		||||
    QLabel *d_label;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class Thermo: public QWidget
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    Thermo( const QString &title, QWidget *parent ):
 | 
			
		||||
        QWidget( parent )
 | 
			
		||||
    {
 | 
			
		||||
        d_thermo = new QwtThermo( this );
 | 
			
		||||
        d_thermo->setPipeWidth( 6 );
 | 
			
		||||
        d_thermo->setScale( -40, 10 );
 | 
			
		||||
        d_thermo->setFillBrush( Qt::green );
 | 
			
		||||
        d_thermo->setAlarmBrush( Qt::red );
 | 
			
		||||
        d_thermo->setAlarmLevel( 0.0 );
 | 
			
		||||
        d_thermo->setAlarmEnabled( true );
 | 
			
		||||
 | 
			
		||||
        QLabel *label = new QLabel( title, this );
 | 
			
		||||
        label->setAlignment( Qt::AlignTop | Qt::AlignLeft );
 | 
			
		||||
 | 
			
		||||
        QVBoxLayout *layout = new QVBoxLayout( this );
 | 
			
		||||
        layout->setMargin( 0 );
 | 
			
		||||
        layout->setSpacing( 0 );
 | 
			
		||||
        layout->addWidget( d_thermo, 10 );
 | 
			
		||||
        layout->addWidget( label );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void setValue( double value )
 | 
			
		||||
    {
 | 
			
		||||
        d_thermo->setValue( value );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QwtThermo *d_thermo;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
AmpFrame::AmpFrame( QWidget *p ):
 | 
			
		||||
    QFrame( p )
 | 
			
		||||
{
 | 
			
		||||
    d_knbVolume = new Knob( "Volume", 0.0, 10.0, this );
 | 
			
		||||
    d_knbBalance = new Knob( "Balance", -10.0, 10.0, this );
 | 
			
		||||
    d_knbTreble = new Knob( "Treble", -10.0, 10.0, this );
 | 
			
		||||
    d_knbBass = new Knob( "Bass", -10.0, 10.0, this );
 | 
			
		||||
 | 
			
		||||
    d_thmLeft = new Thermo( "Left [dB]", this );
 | 
			
		||||
    d_thmRight = new Thermo( "Right [dB]", this );
 | 
			
		||||
 | 
			
		||||
    QHBoxLayout *layout = new QHBoxLayout( this );
 | 
			
		||||
    layout->setSpacing( 0 );
 | 
			
		||||
    layout->setMargin( 10 );
 | 
			
		||||
    layout->addWidget( d_knbVolume );
 | 
			
		||||
    layout->addWidget( d_knbBalance);
 | 
			
		||||
    layout->addWidget( d_knbTreble);
 | 
			
		||||
    layout->addWidget( d_knbBass );
 | 
			
		||||
    layout->addSpacing( 20 );
 | 
			
		||||
    layout->addStretch( 10 );
 | 
			
		||||
    layout->addWidget( d_thmLeft );
 | 
			
		||||
    layout->addSpacing( 10 );
 | 
			
		||||
    layout->addWidget( d_thmRight );
 | 
			
		||||
 | 
			
		||||
    d_knbVolume->setValue( 7.0 );
 | 
			
		||||
    ( void )startTimer( 50 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AmpFrame::timerEvent( QTimerEvent * )
 | 
			
		||||
{
 | 
			
		||||
    static double phs = 0;
 | 
			
		||||
 | 
			
		||||
    //
 | 
			
		||||
    //  This amplifier generates its own input signal...
 | 
			
		||||
    //
 | 
			
		||||
 | 
			
		||||
    const double sig_bass = ( 1.0 + 0.1 * d_knbBass->value() )
 | 
			
		||||
        * qFastSin( 13.0 * phs );
 | 
			
		||||
    const double sig_mid_l = qFastSin( 17.0 * phs );
 | 
			
		||||
    const double sig_mid_r = qFastCos( 17.5 * phs );
 | 
			
		||||
    const double sig_trbl_l = 0.5 * ( 1.0 + 0.1 * d_knbTreble->value() )
 | 
			
		||||
        * qFastSin( 35.0 * phs );
 | 
			
		||||
    const double sig_trbl_r = 0.5 * ( 1.0 + 0.1 * d_knbTreble->value() )
 | 
			
		||||
        * qFastSin( 34.0 * phs );
 | 
			
		||||
 | 
			
		||||
    double sig_l = 0.05 * d_master * d_knbVolume->value()
 | 
			
		||||
        * qwtSqr( sig_bass + sig_mid_l + sig_trbl_l );
 | 
			
		||||
    double sig_r = 0.05 * d_master * d_knbVolume->value()
 | 
			
		||||
        * qwtSqr( sig_bass + sig_mid_r + sig_trbl_r );
 | 
			
		||||
 | 
			
		||||
    double balance = 0.1 * d_knbBalance->value();
 | 
			
		||||
    if ( balance > 0 )
 | 
			
		||||
        sig_l *= ( 1.0 - balance );
 | 
			
		||||
    else
 | 
			
		||||
        sig_r *= ( 1.0 + balance );
 | 
			
		||||
 | 
			
		||||
    if ( sig_l > 0.01 )
 | 
			
		||||
        sig_l = 20.0 * log10( sig_l );
 | 
			
		||||
    else
 | 
			
		||||
        sig_l = -40.0;
 | 
			
		||||
 | 
			
		||||
    if ( sig_r > 0.01 )
 | 
			
		||||
        sig_r = 20.0 * log10( sig_r );
 | 
			
		||||
    else
 | 
			
		||||
        sig_r = - 40.0;
 | 
			
		||||
 | 
			
		||||
    d_thmLeft->setValue( sig_l );
 | 
			
		||||
    d_thmRight->setValue( sig_r );
 | 
			
		||||
 | 
			
		||||
    phs += M_PI / 100;
 | 
			
		||||
    if ( phs > M_PI )
 | 
			
		||||
        phs = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AmpFrame::setMaster( double v )
 | 
			
		||||
{
 | 
			
		||||
    d_master = v;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										29
									
								
								examples/radio/ampfrm.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								examples/radio/ampfrm.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
#include <qframe.h>
 | 
			
		||||
 | 
			
		||||
class Knob;
 | 
			
		||||
class Thermo;
 | 
			
		||||
 | 
			
		||||
class AmpFrame : public QFrame
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
    AmpFrame( QWidget * );
 | 
			
		||||
 | 
			
		||||
public Q_SLOTS:
 | 
			
		||||
    void setMaster( double v );
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    void timerEvent( QTimerEvent * );
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    Knob *d_knbVolume;
 | 
			
		||||
    Knob *d_knbBalance;
 | 
			
		||||
    Knob *d_knbTreble;
 | 
			
		||||
    Knob *d_knbBass;
 | 
			
		||||
    Thermo *d_thmLeft;
 | 
			
		||||
    Thermo *d_thmRight;
 | 
			
		||||
    double d_master;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										50
									
								
								examples/radio/mainwindow.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								examples/radio/mainwindow.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
#include <qlayout.h>
 | 
			
		||||
#include "tunerfrm.h"
 | 
			
		||||
#include "ampfrm.h"
 | 
			
		||||
#include "mainwindow.h"
 | 
			
		||||
 | 
			
		||||
MainWindow::MainWindow():
 | 
			
		||||
    QWidget()
 | 
			
		||||
{
 | 
			
		||||
    TunerFrame *frmTuner = new TunerFrame( this );
 | 
			
		||||
    frmTuner->setFrameStyle( QFrame::Panel | QFrame::Raised );
 | 
			
		||||
 | 
			
		||||
    AmpFrame *frmAmp = new AmpFrame( this );
 | 
			
		||||
    frmAmp->setFrameStyle( QFrame::Panel | QFrame::Raised );
 | 
			
		||||
 | 
			
		||||
    QVBoxLayout *layout = new QVBoxLayout( this );
 | 
			
		||||
    layout->setMargin( 0 );
 | 
			
		||||
    layout->setSpacing( 0 );
 | 
			
		||||
    layout->addWidget( frmTuner );
 | 
			
		||||
    layout->addWidget( frmAmp );
 | 
			
		||||
 | 
			
		||||
    connect( frmTuner, SIGNAL( fieldChanged( double ) ),
 | 
			
		||||
        frmAmp, SLOT( setMaster( double ) ) );
 | 
			
		||||
 | 
			
		||||
    frmTuner->setFreq( 90.0 );
 | 
			
		||||
 | 
			
		||||
    setPalette( QPalette( QColor( 192, 192, 192 ) ) );
 | 
			
		||||
    updateGradient();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::resizeEvent( QResizeEvent * )
 | 
			
		||||
{
 | 
			
		||||
    // Qt 4.7.1: QGradient::StretchToDeviceMode is buggy on X11
 | 
			
		||||
    updateGradient();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::updateGradient()
 | 
			
		||||
{
 | 
			
		||||
    QPalette pal = palette();
 | 
			
		||||
 | 
			
		||||
    const QColor buttonColor = pal.color( QPalette::Button );
 | 
			
		||||
    const QColor midLightColor = pal.color( QPalette::Midlight );
 | 
			
		||||
 | 
			
		||||
    QLinearGradient gradient( rect().topLeft(), rect().topRight() );
 | 
			
		||||
    gradient.setColorAt( 0.0, midLightColor );
 | 
			
		||||
    gradient.setColorAt( 0.7, buttonColor );
 | 
			
		||||
    gradient.setColorAt( 1.0, buttonColor );
 | 
			
		||||
 | 
			
		||||
    pal.setBrush( QPalette::Window, gradient );
 | 
			
		||||
    setPalette( pal );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								examples/radio/mainwindow.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								examples/radio/mainwindow.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
#include <qwidget.h>
 | 
			
		||||
 | 
			
		||||
class MainWindow : public QWidget
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    MainWindow();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual void resizeEvent( QResizeEvent * );
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void updateGradient();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								examples/radio/radio.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								examples/radio/radio.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
#include <qapplication.h>
 | 
			
		||||
#include "mainwindow.h"
 | 
			
		||||
 | 
			
		||||
int main ( int argc, char **argv )
 | 
			
		||||
{
 | 
			
		||||
    QApplication a( argc, argv );
 | 
			
		||||
 | 
			
		||||
    MainWindow w;
 | 
			
		||||
    w.show();
 | 
			
		||||
 | 
			
		||||
    return a.exec();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								examples/radio/radio.pro
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								examples/radio/radio.pro
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
################################################################
 | 
			
		||||
# Qwt Widget Library
 | 
			
		||||
# Copyright (C) 1997   Josef Wilgen
 | 
			
		||||
# Copyright (C) 2002   Uwe Rathmann
 | 
			
		||||
#
 | 
			
		||||
# This library is free software; you can redistribute it and/or
 | 
			
		||||
# modify it under the terms of the Qwt License, Version 1.0
 | 
			
		||||
################################################################
 | 
			
		||||
 | 
			
		||||
include( $${PWD}/../examples.pri )
 | 
			
		||||
 | 
			
		||||
TARGET       = radio
 | 
			
		||||
 | 
			
		||||
HEADERS = \
 | 
			
		||||
     mainwindow.h \
 | 
			
		||||
     ampfrm.h \
 | 
			
		||||
     tunerfrm.h
 | 
			
		||||
 | 
			
		||||
SOURCES = \
 | 
			
		||||
    mainwindow.cpp \ 
 | 
			
		||||
    ampfrm.cpp \ 
 | 
			
		||||
    tunerfrm.cpp \
 | 
			
		||||
    radio.cpp 
 | 
			
		||||
							
								
								
									
										113
									
								
								examples/radio/tunerfrm.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								examples/radio/tunerfrm.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
#include <qlayout.h>
 | 
			
		||||
#include <qlabel.h>
 | 
			
		||||
#include <qwt_wheel.h>
 | 
			
		||||
#include <qwt_slider.h>
 | 
			
		||||
#include <qwt_thermo.h>
 | 
			
		||||
#include <qwt_math.h>
 | 
			
		||||
#include "tunerfrm.h"
 | 
			
		||||
 | 
			
		||||
#if QT_VERSION < 0x040600
 | 
			
		||||
#define qFastSin(x) ::sin(x)
 | 
			
		||||
#define qFastCos(x) ::cos(x)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
class TuningThermo: public QWidget
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    TuningThermo( QWidget *parent ):
 | 
			
		||||
        QWidget( parent )
 | 
			
		||||
    {
 | 
			
		||||
        d_thermo = new QwtThermo( this );
 | 
			
		||||
        d_thermo->setOrientation( Qt::Horizontal );
 | 
			
		||||
        d_thermo->setScalePosition( QwtThermo::NoScale );
 | 
			
		||||
        d_thermo->setScale( 0.0, 1.0 );
 | 
			
		||||
        d_thermo->setFillBrush( Qt::green );
 | 
			
		||||
 | 
			
		||||
        QLabel *label = new QLabel( "Tuning", this );
 | 
			
		||||
        label->setAlignment( Qt::AlignCenter );
 | 
			
		||||
 | 
			
		||||
        QVBoxLayout *layout = new QVBoxLayout( this );
 | 
			
		||||
        layout->setMargin( 0 );
 | 
			
		||||
        layout->addWidget( d_thermo );
 | 
			
		||||
        layout->addWidget( label );
 | 
			
		||||
 | 
			
		||||
        setFixedWidth( 3 * label->sizeHint().width() );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void setValue( double value )
 | 
			
		||||
    {
 | 
			
		||||
        d_thermo->setValue( value );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QwtThermo *d_thermo;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TunerFrame::TunerFrame( QWidget *parent ):
 | 
			
		||||
    QFrame( parent )
 | 
			
		||||
{
 | 
			
		||||
    const double freqMin = 87.5;
 | 
			
		||||
    const double freqMax = 108;
 | 
			
		||||
 | 
			
		||||
    d_sliderFrequency = new QwtSlider( this );
 | 
			
		||||
    d_sliderFrequency->setOrientation( Qt::Horizontal );
 | 
			
		||||
    d_sliderFrequency->setScalePosition( QwtSlider::TrailingScale );
 | 
			
		||||
    d_sliderFrequency->setScale( freqMin, freqMax );
 | 
			
		||||
    d_sliderFrequency->setTotalSteps( 
 | 
			
		||||
        qRound( ( freqMax - freqMin ) / 0.01 ) );
 | 
			
		||||
    d_sliderFrequency->setSingleSteps( 1 );
 | 
			
		||||
    d_sliderFrequency->setPageSteps( 10 );
 | 
			
		||||
    d_sliderFrequency->setScaleMaxMinor( 5 );
 | 
			
		||||
    d_sliderFrequency->setScaleMaxMajor( 12 );
 | 
			
		||||
    d_sliderFrequency->setHandleSize( QSize( 80, 20 ) );
 | 
			
		||||
    d_sliderFrequency->setBorderWidth( 1 );
 | 
			
		||||
 | 
			
		||||
    d_thermoTune = new TuningThermo( this );
 | 
			
		||||
 | 
			
		||||
    d_wheelFrequency = new QwtWheel( this );
 | 
			
		||||
    d_wheelFrequency->setMass( 0.5 );
 | 
			
		||||
    d_wheelFrequency->setRange( 87.5, 108 );
 | 
			
		||||
    d_wheelFrequency->setSingleStep( 0.01 );
 | 
			
		||||
    d_wheelFrequency->setPageStepCount( 10 );
 | 
			
		||||
    d_wheelFrequency->setTotalAngle( 3600.0 );
 | 
			
		||||
    d_wheelFrequency->setFixedHeight( 30 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    connect( d_wheelFrequency, SIGNAL( valueChanged( double ) ), SLOT( adjustFreq( double ) ) );
 | 
			
		||||
    connect( d_sliderFrequency, SIGNAL( valueChanged( double ) ), SLOT( adjustFreq( double ) ) );
 | 
			
		||||
 | 
			
		||||
    QVBoxLayout *mainLayout = new QVBoxLayout( this );
 | 
			
		||||
    mainLayout->setMargin( 10 );
 | 
			
		||||
    mainLayout->setSpacing( 5 );
 | 
			
		||||
    mainLayout->addWidget( d_sliderFrequency );
 | 
			
		||||
 | 
			
		||||
    QHBoxLayout *hLayout = new QHBoxLayout;
 | 
			
		||||
    hLayout->setMargin( 0 );
 | 
			
		||||
    hLayout->addWidget( d_thermoTune, 0 );
 | 
			
		||||
    hLayout->addStretch( 5 );
 | 
			
		||||
    hLayout->addWidget( d_wheelFrequency, 2 );
 | 
			
		||||
 | 
			
		||||
    mainLayout->addLayout( hLayout );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TunerFrame::adjustFreq( double frq )
 | 
			
		||||
{
 | 
			
		||||
    const double factor = 13.0 / ( 108 - 87.5 );
 | 
			
		||||
 | 
			
		||||
    const double x = ( frq - 87.5 ) * factor;
 | 
			
		||||
    const double field = qwtSqr( qFastSin( x ) * qFastCos( 4.0 * x ) );
 | 
			
		||||
 | 
			
		||||
    d_thermoTune->setValue( field );
 | 
			
		||||
 | 
			
		||||
    if ( d_sliderFrequency->value() != frq )
 | 
			
		||||
        d_sliderFrequency->setValue( frq );
 | 
			
		||||
    if ( d_wheelFrequency->value() != frq )
 | 
			
		||||
        d_wheelFrequency->setValue( frq );
 | 
			
		||||
 | 
			
		||||
    Q_EMIT fieldChanged( field );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TunerFrame::setFreq( double frq )
 | 
			
		||||
{
 | 
			
		||||
    d_wheelFrequency->setValue( frq );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								examples/radio/tunerfrm.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								examples/radio/tunerfrm.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
#include <qframe.h>
 | 
			
		||||
 | 
			
		||||
class QwtWheel;
 | 
			
		||||
class QwtSlider;
 | 
			
		||||
class TuningThermo;
 | 
			
		||||
 | 
			
		||||
class TunerFrame : public QFrame
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
    TunerFrame( QWidget *p );
 | 
			
		||||
 | 
			
		||||
Q_SIGNALS:
 | 
			
		||||
    void fieldChanged( double f );
 | 
			
		||||
 | 
			
		||||
public Q_SLOTS:
 | 
			
		||||
    void setFreq( double frq );
 | 
			
		||||
 | 
			
		||||
private Q_SLOTS:
 | 
			
		||||
    void adjustFreq( double frq );
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QwtWheel *d_wheelFrequency;
 | 
			
		||||
    TuningThermo *d_thermoTune;
 | 
			
		||||
    QwtSlider *d_sliderFrequency;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue