diff --git a/mainwindow.cpp b/mainwindow.cpp index 71f6ce0..991b816 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -13,7 +13,7 @@ MainWindow::MainWindow() dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::LeftDockWidgetArea, dock); - connect(dock->fileOpenButton, SIGNAL(clicked()), &spectrogram, SLOT(pickFile())); + connect(dock, SIGNAL(openFile(QString)), &spectrogram, SLOT(openFile(QString))); connect(dock->sampleRate, SIGNAL(textChanged(QString)), this, SLOT(setSampleRate(QString))); connect(dock, SIGNAL(fftSizeChanged(int)), this, SLOT(setFFTSize(int))); connect(dock->zoomLevelSlider, SIGNAL(valueChanged(int)), this, SLOT(setZoomLevel(int))); diff --git a/spectrogram.cpp b/spectrogram.cpp index 45e5eb0..e6e1ec4 100644 --- a/spectrogram.cpp +++ b/spectrogram.cpp @@ -2,7 +2,6 @@ #include #include -#include #include #include #include @@ -29,11 +28,8 @@ QSize Spectrogram::sizeHint() const { return QSize(1024, 2048); } -void Spectrogram::pickFile() +void Spectrogram::openFile(QString fileName) { - QString fileName = QFileDialog::getOpenFileName( - this, tr("Open File"), "", tr("Sample file (*.cfile *.bin);;All files (*)") - ); if (fileName != nullptr) { try { InputSource *newFile = new InputSource(fileName.toUtf8().constData()); @@ -42,7 +38,6 @@ void Spectrogram::pickFile() resize(fftSize, getHeight()); } catch (std::runtime_error e) { // TODO: display error - return; } } } diff --git a/spectrogram.h b/spectrogram.h index 256fe94..d9cc36e 100644 --- a/spectrogram.h +++ b/spectrogram.h @@ -19,7 +19,7 @@ public: int getStride(); public slots: - void pickFile(); + void openFile(QString fileName); void setSampleRate(int rate); void setFFTSize(int size); void setPowerMax(int power); diff --git a/spectrogramcontrols.cpp b/spectrogramcontrols.cpp index c57d4bc..bbdd84b 100644 --- a/spectrogramcontrols.cpp +++ b/spectrogramcontrols.cpp @@ -1,5 +1,6 @@ #include "spectrogramcontrols.h" #include +#include #include #include @@ -40,9 +41,18 @@ SpectrogramControls::SpectrogramControls(const QString & title, QWidget * parent setWidget(widget); connect(fftSizeSlider, SIGNAL(valueChanged(int)), this, SLOT(fftSizeSliderChanged(int))); + connect(fileOpenButton, SIGNAL(clicked()), this, SLOT(fileOpenButtonClicked())); } void SpectrogramControls::fftSizeSliderChanged(int size) { emit fftSizeChanged((int)pow(2, size)); +} + +void SpectrogramControls::fileOpenButtonClicked() +{ + QString fileName = QFileDialog::getOpenFileName( + this, tr("Open File"), "", tr("Sample file (*.cfile *.bin);;All files (*)") + ); + emit openFile(fileName); } \ No newline at end of file diff --git a/spectrogramcontrols.h b/spectrogramcontrols.h index 7c278a7..623d5cb 100644 --- a/spectrogramcontrols.h +++ b/spectrogramcontrols.h @@ -14,9 +14,11 @@ public: signals: void fftSizeChanged(int size); + void openFile(QString fileName); private slots: void fftSizeSliderChanged(int size); + void fileOpenButtonClicked(); private: QWidget *widget;