widget.cpp
82 lines
| 2.4 KiB
| text/x-c
|
CppLexer
Miikka Heikkinen
|
r2435 | /**************************************************************************** | ||
** | ||||
** Copyright (C) 2013 Digia Plc | ||||
** All rights reserved. | ||||
** For any questions to Digia, please use contact form at http://qt.digia.com | ||||
** | ||||
** This file is part of the Qt Commercial Charts Add-on. | ||||
** | ||||
** $QT_BEGIN_LICENSE$ | ||||
** Licensees holding valid Qt Commercial licenses may use this file in | ||||
** accordance with the Qt Commercial License Agreement provided with the | ||||
** Software or, alternatively, in accordance with the terms contained in | ||||
** a written agreement between you and Digia. | ||||
** | ||||
** If you have questions regarding the use of this file, please use | ||||
** contact form at http://qt.digia.com | ||||
** $QT_END_LICENSE$ | ||||
** | ||||
****************************************************************************/ | ||||
Marek Rosa
|
r2155 | #include "widget.h" | ||
#include <QAudioDeviceInfo> | ||||
#include <QAudioInput> | ||||
#include <QChartView> | ||||
#include <QLineSeries> | ||||
#include <QChart> | ||||
#include <QVBoxLayout> | ||||
#include <QValueAxis> | ||||
#include "xyseriesiodevice.h" | ||||
QTCOMMERCIALCHART_USE_NAMESPACE | ||||
Widget::Widget(QWidget *parent) | ||||
: QWidget(parent), | ||||
m_device(0), | ||||
m_chart(0), | ||||
m_series(0), | ||||
m_audioInput(0) | ||||
{ | ||||
m_chart = new QChart; | ||||
QChartView *chartView = new QChartView(m_chart); | ||||
chartView->setMinimumSize(800, 600); | ||||
m_series = new QLineSeries; | ||||
m_chart->addSeries(m_series); | ||||
QValueAxis *axisX = new QValueAxis; | ||||
Marek Rosa
|
r2214 | axisX->setRange(0, 2000); | ||
axisX->setLabelFormat("%g"); | ||||
Michal Klocek
|
r2273 | axisX->setTitleText("Samples"); | ||
Marek Rosa
|
r2155 | QValueAxis *axisY = new QValueAxis; | ||
Marek Rosa
|
r2214 | axisY->setRange(-1, 1); | ||
Michal Klocek
|
r2273 | axisY->setTitleText("Audio level"); | ||
m_chart->setAxisX(axisX, m_series); | ||||
Marek Rosa
|
r2155 | m_chart->setAxisY(axisY, m_series); | ||
Marek Rosa
|
r2159 | m_chart->legend()->hide(); | ||
Marek Rosa
|
r2214 | m_chart->setTitle("Data from the microphone"); | ||
Marek Rosa
|
r2155 | |||
QVBoxLayout *mainLayout = new QVBoxLayout; | ||||
mainLayout->addWidget(chartView); | ||||
setLayout(mainLayout); | ||||
QAudioFormat formatAudio; | ||||
Tero Ahola
|
r2239 | formatAudio.setSampleRate(8000); | ||
formatAudio.setChannelCount(1); | ||||
Marek Rosa
|
r2155 | formatAudio.setSampleSize(8); | ||
formatAudio.setCodec("audio/pcm"); | ||||
formatAudio.setByteOrder(QAudioFormat::LittleEndian); | ||||
formatAudio.setSampleType(QAudioFormat::UnSignedInt); | ||||
QAudioDeviceInfo inputDevices = QAudioDeviceInfo::defaultInputDevice(); | ||||
m_audioInput = new QAudioInput(inputDevices,formatAudio, this); | ||||
m_device = new XYSeriesIODevice(m_series, this); | ||||
m_device->open(QIODevice::WriteOnly); | ||||
m_audioInput->start(m_device); | ||||
} | ||||
Widget::~Widget() | ||||
{ | ||||
m_audioInput->stop(); | ||||
m_device->close(); | ||||
} | ||||