From 451c7d69431f3b24d55452d899428c9d9a500326 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Mon, 14 Feb 2011 15:54:08 -0500 Subject: [PATCH] Get rid of DynDns mode in favor of allowing a user to force to use static host/port in the settings dialog. That now takes precedence, if enabled. If not enabled, and UPnP is enabled, it will attempt UPnP, falling back to static host/port if UPnP doesn't work, falling back to LAN if not. Users can still set LAN specifically in the config file, if they wish. Maybe should expose that at some point. --- src/libtomahawk/network/servent.cpp | 20 ++++++++++++-------- src/libtomahawk/tomahawksettings.cpp | 10 ++++++++++ src/libtomahawk/tomahawksettings.h | 5 ++++- src/settingsdialog.cpp | 17 ++++++++++++++++- src/settingsdialog.h | 2 ++ src/settingsdialog.ui | 19 ++++++++++++++++--- 6 files changed, 60 insertions(+), 13 deletions(-) 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) + + +