diff --git a/src/libtomahawk/network/servent.cpp b/src/libtomahawk/network/servent.cpp index 4d69e8134..e820229f7 100644 --- a/src/libtomahawk/network/servent.cpp +++ b/src/libtomahawk/network/servent.cpp @@ -88,6 +88,18 @@ Servent::startListening( QHostAddress ha, bool upnp, int port ) // --lanhack means to advertise your LAN IP over jabber as if it were externallyVisible qDebug() << "Address mode = " << (int)(TomahawkSettings::instance()->externalAddressMode()); + qDebug() << "Static host/port preferred ? = " << ( TomahawkSettings::instance()->preferStaticHostPort() ? "true" : "false" ); + + if( TomahawkSettings::instance()->preferStaticHostPort() ) + { + qDebug() << "Forcing static preferred host and port"; + m_externalHostname = TomahawkSettings::instance()->externalHostname(); + m_externalPort = TomahawkSettings::instance()->externalPort(); + qDebug() << m_externalHostname << m_externalPort; + emit ready(); + return true; + } + switch( TomahawkSettings::instance()->externalAddressMode() ) { case TomahawkSettings::Lan: @@ -101,14 +113,6 @@ Servent::startListening( QHostAddress ha, bool upnp, int port ) } break; - case TomahawkSettings::DynDns: - qDebug() << "External address mode set to dyndns..."; - m_externalHostname = TomahawkSettings::instance()->externalHostname(); - m_externalPort = TomahawkSettings::instance()->externalPort(); - qDebug() << m_externalHostname << m_externalPort; - emit ready(); - break; - case TomahawkSettings::Upnp: // TODO check if we have a public/internet IP on this machine directly qDebug() << "External address mode set to upnp...."; diff --git a/src/libtomahawk/tomahawksettings.cpp b/src/libtomahawk/tomahawksettings.cpp index 611bb4cf5..a0c458ecc 100644 --- a/src/libtomahawk/tomahawksettings.cpp +++ b/src/libtomahawk/tomahawksettings.cpp @@ -312,6 +312,16 @@ TomahawkSettings::setExternalAddressMode( ExternalAddressMode externalAddressMod setValue( "network/external-address-mode", externalAddressMode ); } +bool TomahawkSettings::preferStaticHostPort() const +{ + return value( "network/prefer-static-host-and-port" ).toBool(); +} + +void TomahawkSettings::setPreferStaticHostPort( bool prefer ) +{ + setValue( "network/prefer-static-host-and-port", prefer ); +} + QString TomahawkSettings::externalHostname() const { diff --git a/src/libtomahawk/tomahawksettings.h b/src/libtomahawk/tomahawksettings.h index 19bbbf492..a667fa0c9 100644 --- a/src/libtomahawk/tomahawksettings.h +++ b/src/libtomahawk/tomahawksettings.h @@ -55,9 +55,12 @@ public: void setJabberPort( int port ); /// Network settings - enum ExternalAddressMode { Lan, DynDns, Upnp }; + enum ExternalAddressMode { Lan, Upnp }; ExternalAddressMode externalAddressMode() const; void setExternalAddressMode(ExternalAddressMode externalAddressMode); + + bool preferStaticHostPort() const; + void setPreferStaticHostPort( bool prefer ); bool httpEnabled() const; /// true by default void setHttpEnabled( bool enable ); diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index a4ef3e39e..3360ae586 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -42,7 +42,9 @@ SettingsDialog::SettingsDialog( QWidget *parent ) TomahawkSettings* s = TomahawkSettings::instance(); ui->checkBoxHttp->setChecked( s->httpEnabled() ); + ui->checkBoxStaticPreferred->setChecked( s->preferStaticHostPort() ); ui->checkBoxUpnp->setChecked( s->externalAddressMode() == TomahawkSettings::Upnp ); + ui->checkBoxUpnp->setEnabled( !s->preferStaticHostPort() ); // JABBER ui->checkBoxJabberAutoConnect->setChecked( s->jabberAutoConnect() ); @@ -91,6 +93,7 @@ SettingsDialog::SettingsDialog( QWidget *parent ) connect( ui->buttonBrowse, SIGNAL( clicked() ), SLOT( showPathSelector() ) ); connect( ui->proxyButton, SIGNAL( clicked() ), SLOT( showProxySettings() ) ); + connect( ui->checkBoxStaticPreferred, SIGNAL( toggled(bool) ), SLOT( toggleUpnp(bool) ) ); connect( this, SIGNAL( rejected() ), SLOT( onRejected() ) ); } @@ -116,7 +119,9 @@ SettingsDialog::~SettingsDialog() } s->setHttpEnabled( ui->checkBoxHttp->checkState() == Qt::Checked ); - s->setExternalAddressMode(ui->checkBoxUpnp->checkState() == Qt::Checked ? TomahawkSettings::Upnp : TomahawkSettings::Lan); + + s->setPreferStaticHostPort( ui->checkBoxStaticPreferred->checkState() == Qt::Checked ); + s->setExternalAddressMode( ui->checkBoxUpnp->checkState() == Qt::Checked ? TomahawkSettings::Upnp : TomahawkSettings::Lan ); s->setJabberAutoConnect( ui->checkBoxJabberAutoConnect->checkState() == Qt::Checked ); s->setJabberUsername( ui->jabberUsername->text() ); @@ -222,6 +227,16 @@ SettingsDialog::showProxySettings() } +void +SettingsDialog::toggleUpnp( bool preferStaticEnabled ) +{ + if ( preferStaticEnabled ) + ui->checkBoxUpnp->setEnabled( false ); + else + ui->checkBoxUpnp->setEnabled( true ); +} + + void SettingsDialog::testLastFmLogin() { diff --git a/src/settingsdialog.h b/src/settingsdialog.h index 72ba47ad7..7c0e6c0a8 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -50,6 +50,8 @@ private slots: void showPathSelector(); void doScan(); + void toggleUpnp( bool preferStaticEnabled ); + void showProxySettings(); void testLastFmLogin(); diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 6748e52f8..ddbc5b357 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -235,9 +235,12 @@ - + - + + + + 0 @@ -253,7 +256,7 @@ - + @@ -295,6 +298,16 @@ + + + + Qt::RightToLeft + + + Always use static host name/port? (Overrides UPnP discovery/port forwarding) + + +