1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 22:26:32 +02:00

* Little PlaylistModel cleanup.

This commit is contained in:
Christian Muehlhaeuser
2011-01-17 07:52:04 +01:00
parent 47d9311df0
commit c0f87542b7
12 changed files with 89 additions and 51 deletions

View File

@@ -54,7 +54,7 @@ SourceInfoWidget::~SourceInfoWidget()
void void
SourceInfoWidget::onPlaybackFinished( const Tomahawk::query_ptr& query ) SourceInfoWidget::onPlaybackFinished( const Tomahawk::query_ptr& query )
{ {
m_historyModel->insertTrack( 0, query ); m_historyModel->insert( 0, query );
} }

View File

@@ -35,7 +35,7 @@ public:
void addFilteredCollection( const Tomahawk::collection_ptr& collection, unsigned int amount, DatabaseCommand_AllTracks::SortOrder order ); void addFilteredCollection( const Tomahawk::collection_ptr& collection, unsigned int amount, DatabaseCommand_AllTracks::SortOrder order );
virtual void appendTrack( const Tomahawk::query_ptr& query ) {} virtual void append( const Tomahawk::query_ptr& query ) {}
signals: signals:
void repeatModeChanged( PlaylistInterface::RepeatMode mode ); void repeatModeChanged( PlaylistInterface::RepeatMode mode );

View File

