annotate sv/main/PreferencesDialog.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents c5970f7af886
children
rev   line source
lbajardsilogic@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@0 2
lbajardsilogic@0 3 /*
lbajardsilogic@0 4 Sonic Visualiser
lbajardsilogic@0 5 An audio file viewer and annotation editor.
lbajardsilogic@0 6 Centre for Digital Music, Queen Mary, University of London.
lbajardsilogic@0 7 This file copyright 2006 Chris Cannam.
lbajardsilogic@0 8
lbajardsilogic@0 9 This program is free software; you can redistribute it and/or
lbajardsilogic@0 10 modify it under the terms of the GNU General Public License as
lbajardsilogic@0 11 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@0 12 License, or (at your option) any later version. See the file
lbajardsilogic@0 13 COPYING included with this distribution for more information.
lbajardsilogic@0 14 */
lbajardsilogic@0 15
lbajardsilogic@0 16 #include "PreferencesDialog.h"
lbajardsilogic@0 17
lbajardsilogic@0 18 #include <QGridLayout>
lbajardsilogic@0 19 #include <QComboBox>
lbajardsilogic@0 20 #include <QCheckBox>
lbajardsilogic@0 21 #include <QGroupBox>
lbajardsilogic@0 22 #include <QDoubleSpinBox>
lbajardsilogic@0 23 #include <QLabel>
lbajardsilogic@0 24 #include <QPushButton>
lbajardsilogic@0 25 #include <QHBoxLayout>
lbajardsilogic@0 26 #include <QString>
lbajardsilogic@0 27
lbajardsilogic@0 28 #include "widgets/WindowTypeSelector.h"
lbajardsilogic@0 29 #include "base/Preferences.h"
lbajardsilogic@0 30
lbajardsilogic@0 31 PreferencesDialog::PreferencesDialog(QWidget *parent, Qt::WFlags flags) :
lbajardsilogic@0 32 QDialog(parent, flags)
lbajardsilogic@0 33 {
lbajardsilogic@0 34 setWindowTitle(tr("Application Preferences"));
lbajardsilogic@0 35
lbajardsilogic@0 36 Preferences *prefs = Preferences::getInstance();
lbajardsilogic@0 37
lbajardsilogic@0 38 QGridLayout *grid = new QGridLayout;
lbajardsilogic@0 39 setLayout(grid);
lbajardsilogic@0 40
lbajardsilogic@0 41 QGroupBox *groupBox = new QGroupBox;
lbajardsilogic@42 42 groupBox->setTitle(tr("Sound Access Application Preferences"));
lbajardsilogic@0 43 grid->addWidget(groupBox, 0, 0);
lbajardsilogic@0 44
lbajardsilogic@0 45 QGridLayout *subgrid = new QGridLayout;
lbajardsilogic@0 46 groupBox->setLayout(subgrid);
lbajardsilogic@0 47
lbajardsilogic@0 48 // Create this first, as slots that get called from the ctor will
lbajardsilogic@0 49 // refer to it
lbajardsilogic@0 50 m_applyButton = new QPushButton(tr("Apply"));
lbajardsilogic@0 51
lbajardsilogic@0 52 int min, max, deflt, i;
lbajardsilogic@0 53
lbajardsilogic@0 54 m_windowType = WindowType(prefs->getPropertyRangeAndValue
lbajardsilogic@0 55 ("Window Type", &min, &max, &deflt));
lbajardsilogic@0 56 m_windowTypeSelector = new WindowTypeSelector(m_windowType);
lbajardsilogic@0 57
lbajardsilogic@0 58 connect(m_windowTypeSelector, SIGNAL(windowTypeChanged(WindowType)),
lbajardsilogic@0 59 this, SLOT(windowTypeChanged(WindowType)));
lbajardsilogic@0 60
lbajardsilogic@0 61 QComboBox *smoothing = new QComboBox;
lbajardsilogic@0 62
lbajardsilogic@0 63 int sm = prefs->getPropertyRangeAndValue("Spectrogram Smoothing", &min, &max,
lbajardsilogic@0 64 &deflt);
lbajardsilogic@0 65 m_spectrogramSmoothing = sm;
lbajardsilogic@0 66
lbajardsilogic@0 67 for (i = min; i <= max; ++i) {
lbajardsilogic@0 68 smoothing->addItem(prefs->getPropertyValueLabel("Spectrogram Smoothing", i));
lbajardsilogic@0 69 }
lbajardsilogic@0 70
lbajardsilogic@0 71 smoothing->setCurrentIndex(sm);
lbajardsilogic@0 72
lbajardsilogic@0 73 connect(smoothing, SIGNAL(currentIndexChanged(int)),
lbajardsilogic@0 74 this, SLOT(spectrogramSmoothingChanged(int)));
lbajardsilogic@0 75
lbajardsilogic@0 76 m_tuningFrequency = prefs->getTuningFrequency();
lbajardsilogic@0 77
lbajardsilogic@0 78 QDoubleSpinBox *frequency = new QDoubleSpinBox;
lbajardsilogic@0 79 frequency->setMinimum(100.0);
lbajardsilogic@0 80 frequency->setMaximum(5000.0);
lbajardsilogic@0 81 frequency->setSuffix(" Hz");
lbajardsilogic@0 82 frequency->setSingleStep(1);
lbajardsilogic@0 83 frequency->setValue(m_tuningFrequency);
lbajardsilogic@0 84 frequency->setDecimals(2);
lbajardsilogic@0 85
lbajardsilogic@0 86 connect(frequency, SIGNAL(valueChanged(double)),
lbajardsilogic@0 87 this, SLOT(tuningFrequencyChanged(double)));
lbajardsilogic@0 88
lbajardsilogic@0 89 QComboBox *resampleQuality = new QComboBox;
lbajardsilogic@0 90
lbajardsilogic@0 91 int rsq = prefs->getPropertyRangeAndValue("Resample Quality", &min, &max,
lbajardsilogic@0 92 &deflt);
lbajardsilogic@0 93 m_resampleQuality = rsq;
lbajardsilogic@0 94
lbajardsilogic@0 95 for (i = min; i <= max; ++i) {
lbajardsilogic@0 96 resampleQuality->addItem(prefs->getPropertyValueLabel("Resample Quality", i));
lbajardsilogic@0 97 }
lbajardsilogic@0 98
lbajardsilogic@0 99 resampleQuality->setCurrentIndex(rsq);
lbajardsilogic@0 100
lbajardsilogic@0 101 connect(resampleQuality, SIGNAL(currentIndexChanged(int)),
lbajardsilogic@0 102 this, SLOT(resampleQualityChanged(int)));
lbajardsilogic@0 103
lbajardsilogic@0 104 int row = 0;
lbajardsilogic@0 105
lbajardsilogic@0 106 subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel
lbajardsilogic@0 107 ("Tuning Frequency"))),
lbajardsilogic@0 108 row, 0);
lbajardsilogic@0 109 subgrid->addWidget(frequency, row++, 1, 1, 2);
lbajardsilogic@0 110
lbajardsilogic@0 111 subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel
lbajardsilogic@0 112 ("Resample Quality"))),
lbajardsilogic@0 113 row, 0);
lbajardsilogic@0 114 subgrid->addWidget(resampleQuality, row++, 1, 1, 2);
lbajardsilogic@0 115
lbajardsilogic@0 116 subgrid->addWidget(new QLabel(prefs->getPropertyLabel
lbajardsilogic@0 117 ("Spectrogram Smoothing")),
lbajardsilogic@0 118 row, 0);
lbajardsilogic@0 119 subgrid->addWidget(smoothing, row++, 1, 1, 2);
lbajardsilogic@0 120
lbajardsilogic@0 121 subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel
lbajardsilogic@0 122 ("Window Type"))),
lbajardsilogic@0 123 row, 0);
lbajardsilogic@0 124 subgrid->addWidget(m_windowTypeSelector, row++, 1, 2, 2);
lbajardsilogic@0 125 subgrid->setRowStretch(row, 10);
lbajardsilogic@0 126 row++;
lbajardsilogic@0 127
lbajardsilogic@0 128 QHBoxLayout *hbox = new QHBoxLayout;
lbajardsilogic@0 129 grid->addLayout(hbox, 1, 0);
lbajardsilogic@0 130
lbajardsilogic@0 131 QPushButton *ok = new QPushButton(tr("OK"));
lbajardsilogic@0 132 QPushButton *cancel = new QPushButton(tr("Cancel"));
lbajardsilogic@0 133 hbox->addStretch(10);
lbajardsilogic@0 134 hbox->addWidget(ok);
lbajardsilogic@0 135 hbox->addWidget(m_applyButton);
lbajardsilogic@0 136 hbox->addWidget(cancel);
lbajardsilogic@0 137 connect(ok, SIGNAL(clicked()), this, SLOT(okClicked()));
lbajardsilogic@0 138 connect(m_applyButton, SIGNAL(clicked()), this, SLOT(applyClicked()));
lbajardsilogic@0 139 connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
lbajardsilogic@0 140
lbajardsilogic@0 141 m_applyButton->setEnabled(false);
lbajardsilogic@0 142 }
lbajardsilogic@0 143
lbajardsilogic@0 144 PreferencesDialog::~PreferencesDialog()
lbajardsilogic@0 145 {
lbajardsilogic@0 146 std::cerr << "PreferencesDialog::~PreferencesDialog()" << std::endl;
lbajardsilogic@0 147 }
lbajardsilogic@0 148
lbajardsilogic@0 149 void
lbajardsilogic@0 150 PreferencesDialog::windowTypeChanged(WindowType type)
lbajardsilogic@0 151 {
lbajardsilogic@0 152 m_windowType = type;
lbajardsilogic@0 153 m_applyButton->setEnabled(true);
lbajardsilogic@0 154 }
lbajardsilogic@0 155
lbajardsilogic@0 156 void
lbajardsilogic@0 157 PreferencesDialog::spectrogramSmoothingChanged(int smoothing)
lbajardsilogic@0 158 {
lbajardsilogic@0 159 m_spectrogramSmoothing = smoothing;
lbajardsilogic@0 160 m_applyButton->setEnabled(true);
lbajardsilogic@0 161 }
lbajardsilogic@0 162
lbajardsilogic@0 163 void
lbajardsilogic@0 164 PreferencesDialog::tuningFrequencyChanged(double freq)
lbajardsilogic@0 165 {
lbajardsilogic@0 166 m_tuningFrequency = freq;
lbajardsilogic@0 167 m_applyButton->setEnabled(true);
lbajardsilogic@0 168 }
lbajardsilogic@0 169
lbajardsilogic@0 170 void
lbajardsilogic@0 171 PreferencesDialog::resampleQualityChanged(int q)
lbajardsilogic@0 172 {
lbajardsilogic@0 173 m_resampleQuality = q;
lbajardsilogic@0 174 m_applyButton->setEnabled(true);
lbajardsilogic@0 175 }
lbajardsilogic@0 176
lbajardsilogic@0 177 void
lbajardsilogic@0 178 PreferencesDialog::okClicked()
lbajardsilogic@0 179 {
lbajardsilogic@0 180 applyClicked();
lbajardsilogic@0 181 accept();
lbajardsilogic@0 182 }
lbajardsilogic@0 183
lbajardsilogic@0 184 void
lbajardsilogic@0 185 PreferencesDialog::applyClicked()
lbajardsilogic@0 186 {
lbajardsilogic@0 187 Preferences *prefs = Preferences::getInstance();
lbajardsilogic@0 188 prefs->setWindowType(WindowType(m_windowType));
lbajardsilogic@0 189 prefs->setSpectrogramSmoothing(Preferences::SpectrogramSmoothing
lbajardsilogic@0 190 (m_spectrogramSmoothing));
lbajardsilogic@0 191 prefs->setTuningFrequency(m_tuningFrequency);
lbajardsilogic@0 192 prefs->setResampleQuality(m_resampleQuality);
lbajardsilogic@0 193 m_applyButton->setEnabled(false);
lbajardsilogic@0 194 }
lbajardsilogic@0 195
lbajardsilogic@0 196 void
lbajardsilogic@0 197 PreferencesDialog::cancelClicked()
lbajardsilogic@0 198 {
lbajardsilogic@0 199 reject();
lbajardsilogic@0 200 }
lbajardsilogic@0 201