1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-12 09:04:33 +02:00

add icon for playlists

add recently played item in source list
add create playlist icon, show playlists node for local source
remove H ome from toolbar as it's in the sidebar now
This commit is contained in:
Leo Franchi
2011-04-01 15:44:03 -04:00
parent 2f7167037a
commit 9ee970489c
8 changed files with 99 additions and 10 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -75,6 +75,7 @@
<file>./data/images/forward.png</file> <file>./data/images/forward.png</file>
<file>./data/images/music-icon.png</file> <file>./data/images/music-icon.png</file>
<file>./data/images/configure.png</file> <file>./data/images/configure.png</file>
<file>./data/images/create-playlist.png</file>
<file>./data/topbar-radiobuttons.css</file> <file>./data/topbar-radiobuttons.css</file>
<file>./data/icons/tomahawk-icon-16x16.png</file> <file>./data/icons/tomahawk-icon-16x16.png</file>
<file>./data/icons/tomahawk-icon-32x32.png</file> <file>./data/icons/tomahawk-icon-32x32.png</file>

View File

@@ -577,8 +577,9 @@ PlaylistManager::setPage( ViewPage* page, bool trackHistory )
emit superCollectionActivated(); emit superCollectionActivated();
else if( isNewPlaylistPageVisible() ) else if( isNewPlaylistPageVisible() )
emit newPlaylistActivated(); emit newPlaylistActivated();
/* TODO refactor. now we have rows in the sourcetreeview that are connected to pages, e.g. Stations, Recently Updated, etc
else if ( !currentPlaylistInterface() ) else if ( !currentPlaylistInterface() )
emit tempPageActivated(); emit tempPageActivated();*/
if ( !AudioEngine::instance()->isPlaying() ) if ( !AudioEngine::instance()->isPlaying() )
AudioEngine::instance()->setPlaylist( currentPlaylistInterface() ); AudioEngine::instance()->setPlaylist( currentPlaylistInterface() );

View File

@@ -23,9 +23,11 @@
#include "playlist.h" #include "playlist.h"
#include "collection.h" #include "collection.h"
#include "source.h" #include "source.h"
#include "tomahawk/tomahawkapp.h"
#include <QMimeData> #include <QMimeData>
#include <QSize> #include <QSize>
#include <playlist/playlistmanager.h>
using namespace Tomahawk; using namespace Tomahawk;
@@ -36,6 +38,10 @@ SourcesModel::SourcesModel( QObject* parent )
appendItem( source_ptr() ); appendItem( source_ptr() );
// add misc children of root node
GenericPageItem* recent = new GenericPageItem( this, m_rootItem->children().at( 0 ), tr( "Recently Played" ), QIcon( RESPATH "images/home.png" ) );
connect( recent, SIGNAL( activated() ), PlaylistManager::instance(), SLOT( showWelcomePage() ) );
onSourcesAdded( SourceList::instance()->sources() ); onSourcesAdded( SourceList::instance()->sources() );
connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ), SLOT( onSourceAdded( Tomahawk::source_ptr ) ) ); connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ), SLOT( onSourceAdded( Tomahawk::source_ptr ) ) );

View File

