2012-02-03 00:53:14 +01:00
///////////////////////////////////////////////////////////////////////////////
// Simple x264 Launcher
2013-05-11 21:52:07 +02:00
// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@GMX.de>
2012-02-03 00:53:14 +01:00
//
// 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.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// http://www.gnu.org/licenses/gpl-2.0.txt
///////////////////////////////////////////////////////////////////////////////
# include "win_preferences.h"
# include "global.h"
2013-07-03 21:34:21 +02:00
# include "model_preferences.h"
2012-02-03 00:53:14 +01:00
# include <QSettings>
# include <QDesktopServices>
2012-02-04 01:12:21 +01:00
# include <QMouseEvent>
2012-03-25 22:11:07 +02:00
# include <QMessageBox>
2012-02-03 00:53:14 +01:00
2013-08-09 13:41:02 +02:00
# define UPDATE_CHECKBOX(CHKBOX, VALUE, BLOCK) \
2012-02-06 16:13:24 +01:00
{ \
2013-08-09 13:41:02 +02:00
if ( ( BLOCK ) ) { ( CHKBOX ) - > blockSignals ( true ) ; } \
2012-02-06 16:13:24 +01:00
if ( ( CHKBOX ) - > isChecked ( ) ! = ( VALUE ) ) ( CHKBOX ) - > click ( ) ; \
if ( ( CHKBOX ) - > isChecked ( ) ! = ( VALUE ) ) ( CHKBOX ) - > setChecked ( VALUE ) ; \
2013-08-09 13:41:02 +02:00
if ( ( BLOCK ) ) { ( CHKBOX ) - > blockSignals ( false ) ; } \
2012-02-06 16:13:24 +01:00
}
2013-07-03 21:34:21 +02:00
PreferencesDialog : : PreferencesDialog ( QWidget * parent , PreferencesModel * preferences , bool x64 )
2012-02-03 00:53:14 +01:00
:
2012-02-05 02:49:08 +01:00
QDialog ( parent ) ,
m_x64 ( x64 )
2012-02-03 00:53:14 +01:00
{
setupUi ( this ) ;
setWindowFlags ( windowFlags ( ) & ( ~ Qt : : WindowContextHelpButtonHint ) ) ;
2012-02-04 01:12:21 +01:00
setFixedSize ( minimumSize ( ) ) ;
2012-02-03 00:53:14 +01:00
2013-07-03 23:56:41 +02:00
if ( WId hWindow = this - > winId ( ) )
{
HMENU hMenu = GetSystemMenu ( hWindow , 0 ) ;
EnableMenuItem ( hMenu , SC_CLOSE , MF_BYCOMMAND | MF_GRAYED ) ;
}
2012-02-04 01:12:21 +01:00
labelRunNextJob - > installEventFilter ( this ) ;
2012-03-25 22:11:07 +02:00
labelUse10BitEncoding - > installEventFilter ( this ) ;
2012-02-05 02:49:08 +01:00
labelUse64BitAvs2YUV - > installEventFilter ( this ) ;
2012-02-04 01:12:21 +01:00
labelShutdownComputer - > installEventFilter ( this ) ;
2012-04-30 19:26:41 +02:00
labelSaveLogFiles - > installEventFilter ( this ) ;
2012-05-14 21:47:47 +02:00
labelSaveToSourceFolder - > installEventFilter ( this ) ;
2013-07-01 03:03:21 +02:00
labelEnableSounds - > installEventFilter ( this ) ;
2013-08-08 23:18:31 +02:00
labelDisableWarnings - > installEventFilter ( this ) ;
2012-02-03 00:53:14 +01:00
2012-02-05 15:42:41 +01:00
connect ( resetButton , SIGNAL ( clicked ( ) ) , this , SLOT ( resetButtonPressed ( ) ) ) ;
2012-03-25 22:11:07 +02:00
connect ( checkUse10BitEncoding , SIGNAL ( toggled ( bool ) ) , this , SLOT ( use10BitEncodingToggled ( bool ) ) ) ;
2013-08-09 13:41:02 +02:00
connect ( checkDisableWarnings , SIGNAL ( toggled ( bool ) ) , this , SLOT ( disableWarningsToggled ( bool ) ) ) ;
2012-02-03 00:53:14 +01:00
m_preferences = preferences ;
}
PreferencesDialog : : ~ PreferencesDialog ( void )
{
}
void PreferencesDialog : : showEvent ( QShowEvent * event )
{
2012-02-05 15:42:41 +01:00
if ( event ) QDialog : : showEvent ( event ) ;
2012-02-04 01:12:21 +01:00
2013-08-09 13:41:02 +02:00
UPDATE_CHECKBOX ( checkRunNextJob , m_preferences - > autoRunNextJob ( ) , false ) ;
UPDATE_CHECKBOX ( checkShutdownComputer , m_preferences - > shutdownComputer ( ) , false ) ;
UPDATE_CHECKBOX ( checkUse64BitAvs2YUV , m_preferences - > useAvisyth64Bit ( ) , false ) ;
UPDATE_CHECKBOX ( checkSaveLogFiles , m_preferences - > saveLogFiles ( ) , false ) ;
UPDATE_CHECKBOX ( checkSaveToSourceFolder , m_preferences - > saveToSourcePath ( ) , false ) ;
UPDATE_CHECKBOX ( checkEnableSounds , m_preferences - > enableSounds ( ) , false ) ;
UPDATE_CHECKBOX ( checkDisableWarnings , m_preferences - > disableWarnings ( ) , true ) ;
UPDATE_CHECKBOX ( checkUse10BitEncoding , m_preferences - > use10BitEncoding ( ) , true ) ;
2012-03-25 22:11:07 +02:00
2013-07-03 21:34:21 +02:00
spinBoxJobCount - > setValue ( m_preferences - > maxRunningJobCount ( ) ) ;
comboBoxPriority - > setCurrentIndex ( qBound ( 0 , m_preferences - > processPriority ( ) , comboBoxPriority - > count ( ) - 1 ) ) ;
2013-06-17 00:42:57 +02:00
2012-02-05 02:49:08 +01:00
checkUse64BitAvs2YUV - > setEnabled ( m_x64 ) ;
labelUse64BitAvs2YUV - > setEnabled ( m_x64 ) ;
2012-02-03 00:53:14 +01:00
}
2012-02-04 01:12:21 +01:00
bool PreferencesDialog : : eventFilter ( QObject * o , QEvent * e )
{
2012-02-05 04:41:42 +01:00
emulateMouseEvent ( o , e , labelRunNextJob , checkRunNextJob ) ;
emulateMouseEvent ( o , e , labelShutdownComputer , checkShutdownComputer ) ;
2012-03-25 22:11:07 +02:00
emulateMouseEvent ( o , e , labelUse10BitEncoding , checkUse10BitEncoding ) ;
2012-02-05 04:41:42 +01:00
emulateMouseEvent ( o , e , labelUse64BitAvs2YUV , checkUse64BitAvs2YUV ) ;
2012-04-30 19:26:41 +02:00
emulateMouseEvent ( o , e , labelSaveLogFiles , checkSaveLogFiles ) ;
2012-05-14 21:47:47 +02:00
emulateMouseEvent ( o , e , labelSaveToSourceFolder , checkSaveToSourceFolder ) ;
2013-07-01 03:03:21 +02:00
emulateMouseEvent ( o , e , labelEnableSounds , checkEnableSounds ) ;
2013-08-08 23:18:31 +02:00
emulateMouseEvent ( o , e , labelDisableWarnings , checkDisableWarnings ) ;
2012-02-05 04:41:42 +01:00
return false ;
}
void PreferencesDialog : : emulateMouseEvent ( QObject * object , QEvent * event , QWidget * source , QWidget * target )
{
if ( object = = source )
2012-02-04 01:12:21 +01:00
{
2012-02-05 04:41:42 +01:00
if ( ( event - > type ( ) = = QEvent : : MouseButtonPress ) | | ( event - > type ( ) = = QEvent : : MouseButtonRelease ) )
2012-02-04 01:12:21 +01:00
{
2012-02-05 04:41:42 +01:00
if ( QMouseEvent * mouseEvent = dynamic_cast < QMouseEvent * > ( event ) )
2012-02-04 01:12:21 +01:00
{
2012-02-05 04:41:42 +01:00
qApp - > postEvent ( target , new QMouseEvent
(
event - > type ( ) ,
qApp - > widgetAt ( mouseEvent - > globalPos ( ) ) = = source ? QPoint ( 1 , 1 ) : QPoint ( INT_MAX , INT_MAX ) ,
Qt : : LeftButton ,
0 , 0
) ) ;
2012-02-04 01:12:21 +01:00
}
}
}
}
2012-02-05 15:42:41 +01:00
void PreferencesDialog : : done ( int n )
2012-02-03 00:53:14 +01:00
{
2013-07-03 21:34:21 +02:00
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 ( ) ) ;
2013-08-08 23:18:31 +02:00
m_preferences - > setDisableWarnings ( checkDisableWarnings - > isChecked ( ) ) ;
2013-07-03 21:34:21 +02:00
PreferencesModel : : savePreferences ( m_preferences ) ;
2012-02-05 15:42:41 +01:00
QDialog : : done ( n ) ;
}
void PreferencesDialog : : resetButtonPressed ( void )
{
2013-07-03 21:34:21 +02:00
PreferencesModel : : initPreferences ( m_preferences ) ;
2012-02-05 15:42:41 +01:00
showEvent ( NULL ) ;
}
2012-03-25 22:11:07 +02:00
void PreferencesDialog : : use10BitEncodingToggled ( bool checked )
{
if ( checked )
{
QString text ;
2013-08-09 13:41:02 +02:00
text + = QString ( " <nobr>%1</nobr><br> " ) . arg ( tr ( " Please note that 10−Bit H.264 streams are <b>not</b> currently supported by hardware (standalone) players! " ) ) ;
text + = QString ( " <nobr>%1</nobr><br> " ) . arg ( tr ( " To play such streams, you will need an <i>up−to−date</i> ffdshow−tryouts, CoreAVC 3.x or another supported s/w decoder. " ) ) ;
text + = QString ( " <nobr>%1</nobr><br> " ) . arg ( tr ( " Also be aware that hardware−acceleration (CUDA, DXVA, etc) usually will <b>not</b> work with 10−Bit H.264 streams. " ) ) ;
2012-03-25 22:11:07 +02:00
2013-08-09 13:41:02 +02:00
if ( QMessageBox : : warning ( this , tr ( " 10-Bit Encoding " ) , text . replace ( " - " , " − " ) , tr ( " Continue " ) , tr ( " Revert " ) , QString ( ) , 1 ) ! = 0 )
2012-03-25 22:11:07 +02:00
{
2013-08-09 13:41:02 +02:00
UPDATE_CHECKBOX ( checkUse10BitEncoding , false , true ) ;
2012-03-25 22:11:07 +02:00
}
}
}
2013-08-09 13:41:02 +02:00
void PreferencesDialog : : disableWarningsToggled ( bool checked )
{
if ( checked )
{
QString text ;
text + = QString ( " <nobr>%1</nobr><br> " ) . arg ( tr ( " Please note that Avisynth and/or VapourSynth support might be unavailable <b>without</b> any notice! " ) ) ;
text + = QString ( " <nobr>%1</nobr><br> " ) . arg ( tr ( " Also note that the CLI option <tt>--console</tt> may be used to get more diagnostic infomation. " ) ) ;
if ( QMessageBox : : warning ( this , tr ( " Avisynth/VapourSynth Warnings " ) , text . replace ( " - " , " − " ) , tr ( " Continue " ) , tr ( " Revert " ) , QString ( ) , 1 ) ! = 0 )
{
UPDATE_CHECKBOX ( checkDisableWarnings , false , true ) ;
}
}
}