Chris@136: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@136: Chris@136: /* Chris@136: Sonic Visualiser Chris@136: An audio file viewer and annotation editor. Chris@136: Centre for Digital Music, Queen Mary, University of London. Chris@136: This file copyright 2006 Chris Cannam. Chris@136: Chris@136: This program is free software; you can redistribute it and/or Chris@136: modify it under the terms of the GNU General Public License as Chris@136: published by the Free Software Foundation; either version 2 of the Chris@136: License, or (at your option) any later version. See the file Chris@136: COPYING included with this distribution for more information. Chris@136: */ Chris@136: Chris@136: #include "Preferences.h" Chris@136: Chris@136: Preferences * Chris@136: Preferences::m_instance = new Preferences(); Chris@136: Chris@136: Preferences::Preferences() : Chris@137: m_smoothSpectrogram(true), Chris@136: m_tuningFrequency(440) Chris@136: { Chris@136: } Chris@136: Chris@136: Preferences::PropertyList Chris@136: Preferences::getProperties() const Chris@136: { Chris@136: PropertyList props; Chris@136: props.push_back("Smooth Spectrogram"); Chris@136: props.push_back("Tuning Frequency"); Chris@138: props.push_back("Property Box Layout"); Chris@136: return props; Chris@136: } Chris@136: Chris@136: QString Chris@136: Preferences::getPropertyLabel(const PropertyName &name) const Chris@136: { Chris@136: if (name == "Smooth Spectrogram") { Chris@136: return tr("Spectrogram Display Smoothing"); Chris@136: } Chris@136: if (name == "Tuning Frequency") { Chris@136: return tr("Tuning Frequency (concert A)"); Chris@136: } Chris@138: if (name == "Property Box Layout") { Chris@138: return tr("Arrangement of Layer Properties"); Chris@138: } Chris@136: return name; Chris@136: } Chris@136: Chris@136: Preferences::PropertyType Chris@136: Preferences::getPropertyType(const PropertyName &name) const Chris@136: { Chris@136: if (name == "Smooth Spectrogram") { Chris@136: return ToggleProperty; Chris@136: } Chris@136: if (name == "Tuning Frequency") { Chris@136: return RangeProperty; Chris@136: } Chris@138: if (name == "Property Box Layout") { Chris@138: return ValueProperty; Chris@138: } Chris@136: return InvalidProperty; Chris@136: } Chris@136: Chris@136: int Chris@136: Preferences::getPropertyRangeAndValue(const PropertyName &name, Chris@136: int *min, int *max) const Chris@136: { Chris@136: if (name == "Smooth Spectrogram") { Chris@136: if (min) *min = 0; Chris@136: if (max) *max = 1; Chris@136: return m_smoothSpectrogram ? 1 : 0; Chris@136: } Chris@136: Chris@136: //!!! freq mapping Chris@136: Chris@138: if (name == "Property Box Layout") { Chris@138: if (min) *min = 0; Chris@138: if (max) *max = 1; Chris@138: return m_propertyBoxLayout == Layered ? 1 : 0; Chris@138: } Chris@138: Chris@136: return 0; Chris@136: } Chris@136: Chris@136: QString Chris@136: Preferences::getPropertyValueLabel(const PropertyName &name, Chris@136: int value) const Chris@136: { Chris@138: if (name == "Property Box Layout") { Chris@138: if (value == 0) return tr("Vertically Stacked"); Chris@138: else return tr("Layered"); Chris@138: } Chris@136: return ""; Chris@136: } Chris@136: Chris@136: QString Chris@136: Preferences::getPropertyContainerName() const Chris@136: { Chris@136: return tr("Preferences"); Chris@136: } Chris@136: Chris@136: QString Chris@136: Preferences::getPropertyContainerIconName() const Chris@136: { Chris@136: return "preferences"; Chris@136: } Chris@136: Chris@136: void Chris@136: Preferences::setProperty(const PropertyName &name, int value) Chris@136: { Chris@136: if (name == "Smooth Spectrogram") { Chris@136: setSmoothSpectrogram(value > 0.1); Chris@136: } else if (name == "Tuning Frequency") { Chris@136: //!!! Chris@138: } else if (name == "Property Box Layout") { Chris@138: setPropertyBoxLayout(value == 0 ? VerticallyStacked : Layered); Chris@136: } Chris@136: } Chris@136: Chris@136: void Chris@136: Preferences::setSmoothSpectrogram(bool smooth) Chris@136: { Chris@138: if (m_smoothSpectrogram != smooth) { Chris@138: m_smoothSpectrogram = smooth; Chris@136: //!!! emit Chris@138: } Chris@136: } Chris@136: Chris@136: void Chris@136: Preferences::setTuningFrequency(float freq) Chris@136: { Chris@138: if (m_tuningFrequency != freq) { Chris@138: m_tuningFrequency = freq; Chris@138: //!!! emit Chris@138: } Chris@136: } Chris@136: Chris@138: void Chris@138: Preferences::setPropertyBoxLayout(PropertyBoxLayout layout) Chris@138: { Chris@138: if (m_propertyBoxLayout != layout) { Chris@138: m_propertyBoxLayout = layout; Chris@138: //!!! emit Chris@138: } Chris@138: } Chris@138: