OSDN Git Service

Code refactoring: Now "Preferences" and "Recently" used models are in separate classe...
[x264-launcher/x264-launcher.git] / src / win_preferences.cpp
index 437b006..0ab463c 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Simple x264 Launcher
-// Copyright (C) 2004-2012 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2013 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 "win_preferences.h"
 
 #include "global.h"
+#include "model_preferences.h"
 
 #include <QSettings>
 #include <QDesktopServices>
 #include <QMouseEvent>
+#include <QMessageBox>
 
 #define UPDATE_CHECKBOX(CHKBOX, VALUE) \
 { \
@@ -33,7 +35,7 @@
        if((CHKBOX)->isChecked() != (VALUE)) (CHKBOX)->setChecked(VALUE); \
 }
 
-PreferencesDialog::PreferencesDialog(QWidget *parent, Preferences *preferences, bool x64)
+PreferencesDialog::PreferencesDialog(QWidget *parent, PreferencesModel *preferences, bool x64)
 :
        QDialog(parent),
        m_x64(x64)
@@ -43,10 +45,15 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Preferences *preferences,
        setFixedSize(minimumSize());
 
        labelRunNextJob->installEventFilter(this);
+       labelUse10BitEncoding->installEventFilter(this);
        labelUse64BitAvs2YUV->installEventFilter(this);
        labelShutdownComputer->installEventFilter(this);
+       labelSaveLogFiles->installEventFilter(this);
+       labelSaveToSourceFolder->installEventFilter(this);
+       labelEnableSounds->installEventFilter(this);
 
        connect(resetButton, SIGNAL(clicked()), this, SLOT(resetButtonPressed()));
+       connect(checkUse10BitEncoding, SIGNAL(toggled(bool)), this, SLOT(use10BitEncodingToggled(bool)));
 
        m_preferences = preferences;
 }
@@ -59,12 +66,20 @@ void PreferencesDialog::showEvent(QShowEvent *event)
 {
        if(event) QDialog::showEvent(event);
        
-       UPDATE_CHECKBOX(checkRunNextJob, m_preferences->autoRunNextJob);
-       UPDATE_CHECKBOX(checkShutdownComputer, m_preferences->shutdownComputer);
-       UPDATE_CHECKBOX(checkUse64BitAvs2YUV, m_preferences->useAvisyth64Bit);
-       
-       spinBoxJobCount->setValue(m_preferences->maxRunningJobCount);
-       
+       UPDATE_CHECKBOX(checkRunNextJob, m_preferences->autoRunNextJob());
+       UPDATE_CHECKBOX(checkShutdownComputer, m_preferences->shutdownComputer());
+       UPDATE_CHECKBOX(checkUse64BitAvs2YUV, m_preferences->useAvisyth64Bit());
+       UPDATE_CHECKBOX(checkSaveLogFiles, m_preferences->saveLogFiles());
+       UPDATE_CHECKBOX(checkSaveToSourceFolder, m_preferences->saveToSourcePath());
+       UPDATE_CHECKBOX(checkEnableSounds, m_preferences->enableSounds());
+
+       checkUse10BitEncoding->blockSignals(true);
+       UPDATE_CHECKBOX(checkUse10BitEncoding, m_preferences->use10BitEncoding());
+       checkUse10BitEncoding->blockSignals(false);
+
+       spinBoxJobCount->setValue(m_preferences->maxRunningJobCount());
+       comboBoxPriority->setCurrentIndex(qBound(0, m_preferences->processPriority(), comboBoxPriority->count()-1));
+
        checkUse64BitAvs2YUV->setEnabled(m_x64);
        labelUse64BitAvs2YUV->setEnabled(m_x64);
 }
@@ -73,7 +88,11 @@ bool PreferencesDialog::eventFilter(QObject *o, QEvent *e)
 {
        emulateMouseEvent(o, e, labelRunNextJob, checkRunNextJob);
        emulateMouseEvent(o, e, labelShutdownComputer, checkShutdownComputer);
+       emulateMouseEvent(o, e, labelUse10BitEncoding, checkUse10BitEncoding);
        emulateMouseEvent(o, e, labelUse64BitAvs2YUV, checkUse64BitAvs2YUV);
+       emulateMouseEvent(o, e, labelSaveLogFiles, checkSaveLogFiles);
+       emulateMouseEvent(o, e, labelSaveToSourceFolder, checkSaveToSourceFolder);
+       emulateMouseEvent(o, e, labelEnableSounds, checkEnableSounds);
        return false;
 }
 
@@ -99,60 +118,38 @@ void PreferencesDialog::emulateMouseEvent(QObject *object, QEvent *event, QWidge
 
 void PreferencesDialog::done(int n)
 {
-       m_preferences->autoRunNextJob = checkRunNextJob->isChecked();
-       m_preferences->shutdownComputer = checkShutdownComputer->isChecked();
-       m_preferences->useAvisyth64Bit = checkUse64BitAvs2YUV->isChecked();
-       m_preferences->maxRunningJobCount = spinBoxJobCount->value();
-
-       savePreferences(m_preferences);
+       m_preferences->setAutoRunNextJob(checkRunNextJob->isChecked());
+       m_preferences->setShutdownComputer(checkShutdownComputer->isChecked());
+       m_preferences->setUse10BitEncoding(checkUse10BitEncoding->isChecked());
+       m_preferences->setUseAvisyth64Bit(checkUse64BitAvs2YUV->isChecked());
+       m_preferences->setSaveLogFiles(checkSaveLogFiles->isChecked());
+       m_preferences->setSaveToSourcePath(checkSaveToSourceFolder->isChecked());
+       m_preferences->setMaxRunningJobCount(spinBoxJobCount->value());
+       m_preferences->setProcessPriority(comboBoxPriority->currentIndex());
+       m_preferences->setEnableSounds(checkEnableSounds->isChecked());
+
+       PreferencesModel::savePreferences(m_preferences);
        QDialog::done(n);
 }
 
 void PreferencesDialog::resetButtonPressed(void)
 {
-       initPreferences(m_preferences);
+       PreferencesModel::initPreferences(m_preferences);
        showEvent(NULL);
 }
 
-///////////////////////////////////////////////////////////////////////////////
-// Static Functions
-///////////////////////////////////////////////////////////////////////////////
-
-void PreferencesDialog::initPreferences(Preferences *preferences)
+void PreferencesDialog::use10BitEncodingToggled(bool checked)
 {
-       memset(preferences, 0, sizeof(Preferences));
-
-       preferences->autoRunNextJob = true;
-       preferences->maxRunningJobCount = 1;
-       preferences->shutdownComputer = false;
-       preferences->useAvisyth64Bit = false;
-}
-
-void PreferencesDialog::loadPreferences(Preferences *preferences)
-{
-       const QString appDir = x264_portable() ? QApplication::applicationDirPath() : QDesktopServices::storageLocation(QDesktopServices::DataLocation);
-       QSettings settings(QString("%1/preferences.ini").arg(appDir), QSettings::IniFormat);
-
-       Preferences defaults;
-       initPreferences(&defaults);
-
-       settings.beginGroup("preferences");
-       preferences->autoRunNextJob = settings.value("auto_run_next_job", QVariant(defaults.autoRunNextJob)).toBool();
-       preferences->maxRunningJobCount = qBound(1U, settings.value("max_running_job_count", QVariant(defaults.maxRunningJobCount)).toUInt(), 16U);
-       preferences->shutdownComputer = settings.value("shutdown_computer_on_completion", QVariant(defaults.shutdownComputer)).toBool();
-       preferences->useAvisyth64Bit = settings.value("use_64bit_avisynth", QVariant(defaults.useAvisyth64Bit)).toBool();
-}
-
-void PreferencesDialog::savePreferences(Preferences *preferences)
-{
-       const QString appDir = x264_portable() ? QApplication::applicationDirPath() : QDesktopServices::storageLocation(QDesktopServices::DataLocation);
-       QSettings settings(QString("%1/preferences.ini").arg(appDir), QSettings::IniFormat);
-
-       settings.beginGroup("preferences");
-       settings.setValue("auto_run_next_job", preferences->autoRunNextJob);
-       settings.setValue("shutdown_computer_on_completion", preferences->shutdownComputer);
-       settings.setValue("max_running_job_count", preferences->maxRunningJobCount);
-       settings.setValue("use_64bit_avisynth", preferences->useAvisyth64Bit);
-       settings.sync();
+       if(checked)
+       {
+               QString text;
+               text += tr("<nobr>Please note that 10&minus;Bit H.264 streams are <b>not</b> currently supported by hardware (standalone) players!</nobr><br>");
+               text += tr("<nobr>To play such streams, you will need an <i>up&minus;to&minus;date</i> ffdshow&minus;tryouts, CoreAVC 3.x or another supported s/w decoder.</nobr><br>");
+               text += tr("<nobr>Also be aware that hardware&minus;acceleration (CUDA, DXVA, etc) usually will <b>not</b> work with 10&minus;Bit H.264 streams.</nobr><br>");
+               
+               if(QMessageBox::warning(this, tr("10-Bit Encoding"), text, tr("Continue"), tr("Revert"), QString(), 1) != 0)
+               {
+                       UPDATE_CHECKBOX(checkUse10BitEncoding, false);
+               }
+       }
 }
-