1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-07-31 19:30:21 +02:00

Shuffle Mode and Repeat mode are now stored on a playlist by playlist basis

in Tomahawk.conf
This commit is contained in:
Christopher Reichert
2011-05-29 00:26:20 -05:00
parent 2aab17ba8e
commit 30323c2d8a
6 changed files with 86 additions and 3 deletions

View File

@@ -28,6 +28,7 @@
#include "database/databasecommand_deleteplaylist.h"
#include "database/databasecommand_renameplaylist.h"
#include "tomahawksettings.h"
#include "pipeline.h"
#include "source.h"
#include "sourcelist.h"
@@ -219,6 +220,9 @@ Playlist::load( const QString& guid )
bool
Playlist::remove( const playlist_ptr& playlist )
{
TomahawkSettings *s = TomahawkSettings::instance();
s->removePlaylistSettings( playlist->guid() );
DatabaseCommand_DeletePlaylist* cmd = new DatabaseCommand_DeletePlaylist( playlist->author(), playlist->guid() );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );

View File

@@ -26,6 +26,7 @@
#include <QDir>
#include <QDebug>
#include "sip/SipHandler.h"
#include "playlistinterface.h"
#define VERSION 3
@@ -187,7 +188,6 @@ TomahawkSettings::setWatchForChanges( bool watch )
setValue( "watchForChanges", watch );
}
void
TomahawkSettings::setAcceptedLegalWarning( bool accept )
{
@@ -381,6 +381,36 @@ TomahawkSettings::setPlaylistColumnSizes( const QString& playlistid, const QByte
setValue( QString( "ui/playlist/%1/columnSizes" ).arg( playlistid ), state );
}
bool
TomahawkSettings::shuffleState( const QString& playlistid ) const
{
return value( QString( "ui/playlist/%1/shuffleState" ).arg( playlistid )).toBool();
}
void
TomahawkSettings::setShuffleState( const QString& playlistid, bool state)
{
setValue( QString( "ui/playlist/%1/shuffleState" ).arg( playlistid ), state );
}
void
TomahawkSettings::removePlaylistSettings( const QString& playlistid )
{
remove( QString( "ui/playlist/%1/shuffleState" ).arg( playlistid ) );
remove( QString( "ui/playlist/%1/repeatMode" ).arg( playlistid ) );
}
void
TomahawkSettings::setRepeatMode( const QString& playlistid, PlaylistInterface::RepeatMode mode )
{
setValue( QString( "ui/playlist/%1/repeatMode" ).arg( playlistid ), (int)mode );
}
PlaylistInterface::RepeatMode
TomahawkSettings::repeatMode( const QString& playlistid )
{
return (PlaylistInterface::RepeatMode)value( QString( "ui/playlist/%1/repeatMode" ).arg( playlistid )).toInt();
}
QList<Tomahawk::playlist_ptr>
TomahawkSettings::recentlyPlayedPlaylists() const

View File

@@ -68,6 +68,14 @@ public:
QList<Tomahawk::playlist_ptr> recentlyPlayedPlaylists() const;
QStringList recentlyPlayedPlaylistGuids( unsigned int amount = 0 ) const;
void appendRecentlyPlayedPlaylist( const Tomahawk::playlist_ptr& playlist );
bool shuffleState( const QString& playlistid ) const;
void setShuffleState( const QString& playlistid, bool state );
PlaylistInterface::RepeatMode repeatMode( const QString& playlistid );
void setRepeatMode( const QString& playlistid, PlaylistInterface::RepeatMode mode);
// remove shuffle state and repeat state
void removePlaylistSettings( const QString& playlistid );
/// SIP plugins
// all plugins we know about. loaded, unloaded, enabled, disabled.

View File

@@ -142,6 +142,7 @@ ViewManager::ViewManager( QObject* parent )
ViewManager::~ViewManager()
{
saveCurrentPlaylistSettings();
delete m_widget;
}
@@ -581,6 +582,9 @@ ViewManager::setPage( ViewPage* page, bool trackHistory )
if ( !page )
return;
// save the old playlist shuffle state in config before we change playlists
saveCurrentPlaylistSettings();
unlinkPlaylist();
if ( !m_pageHistory.contains( page ) )
@@ -652,6 +656,24 @@ ViewManager::unlinkPlaylist()
}
}
void
ViewManager::saveCurrentPlaylistSettings()
{
TomahawkSettings* s = TomahawkSettings::instance();
Tomahawk::playlist_ptr pl = playlistForInterface( currentPlaylistInterface() );
if ( !pl.isNull() ) {
s->setShuffleState( pl->guid(), currentPlaylistInterface()->shuffled() );
s->setRepeatMode( pl->guid(), currentPlaylistInterface()->repeatMode() );
} else {
Tomahawk::dynplaylist_ptr dynPl = dynamicPlaylistForInterface( currentPlaylistInterface() );
if ( !dynPl.isNull() ) {
s->setShuffleState( dynPl->guid(), currentPlaylistInterface()->shuffled() );
s->setRepeatMode( dynPl->guid(), currentPlaylistInterface()->repeatMode() );
}
}
}
void
ViewManager::updateView()
@@ -704,8 +726,26 @@ ViewManager::updateView()
m_infobar->setCaption( currentPage()->title() );
m_infobar->setDescription( currentPage()->description() );
m_infobar->setPixmap( currentPage()->pixmap() );
// turn on shuffle/repeat mode for the new playlist view if specified in config
loadCurrentPlaylistSettings();
}
void
ViewManager::loadCurrentPlaylistSettings()
{
TomahawkSettings* s = TomahawkSettings::instance();
Tomahawk::playlist_ptr pl = playlistForInterface( currentPlaylistInterface() );
if ( !pl.isNull() ) {
currentPlaylistInterface()->setShuffled( s->shuffleState( pl->guid() ));
currentPlaylistInterface()->setRepeatMode( s->repeatMode( pl->guid() ));
} else {
Tomahawk::dynplaylist_ptr dynPl = dynamicPlaylistForInterface( currentPlaylistInterface() );
if ( !dynPl.isNull() ) {
currentPlaylistInterface()->setShuffled( s->shuffleState( dynPl->guid() ));
}
}
}
void
ViewManager::onWidgetDestroyed( QWidget* widget )

View File

@@ -162,7 +162,9 @@ private:
void setPage( Tomahawk::ViewPage* page, bool trackHistory = true );
void updateView();
void unlinkPlaylist();
void saveCurrentPlaylistSettings();
void loadCurrentPlaylistSettings();
Tomahawk::playlist_ptr playlistForInterface( PlaylistInterface* interface ) const;
Tomahawk::dynplaylist_ptr dynamicPlaylistForInterface( PlaylistInterface* interface ) const;
Tomahawk::collection_ptr collectionForInterface( PlaylistInterface* interface ) const;

View File

@@ -233,7 +233,6 @@ TomahawkWindow::loadSettings()
restoreState( s->mainWindowState() );
if ( !s->mainWindowSplitterState().isEmpty() )
ui->splitter->restoreState( s->mainWindowSplitterState() );
#ifdef QT_MAC_USE_COCOA
if( workaround ) {
// Make it visible again