diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp index f1d47f619..16b2536b3 100644 --- a/src/libtomahawk/TomahawkSettings.cpp +++ b/src/libtomahawk/TomahawkSettings.cpp @@ -873,6 +873,20 @@ TomahawkSettings::setCrashReporterEnabled( bool enable ) } +bool +TomahawkSettings::exitOnClose() const +{ + return value( "ui/exitOnClose", false ).toBool(); +} + + +void +TomahawkSettings::setExitOnClose( bool enable ) +{ + setValue( "ui/exitOnClose", enable ); +} + + bool TomahawkSettings::songChangeNotificationEnabled() const { diff --git a/src/libtomahawk/TomahawkSettings.h b/src/libtomahawk/TomahawkSettings.h index 7c757b073..be02d86f2 100644 --- a/src/libtomahawk/TomahawkSettings.h +++ b/src/libtomahawk/TomahawkSettings.h @@ -163,6 +163,9 @@ public: bool crashReporterEnabled() const; /// true by default void setCrashReporterEnabled( bool enable ); + bool exitOnClose() const; /// false by default + void setExitOnClose( bool enable ); + bool songChangeNotificationEnabled() const; /// true by default void setSongChangeNotificationEnabled( bool enable ); diff --git a/src/tomahawk/TomahawkWindow.cpp b/src/tomahawk/TomahawkWindow.cpp index feeb16f18..c7fd9719d 100644 --- a/src/tomahawk/TomahawkWindow.cpp +++ b/src/tomahawk/TomahawkWindow.cpp @@ -756,13 +756,21 @@ TomahawkWindow::changeEvent( QEvent* e ) void TomahawkWindow::closeEvent( QCloseEvent* e ) { -#ifndef Q_OS_MAC - if ( e->spontaneous() && QSystemTrayIcon::isSystemTrayAvailable() ) - { - hide(); - e->ignore(); + + TomahawkSettings* s = TomahawkSettings::instance(); + + if( s->exitOnClose() ){ + qApp->quit(); return; } + +#ifndef Q_OS_MAC + else if ( e->spontaneous() && QSystemTrayIcon::isSystemTrayAvailable() ) + { + hide(); + e->ignore(); + return; + } #endif QMainWindow::closeEvent( e ); diff --git a/src/tomahawk/dialogs/SettingsDialog.cpp b/src/tomahawk/dialogs/SettingsDialog.cpp index 61c5b0902..19f428952 100644 --- a/src/tomahawk/dialogs/SettingsDialog.cpp +++ b/src/tomahawk/dialogs/SettingsDialog.cpp @@ -313,6 +313,7 @@ SettingsDialog::saveSettings() TomahawkSettings* s = TomahawkSettings::instance(); s->setCrashReporterEnabled( m_advancedWidgetUi->checkBoxReporter->checkState() == Qt::Checked ); + s->setExitOnClose( m_advancedWidgetUi->checkBoxExitOnClose->checkState() == Qt::Checked ); s->setHttpEnabled( m_advancedWidgetUi->checkBoxHttp->checkState() == Qt::Checked ); s->setHttpBindAll( m_advancedWidgetUi->checkBoxListenApi->checkState() == Qt::Checked ); s->setSongChangeNotificationEnabled( m_advancedWidgetUi->checkBoxSongChangeNotifications->checkState() == Qt::Checked ); diff --git a/src/tomahawk/dialogs/Settings_Advanced.ui b/src/tomahawk/dialogs/Settings_Advanced.ui index d6b05ef32..7fd705ac3 100644 --- a/src/tomahawk/dialogs/Settings_Advanced.ui +++ b/src/tomahawk/dialogs/Settings_Advanced.ui @@ -171,6 +171,19 @@ Other Settings + + + + Qt::LeftToRight + + + Exit on close + + + false + + +