@ -1,26 +1,17 @@
# include "optionsdialog.h"
# include "optionsdialog.h"
# include "ui_optionsdialog.h"
# include "ui_optionsdialog.h"
# include "bitcoinamountfield.h"
# include "bitcoinunits.h"
# include "bitcoinunits.h"
# include "monitoreddatamapper.h"
# include "monitoreddatamapper.h"
# include "netbase.h"
# include "netbase.h"
# include "optionsmodel.h"
# include "optionsmodel.h"
# include "qvalidatedlineedit.h"
# include "qvaluecombobox.h"
# include <QCheckBox>
# include <QDir>
# include <QDir>
# include <QIntValidator>
# include <QIntValidator>
# include <QLabel>
# include <QLineEdit>
# include <QLocale>
# include <QLocale>
# include <QMessageBox>
# include <QMessageBox>
# include <QPushButton>
# include <QRegExp>
# include <QRegExp>
# include <QRegExpValidator>
# include <QRegExpValidator>
# include <QTabWidget>
# include <QWidget>
OptionsDialog : : OptionsDialog ( QWidget * parent ) :
OptionsDialog : : OptionsDialog ( QWidget * parent ) :
QDialog ( parent ) ,
QDialog ( parent ) ,
@ -38,18 +29,19 @@ OptionsDialog::OptionsDialog(QWidget *parent) :
ui - > mapPortUpnp - > setEnabled ( false ) ;
ui - > mapPortUpnp - > setEnabled ( false ) ;
# endif
# endif
ui - > proxyIp - > setEnabled ( false ) ;
ui - > proxyPort - > setEnabled ( false ) ;
ui - > proxyPort - > setValidator ( new QIntValidator ( 1 , 65535 , this ) ) ;
ui - > socksVersion - > setEnabled ( false ) ;
ui - > socksVersion - > setEnabled ( false ) ;
ui - > socksVersion - > addItem ( " 5 " , 5 ) ;
ui - > socksVersion - > addItem ( " 5 " , 5 ) ;
ui - > socksVersion - > addItem ( " 4 " , 4 ) ;
ui - > socksVersion - > addItem ( " 4 " , 4 ) ;
ui - > socksVersion - > setCurrentIndex ( 0 ) ;
ui - > socksVersion - > setCurrentIndex ( 0 ) ;
ui - > proxyIp - > setEnabled ( false ) ;
ui - > proxyPort - > setEnabled ( false ) ;
ui - > proxyPort - > setValidator ( new QIntValidator ( 0 , 65535 , this ) ) ;
connect ( ui - > connectSocks , SIGNAL ( toggled ( bool ) ) , ui - > socksVersion , SLOT ( setEnabled ( bool ) ) ) ;
connect ( ui - > connectSocks , SIGNAL ( toggled ( bool ) ) , ui - > proxyIp , SLOT ( setEnabled ( bool ) ) ) ;
connect ( ui - > connectSocks , SIGNAL ( toggled ( bool ) ) , ui - > proxyIp , SLOT ( setEnabled ( bool ) ) ) ;
connect ( ui - > connectSocks , SIGNAL ( toggled ( bool ) ) , ui - > proxyPort , SLOT ( setEnabled ( bool ) ) ) ;
connect ( ui - > connectSocks , SIGNAL ( toggled ( bool ) ) , ui - > proxyPort , SLOT ( setEnabled ( bool ) ) ) ;
connect ( ui - > connectSocks , SIGNAL ( toggled ( bool ) ) , ui - > socksVersion , SLOT ( setEnabled ( bool ) ) ) ;
connect ( ui - > connectSocks , SIGNAL ( clicked ( bool ) ) , this , SLOT ( showRestartWarning_Proxy ( ) ) ) ;
ui - > proxyIp - > installEventFilter ( this ) ;
ui - > proxyIp - > installEventFilter ( this ) ;
@ -90,9 +82,6 @@ OptionsDialog::OptionsDialog(QWidget *parent) :
ui - > unit - > setModel ( new BitcoinUnits ( this ) ) ;
ui - > unit - > setModel ( new BitcoinUnits ( this ) ) ;
connect ( ui - > connectSocks , SIGNAL ( clicked ( bool ) ) , this , SLOT ( showRestartWarning_Proxy ( ) ) ) ;
connect ( ui - > lang , SIGNAL ( activated ( int ) ) , this , SLOT ( showRestartWarning_Lang ( ) ) ) ;
/* Widget-to-option mapper */
/* Widget-to-option mapper */
mapper = new MonitoredDataMapper ( this ) ;
mapper = new MonitoredDataMapper ( this ) ;
mapper - > setSubmitPolicy ( QDataWidgetMapper : : ManualSubmit ) ;
mapper - > setSubmitPolicy ( QDataWidgetMapper : : ManualSubmit ) ;
@ -102,8 +91,8 @@ OptionsDialog::OptionsDialog(QWidget *parent) :
connect ( mapper , SIGNAL ( viewModified ( ) ) , this , SLOT ( enableSaveButtons ( ) ) ) ;
connect ( mapper , SIGNAL ( viewModified ( ) ) , this , SLOT ( enableSaveButtons ( ) ) ) ;
/* disable save buttons when new data loaded */
/* disable save buttons when new data loaded */
connect ( mapper , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( disableSaveButtons ( ) ) ) ;
connect ( mapper , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( disableSaveButtons ( ) ) ) ;
/* disable/enable save button s when proxy IP is invalid/valid */
/* setup/change UI element s when proxy IP is invalid/valid */
connect ( this , SIGNAL ( proxyIpValid ( bool ) ) , this , SLOT ( setSaveButtonState ( bool ) ) ) ;
connect ( this , SIGNAL ( proxyIpValid ( QValidatedLineEdit * , bool ) ) , this , SLOT ( handleProxyIpValid ( QValidatedLineEdit * , bool ) ) ) ;
}
}
OptionsDialog : : ~ OptionsDialog ( )
OptionsDialog : : ~ OptionsDialog ( )
@ -124,8 +113,11 @@ void OptionsDialog::setModel(OptionsModel *model)
mapper - > toFirst ( ) ;
mapper - > toFirst ( ) ;
}
}
// update the display unit, to not use the default ("BTC")
/* update the display unit, to not use the default ("BTC") */
updateDisplayUnit ( ) ;
updateDisplayUnit ( ) ;
/* warn only when language selection changes (placed here so init of ui->lang via mapper doesn't trigger this) */
connect ( ui - > lang , SIGNAL ( valueChanged ( ) ) , this , SLOT ( showRestartWarning_Lang ( ) ) ) ;
}
}
void OptionsDialog : : setMapper ( )
void OptionsDialog : : setMapper ( )
@ -137,10 +129,11 @@ void OptionsDialog::setMapper()
/* Network */
/* Network */
mapper - > addMapping ( ui - > mapPortUpnp , OptionsModel : : MapPortUPnP ) ;
mapper - > addMapping ( ui - > mapPortUpnp , OptionsModel : : MapPortUPnP ) ;
mapper - > addMapping ( ui - > connectSocks , OptionsModel : : ProxyUse ) ;
mapper - > addMapping ( ui - > connectSocks , OptionsModel : : ProxyUse ) ;
mapper - > addMapping ( ui - > socksVersion , OptionsModel : : ProxySocksVersion ) ;
mapper - > addMapping ( ui - > proxyIp , OptionsModel : : ProxyIP ) ;
mapper - > addMapping ( ui - > proxyIp , OptionsModel : : ProxyIP ) ;
mapper - > addMapping ( ui - > proxyPort , OptionsModel : : ProxyPort ) ;
mapper - > addMapping ( ui - > proxyPort , OptionsModel : : ProxyPort ) ;
mapper - > addMapping ( ui - > socksVersion , OptionsModel : : ProxySocksVersion ) ;
/* Window */
/* Window */
# ifndef Q_WS_MAC
# ifndef Q_WS_MAC
@ -156,7 +149,7 @@ void OptionsDialog::setMapper()
void OptionsDialog : : enableSaveButtons ( )
void OptionsDialog : : enableSaveButtons ( )
{
{
// prevent enabling of the save buttons when data modified, if there is an invalid proxy address present
/* prevent enabling of the save buttons when data modified, if there is an invalid proxy address present */
if ( fProxyIpValid )
if ( fProxyIpValid )
setSaveButtonState ( true ) ;
setSaveButtonState ( true ) ;
}
}
@ -211,30 +204,39 @@ void OptionsDialog::updateDisplayUnit()
{
{
if ( model )
if ( model )
{
{
// Update transactionFee with the current unit
/* Update transactionFee with the current unit */
ui - > transactionFee - > setDisplayUnit ( model - > getDisplayUnit ( ) ) ;
ui - > transactionFee - > setDisplayUnit ( model - > getDisplayUnit ( ) ) ;
}
}
}
}
bool OptionsDialog : : eventFilter ( QObjec t * object , QEvent * event )
void OptionsDialog : : handleProxyIpValid ( QValidatedLineEdi t * object , bool fState )
{
{
if ( object = = ui - > proxyIp & & event - > type ( ) = = QEvent : : FocusOut )
// this is used in a check before re-enabling the save buttons
fProxyIpValid = fState ;
if ( fProxyIpValid )
{
{
// Check proxyIP for a valid IPv4/IPv6 address
enableSaveButtons ( ) ;
CService addr ;
ui - > statusLabel - > clear ( ) ;
if ( ! LookupNumeric ( ui - > proxyIp - > text ( ) . toStdString ( ) . c_str ( ) , addr ) )
}
else
{
{
ui - > proxyIp - > setValid ( false ) ;
disableSaveButtons ( ) ;
fProxyIpValid = false ;
object - > setValid ( fProxyIpValid ) ;
ui - > statusLabel - > setStyleSheet ( " QLabel { color: red; } " ) ;
ui - > statusLabel - > setStyleSheet ( " QLabel { color: red; } " ) ;
ui - > statusLabel - > setText ( tr ( " The supplied proxy address is invalid. " ) ) ;
ui - > statusLabel - > setText ( tr ( " The supplied proxy address is invalid. " ) ) ;
emit proxyIpValid ( false ) ;
}
}
else
}
bool OptionsDialog : : eventFilter ( QObject * object , QEvent * event )
{
{
fProxyIpValid = true ;
if ( event - > type ( ) = = QEvent : : FocusOut )
ui - > statusLabel - > clear ( ) ;
{
emit proxyIpValid ( true ) ;
if ( object = = ui - > proxyIp )
{
CService addr ;
/* Check proxyIp for a valid IPv4/IPv6 address and emit the proxyIpValid signal */
emit proxyIpValid ( ui - > proxyIp , LookupNumeric ( ui - > proxyIp - > text ( ) . toStdString ( ) . c_str ( ) , addr ) ) ;
}
}
}
}
return QDialog : : eventFilter ( object , event ) ;
return QDialog : : eventFilter ( object , event ) ;