--- a/src/libLastFmTools/browserthread.cpp +++ b/src/libLastFmTools/browserthread.cpp @@ -20,6 +20,7 @@ ***************************************************************************/ #include "browserthread.h" +#include "Settings.h" #include <QStringList> #include <QStringList> @@ -37,7 +38,6 @@ void BrowserThread::run() { -#if 0 #ifdef WIN32 WCHAR val[1024]; memset( val, 0, 1024 ); @@ -61,22 +61,36 @@ #endif #ifdef Q_WS_X11 - QString browser = "firefox"; + QString browser = The::settings().browser(); QStringList params; - params.append( QString( QUrl::toPercentEncoding( m_url ) ) ); + params.append( QString( QUrl( m_url ).toEncoded() ) ); QStringList options; + + if ( browser.trimmed() == "" ) + #if QT_VERSION >= 0x040200 + { + QDesktopServices::openUrl( QUrl::fromEncoded( m_url.toLatin1() ) ); + goto _end; + } + #else + { + browser = "sensible-browser"; + } + #endif + options = browser.split( " " ); if ( options.size() == 0 ) options.append( browser ); for ( int i = 1; i < options.size(); i++ ) { - qDebug( QString( "param: " + options.at( i ) ).toLocal8Bit() ); + qDebug() << QString( "param: " + options.at( i ) ).toLocal8Bit(); params.append( "\"" + options.at( i ) + "\"" ); } QProcess::startDetached( options.at( 0 ), params ); + _end: + return; #endif -#endif } --- a/src/libLastFmTools/browserthread.h +++ b/src/libLastFmTools/browserthread.h @@ -35,7 +35,7 @@ public: BrowserThread( QString url ) : QThread() { - #if QT_VERSION >= 0x040200 + #if QT_VERSION >= 0x040200 && !defined(Q_WS_X11) QDesktopServices::openUrl( QUrl::fromEncoded( url.toLatin1() ) ); deleteLater(); #else --- a/src/settingsdialog_connection.ui +++ b/src/settingsdialog_connection.ui @@ -6,7 +6,7 @@ <x>0</x> <y>0</y> <width>400</width> - <height>337</height> + <height>340</height> </rect> </property> <property name="windowTitle" > @@ -165,6 +165,41 @@ </widget> </item> <item> + <widget class="QGroupBox" name="browserBox" > + <property name="title" > + <string>Web Browser</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Browser</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="browserCommandEdit" /> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> <widget class="QGroupBox" name="groupBox" > <property name="title" > <string>Bandwidth Usage</string> --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -75,6 +75,9 @@ QWidget* connWidget = new QWidget(); ui_connection.setupUi( connWidget ); +#ifndef Q_WS_X11 + ui_connection.browserBox->hide(); +#endif ui.pageStack->addWidget( connWidget ); QWidget* mediadeviceWidget = new QWidget(); @@ -203,6 +206,10 @@ #ifdef Q_WS_MAC connect( ui_account.showInDockCheck, SIGNAL( toggled( bool ) ), this, SLOT( configChanged() ) ); #endif + + #ifdef Q_WS_X11 + connect( ui_connection.browserCommandEdit, SIGNAL( textChanged( QString ) ), this, SLOT( configChanged() ) ); + #endif } void @@ -221,6 +228,9 @@ int SettingsDialog::exec() { +#ifdef Q_WS_X11 + originalBrowserCommand = The::settings().browser(); +#endif originalUsername = The::settings().currentUser().username(); originalPassword = The::settings().currentUser().password(); originalProxyHost = The::settings().getProxyHost(); @@ -323,6 +333,9 @@ ui_connection.proxyPasswordEdit->setText( The::settings().getProxyPassword() ); ui_connection.downloadMetadataCheck->setChecked( The::settings().currentUser().metadataEnabled() ); ui_connection.crashReportCheck->setChecked( The::settings().currentUser().crashReportingEnabled() ); +#ifdef Q_WS_X11 + ui_connection.browserCommandEdit->setText( The::settings().browser() ); +#endif } @@ -459,6 +472,9 @@ The::settings().setUseProxy( ui_connection.proxyBox->isChecked() ); The::settings().currentUser().setMetadataEnabled( ui_connection.downloadMetadataCheck->isChecked() ); The::settings().currentUser().setCrashReportingEnabled( ui_connection.crashReportCheck->isChecked() ); +#ifdef Q_WS_X11 + The::settings().setBrowser( ui_connection.browserCommandEdit->text() ); +#endif } @@ -530,6 +546,9 @@ ui_connection.proxyUsernameEdit->text() != originalProxyUsername || ui_connection.proxyPasswordEdit->text() != originalProxyPassword || ui_connection.proxyPortEdit->text().toInt() != originalProxyPort || + #ifdef Q_WS_X11 + ui_connection.browserCommandEdit->text() != originalBrowserCommand || + #endif ui_connection.proxyBox->isChecked() != originalProxyUsage; } --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -87,6 +87,8 @@ QString originalUsername; QString originalPassword; + QString originalBrowserCommand; + QString originalProxyHost; QString originalProxyUsername; QString originalProxyPassword;