@@ -51,6 +51,8 @@ public:
AutomaticPlaylist = 4, AutomaticPlaylist = 4,
Stations = 5, Stations = 5,
GenericPage = 6
}; };
enum CategoryType { enum CategoryType {

View File

@@ -174,6 +174,12 @@ PlaylistItem::dropMimeData( const QMimeData* data, Qt::DropAction action )
return false; return false;
} }
QIcon
PlaylistItem::icon() const
{
return QIcon( RESPATH "images/playlist-icon.png" );
}
/// Dynamic Playlist Item /// Dynamic Playlist Item
/* /*
@@ -270,7 +276,7 @@ CategoryAddItem::flags() const
QIcon QIcon
CategoryAddItem::icon() const CategoryAddItem::icon() const
{ {
return QIcon( RESPATH "images/list-add.png" ); return QIcon( RESPATH "images/create-playlist.png" );
} }
// CategoryItem // CategoryItem
@@ -316,19 +322,26 @@ CategoryItem::insertItems( QList< SourceTreeItem* > items )
CollectionItem::CollectionItem( SourcesModel* mdl, SourceTreeItem* parent, const Tomahawk::source_ptr& source ) CollectionItem::CollectionItem( SourcesModel* mdl, SourceTreeItem* parent, const Tomahawk::source_ptr& source )
: SourceTreeItem( mdl, parent, SourcesModel::Collection ) : SourceTreeItem( mdl, parent, SourcesModel::Collection )
, m_source( source ) , m_source( source )
, m_playlists( 0 )
, m_stations( 0 )
{ {
if( m_source.isNull() ) { // super collection if( m_source.isNull() ) { // super collection
return; return;
} }
// create category item // create category items if there are playlists to show, or stations to show
QList< playlist_ptr > playlists = source->collection()->playlists();
if( !playlists.isEmpty() || source->isLocal() ) {
m_playlists = new CategoryItem( model(), this, SourcesModel::PlaylistsCategory, source->isLocal() ); m_playlists = new CategoryItem( model(), this, SourcesModel::PlaylistsCategory, source->isLocal() );
m_stations = new CategoryItem( model(), this, SourcesModel::StationsCategory, source->isLocal() );
// ugh :( we're being added by the model, no need to notify for added rows now // ugh :( we're being added by the model, no need to notify for added rows now
m_playlists->blockSignals( true ); // m_playlists->blockSignals( true );
onPlaylistsAdded( source->collection()->playlists() ); onPlaylistsAdded( source->collection()->playlists() );
m_playlists->blockSignals( false ); // m_playlists->blockSignals( false );
}
// TODO always show for now, till we actually support stations
// m_stations = new CategoryItem( model(), this, SourcesModel::StationsCategory, source->isLocal() );
// HACK to load only for now // HACK to load only for now
source->collection()->dynamicPlaylists(); source->collection()->dynamicPlaylists();
@@ -368,6 +381,10 @@ CollectionItem::onPlaylistsAdded( const QList< playlist_ptr >& playlists )
if( playlists.isEmpty() ) if( playlists.isEmpty() )
return; return;
if( !m_playlists ) { // add the category too
m_playlists = new CategoryItem( model(), this, SourcesModel::PlaylistsCategory, source()->isLocal() );
}
QList< SourceTreeItem* > items; QList< SourceTreeItem* > items;
int addOffset = playlists.first()->author()->isLocal() ? 1 : 0; int addOffset = playlists.first()->author()->isLocal() ? 1 : 0;
@@ -386,6 +403,7 @@ CollectionItem::onPlaylistsAdded( const QList< playlist_ptr >& playlists )
void void
CollectionItem::onPlaylistsDeleted( const QList< playlist_ptr >& playlists ) CollectionItem::onPlaylistsDeleted( const QList< playlist_ptr >& playlists )
{ {
Q_ASSERT( m_playlists ); // How can we delete playlists if we have none?
QList< SourceTreeItem* > items; QList< SourceTreeItem* > items;
foreach( const playlist_ptr& playlist, playlists ) { foreach( const playlist_ptr& playlist, playlists ) {
int curCount = m_playlists->children().count(); int curCount = m_playlists->children().count();
@@ -400,3 +418,43 @@ CollectionItem::onPlaylistsDeleted( const QList< playlist_ptr >& playlists )
} }
} }
} }
/// Generic page item
GenericPageItem::GenericPageItem( SourcesModel* model, SourceTreeItem* parent, const QString& text, const QIcon& icon )
: SourceTreeItem( model, parent, SourcesModel::GenericPage )
, m_icon( icon )
, m_text( text )
{
}
GenericPageItem::~GenericPageItem()
{
}
void
GenericPageItem::activate()
{
emit activated();
}
QString
GenericPageItem::text() const
{
return m_text;
}
QIcon
GenericPageItem::icon() const
{
return m_icon;
}
bool
GenericPageItem::willAcceptDrag(const QMimeData* data) const
{
return false;
}

View File

@@ -154,6 +154,7 @@ public:
virtual void activate(); virtual void activate();
virtual bool willAcceptDrag( const QMimeData* data ) const; virtual bool willAcceptDrag( const QMimeData* data ) const;
virtual bool dropMimeData( const QMimeData* data, Qt::DropAction action ); virtual bool dropMimeData( const QMimeData* data, Qt::DropAction action );
virtual QIcon icon() const;
protected: protected:
void setLoaded( bool loaded ); void setLoaded( bool loaded );
@@ -186,6 +187,27 @@ private:
Tomahawk::dynplaylist_ptr m_dynplaylist; Tomahawk::dynplaylist_ptr m_dynplaylist;
};*/ };*/
// generic item that has some name, some text, and calls a certain slot when activated. badabing!
class GenericPageItem : public SourceTreeItem
{
Q_OBJECT
public:
GenericPageItem( SourcesModel* model, SourceTreeItem* parent, const QString& text, const QIcon& icon );
virtual ~GenericPageItem();
virtual QString text() const;
virtual void activate();
virtual bool willAcceptDrag( const QMimeData* data ) const;
virtual QIcon icon() const;
signals:
void activated();
private:
QIcon m_icon;
QString m_text;
};
Q_DECLARE_METATYPE( SourceTreeItem* ); Q_DECLARE_METATYPE( SourceTreeItem* );
#endif // SOURCETREEITEM_H #endif // SOURCETREEITEM_H

View File

@@ -169,7 +169,6 @@ TomahawkWindow::TomahawkWindow( QWidget* parent )
m_backAvailable = toolbar->addAction( QIcon( RESPATH "images/back.png" ), tr( "Back" ), PlaylistManager::instance(), SLOT( historyBack() ) ); m_backAvailable = toolbar->addAction( QIcon( RESPATH "images/back.png" ), tr( "Back" ), PlaylistManager::instance(), SLOT( historyBack() ) );
m_forwardAvailable = toolbar->addAction( QIcon( RESPATH "images/forward.png" ), tr( "Forward" ), PlaylistManager::instance(), SLOT( historyForward() ) ); m_forwardAvailable = toolbar->addAction( QIcon( RESPATH "images/forward.png" ), tr( "Forward" ), PlaylistManager::instance(), SLOT( historyForward() ) );
toolbar->addAction( QIcon( RESPATH "images/home.png" ), tr( "Home" ), PlaylistManager::instance(), SLOT( showWelcomePage() ) );
statusBar()->addPermanentWidget( m_audioControls, 1 ); statusBar()->addPermanentWidget( m_audioControls, 1 );