OSDN Git Service

Bump version.
[x264-launcher/x264-launcher.git] / src / model_preferences.cpp
index e2abd50..2d81d1d 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Simple x264 Launcher
-// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2016 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
 
 #include "global.h"
 
-#include <cstring>
-
 #include <QSettings>
 #include <QDesktopServices>
 #include <QMouseEvent>
 #include <QMessageBox>
 
+///////////////////////////////////////////////////////////////////////////////
+
+#define INIT_VALUE(NAME, VAL) do \
+{ \
+       preferences->set##NAME(VAL); \
+} \
+while(0)
+
+#define STORE_VALUE(NAME) do \
+{ \
+       settings.setValue(#NAME, (preferences->get##NAME())); \
+} \
+while(0)
+
+#define LOAD_VALUE_B(NAME) do \
+{ \
+       preferences->set##NAME(settings.value(#NAME, QVariant(defaults.get##NAME())).toBool()); \
+} \
+while(0)
+
+#define LOAD_VALUE_I(NAME) do \
+{ \
+       preferences->set##NAME(settings.value(#NAME, QVariant(defaults.get##NAME())).toInt()); \
+} \
+while(0)
+
+#define LOAD_VALUE_U(NAME) do \
+{ \
+       preferences->set##NAME(settings.value(#NAME, QVariant(defaults.get##NAME())).toUInt()); \
+} \
+while(0)
+
+///////////////////////////////////////////////////////////////////////////////
+
 PreferencesModel::PreferencesModel(void)
 {
        initPreferences(this);
@@ -37,52 +69,62 @@ PreferencesModel::PreferencesModel(void)
 
 void PreferencesModel::initPreferences(PreferencesModel *preferences)
 {
-       memset(preferences, 0, sizeof(PreferencesModel));
-
-       preferences->m_autoRunNextJob = true;
-       preferences->m_maxRunningJobCount = 1;
-       preferences->m_shutdownComputer = false;
-       preferences->m_use10BitEncoding = false;
-       preferences->m_useAvisyth64Bit = false;
-       preferences->m_saveLogFiles = false;
-       preferences->m_saveToSourcePath = false;
-       preferences->m_processPriority = X264_PRIORITY_BELOWNORMAL;
-       preferences->m_enableSounds = false;
+       INIT_VALUE(AutoRunNextJob,     true );
+       INIT_VALUE(MaxRunningJobCount, 1    );
+       INIT_VALUE(ShutdownComputer,   false);
+       INIT_VALUE(Prefer64BitSource,  false);
+       INIT_VALUE(SaveLogFiles,       false);
+       INIT_VALUE(SaveToSourcePath,   false);
+       INIT_VALUE(ProcessPriority,    -1   );
+       INIT_VALUE(EnableSounds,       false);
+       INIT_VALUE(DisableWarnings,    false);
+       INIT_VALUE(NoUpdateReminder,   false);
+       INIT_VALUE(AbortOnTimeout,     true );
+       INIT_VALUE(SkipVersionTest,    false);
+       INIT_VALUE(NoSystrayWarning,   false);
 }
 
 void PreferencesModel::loadPreferences(PreferencesModel *preferences)
 {
        const QString appDir = x264_data_path();
+       PreferencesModel defaults;
        QSettings settings(QString("%1/preferences.ini").arg(appDir), QSettings::IniFormat);
+       settings.beginGroup("preferences");
 
-       PreferencesModel defaults;
+       LOAD_VALUE_B(AutoRunNextJob    );
+       LOAD_VALUE_U(MaxRunningJobCount);
+       LOAD_VALUE_B(ShutdownComputer  );
+       LOAD_VALUE_B(Prefer64BitSource );
+       LOAD_VALUE_B(SaveLogFiles      );
+       LOAD_VALUE_B(SaveToSourcePath  );
+       LOAD_VALUE_I(ProcessPriority   );
+       LOAD_VALUE_B(EnableSounds      );
+       LOAD_VALUE_B(DisableWarnings   );
+       LOAD_VALUE_B(NoUpdateReminder  );
+       LOAD_VALUE_B(NoSystrayWarning  );
 
-       settings.beginGroup("preferences");
-       preferences->m_autoRunNextJob = settings.value("auto_run_next_job", QVariant(defaults.m_autoRunNextJob)).toBool();
-       preferences->m_maxRunningJobCount = qBound(1U, settings.value("max_running_job_count", QVariant(defaults.m_maxRunningJobCount)).toUInt(), 16U);
-       preferences->m_shutdownComputer = settings.value("shutdown_computer_on_completion", QVariant(defaults.m_shutdownComputer)).toBool();
-       preferences->m_use10BitEncoding = settings.value("use_10bit_encoding", QVariant(defaults.m_use10BitEncoding)).toBool();
-       preferences->m_useAvisyth64Bit = settings.value("use_64bit_avisynth", QVariant(defaults.m_useAvisyth64Bit)).toBool();
-       preferences->m_saveLogFiles = settings.value("save_log_files", QVariant(defaults.m_saveLogFiles)).toBool();
-       preferences->m_saveToSourcePath = settings.value("save_to_source_path", QVariant(defaults.m_saveToSourcePath)).toBool();
-       preferences->m_processPriority = settings.value("process_priority", QVariant(defaults.m_processPriority)).toInt();
-       preferences->m_enableSounds = settings.value("enable_sounds", QVariant(defaults.m_enableSounds)).toBool();
+       //Validation
+       preferences->setProcessPriority(qBound(-2, preferences->getProcessPriority(), 2));
+       preferences->setMaxRunningJobCount(qBound(1U, preferences->getMaxRunningJobCount(), 16U));
 }
 
 void PreferencesModel::savePreferences(PreferencesModel *preferences)
 {
        const QString appDir = x264_data_path();
        QSettings settings(QString("%1/preferences.ini").arg(appDir), QSettings::IniFormat);
-
        settings.beginGroup("preferences");
-       settings.setValue("auto_run_next_job", preferences->m_autoRunNextJob);
-       settings.setValue("shutdown_computer_on_completion", preferences->m_shutdownComputer);
-       settings.setValue("max_running_job_count", preferences->m_maxRunningJobCount);
-       settings.setValue("use_10bit_encoding", preferences->m_use10BitEncoding);
-       settings.setValue("use_64bit_avisynth", preferences->m_useAvisyth64Bit);
-       settings.setValue("save_log_files", preferences->m_saveLogFiles);
-       settings.setValue("save_to_source_path", preferences->m_saveToSourcePath);
-       settings.setValue("process_priority", preferences->m_processPriority);
-       settings.setValue("enable_sounds", preferences->m_enableSounds);
+
+       STORE_VALUE(AutoRunNextJob    );
+       STORE_VALUE(MaxRunningJobCount);
+       STORE_VALUE(ShutdownComputer  );
+       STORE_VALUE(Prefer64BitSource );
+       STORE_VALUE(SaveLogFiles      );
+       STORE_VALUE(SaveToSourcePath  );
+       STORE_VALUE(ProcessPriority   );
+       STORE_VALUE(EnableSounds      );
+       STORE_VALUE(DisableWarnings   );
+       STORE_VALUE(NoUpdateReminder  );
+       STORE_VALUE(NoSystrayWarning  );
+       
        settings.sync();
 }