OSDN Git Service

Set creation/modified time of the encoded file the same value as the original file...
[lamexp/LameXP.git] / src / Model_Settings.h
index 6a6ebc9..9e715c6 100644 (file)
@@ -1,11 +1,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 // LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2011 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2015 LoRd_MuldeR <MuldeR2@GMX.de>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// (at your option) any later version, but always including the *additional*
+// restrictions defined in the "License.txt" file.
 //
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 #pragma once
 
-class QSettings;
+#include <QMutex>
+#include <QScopedPointer>
+
 class QString;
+class SettingsCache;
+
+///////////////////////////////////////////////////////////////////////////////
 
-#define MAKE_OPTION_DEC1(OPT) \
-int OPT(void); \
-void OPT(int value);
+#define LAMEXP_MAKE_OPTION_I(OPT) \
+int OPT(void) const; \
+void OPT(int value); \
+int OPT##Default(void);
 
-#define MAKE_OPTION_DEC2(OPT) \
-QString OPT(void); \
-void OPT(const QString &value);
+#define LAMEXP_MAKE_OPTION_S(OPT) \
+QString OPT(void) const; \
+void OPT(const QString &value); \
+QString OPT##Default(void);
 
-#define MAKE_OPTION_DEC3(OPT) \
-bool OPT(void); \
-void OPT(bool value);
+#define LAMEXP_MAKE_OPTION_B(OPT) \
+bool OPT(void) const; \
+void OPT(bool value); \
+bool OPT##Default(void);
+
+#define LAMEXP_MAKE_OPTION_U(OPT) \
+unsigned int OPT(void) const; \
+void OPT(unsigned int value); \
+unsigned int OPT##Default(void);
+
+///////////////////////////////////////////////////////////////////////////////
 
 class SettingsModel
 {
@@ -45,51 +61,172 @@ public:
        //Enums
        enum Encoder
        {
-               MP3Encoder = 0,
+               MP3Encoder    = 0,
                VorbisEncoder = 1,
-               AACEncoder = 2,
-               FLACEncoder = 3,
-               PCMEncoder = 4
+               AACEncoder    = 2,
+               AC3Encoder    = 3,
+               FLACEncoder   = 4,
+               OpusEncoder   = 5,
+               DCAEncoder    = 6,
+               MACEncoder    = 7,
+               PCMEncoder    = 8,
+               ENCODER_COUNT = 9
        };
+
        enum RCMode
        {
                VBRMode = 0,
                ABRMode = 1,
-               CBRMode = 2
+               CBRMode = 2,
+               RCMODE_COUNT = 3
+       };
+
+       enum Overwrite
+       {
+               Overwrite_KeepBoth = 0,
+               Overwrite_SkipFile = 1,
+               Overwrite_Replaces = 2
        };
        
+       enum AACEncoderType
+       {
+               AAC_ENCODER_NONE = 0,
+               AAC_ENCODER_NERO = 1,
+               AAC_ENCODER_FHG  = 2,
+               AAC_ENCODER_FDK  = 3,
+               AAC_ENCODER_QAAC = 4,
+       };
+
        //Consts
-       static const int mp3Bitrates[15];
+       static const int samplingRates[8];
 
        //Getters & setters
-       MAKE_OPTION_DEC1(licenseAccepted);
-       MAKE_OPTION_DEC1(interfaceStyle);
-       MAKE_OPTION_DEC1(compressionEncoder);
-       MAKE_OPTION_DEC1(compressionRCMode);
-       MAKE_OPTION_DEC1(compressionBitrate);
-       MAKE_OPTION_DEC2(outputDir);
-       MAKE_OPTION_DEC3(outputToSourceDir);
-       MAKE_OPTION_DEC3(prependRelativeSourcePath);
-       MAKE_OPTION_DEC3(writeMetaTags);
-       MAKE_OPTION_DEC3(createPlaylist);
-       MAKE_OPTION_DEC2(autoUpdateLastCheck);
-       MAKE_OPTION_DEC3(autoUpdateEnabled);
-       MAKE_OPTION_DEC3(soundsEnabled);
-       MAKE_OPTION_DEC3(neroAacNotificationsEnabled)
-       MAKE_OPTION_DEC3(wmaDecoderNotificationsEnabled)
-       MAKE_OPTION_DEC3(dropBoxWidgetEnabled)
-       MAKE_OPTION_DEC2(currentLanguage);
-       MAKE_OPTION_DEC1(lameAlgoQuality);
+       LAMEXP_MAKE_OPTION_I(aacEncProfile)
+       LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode)
+       LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression)
+       LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize)
+       LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation)
+       LAMEXP_MAKE_OPTION_B(antivirNotificationsEnabled)
+       LAMEXP_MAKE_OPTION_B(autoUpdateCheckBeta)
+       LAMEXP_MAKE_OPTION_B(autoUpdateEnabled)
+       LAMEXP_MAKE_OPTION_S(autoUpdateLastCheck)
+       LAMEXP_MAKE_OPTION_B(bitrateManagementEnabled)
+       LAMEXP_MAKE_OPTION_I(bitrateManagementMaxRate)
+       LAMEXP_MAKE_OPTION_I(bitrateManagementMinRate)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateAacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateAften)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateDcaEnc)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateFLAC)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateLAME)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateMacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOggEnc)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOpusEnc)
+       LAMEXP_MAKE_OPTION_I(compressionAbrBitrateWave)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAften)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateDcaEnc)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateFLAC)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateLAME)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateMacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOggEnc)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOpusEnc)
+       LAMEXP_MAKE_OPTION_I(compressionCbrBitrateWave)
+       LAMEXP_MAKE_OPTION_I(compressionEncoder)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeAacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeAften)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeDcaEnc)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeFLAC)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeLAME)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeMacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc)
+       LAMEXP_MAKE_OPTION_I(compressionRCModeWave)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityAacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityAften)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityDcaEnc)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityFLAC)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityLAME)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityMacEnc)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityOggEnc)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityOpusEnc)
+       LAMEXP_MAKE_OPTION_I(compressionVbrQualityWave)
+       LAMEXP_MAKE_OPTION_B(createPlaylist)
+       LAMEXP_MAKE_OPTION_S(currentLanguage)
+       LAMEXP_MAKE_OPTION_S(currentLanguageFile)
+       LAMEXP_MAKE_OPTION_S(customParametersAacEnc)
+       LAMEXP_MAKE_OPTION_S(customParametersAften)
+       LAMEXP_MAKE_OPTION_S(customParametersDcaEnc)
+       LAMEXP_MAKE_OPTION_S(customParametersFLAC)
+       LAMEXP_MAKE_OPTION_S(customParametersLAME)
+       LAMEXP_MAKE_OPTION_S(customParametersMacEnc)
+       LAMEXP_MAKE_OPTION_S(customParametersOggEnc)
+       LAMEXP_MAKE_OPTION_S(customParametersOpusEnc)
+       LAMEXP_MAKE_OPTION_S(customParametersWave)
+       LAMEXP_MAKE_OPTION_S(customTempPath)
+       LAMEXP_MAKE_OPTION_B(customTempPathEnabled)
+       LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled)
+       LAMEXP_MAKE_OPTION_I(dropBoxWidgetPositionX)
+       LAMEXP_MAKE_OPTION_I(dropBoxWidgetPositionY)
+       LAMEXP_MAKE_OPTION_S(favoriteOutputFolders)
+       LAMEXP_MAKE_OPTION_B(forceStereoDownmix)
+       LAMEXP_MAKE_OPTION_B(hibernateComputer)
+       LAMEXP_MAKE_OPTION_I(interfaceStyle)
+       LAMEXP_MAKE_OPTION_I(lameAlgoQuality)
+       LAMEXP_MAKE_OPTION_I(lameChannelMode)
+       LAMEXP_MAKE_OPTION_I(licenseAccepted)
+       LAMEXP_MAKE_OPTION_U(maximumInstances)
+       LAMEXP_MAKE_OPTION_U(metaInfoPosition)
+       LAMEXP_MAKE_OPTION_S(mostRecentInputPath)
+       LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass)
+       LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled)
+       LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled)
+       LAMEXP_MAKE_OPTION_B(normalizationFilterDynamic)
+       LAMEXP_MAKE_OPTION_B(normalizationFilterCoupled)
+       LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume)
+       LAMEXP_MAKE_OPTION_I(normalizationFilterSize)
+       LAMEXP_MAKE_OPTION_I(opusComplexity)
+       LAMEXP_MAKE_OPTION_B(opusDisableResample)
+       LAMEXP_MAKE_OPTION_I(opusFramesize)
+       LAMEXP_MAKE_OPTION_I(opusOptimizeFor)
+       LAMEXP_MAKE_OPTION_S(outputDir)
+       LAMEXP_MAKE_OPTION_B(outputToSourceDir)
+       LAMEXP_MAKE_OPTION_I(overwriteMode)
+       LAMEXP_MAKE_OPTION_B(prependRelativeSourcePath)
+       LAMEXP_MAKE_OPTION_B(renameFiles_regExpEnabled)
+       LAMEXP_MAKE_OPTION_S(renameFiles_regExpSearch)
+       LAMEXP_MAKE_OPTION_S(renameFiles_regExpReplace)
+       LAMEXP_MAKE_OPTION_B(renameFiles_renameEnabled)
+       LAMEXP_MAKE_OPTION_S(renameFiles_renamePattern)
+       LAMEXP_MAKE_OPTION_S(renameFiles_fileExtension)
+       LAMEXP_MAKE_OPTION_I(samplingRate)
+       LAMEXP_MAKE_OPTION_B(shellIntegrationEnabled)
+       LAMEXP_MAKE_OPTION_B(slowStartup)
+       LAMEXP_MAKE_OPTION_B(soundsEnabled)
+       LAMEXP_MAKE_OPTION_I(toneAdjustBass)
+       LAMEXP_MAKE_OPTION_I(toneAdjustTreble)
+       LAMEXP_MAKE_OPTION_B(writeMetaTags)
 
        //Misc
        void validate(void);
+       void syncNow(void);
 
 private:
-       QSettings *m_settings;
-       QString *m_defaultLanguage;
-       QString defaultLanguage(void);
+       SettingsModel(const SettingsModel &other) {}
+       SettingsModel &operator=(const SettingsModel &other) { return *this; }
+
+       QString initDirectory(const QString &path) const;
+       QString defaultLanguage(void) const;
+       QString defaultDirectory(void) const;
+
+       SettingsCache *m_configCache;
+
+       mutable QMutex                  m_defaultLangLock;
+       mutable QScopedPointer<QString> m_defaultLanguage;
 };
 
-#undef MAKE_OPTION_DEC1
-#undef MAKE_OPTION_DEC2
-#undef MAKE_OPTION_DEC3
+///////////////////////////////////////////////////////////////////////////////
+
+#undef LAMEXP_MAKE_OPTION_I
+#undef LAMEXP_MAKE_OPTION_S
+#undef LAMEXP_MAKE_OPTION_B
+#undef LAMEXP_MAKE_OPTION_U