@@ -21,8 +21,6 @@
#include "infowidgets/sourceinfowidget.h" #include "infowidgets/sourceinfowidget.h"
#include "widgets/welcomewidget.h"
#define FILTER_TIMEOUT 280 #define FILTER_TIMEOUT 280
@@ -67,7 +65,10 @@ PlaylistManager::PlaylistManager( QObject* parent )
m_stack->addWidget( m_superCollectionView ); m_stack->addWidget( m_superCollectionView );
m_stack->addWidget( m_superAlbumView ); m_stack->addWidget( m_superAlbumView );
show( new WelcomeWidget() ); m_stack->setContentsMargins( 0, 0, 0, 0 );
m_widget->setContentsMargins( 0, 0, 0, 0 );
m_widget->layout()->setContentsMargins( 0, 0, 0, 0 );
m_widget->layout()->setMargin( 0 );
connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) ); connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) );
} }
@@ -125,6 +126,42 @@ PlaylistManager::show( const Tomahawk::playlist_ptr& playlist )
} }
bool
PlaylistManager::show( const Tomahawk::artist_ptr& artist )
{
qDebug() << Q_FUNC_INFO << &artist << artist.data();
unlinkPlaylist();
if ( !m_artistViews.contains( artist ) )
{
PlaylistView* view = new PlaylistView();
PlaylistModel* model = new PlaylistModel();
view->setModel( model );
model->append( artist );
m_currentInterface = view->proxyModel();
m_artistViews.insert( artist, view );
m_stack->addWidget( view );
m_stack->setCurrentWidget( view );
}
else
{
PlaylistView* view = m_artistViews.value( artist );
m_stack->setCurrentWidget( view );
m_currentInterface = view->proxyModel();
}
m_superCollectionVisible = false;
m_statsAvailable = false;
m_modesAvailable = false;
linkPlaylist();
emit numSourcesChanged( 1 );
return true;
}
bool bool
PlaylistManager::show( const Tomahawk::album_ptr& album ) PlaylistManager::show( const Tomahawk::album_ptr& album )
{ {
@@ -136,7 +173,7 @@ PlaylistManager::show( const Tomahawk::album_ptr& album )
PlaylistView* view = new PlaylistView(); PlaylistView* view = new PlaylistView();
PlaylistModel* model = new PlaylistModel(); PlaylistModel* model = new PlaylistModel();
view->setModel( model ); view->setModel( model );
model->appendAlbum( album ); model->append( album );
m_currentInterface = view->proxyModel(); m_currentInterface = view->proxyModel();
m_albumViews.insert( album, view ); m_albumViews.insert( album, view );

View File

@@ -36,6 +36,7 @@ public:
bool isSuperCollectionVisible() const { return true; } bool isSuperCollectionVisible() const { return true; }
bool show( const Tomahawk::playlist_ptr& playlist ); bool show( const Tomahawk::playlist_ptr& playlist );
bool show( const Tomahawk::artist_ptr& artist );
bool show( const Tomahawk::album_ptr& album ); bool show( const Tomahawk::album_ptr& album );
bool show( const Tomahawk::collection_ptr& collection ); bool show( const Tomahawk::collection_ptr& collection );
bool show( const Tomahawk::source_ptr& source ); bool show( const Tomahawk::source_ptr& source );
@@ -97,6 +98,7 @@ private:
QHash< Tomahawk::collection_ptr, AlbumView* > m_collectionAlbumViews; QHash< Tomahawk::collection_ptr, AlbumView* > m_collectionAlbumViews;
QHash< Tomahawk::playlist_ptr, PlaylistView* > m_playlistViews; QHash< Tomahawk::playlist_ptr, PlaylistView* > m_playlistViews;
QHash< Tomahawk::artist_ptr, PlaylistView* > m_artistViews;
QHash< Tomahawk::album_ptr, PlaylistView* > m_albumViews; QHash< Tomahawk::album_ptr, PlaylistView* > m_albumViews;
QHash< Tomahawk::source_ptr, SourceInfoWidget* > m_sourceViews; QHash< Tomahawk::source_ptr, SourceInfoWidget* > m_sourceViews;

View File

@@ -94,32 +94,6 @@ PlaylistModel::loadPlaylist( const Tomahawk::playlist_ptr& playlist )
} }
void
PlaylistModel::appendAlbum( const Tomahawk::album_ptr& album )
{
if ( album.isNull() )
return;
connect( album.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ),
SLOT( onTracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ) );
onTracksAdded( album->tracks(), album->collection() );
}
void
PlaylistModel::appendArtist( const Tomahawk::artist_ptr& artist )
{
if ( artist.isNull() )
return;
connect( artist.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ),
SLOT( onTracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ) );
onTracksAdded( artist->tracks(), artist->collection() );
}
void void
PlaylistModel::loadHistory( const Tomahawk::source_ptr& source, unsigned int amount ) PlaylistModel::loadHistory( const Tomahawk::source_ptr& source, unsigned int amount )
{ {
@@ -145,7 +119,7 @@ PlaylistModel::loadHistory( const Tomahawk::source_ptr& source, unsigned int amo
void void
PlaylistModel::appendTrack( const Tomahawk::query_ptr& query ) PlaylistModel::append( const Tomahawk::query_ptr& query )
{ {
if ( query.isNull() ) if ( query.isNull() )
return; return;
@@ -158,7 +132,33 @@ PlaylistModel::appendTrack( const Tomahawk::query_ptr& query )
void void
PlaylistModel::insertTrack( unsigned int row, const Tomahawk::query_ptr& query ) PlaylistModel::append( const Tomahawk::album_ptr& album )
{
if ( album.isNull() )
return;
connect( album.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ),
SLOT( onTracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ) );
onTracksAdded( album->tracks(), album->collection() );
}
void
PlaylistModel::append( const Tomahawk::artist_ptr& artist )
{
if ( artist.isNull() )
return;
connect( artist.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ),
SLOT( onTracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::collection_ptr ) ) );
onTracksAdded( artist->tracks(), artist->collection() );
}
void
PlaylistModel::insert( unsigned int row, const Tomahawk::query_ptr& query )
{ {
if ( query.isNull() ) if ( query.isNull() )
return; return;

View File

@@ -33,11 +33,11 @@ public:
void loadPlaylist( const Tomahawk::playlist_ptr& playlist ); void loadPlaylist( const Tomahawk::playlist_ptr& playlist );
void loadHistory( const Tomahawk::source_ptr& source, unsigned int amount = 100 ); void loadHistory( const Tomahawk::source_ptr& source, unsigned int amount = 100 );
void appendTrack( const Tomahawk::query_ptr& query ); void append( const Tomahawk::query_ptr& query );
void appendAlbum( const Tomahawk::album_ptr& album ); void append( const Tomahawk::album_ptr& album );
void appendArtist( const Tomahawk::artist_ptr& artist ); void append( const Tomahawk::artist_ptr& artist );
void insertTrack( unsigned int row, const Tomahawk::query_ptr& query ); void insert( unsigned int row, const Tomahawk::query_ptr& query );
virtual void removeIndex( const QModelIndex& index, bool moreToCome = false ); virtual void removeIndex( const QModelIndex& index, bool moreToCome = false );

View File

@@ -51,7 +51,7 @@ public:
virtual PlaylistInterface::RepeatMode repeatMode() const { return PlaylistInterface::NoRepeat; } virtual PlaylistInterface::RepeatMode repeatMode() const { return PlaylistInterface::NoRepeat; }
virtual bool shuffled() const { return false; } virtual bool shuffled() const { return false; }
virtual void appendTrack( const Tomahawk::query_ptr& query ) = 0; virtual void append( const Tomahawk::query_ptr& query ) = 0;
PlItem* itemFromIndex( const QModelIndex& index ) const; PlItem* itemFromIndex( const QModelIndex& index ) const;

View File

@@ -141,7 +141,7 @@ TrackView::addItemsToQueue()
PlItem* item = model()->itemFromIndex( proxyModel()->mapToSource( idx ) ); PlItem* item = model()->itemFromIndex( proxyModel()->mapToSource( idx ) );
if ( item && item->query()->numResults() ) if ( item && item->query()->numResults() )
{ {
APP->playlistManager()->queue()->model()->appendTrack( item->query() ); APP->playlistManager()->queue()->model()->append( item->query() );
APP->playlistManager()->showQueue(); APP->playlistManager()->showQueue();
} }
} }

View File

@@ -22,6 +22,7 @@
#include "sip/SipHandler.h" #include "sip/SipHandler.h"
#include "widgets/newplaylistwidget.h" #include "widgets/newplaylistwidget.h"
#include "widgets/welcomewidget.h"
#include "audiocontrols.h" #include "audiocontrols.h"
#include "network/controlconnection.h" #include "network/controlconnection.h"
@@ -56,13 +57,6 @@ TomahawkWindow::TomahawkWindow( QWidget* parent )
ui->setupUi( this ); ui->setupUi( this );
#ifndef Q_WS_MAC
ui->centralWidget->layout()->setContentsMargins( 4, 4, 4, 2 );
#else
// ui->playlistView->setAttribute( Qt::WA_MacShowFocusRect, 0 );
ui->sourceTreeView->setAttribute( Qt::WA_MacShowFocusRect, 0 );
#endif
delete ui->playlistWidget; delete ui->playlistWidget;
ui->splitter->addWidget( m_playlistManager->widget() ); ui->splitter->addWidget( m_playlistManager->widget() );
ui->splitter->setStretchFactor( 0, 1 ); ui->splitter->setStretchFactor( 0, 1 );
@@ -86,6 +80,8 @@ TomahawkWindow::TomahawkWindow( QWidget* parent )
loadSettings(); loadSettings();
setupSignals(); setupSignals();
m_playlistManager->show( new WelcomeWidget() );
} }

