comparison base/Preferences.cpp @ 892:451f7f3ab6e7

Make octave numbering configurable, and change default to C4 = middle C
author Chris Cannam
date Thu, 27 Mar 2014 13:32:56 +0000
parents 75f154085a4d
children 4c7b4040bd2d
comparison
equal deleted inserted replaced
889:7f97a4d9d14f 892:451f7f3ab6e7
45 m_tempDirRoot(""), 45 m_tempDirRoot(""),
46 m_resampleOnLoad(false), 46 m_resampleOnLoad(false),
47 m_viewFontSize(10), 47 m_viewFontSize(10),
48 m_backgroundMode(BackgroundFromTheme), 48 m_backgroundMode(BackgroundFromTheme),
49 m_timeToTextMode(TimeToTextMs), 49 m_timeToTextMode(TimeToTextMs),
50 m_octave(4),
50 m_showSplash(true) 51 m_showSplash(true)
51 { 52 {
52 QSettings settings; 53 QSettings settings;
53 settings.beginGroup("Preferences"); 54 settings.beginGroup("Preferences");
54 m_spectrogramSmoothing = SpectrogramSmoothing 55 m_spectrogramSmoothing = SpectrogramSmoothing
64 m_resampleOnLoad = settings.value("resample-on-load", false).toBool(); 65 m_resampleOnLoad = settings.value("resample-on-load", false).toBool();
65 m_backgroundMode = BackgroundMode 66 m_backgroundMode = BackgroundMode
66 (settings.value("background-mode", int(BackgroundFromTheme)).toInt()); 67 (settings.value("background-mode", int(BackgroundFromTheme)).toInt());
67 m_timeToTextMode = TimeToTextMode 68 m_timeToTextMode = TimeToTextMode
68 (settings.value("time-to-text-mode", int(TimeToTextMs)).toInt()); 69 (settings.value("time-to-text-mode", int(TimeToTextMs)).toInt());
70 m_octave = (settings.value("octave-of-middle-c", 4)).toInt();
69 m_viewFontSize = settings.value("view-font-size", 10).toInt(); 71 m_viewFontSize = settings.value("view-font-size", 10).toInt();
70 m_showSplash = settings.value("show-splash", true).toBool(); 72 m_showSplash = settings.value("show-splash", true).toBool();
71 settings.endGroup(); 73 settings.endGroup();
72 74
73 settings.beginGroup("TempDirectory"); 75 settings.beginGroup("TempDirectory");
92 props.push_back("Omit Temporaries from Recent Files"); 94 props.push_back("Omit Temporaries from Recent Files");
93 props.push_back("Resample On Load"); 95 props.push_back("Resample On Load");
94 props.push_back("Temporary Directory Root"); 96 props.push_back("Temporary Directory Root");
95 props.push_back("Background Mode"); 97 props.push_back("Background Mode");
96 props.push_back("Time To Text Mode"); 98 props.push_back("Time To Text Mode");
99 props.push_back("Octave Numbering System");
97 props.push_back("View Font Size"); 100 props.push_back("View Font Size");
98 props.push_back("Show Splash Screen"); 101 props.push_back("Show Splash Screen");
99 return props; 102 return props;
100 } 103 }
101 104
133 return tr("Background colour preference"); 136 return tr("Background colour preference");
134 } 137 }
135 if (name == "Time To Text Mode") { 138 if (name == "Time To Text Mode") {
136 return tr("Time display format"); 139 return tr("Time display format");
137 } 140 }
141 if (name == "Octave Numbering System") {
142 return tr("Label middle C as");
143 }
138 if (name == "View Font Size") { 144 if (name == "View Font Size") {
139 return tr("Font size for text overlays"); 145 return tr("Font size for text overlays");
140 } 146 }
141 if (name == "Show Splash Screen") { 147 if (name == "Show Splash Screen") {
142 return tr("Show splash screen on startup"); 148 return tr("Show splash screen on startup");
177 } 183 }
178 if (name == "Background Mode") { 184 if (name == "Background Mode") {
179 return ValueProperty; 185 return ValueProperty;
180 } 186 }
181 if (name == "Time To Text Mode") { 187 if (name == "Time To Text Mode") {
188 return ValueProperty;
189 }
190 if (name == "Octave Numbering System") {
182 return ValueProperty; 191 return ValueProperty;
183 } 192 }
184 if (name == "View Font Size") { 193 if (name == "View Font Size") {
185 return RangeProperty; 194 return RangeProperty;
186 } 195 }
245 if (min) *min = 0; 254 if (min) *min = 0;
246 if (max) *max = 6; 255 if (max) *max = 6;
247 if (deflt) *deflt = 0; 256 if (deflt) *deflt = 0;
248 return int(m_timeToTextMode); 257 return int(m_timeToTextMode);
249 } 258 }
259
260 if (name == "Octave Numbering System") {
261 // we don't support arbitrary octaves in the gui, because we
262 // want to be able to label what the octave system comes
263 // from. so we support 0, 3, 4 and 5.
264 if (min) *min = 0;
265 if (max) *max = 3;
266 if (deflt) *deflt = 2;
267 return int(getSystemWithMiddleCInOctave(m_octave));
268 }
250 269
251 if (name == "View Font Size") { 270 if (name == "View Font Size") {
252 if (min) *min = 3; 271 if (min) *min = 3;
253 if (max) *max = 48; 272 if (max) *max = 48;
254 if (deflt) *deflt = 10; 273 if (deflt) *deflt = 10;
318 case TimeToText24Frame: return tr("24 FPS"); 337 case TimeToText24Frame: return tr("24 FPS");
319 case TimeToText25Frame: return tr("25 FPS"); 338 case TimeToText25Frame: return tr("25 FPS");
320 case TimeToText30Frame: return tr("30 FPS"); 339 case TimeToText30Frame: return tr("30 FPS");
321 case TimeToText50Frame: return tr("50 FPS"); 340 case TimeToText50Frame: return tr("50 FPS");
322 case TimeToText60Frame: return tr("60 FPS"); 341 case TimeToText60Frame: return tr("60 FPS");
342 }
343 }
344 if (name == "Octave Numbering System") {
345 switch (value) {
346 case C0_Centre: return tr("C0 - middle of octave scale");
347 case C3_Logic: return tr("C3 - common MIDI sequencer convention");
348 case C4_ASA: return tr("C4 - ASA American standard");
349 case C5_Sonar: return tr("C5 - used in Cakewalk and others");
323 } 350 }
324 } 351 }
325 352
326 return ""; 353 return "";
327 } 354 }
357 setOmitTempsFromRecentFiles(value ? true : false); 384 setOmitTempsFromRecentFiles(value ? true : false);
358 } else if (name == "Background Mode") { 385 } else if (name == "Background Mode") {
359 setBackgroundMode(BackgroundMode(value)); 386 setBackgroundMode(BackgroundMode(value));
360 } else if (name == "Time To Text Mode") { 387 } else if (name == "Time To Text Mode") {
361 setTimeToTextMode(TimeToTextMode(value)); 388 setTimeToTextMode(TimeToTextMode(value));
389 } else if (name == "Octave Numbering System") {
390 setOctaveOfMiddleC(getOctaveOfMiddleCInSystem
391 (OctaveNumberingSystem(value)));
362 } else if (name == "View Font Size") { 392 } else if (name == "View Font Size") {
363 setViewFontSize(value); 393 setViewFontSize(value);
364 } else if (name == "Show Splash Screen") { 394 } else if (name == "Show Splash Screen") {
365 setShowSplash(value ? true : false); 395 setShowSplash(value ? true : false);
366 } 396 }
523 emit propertyChanged("Time To Text Mode"); 553 emit propertyChanged("Time To Text Mode");
524 } 554 }
525 } 555 }
526 556
527 void 557 void
558 Preferences::setOctaveOfMiddleC(int oct)
559 {
560 if (m_octave != oct) {
561
562 m_octave = oct;
563
564 QSettings settings;
565 settings.beginGroup("Preferences");
566 settings.setValue("octave-of-middle-c", int(oct));
567 settings.endGroup();
568 emit propertyChanged("Octave Numbering System");
569 }
570 }
571
572 int
573 Preferences::getOctaveOfMiddleCInSystem(OctaveNumberingSystem s)
574 {
575 switch (s) {
576 case C0_Centre: return 0;
577 case C3_Logic: return 3;
578 case C4_ASA: return 4;
579 case C5_Sonar: return 5;
580 default: return 4;
581 }
582 }
583
584 Preferences::OctaveNumberingSystem
585 Preferences::getSystemWithMiddleCInOctave(int o)
586 {
587 switch (o) {
588 case 0: return C0_Centre;
589 case 3: return C3_Logic;
590 case 4: return C4_ASA;
591 case 5: return C5_Sonar;
592 default: return C4_ASA;
593 }
594 }
595
596 void
528 Preferences::setViewFontSize(int size) 597 Preferences::setViewFontSize(int size)
529 { 598 {
530 if (m_viewFontSize != size) { 599 if (m_viewFontSize != size) {
531 600
532 m_viewFontSize = size; 601 m_viewFontSize = size;