From 4bafeb34fd9d4686c6fa21b8bfcb54c25071c8eb Mon Sep 17 00:00:00 2001 From: Jeff Mitchell <tomahawk@jefferai.org> Date: Mon, 7 Nov 2011 18:45:05 -0500 Subject: [PATCH] Insert private listening actions into Tomahawk menu and tray icon menu. Some visual feedback would be nice. --- src/libtomahawk/LatchManager.cpp | 1 + src/libtomahawk/actioncollection.cpp | 3 +++ src/libtomahawk/actioncollection.h | 2 +- src/libtomahawk/audio/audioengine.cpp | 28 ++++++++++++++++++++++++++- src/libtomahawk/audio/audioengine.h | 2 ++ src/tomahawktrayicon.cpp | 3 +++ src/tomahawkwindow.cpp | 4 ++++ 7 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/LatchManager.cpp b/src/libtomahawk/LatchManager.cpp index c47482a88..f596f009e 100644 --- a/src/libtomahawk/LatchManager.cpp +++ b/src/libtomahawk/LatchManager.cpp @@ -131,6 +131,7 @@ LatchManager::catchUpRequest() void LatchManager::unlatchRequest( const source_ptr& source ) { + Q_UNUSED( source ); AudioEngine::instance()->stop(); AudioEngine::instance()->setPlaylist( 0 ); diff --git a/src/libtomahawk/actioncollection.cpp b/src/libtomahawk/actioncollection.cpp index 42fbb59e3..db1bd78bd 100644 --- a/src/libtomahawk/actioncollection.cpp +++ b/src/libtomahawk/actioncollection.cpp @@ -17,6 +17,7 @@ */ #include "actioncollection.h" +#include "tomahawksettings.h" ActionCollection* ActionCollection::s_instance = 0; ActionCollection* ActionCollection::instance() @@ -38,6 +39,8 @@ ActionCollection::initActions() { m_actionCollection[ "latchOn" ] = new QAction( tr( "&Listen Along" ), this ); m_actionCollection[ "latchOff" ] = new QAction( tr( "&Stop Listening Along" ), this ); + m_actionCollection[ "togglePrivacy" ] = new QAction( tr( QString( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening ? + "&Listen Privately" : "&Listen Publicly" ).toAscii().constData() ), this ); } diff --git a/src/libtomahawk/actioncollection.h b/src/libtomahawk/actioncollection.h index 336796c1c..e53e24a4d 100644 --- a/src/libtomahawk/actioncollection.h +++ b/src/libtomahawk/actioncollection.h @@ -21,7 +21,7 @@ #include "dllmacro.h" -#include <QAction> +#include <QtGui/QAction> class DLLEXPORT ActionCollection : public QObject diff --git a/src/libtomahawk/audio/audioengine.cpp b/src/libtomahawk/audio/audioengine.cpp index 6cc461757..5e815e33c 100644 --- a/src/libtomahawk/audio/audioengine.cpp +++ b/src/libtomahawk/audio/audioengine.cpp @@ -24,16 +24,18 @@ #include "playlistinterface.h" #include "sourceplaylistinterface.h" #include "tomahawksettings.h" - +#include "actioncollection.h" #include "database/database.h" #include "database/databasecommand_logplayback.h" #include "network/servent.h" #include "utils/qnr_iodevicestream.h" +#include "headlesscheck.h" #include "album.h" #include "utils/logger.h" + using namespace Tomahawk; AudioEngine* AudioEngine::s_instance = 0; @@ -75,6 +77,11 @@ AudioEngine::AudioEngine() connect( m_audioOutput, SIGNAL( volumeChanged( qreal ) ), this, SLOT( onVolumeChanged( qreal ) ) ); +#ifndef TOMAHAWK_HEADLESS + tDebug() << Q_FUNC_INFO << "Connecting privacy toggle"; + connect( ActionCollection::instance()->getAction( "togglePrivacy" ), SIGNAL( triggered( bool ) ), this, SLOT( togglePrivateListeningMode() ) ); +#endif + onVolumeChanged( m_audioOutput->volume() ); #ifndef Q_WS_X11 @@ -394,6 +401,25 @@ AudioEngine::infoSystemFinished( QString caller ) } +void +AudioEngine::togglePrivateListeningMode() +{ + tDebug() << Q_FUNC_INFO; + if ( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening ) + TomahawkSettings::instance()->setPrivateListeningMode( TomahawkSettings::FullyPrivate ); + else + TomahawkSettings::instance()->setPrivateListeningMode( TomahawkSettings::PublicListening ); + +#ifndef TOMAHAWK_HEADLESS + ActionCollection::instance()->getAction( "togglePrivacy" )->setText( + tr( QString( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening ? + "&Listen Privately" : "&Listen Publicly" ).toAscii().constData() ) + ); +#endif +} + + + bool AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) { diff --git a/src/libtomahawk/audio/audioengine.h b/src/libtomahawk/audio/audioengine.h index f888ce42c..6a516cb46 100644 --- a/src/libtomahawk/audio/audioengine.h +++ b/src/libtomahawk/audio/audioengine.h @@ -103,6 +103,8 @@ public slots: void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output ); void infoSystemFinished( QString caller ); + void togglePrivateListeningMode(); + signals: void loading( const Tomahawk::result_ptr& track ); void started( const Tomahawk::result_ptr& track ); diff --git a/src/tomahawktrayicon.cpp b/src/tomahawktrayicon.cpp index bd6dad0f8..38495a481 100644 --- a/src/tomahawktrayicon.cpp +++ b/src/tomahawktrayicon.cpp @@ -27,6 +27,7 @@ #include "tomahawkwindow.h" #include "utils/logger.h" +#include <actioncollection.h> TomahawkTrayIcon::TomahawkTrayIcon( QObject* parent ) @@ -48,6 +49,8 @@ TomahawkTrayIcon::TomahawkTrayIcon( QObject* parent ) m_contextMenu->addSeparator(); m_prevAction = m_contextMenu->addAction( tr( "Previous Track" ) ); m_nextAction = m_contextMenu->addAction( tr( "Next Track" ) ); + m_contextMenu->addSeparator(); + m_contextMenu->addAction( ActionCollection::instance()->getAction( "togglePrivacy" ) ); #ifdef Q_WS_MAC // On mac you can close the windows while leaving the app open. We then need a way to show the main window again diff --git a/src/tomahawkwindow.cpp b/src/tomahawkwindow.cpp index 44931115d..2e90e2ffe 100644 --- a/src/tomahawkwindow.cpp +++ b/src/tomahawkwindow.cpp @@ -70,6 +70,7 @@ #include "utils/logger.h" #include "jobview/JobStatusModel.h" #include "LoadXSPFDialog.h" +#include <actioncollection.h> using namespace Tomahawk; @@ -105,6 +106,9 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) ui->menu_Help->addSeparator(); ui->menu_Help->addAction( "Crash now...", this, SLOT( crashNow() ) ); } + + ui->menuApp->insertAction( ui->actionCreatePlaylist, ActionCollection::instance()->getAction( "togglePrivacy" ) ); + ui->menuApp->insertSeparator( ui->actionCreatePlaylist ); // set initial state onSipDisconnected();