View File

@@ -15,17 +15,20 @@
</property> </property>
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<property name="margin">
<number>0</number>
</property>
<item> <item>
<widget class="QSplitter" name="splitter"> <widget class="QSplitter" name="splitter">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<widget class="QWidget" name=""> <widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QPushButton" name="statusButton"> <widget class="QPushButton" name="statusButton">
<property name="text"> <property name="text">
<string></string> <string/>
</property> </property>
</widget> </widget>
</item> </item>

View File

@@ -100,7 +100,7 @@ NewPlaylistWidget::suggestionsFound()
QList<Tomahawk::query_ptr> ql; QList<Tomahawk::query_ptr> ql;
foreach( const Tomahawk::plentry_ptr& entry, m_entries ) foreach( const Tomahawk::plentry_ptr& entry, m_entries )
{ {
m_suggestionsModel->appendTrack( entry->query() ); m_suggestionsModel->append( entry->query() );
ql.append( entry->query() ); ql.append( entry->query() );
} }

View File

@@ -69,7 +69,7 @@ WelcomeWidget::onSourceAdded( const Tomahawk::source_ptr& source )
void void
WelcomeWidget::onPlaybackFinished( const Tomahawk::query_ptr& query ) WelcomeWidget::onPlaybackFinished( const Tomahawk::query_ptr& query )
{ {
m_tracksModel->insertTrack( 0, query ); m_tracksModel->insert( 0, query );
} }