annotate base/Preferences.h @ 316:3a6725f285d6

* Make RemoteFile far more pervasive, and use it for local files as well so that we can handle both transparently. Make it shallow copy with reference counting, so it can be used by value without having to worry about the cache file lifetime. Use RemoteFile for MainWindow file-open functions, etc
author Chris Cannam
date Thu, 18 Oct 2007 15:31:20 +0000
parents c022976d18e8
children 048b21bc9891 94fc0591ea43
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 #ifndef _PREFERENCES_H_
Chris@136 17 #define _PREFERENCES_H_
Chris@136 18
Chris@136 19 #include "PropertyContainer.h"
Chris@136 20
Chris@140 21 #include "Window.h"
Chris@140 22
Chris@136 23 class Preferences : public PropertyContainer
Chris@136 24 {
Chris@136 25 Q_OBJECT
Chris@136 26
Chris@136 27 public:
Chris@156 28 static Preferences *getInstance();
Chris@136 29
Chris@136 30 virtual PropertyList getProperties() const;
Chris@136 31 virtual QString getPropertyLabel(const PropertyName &) const;
Chris@136 32 virtual PropertyType getPropertyType(const PropertyName &) const;
Chris@245 33 virtual int getPropertyRangeAndValue(const PropertyName &, int *, int *, int *) const;
Chris@136 34 virtual QString getPropertyValueLabel(const PropertyName &, int value) const;
Chris@136 35 virtual QString getPropertyContainerName() const;
Chris@136 36 virtual QString getPropertyContainerIconName() const;
Chris@136 37
Chris@246 38 enum SpectrogramSmoothing {
Chris@246 39 NoSpectrogramSmoothing,
Chris@246 40 SpectrogramInterpolated,
Chris@246 41 SpectrogramZeroPadded,
Chris@246 42 SpectrogramZeroPaddedAndInterpolated
Chris@246 43 };
Chris@246 44
Chris@246 45 SpectrogramSmoothing getSpectrogramSmoothing() const { return m_spectrogramSmoothing; }
Chris@136 46 float getTuningFrequency() const { return m_tuningFrequency; }
Chris@140 47 WindowType getWindowType() const { return m_windowType; }
Chris@164 48 int getResampleQuality() const { return m_resampleQuality; }
Chris@136 49
Chris@138 50 //!!! harmonise with PaneStack
Chris@138 51 enum PropertyBoxLayout {
Chris@138 52 VerticallyStacked,
Chris@138 53 Layered
Chris@138 54 };
Chris@138 55 PropertyBoxLayout getPropertyBoxLayout() const { return m_propertyBoxLayout; }
Chris@138 56
Chris@277 57 bool getOmitTempsFromRecentFiles() const { return m_omitRecentTemps; }
Chris@277 58
Chris@297 59 QString getTemporaryDirectoryRoot() const { return m_tempDirRoot; }
Chris@297 60
Chris@297 61 bool getResampleOnLoad() const { return m_resampleOnLoad; }
Chris@297 62
Chris@297 63 enum BackgroundMode {
Chris@297 64 BackgroundFromTheme,
Chris@297 65 DarkBackground,
Chris@297 66 LightBackground
Chris@297 67 };
Chris@297 68 BackgroundMode getBackgroundMode() const { return m_backgroundMode; }
Chris@297 69
Chris@136 70 public slots:
Chris@136 71 virtual void setProperty(const PropertyName &, int);
Chris@136 72
Chris@246 73 void setSpectrogramSmoothing(SpectrogramSmoothing smoothing);
Chris@136 74 void setTuningFrequency(float freq);
Chris@138 75 void setPropertyBoxLayout(PropertyBoxLayout layout);
Chris@140 76 void setWindowType(WindowType type);
Chris@164 77 void setResampleQuality(int quality);
Chris@277 78 void setOmitTempsFromRecentFiles(bool omit);
Chris@297 79 void setTemporaryDirectoryRoot(QString tempDirRoot);
Chris@297 80 void setResampleOnLoad(bool);
Chris@297 81 void setBackgroundMode(BackgroundMode mode);
Chris@136 82
Chris@136 83 private:
Chris@145 84 Preferences(); // may throw DirectoryCreationFailed
Chris@145 85 virtual ~Preferences();
Chris@136 86
Chris@136 87 static Preferences *m_instance;
Chris@136 88
Chris@246 89 SpectrogramSmoothing m_spectrogramSmoothing;
Chris@136 90 float m_tuningFrequency;
Chris@138 91 PropertyBoxLayout m_propertyBoxLayout;
Chris@140 92 WindowType m_windowType;
Chris@164 93 int m_resampleQuality;
Chris@277 94 bool m_omitRecentTemps;
Chris@297 95 QString m_tempDirRoot;
Chris@297 96 bool m_resampleOnLoad;
Chris@297 97 BackgroundMode m_backgroundMode;
Chris@136 98 };
Chris@136 99
Chris@136 100 #endif