annotate base/Preferences.cpp @ 661:a4faa1840384

* If a FileSource URL won't convert at all in strict mode, try again in tolerant mode (necessary for e.g. filenames with square brackets in them)
author Chris Cannam
date Tue, 19 Oct 2010 21:47:55 +0100
parents 75f154085a4d
children 2c4aca969c24 451f7f3ab6e7
rev   line source
Chris@136 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@136 2
Chris@136 3 /*
Chris@136 4 Sonic Visualiser
Chris@136 5 An audio file viewer and annotation editor.
Chris@136 6 Centre for Digital Music, Queen Mary, University of London.
Chris@202 7 This file copyright 2006 Chris Cannam and QMUL.
Chris@136 8
Chris@136 9 This program is free software; you can redistribute it and/or
Chris@136 10 modify it under the terms of the GNU General Public License as
Chris@136 11 published by the Free Software Foundation; either version 2 of the
Chris@136 12 License, or (at your option) any later version. See the file
Chris@136 13 COPYING included with this distribution for more information.
Chris@136 14 */
Chris@136 15
Chris@136 16 #include "Preferences.h"
Chris@136 17
Chris@145 18 #include "Exceptions.h"
Chris@145 19
Chris@145 20 #include "TempDirectory.h"
Chris@145 21
Chris@145 22 #include <QDir>
Chris@145 23 #include <QFileInfo>
Chris@156 24 #include <QMutex>
Chris@156 25 #include <QSettings>
Chris@145 26
Chris@136 27 Preferences *
Chris@156 28 Preferences::m_instance = 0;
Chris@156 29
Chris@156 30 Preferences *
Chris@156 31 Preferences::getInstance()
Chris@156 32 {
Chris@156 33 if (!m_instance) m_instance = new Preferences();
Chris@156 34 return m_instance;
Chris@156 35 }
Chris@136 36
Chris@136 37 Preferences::Preferences() :
Chris@553 38 m_spectrogramSmoothing(SpectrogramInterpolated),
Chris@553 39 m_spectrogramXSmoothing(SpectrogramXInterpolated),
Chris@140 40 m_tuningFrequency(440),
Chris@140 41 m_propertyBoxLayout(VerticallyStacked),
Chris@164 42 m_windowType(HanningWindow),
Chris@277 43 m_resampleQuality(1),
Chris@297 44 m_omitRecentTemps(true),
Chris@297 45 m_tempDirRoot(""),
Chris@354 46 m_resampleOnLoad(false),
Chris@354 47 m_viewFontSize(10),
Chris@372 48 m_backgroundMode(BackgroundFromTheme),
Chris@612 49 m_timeToTextMode(TimeToTextMs),
Chris@372 50 m_showSplash(true)
Chris@136 51 {
Chris@156 52 QSettings settings;
Chris@156 53 settings.beginGroup("Preferences");
Chris@246 54 m_spectrogramSmoothing = SpectrogramSmoothing
Chris@553 55 (settings.value("spectrogram-y-smoothing", int(m_spectrogramSmoothing)).toInt());
Chris@553 56 m_spectrogramXSmoothing = SpectrogramXSmoothing
Chris@553 57 (settings.value("spectrogram-x-smoothing", int(m_spectrogramXSmoothing)).toInt());
Chris@156 58 m_tuningFrequency = settings.value("tuning-frequency", 440.f).toDouble();
Chris@145 59 m_propertyBoxLayout = PropertyBoxLayout
Chris@156 60 (settings.value("property-box-layout", int(VerticallyStacked)).toInt());
Chris@145 61 m_windowType = WindowType
Chris@156 62 (settings.value("window-type", int(HanningWindow)).toInt());
Chris@164 63 m_resampleQuality = settings.value("resample-quality", 1).toInt();
Chris@304 64 m_resampleOnLoad = settings.value("resample-on-load", false).toBool();
Chris@297 65 m_backgroundMode = BackgroundMode
Chris@297 66 (settings.value("background-mode", int(BackgroundFromTheme)).toInt());
Chris@612 67 m_timeToTextMode = TimeToTextMode
Chris@612 68 (settings.value("time-to-text-mode", int(TimeToTextMs)).toInt());
Chris@387 69 m_viewFontSize = settings.value("view-font-size", 10).toInt();
Chris@372 70 m_showSplash = settings.value("show-splash", true).toBool();
Chris@297 71 settings.endGroup();
Chris@297 72
Chris@297 73 settings.beginGroup("TempDirectory");
Chris@297 74 m_tempDirRoot = settings.value("create-in", "$HOME").toString();
Chris@156 75 settings.endGroup();
Chris@145 76 }
Chris@145 77
Chris@145 78 Preferences::~Preferences()
Chris@145 79 {
Chris@136 80 }
Chris@136 81
Chris@136 82 Preferences::PropertyList
Chris@136 83 Preferences::getProperties() const
Chris@136 84 {
Chris@136 85 PropertyList props;
Chris@553 86 props.push_back("Spectrogram Y Smoothing");
Chris@553 87 props.push_back("Spectrogram X Smoothing");
Chris@136 88 props.push_back("Tuning Frequency");
Chris@138 89 props.push_back("Property Box Layout");
Chris@140 90 props.push_back("Window Type");
Chris@164 91 props.push_back("Resample Quality");
Chris@277 92 props.push_back("Omit Temporaries from Recent Files");
Chris@297 93 props.push_back("Resample On Load");
Chris@297 94 props.push_back("Temporary Directory Root");
Chris@297 95 props.push_back("Background Mode");
Chris@612 96 props.push_back("Time To Text Mode");
Chris@354 97 props.push_back("View Font Size");
Chris@372 98 props.push_back("Show Splash Screen");
Chris@136 99 return props;
Chris@136 100 }
Chris@136 101
Chris@136 102 QString
Chris@136 103 Preferences::getPropertyLabel(const PropertyName &name) const
Chris@136 104 {
Chris@553 105 if (name == "Spectrogram Y Smoothing") {
Chris@372 106 return tr("Spectrogram y-axis interpolation:");
Chris@136 107 }
Chris@553 108 if (name == "Spectrogram X Smoothing") {
Chris@553 109 return tr("Spectrogram x-axis interpolation:");
Chris@553 110 }
Chris@136 111 if (name == "Tuning Frequency") {
Chris@141 112 return tr("Frequency of concert A");
Chris@136 113 }
Chris@138 114 if (name == "Property Box Layout") {
Chris@141 115 return tr("Property box layout");
Chris@138 116 }
Chris@140 117 if (name == "Window Type") {
Chris@141 118 return tr("Spectral analysis window shape");
Chris@140 119 }
Chris@164 120 if (name == "Resample Quality") {
Chris@165 121 return tr("Playback resampler type");
Chris@164 122 }
Chris@277 123 if (name == "Omit Temporaries from Recent Files") {
Chris@297 124 return tr("Omit temporaries from Recent Files menu");
Chris@297 125 }
Chris@297 126 if (name == "Resample On Load") {
Chris@297 127 return tr("Resample mismatching files on import");
Chris@297 128 }
Chris@297 129 if (name == "Temporary Directory Root") {
Chris@297 130 return tr("Location for cache file directory");
Chris@297 131 }
Chris@297 132 if (name == "Background Mode") {
Chris@297 133 return tr("Background colour preference");
Chris@277 134 }
Chris@612 135 if (name == "Time To Text Mode") {
Chris@612 136 return tr("Time display format");
Chris@612 137 }
Chris@354 138 if (name == "View Font Size") {
Chris@354 139 return tr("Font size for text overlays");
Chris@354 140 }
Chris@372 141 if (name == "Show Splash Screen") {
Chris@372 142 return tr("Show splash screen on startup");
Chris@372 143 }
Chris@136 144 return name;
Chris@136 145 }
Chris@136 146
Chris@136 147 Preferences::PropertyType
Chris@136 148 Preferences::getPropertyType(const PropertyName &name) const
Chris@136 149 {
Chris@553 150 if (name == "Spectrogram Y Smoothing") {
Chris@553 151 return ValueProperty;
Chris@553 152 }
Chris@553 153 if (name == "Spectrogram X Smoothing") {
Chris@246 154 return ValueProperty;
Chris@136 155 }
Chris@136 156 if (name == "Tuning Frequency") {
Chris@136 157 return RangeProperty;
Chris@136 158 }
Chris@138 159 if (name == "Property Box Layout") {
Chris@138 160 return ValueProperty;
Chris@138 161 }
Chris@140 162 if (name == "Window Type") {
Chris@140 163 return ValueProperty;
Chris@140 164 }
Chris@164 165 if (name == "Resample Quality") {
Chris@164 166 return ValueProperty;
Chris@164 167 }
Chris@277 168 if (name == "Omit Temporaries from Recent Files") {
Chris@277 169 return ToggleProperty;
Chris@277 170 }
Chris@297 171 if (name == "Resample On Load") {
Chris@297 172 return ToggleProperty;
Chris@297 173 }
Chris@297 174 if (name == "Temporary Directory Root") {
Chris@297 175 // It's an arbitrary string, we don't have a set of values for this
Chris@297 176 return InvalidProperty;
Chris@297 177 }
Chris@297 178 if (name == "Background Mode") {
Chris@297 179 return ValueProperty;
Chris@297 180 }
Chris@612 181 if (name == "Time To Text Mode") {
Chris@612 182 return ValueProperty;
Chris@612 183 }
Chris@354 184 if (name == "View Font Size") {
Chris@354 185 return RangeProperty;
Chris@354 186 }
Chris@372 187 if (name == "Show Splash Screen") {
Chris@372 188 return ToggleProperty;
Chris@372 189 }
Chris@136 190 return InvalidProperty;
Chris@136 191 }
Chris@136 192
Chris@136 193 int
Chris@136 194 Preferences::getPropertyRangeAndValue(const PropertyName &name,
Chris@245 195 int *min, int *max, int *deflt) const
Chris@136 196 {
Chris@553 197 if (name == "Spectrogram Y Smoothing") {
Chris@136 198 if (min) *min = 0;
Chris@553 199 if (max) *max = 3;
Chris@553 200 if (deflt) *deflt = int(SpectrogramInterpolated);
Chris@246 201 return int(m_spectrogramSmoothing);
Chris@136 202 }
Chris@553 203 if (name == "Spectrogram X Smoothing") {
Chris@553 204 if (min) *min = 0;
Chris@553 205 if (max) *max = 1;
Chris@553 206 if (deflt) *deflt = int(SpectrogramXInterpolated);
Chris@553 207 return int(m_spectrogramXSmoothing);
Chris@553 208 }
Chris@136 209
Chris@136 210 //!!! freq mapping
Chris@136 211
Chris@138 212 if (name == "Property Box Layout") {
Chris@138 213 if (min) *min = 0;
Chris@138 214 if (max) *max = 1;
Chris@245 215 if (deflt) *deflt = 0;
Chris@138 216 return m_propertyBoxLayout == Layered ? 1 : 0;
Chris@138 217 }
Chris@138 218
Chris@140 219 if (name == "Window Type") {
Chris@140 220 if (min) *min = int(RectangularWindow);
Chris@142 221 if (max) *max = int(BlackmanHarrisWindow);
Chris@245 222 if (deflt) *deflt = int(HanningWindow);
Chris@140 223 return int(m_windowType);
Chris@140 224 }
Chris@140 225
Chris@164 226 if (name == "Resample Quality") {
Chris@164 227 if (min) *min = 0;
Chris@164 228 if (max) *max = 2;
Chris@245 229 if (deflt) *deflt = 1;
Chris@164 230 return m_resampleQuality;
Chris@164 231 }
Chris@164 232
Chris@277 233 if (name == "Omit Temporaries from Recent Files") {
Chris@277 234 if (deflt) *deflt = 1;
Chris@277 235 }
Chris@277 236
Chris@297 237 if (name == "Background Mode") {
Chris@297 238 if (min) *min = 0;
Chris@297 239 if (max) *max = 2;
Chris@297 240 if (deflt) *deflt = 0;
Chris@297 241 return int(m_backgroundMode);
Chris@297 242 }
Chris@297 243
Chris@612 244 if (name == "Time To Text Mode") {
Chris@612 245 if (min) *min = 0;
Chris@612 246 if (max) *max = 6;
Chris@612 247 if (deflt) *deflt = 0;
Chris@612 248 return int(m_timeToTextMode);
Chris@612 249 }
Chris@612 250
Chris@354 251 if (name == "View Font Size") {
Chris@354 252 if (min) *min = 3;
Chris@354 253 if (max) *max = 48;
Chris@387 254 if (deflt) *deflt = 10;
Chris@354 255 return int(m_viewFontSize);
Chris@354 256 }
Chris@354 257
Chris@372 258 if (name == "Show Splash Screen") {
Chris@372 259 if (deflt) *deflt = 1;
Chris@372 260 }
Chris@372 261
Chris@136 262 return 0;
Chris@136 263 }
Chris@136 264
Chris@136 265 QString
Chris@136 266 Preferences::getPropertyValueLabel(const PropertyName &name,
Chris@136 267 int value) const
Chris@136 268 {
Chris@138 269 if (name == "Property Box Layout") {
Chris@141 270 if (value == 0) return tr("Show boxes for all panes");
Chris@141 271 else return tr("Show box for current pane only");
Chris@138 272 }
Chris@140 273 if (name == "Window Type") {
Chris@140 274 switch (WindowType(value)) {
Chris@140 275 case RectangularWindow: return tr("Rectangular");
Chris@141 276 case BartlettWindow: return tr("Triangular");
Chris@140 277 case HammingWindow: return tr("Hamming");
Chris@381 278 case HanningWindow: return tr("Hann");
Chris@140 279 case BlackmanWindow: return tr("Blackman");
Chris@140 280 case GaussianWindow: return tr("Gaussian");
Chris@140 281 case ParzenWindow: return tr("Parzen");
Chris@142 282 case NuttallWindow: return tr("Nuttall");
Chris@142 283 case BlackmanHarrisWindow: return tr("Blackman-Harris");
Chris@140 284 }
Chris@140 285 }
Chris@164 286 if (name == "Resample Quality") {
Chris@164 287 switch (value) {
Chris@164 288 case 0: return tr("Fastest");
Chris@165 289 case 1: return tr("Standard");
Chris@164 290 case 2: return tr("Highest quality");
Chris@164 291 }
Chris@164 292 }
Chris@553 293 if (name == "Spectrogram Y Smoothing") {
Chris@246 294 switch (value) {
Chris@553 295 case NoSpectrogramSmoothing: return tr("None");
Chris@553 296 case SpectrogramInterpolated: return tr("Linear interpolation");
Chris@553 297 case SpectrogramZeroPadded: return tr("4 x Oversampling");
Chris@553 298 case SpectrogramZeroPaddedAndInterpolated: return tr("4 x Oversampling with interpolation");
Chris@553 299 }
Chris@553 300 }
Chris@553 301 if (name == "Spectrogram X Smoothing") {
Chris@553 302 switch (value) {
Chris@553 303 case NoSpectrogramXSmoothing: return tr("None");
Chris@553 304 case SpectrogramXInterpolated: return tr("Linear interpolation");
Chris@246 305 }
Chris@246 306 }
Chris@297 307 if (name == "Background Mode") {
Chris@297 308 switch (value) {
Chris@297 309 case BackgroundFromTheme: return tr("Follow desktop theme");
Chris@297 310 case DarkBackground: return tr("Dark background");
Chris@297 311 case LightBackground: return tr("Light background");
Chris@297 312 }
Chris@297 313 }
Chris@612 314 if (name == "Time To Text Mode") {
Chris@612 315 switch (value) {
Chris@612 316 case TimeToTextMs: return tr("Standard (to millisecond)");
Chris@612 317 case TimeToTextUs: return tr("High resolution (to microsecond)");
Chris@612 318 case TimeToText24Frame: return tr("24 FPS");
Chris@612 319 case TimeToText25Frame: return tr("25 FPS");
Chris@612 320 case TimeToText30Frame: return tr("30 FPS");
Chris@612 321 case TimeToText50Frame: return tr("50 FPS");
Chris@612 322 case TimeToText60Frame: return tr("60 FPS");
Chris@612 323 }
Chris@612 324 }
Chris@246 325
Chris@136 326 return "";
Chris@136 327 }
Chris@136 328
Chris@136 329 QString
Chris@136 330 Preferences::getPropertyContainerName() const
Chris@136 331 {
Chris@136 332 return tr("Preferences");
Chris@136 333 }
Chris@136 334
Chris@136 335 QString
Chris@136 336 Preferences::getPropertyContainerIconName() const
Chris@136 337 {
Chris@136 338 return "preferences";
Chris@136 339 }
Chris@136 340
Chris@136 341 void
Chris@136 342 Preferences::setProperty(const PropertyName &name, int value)
Chris@136 343 {
Chris@553 344 if (name == "Spectrogram Y Smoothing") {
Chris@246 345 setSpectrogramSmoothing(SpectrogramSmoothing(value));
Chris@553 346 } else if (name == "Spectrogram X Smoothing") {
Chris@553 347 setSpectrogramXSmoothing(SpectrogramXSmoothing(value));
Chris@136 348 } else if (name == "Tuning Frequency") {
Chris@136 349 //!!!
Chris@138 350 } else if (name == "Property Box Layout") {
Chris@138 351 setPropertyBoxLayout(value == 0 ? VerticallyStacked : Layered);
Chris@140 352 } else if (name == "Window Type") {
Chris@140 353 setWindowType(WindowType(value));
Chris@164 354 } else if (name == "Resample Quality") {
Chris@164 355 setResampleQuality(value);
Chris@277 356 } else if (name == "Omit Temporaries from Recent Files") {
Chris@277 357 setOmitTempsFromRecentFiles(value ? true : false);
Chris@297 358 } else if (name == "Background Mode") {
Chris@297 359 setBackgroundMode(BackgroundMode(value));
Chris@612 360 } else if (name == "Time To Text Mode") {
Chris@612 361 setTimeToTextMode(TimeToTextMode(value));
Chris@354 362 } else if (name == "View Font Size") {
Chris@354 363 setViewFontSize(value);
Chris@372 364 } else if (name == "Show Splash Screen") {
Chris@372 365 setShowSplash(value ? true : false);
Chris@136 366 }
Chris@136 367 }
Chris@136 368
Chris@136 369 void
Chris@246 370 Preferences::setSpectrogramSmoothing(SpectrogramSmoothing smoothing)
Chris@136 371 {
Chris@246 372 if (m_spectrogramSmoothing != smoothing) {
Chris@246 373
Chris@246 374 // "smoothing" is one of those words that looks increasingly
Chris@246 375 // ridiculous the more you see it. Smoothing smoothing smoothing.
Chris@246 376 m_spectrogramSmoothing = smoothing;
Chris@246 377
Chris@156 378 QSettings settings;
Chris@156 379 settings.beginGroup("Preferences");
Chris@553 380 settings.setValue("spectrogram-y-smoothing", int(smoothing));
Chris@156 381 settings.endGroup();
Chris@553 382 emit propertyChanged("Spectrogram Y Smoothing");
Chris@553 383 }
Chris@553 384 }
Chris@553 385
Chris@553 386 void
Chris@553 387 Preferences::setSpectrogramXSmoothing(SpectrogramXSmoothing smoothing)
Chris@553 388 {
Chris@553 389 if (m_spectrogramXSmoothing != smoothing) {
Chris@553 390
Chris@553 391 // "smoothing" is one of those words that looks increasingly
Chris@553 392 // ridiculous the more you see it. Smoothing smoothing smoothing.
Chris@553 393 m_spectrogramXSmoothing = smoothing;
Chris@553 394
Chris@553 395 QSettings settings;
Chris@553 396 settings.beginGroup("Preferences");
Chris@553 397 settings.setValue("spectrogram-x-smoothing", int(smoothing));
Chris@553 398 settings.endGroup();
Chris@553 399 emit propertyChanged("Spectrogram X Smoothing");
Chris@138 400 }
Chris@136 401 }
Chris@136 402
Chris@136 403 void
Chris@136 404 Preferences::setTuningFrequency(float freq)
Chris@136 405 {
Chris@138 406 if (m_tuningFrequency != freq) {
Chris@138 407 m_tuningFrequency = freq;
Chris@156 408 QSettings settings;
Chris@156 409 settings.beginGroup("Preferences");
Chris@156 410 settings.setValue("tuning-frequency", freq);
Chris@156 411 settings.endGroup();
Chris@141 412 emit propertyChanged("Tuning Frequency");
Chris@138 413 }
Chris@136 414 }
Chris@136 415
Chris@138 416 void
Chris@138 417 Preferences::setPropertyBoxLayout(PropertyBoxLayout layout)
Chris@138 418 {
Chris@138 419 if (m_propertyBoxLayout != layout) {
Chris@138 420 m_propertyBoxLayout = layout;
Chris@156 421 QSettings settings;
Chris@156 422 settings.beginGroup("Preferences");
Chris@156 423 settings.setValue("property-box-layout", int(layout));
Chris@156 424 settings.endGroup();
Chris@141 425 emit propertyChanged("Property Box Layout");
Chris@138 426 }
Chris@138 427 }
Chris@138 428
Chris@140 429 void
Chris@140 430 Preferences::setWindowType(WindowType type)
Chris@140 431 {
Chris@140 432 if (m_windowType != type) {
Chris@140 433 m_windowType = type;
Chris@156 434 QSettings settings;
Chris@156 435 settings.beginGroup("Preferences");
Chris@156 436 settings.setValue("window-type", int(type));
Chris@156 437 settings.endGroup();
Chris@141 438 emit propertyChanged("Window Type");
Chris@140 439 }
Chris@140 440 }
Chris@140 441
Chris@164 442 void
Chris@164 443 Preferences::setResampleQuality(int q)
Chris@164 444 {
Chris@164 445 if (m_resampleQuality != q) {
Chris@164 446 m_resampleQuality = q;
Chris@164 447 QSettings settings;
Chris@164 448 settings.beginGroup("Preferences");
Chris@164 449 settings.setValue("resample-quality", q);
Chris@164 450 settings.endGroup();
Chris@164 451 emit propertyChanged("Resample Quality");
Chris@164 452 }
Chris@164 453 }
Chris@277 454
Chris@277 455 void
Chris@277 456 Preferences::setOmitTempsFromRecentFiles(bool omit)
Chris@277 457 {
Chris@277 458 if (m_omitRecentTemps != omit) {
Chris@277 459 m_omitRecentTemps = omit;
Chris@277 460 QSettings settings;
Chris@277 461 settings.beginGroup("Preferences");
Chris@277 462 settings.setValue("omit-recent-temporaries", omit);
Chris@277 463 settings.endGroup();
Chris@277 464 emit propertyChanged("Omit Temporaries from Recent Files");
Chris@277 465 }
Chris@277 466 }
Chris@297 467
Chris@297 468 void
Chris@297 469 Preferences::setTemporaryDirectoryRoot(QString root)
Chris@297 470 {
Chris@297 471 if (root == QDir::home().absolutePath()) {
Chris@297 472 root = "$HOME";
Chris@297 473 }
Chris@297 474 if (m_tempDirRoot != root) {
Chris@297 475 m_tempDirRoot = root;
Chris@297 476 QSettings settings;
Chris@297 477 settings.beginGroup("TempDirectory");
Chris@297 478 settings.setValue("create-in", root);
Chris@297 479 settings.endGroup();
Chris@297 480 emit propertyChanged("Temporary Directory Root");
Chris@297 481 }
Chris@297 482 }
Chris@297 483
Chris@297 484 void
Chris@297 485 Preferences::setResampleOnLoad(bool resample)
Chris@297 486 {
Chris@297 487 if (m_resampleOnLoad != resample) {
Chris@297 488 m_resampleOnLoad = resample;
Chris@297 489 QSettings settings;
Chris@297 490 settings.beginGroup("Preferences");
Chris@297 491 settings.setValue("resample-on-load", resample);
Chris@297 492 settings.endGroup();
Chris@297 493 emit propertyChanged("Resample On Load");
Chris@297 494 }
Chris@297 495 }
Chris@297 496
Chris@297 497 void
Chris@297 498 Preferences::setBackgroundMode(BackgroundMode mode)
Chris@297 499 {
Chris@297 500 if (m_backgroundMode != mode) {
Chris@297 501
Chris@297 502 m_backgroundMode = mode;
Chris@297 503
Chris@297 504 QSettings settings;
Chris@297 505 settings.beginGroup("Preferences");
Chris@297 506 settings.setValue("background-mode", int(mode));
Chris@297 507 settings.endGroup();
Chris@297 508 emit propertyChanged("Background Mode");
Chris@297 509 }
Chris@297 510 }
Chris@297 511
Chris@354 512 void
Chris@612 513 Preferences::setTimeToTextMode(TimeToTextMode mode)
Chris@612 514 {
Chris@612 515 if (m_timeToTextMode != mode) {
Chris@612 516
Chris@612 517 m_timeToTextMode = mode;
Chris@612 518
Chris@612 519 QSettings settings;
Chris@612 520 settings.beginGroup("Preferences");
Chris@612 521 settings.setValue("time-to-text-mode", int(mode));
Chris@612 522 settings.endGroup();
Chris@612 523 emit propertyChanged("Time To Text Mode");
Chris@612 524 }
Chris@612 525 }
Chris@612 526
Chris@612 527 void
Chris@354 528 Preferences::setViewFontSize(int size)
Chris@354 529 {
Chris@354 530 if (m_viewFontSize != size) {
Chris@297 531
Chris@354 532 m_viewFontSize = size;
Chris@354 533
Chris@354 534 QSettings settings;
Chris@354 535 settings.beginGroup("Preferences");
Chris@354 536 settings.setValue("view-font-size", size);
Chris@354 537 settings.endGroup();
Chris@354 538 emit propertyChanged("View Font Size");
Chris@354 539 }
Chris@354 540 }
Chris@354 541
Chris@372 542 void
Chris@372 543 Preferences::setShowSplash(bool show)
Chris@372 544 {
Chris@372 545 if (m_showSplash != show) {
Chris@372 546
Chris@372 547 m_showSplash = show;
Chris@372 548
Chris@372 549 QSettings settings;
Chris@372 550 settings.beginGroup("Preferences");
Chris@372 551 settings.setValue("show-splash", show);
Chris@372 552 settings.endGroup();
Chris@372 553 emit propertyChanged("Show Splash Screen");
Chris@372 554 }
Chris@372 555 }
Chris@372 556