Mercurial > hg > sonic-visualiser
diff main/PreferencesDialog.cpp @ 456:4bccf2014f80
Merge from branch "templating"
author | Chris Cannam |
---|---|
date | Sun, 26 Jun 2011 19:56:01 +0100 |
parents | 868f73825b37 e3644cd9cf99 |
children | 33d0632255b5 e5e6625deb85 |
line wrap: on
line diff
--- a/main/PreferencesDialog.cpp Fri Jun 24 12:17:44 2011 +0100 +++ b/main/PreferencesDialog.cpp Sun Jun 26 19:56:01 2011 +0100 @@ -31,12 +31,16 @@ #include <QFileDialog> #include <QMessageBox> #include <QSpinBox> +#include <QListWidget> #include <QSettings> +#include <set> + #include "widgets/WindowTypeSelector.h" #include "widgets/IconLoader.h" #include "base/Preferences.h" #include "audioio/AudioTargetFactory.h" +#include "base/ResourceFinder.h" PreferencesDialog::PreferencesDialog(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags), @@ -50,10 +54,10 @@ QGridLayout *grid = new QGridLayout; setLayout(grid); - QTabWidget *tab = new QTabWidget; - grid->addWidget(tab, 0, 0); + m_tabs = new QTabWidget; + grid->addWidget(m_tabs, 0, 0); - tab->setTabPosition(QTabWidget::North); + m_tabs->setTabPosition(QTabWidget::North); // Create this first, as slots that get called from the ctor will // refer to it @@ -257,7 +261,8 @@ subgrid->setRowStretch(row, 10); - tab->addTab(frame, tr("&General")); + m_tabOrdering[GeneralTab] = m_tabs->count(); + m_tabs->addTab(frame, tr("&General")); // Appearance tab @@ -295,7 +300,8 @@ subgrid->setRowStretch(row, 10); - tab->addTab(frame, tr("&Appearance")); + m_tabOrdering[AppearanceTab] = m_tabs->count(); + m_tabs->addTab(frame, tr("&Appearance")); // Analysis tab @@ -328,7 +334,53 @@ subgrid->setRowStretch(row, 10); - tab->addTab(frame, tr("Anal&ysis")); + m_tabOrdering[AnalysisTab] = m_tabs->count(); + m_tabs->addTab(frame, tr("Anal&ysis")); + + // Template tab + + frame = new QFrame; + subgrid = new QGridLayout; + frame->setLayout(subgrid); + row = 0; + + subgrid->addWidget(new QLabel(tr("Default session template for audio files:")), row++, 0); + + QListWidget *lw = new QListWidget(); + subgrid->addWidget(lw, row, 0); + subgrid->setRowStretch(row, 10); + row++; + + settings.beginGroup("MainWindow"); + m_currentTemplate = settings.value("sessiontemplate", "").toString(); + settings.endGroup(); + + lw->addItem(tr("Standard Waveform")); + if (m_currentTemplate == "" || m_currentTemplate == "default") { + lw->setCurrentRow(lw->count()-1); + } + m_templates.push_back(""); + + QStringList templates = ResourceFinder().getResourceFiles("templates", "svt"); + + std::set<QString> byName; + foreach (QString t, templates) { + byName.insert(QFileInfo(t).baseName()); + } + + foreach (QString t, byName) { + if (t.toLower() == "default") continue; + m_templates.push_back(t); + lw->addItem(t); + if (m_currentTemplate == t) { + lw->setCurrentRow(lw->count()-1); + } + } + + connect(lw, SIGNAL(currentRowChanged(int)), this, SLOT(defaultTemplateChanged(int))); + + m_tabOrdering[TemplateTab] = m_tabs->count(); + m_tabs->addTab(frame, tr("Session &Template")); QDialogButtonBox *bb = new QDialogButtonBox(Qt::Horizontal); grid->addWidget(bb, 1, 0); @@ -351,6 +403,14 @@ } void +PreferencesDialog::switchToTab(Tab t) +{ + if (m_tabOrdering.contains(t)) { + m_tabs->setCurrentIndex(m_tabOrdering[t]); + } +} + +void PreferencesDialog::windowTypeChanged(WindowType type) { m_windowType = type; @@ -417,6 +477,13 @@ } void +PreferencesDialog::defaultTemplateChanged(int i) +{ + m_currentTemplate = m_templates[i]; + m_applyButton->setEnabled(true); +} + +void PreferencesDialog::tempDirRootChanged(QString r) { m_tempDirRoot = r; @@ -488,10 +555,15 @@ AudioTargetFactory::getInstance()->getCallbackTargetNames(); QSettings settings; + settings.beginGroup("Preferences"); settings.setValue("audio-target", devices[m_audioDevice]); settings.endGroup(); + settings.beginGroup("MainWindow"); + settings.setValue("sessiontemplate", m_currentTemplate); + settings.endGroup(); + m_applyButton->setEnabled(false); if (m_changesOnRestart) {