~ubuntu-branches/ubuntu/oneiric/qwt/oneiric-proposed

« back to all changes in this revision

Viewing changes to qwt-5.1.1/examples/radio/tunerfrm.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Fathi Boudra
  • Date: 2009-04-12 23:25:58 UTC
  • mfrom: (1.1.4 upstream) (2.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090412232558-3bl06x785yr8xm8u
Tags: 5.1.2-1
* New upstream release.
* Bump compat/debhelper to 7.
* Bump Standards-Version to 3.8.1. No changes needed.
* Invert Maintainers and Uploaders field.
* Fix lintian warnings:
  - dh_clean _k deprecated.
  - missing dependency on libc.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <qlayout.h>
2
 
#include <qlabel.h>
3
 
#include <qwt_wheel.h>
4
 
#include <qwt_slider.h>
5
 
#include <qwt_thermo.h>
6
 
#include <qwt_math.h>
7
 
#include "tunerfrm.h"
8
 
 
9
 
class TuningThermo: public QWidget
10
 
{
11
 
public:
12
 
    TuningThermo(QWidget *parent):
13
 
        QWidget(parent)
14
 
    {
15
 
        d_thermo = new QwtThermo(this);
16
 
        d_thermo->setOrientation(Qt::Horizontal, QwtThermo::NoScale);
17
 
        d_thermo->setRange(0.0, 1.0);
18
 
        d_thermo->setFillColor(Qt::green);
19
 
 
20
 
        QLabel *label = new QLabel("Tuning", this);
21
 
        label->setAlignment(Qt::AlignCenter);
22
 
 
23
 
        QVBoxLayout *layout = new QVBoxLayout(this);
24
 
        layout->setMargin(0);
25
 
        layout->addWidget(d_thermo);
26
 
        layout->addWidget(label);
27
 
 
28
 
        setFixedWidth(3 * label->sizeHint().width());
29
 
    }
30
 
 
31
 
    void setValue(double value)
32
 
    {
33
 
        d_thermo->setValue(value);
34
 
    }
35
 
 
36
 
private:
37
 
    QwtThermo *d_thermo;
38
 
};
39
 
 
40
 
TunerFrame::TunerFrame(QWidget *parent): 
41
 
    QFrame(parent)
42
 
{
43
 
    d_sldFreq = new QwtSlider(this, Qt::Horizontal, QwtSlider::TopScale);
44
 
    d_sldFreq->setRange(87.5, 108, 0.01, 10);
45
 
    d_sldFreq->setScaleMaxMinor(5);
46
 
    d_sldFreq->setScaleMaxMajor(12);
47
 
    d_sldFreq->setThumbLength(80);
48
 
    d_sldFreq->setBorderWidth(1);
49
 
 
50
 
    d_thmTune = new TuningThermo(this);
51
 
 
52
 
    d_whlFreq = new QwtWheel(this);
53
 
    d_whlFreq->setMass(0.5);
54
 
    d_whlFreq->setRange(87.5, 108, 0.01);
55
 
    d_whlFreq->setTotalAngle(3600.0);
56
 
    d_whlFreq->setFixedHeight(30);
57
 
 
58
 
 
59
 
    connect(d_whlFreq, SIGNAL(valueChanged(double)), SLOT(adjustFreq(double)));
60
 
    connect(d_sldFreq, SIGNAL(valueChanged(double)), SLOT(adjustFreq(double)));
61
 
 
62
 
    QVBoxLayout *mainLayout = new QVBoxLayout(this);
63
 
    mainLayout->setMargin(10);
64
 
    mainLayout->setSpacing(5);
65
 
    mainLayout->addWidget(d_sldFreq);
66
 
 
67
 
    QHBoxLayout *hLayout = new QHBoxLayout;
68
 
    hLayout->setMargin(0);
69
 
    hLayout->addWidget(d_thmTune, 0);
70
 
    hLayout->addStretch(5);
71
 
    hLayout->addWidget(d_whlFreq, 2);
72
 
 
73
 
    mainLayout->addLayout(hLayout);
74
 
}
75
 
 
76
 
void TunerFrame::adjustFreq(double frq)
77
 
{
78
 
    const double factor = 13.0 / (108 - 87.5);
79
 
 
80
 
    const double x = (frq - 87.5) * factor;
81
 
    const double field = qwtSqr(sin(x) * cos(4.0 * x));
82
 
    
83
 
    d_thmTune->setValue(field);  
84
 
 
85
 
    if (d_sldFreq->value() != frq) 
86
 
        d_sldFreq->setValue(frq);
87
 
    if (d_whlFreq->value() != frq) 
88
 
        d_whlFreq->setValue(frq);
89
 
 
90
 
    emit fieldChanged(field);   
91
 
}
92
 
 
93
 
void TunerFrame::setFreq(double frq)
94
 
{
95
 
    d_whlFreq->setValue(frq);
96
 
}