Mercurial > hg > svcore
comparison base/Preferences.cpp @ 383:94fc0591ea43 1.2-stable
* merge from trunk (1.2 ended up being tracked from trunk, but we may want
this branch for fixes later)
author | Chris Cannam |
---|---|
date | Wed, 27 Feb 2008 10:32:45 +0000 |
parents | 4fc6f49436b3 |
children |
comparison
equal
deleted
inserted
replaced
349:f39d33b0b265 | 383:94fc0591ea43 |
---|---|
21 | 21 |
22 #include <QDir> | 22 #include <QDir> |
23 #include <QFileInfo> | 23 #include <QFileInfo> |
24 #include <QMutex> | 24 #include <QMutex> |
25 #include <QSettings> | 25 #include <QSettings> |
26 #include <QApplication> | |
27 #include <QFont> | |
26 | 28 |
27 Preferences * | 29 Preferences * |
28 Preferences::m_instance = 0; | 30 Preferences::m_instance = 0; |
29 | 31 |
30 Preferences * | 32 Preferences * |
40 m_propertyBoxLayout(VerticallyStacked), | 42 m_propertyBoxLayout(VerticallyStacked), |
41 m_windowType(HanningWindow), | 43 m_windowType(HanningWindow), |
42 m_resampleQuality(1), | 44 m_resampleQuality(1), |
43 m_omitRecentTemps(true), | 45 m_omitRecentTemps(true), |
44 m_tempDirRoot(""), | 46 m_tempDirRoot(""), |
45 m_resampleOnLoad(false) | 47 m_resampleOnLoad(false), |
48 m_viewFontSize(10), | |
49 m_backgroundMode(BackgroundFromTheme), | |
50 m_showSplash(true) | |
46 { | 51 { |
47 QSettings settings; | 52 QSettings settings; |
48 settings.beginGroup("Preferences"); | 53 settings.beginGroup("Preferences"); |
49 m_spectrogramSmoothing = SpectrogramSmoothing | 54 m_spectrogramSmoothing = SpectrogramSmoothing |
50 (settings.value("spectrogram-smoothing", int(m_spectrogramSmoothing)).toInt()); | 55 (settings.value("spectrogram-smoothing", int(m_spectrogramSmoothing)).toInt()); |
55 (settings.value("window-type", int(HanningWindow)).toInt()); | 60 (settings.value("window-type", int(HanningWindow)).toInt()); |
56 m_resampleQuality = settings.value("resample-quality", 1).toInt(); | 61 m_resampleQuality = settings.value("resample-quality", 1).toInt(); |
57 m_resampleOnLoad = settings.value("resample-on-load", false).toBool(); | 62 m_resampleOnLoad = settings.value("resample-on-load", false).toBool(); |
58 m_backgroundMode = BackgroundMode | 63 m_backgroundMode = BackgroundMode |
59 (settings.value("background-mode", int(BackgroundFromTheme)).toInt()); | 64 (settings.value("background-mode", int(BackgroundFromTheme)).toInt()); |
65 m_viewFontSize = settings.value | |
66 ("view-font-size", int(QApplication::font().pointSize() * 0.9)) | |
67 .toInt(); | |
68 m_showSplash = settings.value("show-splash", true).toBool(); | |
60 settings.endGroup(); | 69 settings.endGroup(); |
61 | 70 |
62 settings.beginGroup("TempDirectory"); | 71 settings.beginGroup("TempDirectory"); |
63 m_tempDirRoot = settings.value("create-in", "$HOME").toString(); | 72 m_tempDirRoot = settings.value("create-in", "$HOME").toString(); |
64 settings.endGroup(); | 73 settings.endGroup(); |
79 props.push_back("Resample Quality"); | 88 props.push_back("Resample Quality"); |
80 props.push_back("Omit Temporaries from Recent Files"); | 89 props.push_back("Omit Temporaries from Recent Files"); |
81 props.push_back("Resample On Load"); | 90 props.push_back("Resample On Load"); |
82 props.push_back("Temporary Directory Root"); | 91 props.push_back("Temporary Directory Root"); |
83 props.push_back("Background Mode"); | 92 props.push_back("Background Mode"); |
93 props.push_back("View Font Size"); | |
94 props.push_back("Show Splash Screen"); | |
84 return props; | 95 return props; |
85 } | 96 } |
86 | 97 |
87 QString | 98 QString |
88 Preferences::getPropertyLabel(const PropertyName &name) const | 99 Preferences::getPropertyLabel(const PropertyName &name) const |
89 { | 100 { |
90 if (name == "Spectrogram Smoothing") { | 101 if (name == "Spectrogram Smoothing") { |
91 return tr("Spectrogram y-axis smoothing:"); | 102 return tr("Spectrogram y-axis interpolation:"); |
92 } | 103 } |
93 if (name == "Tuning Frequency") { | 104 if (name == "Tuning Frequency") { |
94 return tr("Frequency of concert A"); | 105 return tr("Frequency of concert A"); |
95 } | 106 } |
96 if (name == "Property Box Layout") { | 107 if (name == "Property Box Layout") { |
111 if (name == "Temporary Directory Root") { | 122 if (name == "Temporary Directory Root") { |
112 return tr("Location for cache file directory"); | 123 return tr("Location for cache file directory"); |
113 } | 124 } |
114 if (name == "Background Mode") { | 125 if (name == "Background Mode") { |
115 return tr("Background colour preference"); | 126 return tr("Background colour preference"); |
127 } | |
128 if (name == "View Font Size") { | |
129 return tr("Font size for text overlays"); | |
130 } | |
131 if (name == "Show Splash Screen") { | |
132 return tr("Show splash screen on startup"); | |
116 } | 133 } |
117 return name; | 134 return name; |
118 } | 135 } |
119 | 136 |
120 Preferences::PropertyType | 137 Preferences::PropertyType |
145 // It's an arbitrary string, we don't have a set of values for this | 162 // It's an arbitrary string, we don't have a set of values for this |
146 return InvalidProperty; | 163 return InvalidProperty; |
147 } | 164 } |
148 if (name == "Background Mode") { | 165 if (name == "Background Mode") { |
149 return ValueProperty; | 166 return ValueProperty; |
167 } | |
168 if (name == "View Font Size") { | |
169 return RangeProperty; | |
170 } | |
171 if (name == "Show Splash Screen") { | |
172 return ToggleProperty; | |
150 } | 173 } |
151 return InvalidProperty; | 174 return InvalidProperty; |
152 } | 175 } |
153 | 176 |
154 int | 177 int |
194 if (max) *max = 2; | 217 if (max) *max = 2; |
195 if (deflt) *deflt = 0; | 218 if (deflt) *deflt = 0; |
196 return int(m_backgroundMode); | 219 return int(m_backgroundMode); |
197 } | 220 } |
198 | 221 |
222 if (name == "View Font Size") { | |
223 if (min) *min = 3; | |
224 if (max) *max = 48; | |
225 if (deflt) *deflt = int(QApplication::font().pointSize() * 0.9); | |
226 return int(m_viewFontSize); | |
227 } | |
228 | |
229 if (name == "Show Splash Screen") { | |
230 if (deflt) *deflt = 1; | |
231 } | |
232 | |
199 return 0; | 233 return 0; |
200 } | 234 } |
201 | 235 |
202 QString | 236 QString |
203 Preferences::getPropertyValueLabel(const PropertyName &name, | 237 Preferences::getPropertyValueLabel(const PropertyName &name, |
210 if (name == "Window Type") { | 244 if (name == "Window Type") { |
211 switch (WindowType(value)) { | 245 switch (WindowType(value)) { |
212 case RectangularWindow: return tr("Rectangular"); | 246 case RectangularWindow: return tr("Rectangular"); |
213 case BartlettWindow: return tr("Triangular"); | 247 case BartlettWindow: return tr("Triangular"); |
214 case HammingWindow: return tr("Hamming"); | 248 case HammingWindow: return tr("Hamming"); |
215 case HanningWindow: return tr("Hanning"); | 249 case HanningWindow: return tr("Hann"); |
216 case BlackmanWindow: return tr("Blackman"); | 250 case BlackmanWindow: return tr("Blackman"); |
217 case GaussianWindow: return tr("Gaussian"); | 251 case GaussianWindow: return tr("Gaussian"); |
218 case ParzenWindow: return tr("Parzen"); | 252 case ParzenWindow: return tr("Parzen"); |
219 case NuttallWindow: return tr("Nuttall"); | 253 case NuttallWindow: return tr("Nuttall"); |
220 case BlackmanHarrisWindow: return tr("Blackman-Harris"); | 254 case BlackmanHarrisWindow: return tr("Blackman-Harris"); |
228 } | 262 } |
229 } | 263 } |
230 if (name == "Spectrogram Smoothing") { | 264 if (name == "Spectrogram Smoothing") { |
231 switch (value) { | 265 switch (value) { |
232 case NoSpectrogramSmoothing: return tr("None - blocky but accurate"); | 266 case NoSpectrogramSmoothing: return tr("None - blocky but accurate"); |
233 case SpectrogramInterpolated: return tr("Interpolate - fast but fuzzy"); | 267 case SpectrogramInterpolated: return tr("Linear - fast but fuzzy"); |
234 case SpectrogramZeroPadded: return tr("Zero pad FFT - slow but clear"); | 268 case SpectrogramZeroPadded: return tr("4 x Oversampled - slow but clear"); |
235 } | 269 } |
236 } | 270 } |
237 if (name == "Background Mode") { | 271 if (name == "Background Mode") { |
238 switch (value) { | 272 switch (value) { |
239 case BackgroundFromTheme: return tr("Follow desktop theme"); | 273 case BackgroundFromTheme: return tr("Follow desktop theme"); |
272 setResampleQuality(value); | 306 setResampleQuality(value); |
273 } else if (name == "Omit Temporaries from Recent Files") { | 307 } else if (name == "Omit Temporaries from Recent Files") { |
274 setOmitTempsFromRecentFiles(value ? true : false); | 308 setOmitTempsFromRecentFiles(value ? true : false); |
275 } else if (name == "Background Mode") { | 309 } else if (name == "Background Mode") { |
276 setBackgroundMode(BackgroundMode(value)); | 310 setBackgroundMode(BackgroundMode(value)); |
311 } else if (name == "View Font Size") { | |
312 setViewFontSize(value); | |
313 } else if (name == "Show Splash Screen") { | |
314 setShowSplash(value ? true : false); | |
277 } | 315 } |
278 } | 316 } |
279 | 317 |
280 void | 318 void |
281 Preferences::setSpectrogramSmoothing(SpectrogramSmoothing smoothing) | 319 Preferences::setSpectrogramSmoothing(SpectrogramSmoothing smoothing) |
401 settings.endGroup(); | 439 settings.endGroup(); |
402 emit propertyChanged("Background Mode"); | 440 emit propertyChanged("Background Mode"); |
403 } | 441 } |
404 } | 442 } |
405 | 443 |
406 | 444 void |
445 Preferences::setViewFontSize(int size) | |
446 { | |
447 if (m_viewFontSize != size) { | |
448 | |
449 m_viewFontSize = size; | |
450 | |
451 QSettings settings; | |
452 settings.beginGroup("Preferences"); | |
453 settings.setValue("view-font-size", size); | |
454 settings.endGroup(); | |
455 emit propertyChanged("View Font Size"); | |
456 } | |
457 } | |
458 | |
459 void | |
460 Preferences::setShowSplash(bool show) | |
461 { | |
462 if (m_showSplash != show) { | |
463 | |
464 m_showSplash = show; | |
465 | |
466 QSettings settings; | |
467 settings.beginGroup("Preferences"); | |
468 settings.setValue("show-splash", show); | |
469 settings.endGroup(); | |
470 emit propertyChanged("Show Splash Screen"); | |
471 } | |
472 } | |
473 |