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