mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-04 21:27:58 +02:00
Show the same mode as the source when clicking into an album from the collection
This commit is contained in:
@@ -158,7 +158,7 @@ ArtistView::onItemActivated( const QModelIndex& index )
|
|||||||
if ( !item->artist().isNull() )
|
if ( !item->artist().isNull() )
|
||||||
ViewManager::instance()->show( item->artist() );
|
ViewManager::instance()->show( item->artist() );
|
||||||
else if ( !item->album().isNull() )
|
else if ( !item->album().isNull() )
|
||||||
ViewManager::instance()->show( item->album() );
|
ViewManager::instance()->show( item->album(), m_model->mode() );
|
||||||
else if ( !item->result().isNull() && item->result()->isOnline() )
|
else if ( !item->result().isNull() && item->result()->isOnline() )
|
||||||
{
|
{
|
||||||
m_model->setCurrentItem( item->index );
|
m_model->setCurrentItem( item->index );
|
||||||
|
@@ -38,7 +38,7 @@ TreeModel::TreeModel( QObject* parent )
|
|||||||
, m_rootItem( new TreeModelItem( 0, this ) )
|
, m_rootItem( new TreeModelItem( 0, this ) )
|
||||||
, m_infoId( uuid() )
|
, m_infoId( uuid() )
|
||||||
, m_columnStyle( AllColumns )
|
, m_columnStyle( AllColumns )
|
||||||
, m_mode( Database )
|
, m_mode( DatabaseMode )
|
||||||
{
|
{
|
||||||
setIcon( QPixmap( RESPATH "images/music-icon.png" ) );
|
setIcon( QPixmap( RESPATH "images/music-icon.png" ) );
|
||||||
|
|
||||||
@@ -576,7 +576,7 @@ TreeModel::addAlbums( const artist_ptr& artist, const QModelIndex& parent )
|
|||||||
{
|
{
|
||||||
emit loadingStarted();
|
emit loadingStarted();
|
||||||
|
|
||||||
if ( m_mode == Database )
|
if ( m_mode == DatabaseMode )
|
||||||
{
|
{
|
||||||
DatabaseCommand_AllAlbums* cmd = new DatabaseCommand_AllAlbums( m_collection, artist );
|
DatabaseCommand_AllAlbums* cmd = new DatabaseCommand_AllAlbums( m_collection, artist );
|
||||||
cmd->setData( parent.row() );
|
cmd->setData( parent.row() );
|
||||||
@@ -586,7 +586,7 @@ TreeModel::addAlbums( const artist_ptr& artist, const QModelIndex& parent )
|
|||||||
|
|
||||||
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
|
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
|
||||||
}
|
}
|
||||||
else if ( m_mode == InfoSystem )
|
else if ( m_mode == InfoSystemMode )
|
||||||
{
|
{
|
||||||
Tomahawk::InfoSystem::InfoStringHash artistInfo;
|
Tomahawk::InfoSystem::InfoStringHash artistInfo;
|
||||||
artistInfo["artist"] = artist->name();
|
artistInfo["artist"] = artist->name();
|
||||||
@@ -612,7 +612,7 @@ TreeModel::addTracks( const album_ptr& album, const QModelIndex& parent )
|
|||||||
rows << parent.row();
|
rows << parent.row();
|
||||||
rows << parent.parent().row();
|
rows << parent.parent().row();
|
||||||
|
|
||||||
if ( m_mode == Database )
|
if ( m_mode == DatabaseMode )
|
||||||
{
|
{
|
||||||
DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection );
|
DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection );
|
||||||
cmd->setAlbum( album.data() );
|
cmd->setAlbum( album.data() );
|
||||||
@@ -623,7 +623,7 @@ TreeModel::addTracks( const album_ptr& album, const QModelIndex& parent )
|
|||||||
|
|
||||||
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
|
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
|
||||||
}
|
}
|
||||||
else if ( m_mode == InfoSystem )
|
else if ( m_mode == InfoSystemMode )
|
||||||
{
|
{
|
||||||
Tomahawk::InfoSystem::InfoStringHash artistInfo;
|
Tomahawk::InfoSystem::InfoStringHash artistInfo;
|
||||||
artistInfo["artist"] = album->artist()->name();
|
artistInfo["artist"] = album->artist()->name();
|
||||||
@@ -850,14 +850,14 @@ TreeModel::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QV
|
|||||||
{
|
{
|
||||||
if ( m_receivedInfoData.contains( requestData.input.value< Tomahawk::InfoSystem::InfoStringHash >() ) )
|
if ( m_receivedInfoData.contains( requestData.input.value< Tomahawk::InfoSystem::InfoStringHash >() ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
QVariantMap returnedData = output.value< QVariantMap >();
|
QVariantMap returnedData = output.value< QVariantMap >();
|
||||||
if ( returnedData.isEmpty() )
|
if ( returnedData.isEmpty() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
m_receivedInfoData.insert( requestData.input.value< Tomahawk::InfoSystem::InfoStringHash >() );
|
m_receivedInfoData.insert( requestData.input.value< Tomahawk::InfoSystem::InfoStringHash >() );
|
||||||
|
|
||||||
|
|
||||||
QStringList tracks = returnedData[ "tracks" ].toStringList();
|
QStringList tracks = returnedData[ "tracks" ].toStringList();
|
||||||
QList<query_ptr> ql;
|
QList<query_ptr> ql;
|
||||||
|
|
||||||
|
@@ -33,6 +33,7 @@
|
|||||||
#include "infosystem/infosystem.h"
|
#include "infosystem/infosystem.h"
|
||||||
|
|
||||||
#include "dllmacro.h"
|
#include "dllmacro.h"
|
||||||
|
#include "typedefs.h"
|
||||||
|
|
||||||
class QMetaData;
|
class QMetaData;
|
||||||
|
|
||||||
@@ -55,9 +56,6 @@ public:
|
|||||||
enum ColumnStyle
|
enum ColumnStyle
|
||||||
{ AllColumns = 0, TrackOnly };
|
{ AllColumns = 0, TrackOnly };
|
||||||
|
|
||||||
enum ModelMode
|
|
||||||
{ Database = 0, InfoSystem };
|
|
||||||
|
|
||||||
explicit TreeModel( QObject* parent = 0 );
|
explicit TreeModel( QObject* parent = 0 );
|
||||||
virtual ~TreeModel();
|
virtual ~TreeModel();
|
||||||
|
|
||||||
@@ -73,8 +71,8 @@ public:
|
|||||||
virtual int rowCount( const QModelIndex& parent = QModelIndex() ) const;
|
virtual int rowCount( const QModelIndex& parent = QModelIndex() ) const;
|
||||||
virtual int columnCount( const QModelIndex& parent = QModelIndex() ) const;
|
virtual int columnCount( const QModelIndex& parent = QModelIndex() ) const;
|
||||||
|
|
||||||
virtual ModelMode mode() const { return m_mode; }
|
virtual Tomahawk::ModelMode mode() const { return m_mode; }
|
||||||
virtual void setMode( ModelMode mode ) { m_mode = mode; }
|
virtual void setMode( Tomahawk::ModelMode mode ) { m_mode = mode; }
|
||||||
|
|
||||||
virtual QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const;
|
virtual QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const;
|
||||||
virtual QVariant headerData( int section, Qt::Orientation orientation, int role ) const;
|
virtual QVariant headerData( int section, Qt::Orientation orientation, int role ) const;
|
||||||
@@ -165,7 +163,7 @@ private:
|
|||||||
QString m_description;
|
QString m_description;
|
||||||
QPixmap m_icon;
|
QPixmap m_icon;
|
||||||
ColumnStyle m_columnStyle;
|
ColumnStyle m_columnStyle;
|
||||||
ModelMode m_mode;
|
Tomahawk::ModelMode m_mode;
|
||||||
|
|
||||||
QList<Tomahawk::artist_ptr> m_artistsFilter;
|
QList<Tomahawk::artist_ptr> m_artistsFilter;
|
||||||
|
|
||||||
|
@@ -195,7 +195,7 @@ TreeProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourceParent
|
|||||||
TreeModelItem* pi = sourceModel()->itemFromIndex( sourceModel()->index( sourceRow, 0, sourceParent ) );
|
TreeModelItem* pi = sourceModel()->itemFromIndex( sourceModel()->index( sourceRow, 0, sourceParent ) );
|
||||||
Q_ASSERT( pi );
|
Q_ASSERT( pi );
|
||||||
|
|
||||||
if ( m_model->mode() == TreeModel::Database && !pi->result().isNull() )
|
if ( m_model->mode() == Tomahawk::DatabaseMode && !pi->result().isNull() )
|
||||||
{
|
{
|
||||||
QList< Tomahawk::result_ptr > rl = m_cache.values( sourceParent );
|
QList< Tomahawk::result_ptr > rl = m_cache.values( sourceParent );
|
||||||
foreach ( const Tomahawk::result_ptr& result, rl )
|
foreach ( const Tomahawk::result_ptr& result, rl )
|
||||||
|
@@ -63,6 +63,12 @@ namespace Tomahawk
|
|||||||
Static
|
Static
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ModelMode
|
||||||
|
{
|
||||||
|
DatabaseMode = 0,
|
||||||
|
InfoSystemMode
|
||||||
|
};
|
||||||
|
|
||||||
}; // ns
|
}; // ns
|
||||||
|
|
||||||
typedef int AudioErrorCode;
|
typedef int AudioErrorCode;
|
||||||
|
@@ -217,12 +217,12 @@ ViewManager::show( const Tomahawk::artist_ptr& artist )
|
|||||||
|
|
||||||
|
|
||||||
Tomahawk::ViewPage*
|
Tomahawk::ViewPage*
|
||||||
ViewManager::show( const Tomahawk::album_ptr& album )
|
ViewManager::show( const Tomahawk::album_ptr& album, Tomahawk::ModelMode initialMode )
|
||||||
{
|
{
|
||||||
AlbumInfoWidget* swidget;
|
AlbumInfoWidget* swidget;
|
||||||
if ( !m_albumViews.contains( album ) || m_albumViews.value( album ).isNull() )
|
if ( !m_albumViews.contains( album ) || m_albumViews.value( album ).isNull() )
|
||||||
{
|
{
|
||||||
swidget = new AlbumInfoWidget( album );
|
swidget = new AlbumInfoWidget( album, initialMode );
|
||||||
m_albumViews.insert( album, swidget );
|
m_albumViews.insert( album, swidget );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@@ -139,7 +139,7 @@ public slots:
|
|||||||
Tomahawk::ViewPage* show( const Tomahawk::playlist_ptr& playlist );
|
Tomahawk::ViewPage* show( const Tomahawk::playlist_ptr& playlist );
|
||||||
Tomahawk::ViewPage* show( const Tomahawk::dynplaylist_ptr& playlist );
|
Tomahawk::ViewPage* show( const Tomahawk::dynplaylist_ptr& playlist );
|
||||||
Tomahawk::ViewPage* show( const Tomahawk::artist_ptr& artist );
|
Tomahawk::ViewPage* show( const Tomahawk::artist_ptr& artist );
|
||||||
Tomahawk::ViewPage* show( const Tomahawk::album_ptr& album );
|
Tomahawk::ViewPage* show( const Tomahawk::album_ptr& album, Tomahawk::ModelMode withInitialMode = Tomahawk::InfoSystemMode );
|
||||||
Tomahawk::ViewPage* show( const Tomahawk::collection_ptr& collection );
|
Tomahawk::ViewPage* show( const Tomahawk::collection_ptr& collection );
|
||||||
Tomahawk::ViewPage* show( const Tomahawk::source_ptr& source );
|
Tomahawk::ViewPage* show( const Tomahawk::source_ptr& source );
|
||||||
|
|
||||||
|
@@ -39,7 +39,7 @@ static QString s_aiInfoIdentifier = QString( "AlbumInfoWidget" );
|
|||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
|
|
||||||
AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* parent )
|
AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, ModelMode startingMode, QWidget* parent )
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
, ui( new Ui::AlbumInfoWidget )
|
, ui( new Ui::AlbumInfoWidget )
|
||||||
{
|
{
|
||||||
@@ -58,16 +58,19 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par
|
|||||||
ui->albumsView->setAlbumModel( m_albumsModel );
|
ui->albumsView->setAlbumModel( m_albumsModel );
|
||||||
|
|
||||||
m_tracksModel = new TreeModel( ui->tracksView );
|
m_tracksModel = new TreeModel( ui->tracksView );
|
||||||
m_tracksModel->setMode( TreeModel::InfoSystem );
|
m_tracksModel->setMode( startingMode );
|
||||||
ui->tracksView->setTreeModel( m_tracksModel );
|
ui->tracksView->setTreeModel( m_tracksModel );
|
||||||
ui->tracksView->setRootIsDecorated( false );
|
ui->tracksView->setRootIsDecorated( false );
|
||||||
|
|
||||||
m_pixmap = QPixmap( RESPATH "images/no-album-art-placeholder.png" ).scaledToWidth( 48, Qt::SmoothTransformation );
|
m_pixmap = QPixmap( RESPATH "images/no-album-art-placeholder.png" ).scaledToWidth( 48, Qt::SmoothTransformation );
|
||||||
|
|
||||||
m_button = new OverlayButton( ui->tracksView );
|
m_button = new OverlayButton( ui->tracksView );
|
||||||
m_button->setText( tr( "Click to show Super Collection Tracks" ) );
|
|
||||||
m_button->setCheckable( true );
|
m_button->setCheckable( true );
|
||||||
m_button->setChecked( true );
|
m_button->setChecked( m_tracksModel->mode() == InfoSystemMode );
|
||||||
|
if ( m_button->isChecked() )
|
||||||
|
m_button->setText( tr( "Click to show Super Collection Tracks" ) );
|
||||||
|
else
|
||||||
|
m_button->setText( tr( "Click to show Official Tracks" ) );
|
||||||
|
|
||||||
connect( m_button, SIGNAL( clicked() ), SLOT( onModeToggle() ) );
|
connect( m_button, SIGNAL( clicked() ), SLOT( onModeToggle() ) );
|
||||||
connect( m_tracksModel, SIGNAL( loadingStarted() ), SLOT( onLoadingStarted() ) );
|
connect( m_tracksModel, SIGNAL( loadingStarted() ), SLOT( onLoadingStarted() ) );
|
||||||
@@ -94,11 +97,18 @@ AlbumInfoWidget::playlistInterface() const
|
|||||||
return ui->tracksView->playlistInterface();
|
return ui->tracksView->playlistInterface();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AlbumInfoWidget::setMode( ModelMode mode )
|
||||||
|
{
|
||||||
|
if ( m_tracksModel->mode() != mode )
|
||||||
|
onModeToggle();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AlbumInfoWidget::onModeToggle()
|
AlbumInfoWidget::onModeToggle()
|
||||||
{
|
{
|
||||||
m_tracksModel->setMode( m_button->isChecked() ? TreeModel::InfoSystem : TreeModel::Database );
|
m_tracksModel->setMode( m_button->isChecked() ? InfoSystemMode : DatabaseMode );
|
||||||
m_tracksModel->clear();
|
m_tracksModel->clear();
|
||||||
m_tracksModel->addTracks( m_album, QModelIndex() );
|
m_tracksModel->addTracks( m_album, QModelIndex() );
|
||||||
|
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include "infosystem/infosystem.h"
|
#include "infosystem/infosystem.h"
|
||||||
|
|
||||||
#include "dllmacro.h"
|
#include "dllmacro.h"
|
||||||
|
#include "typedefs.h"
|
||||||
|
|
||||||
class AlbumModel;
|
class AlbumModel;
|
||||||
class TreeModel;
|
class TreeModel;
|
||||||
@@ -50,7 +51,7 @@ class DLLEXPORT AlbumInfoWidget : public QWidget, public Tomahawk::ViewPage
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* parent = 0 );
|
AlbumInfoWidget( const Tomahawk::album_ptr& album, Tomahawk::ModelMode startingMode = Tomahawk::InfoSystemMode, QWidget* parent = 0 );
|
||||||
~AlbumInfoWidget();
|
~AlbumInfoWidget();
|
||||||
|
|
||||||
virtual QWidget* widget() { return this; }
|
virtual QWidget* widget() { return this; }
|
||||||
@@ -63,6 +64,8 @@ public:
|
|||||||
virtual QString longDescription() const { return m_longDescription; }
|
virtual QString longDescription() const { return m_longDescription; }
|
||||||
virtual QPixmap pixmap() const { if ( m_pixmap.isNull() ) return Tomahawk::ViewPage::pixmap(); else return m_pixmap; }
|
virtual QPixmap pixmap() const { if ( m_pixmap.isNull() ) return Tomahawk::ViewPage::pixmap(); else return m_pixmap; }
|
||||||
|
|
||||||
|
void setMode( Tomahawk::ModelMode mode );
|
||||||
|
|
||||||
virtual bool isTemporaryPage() const { return true; }
|
virtual bool isTemporaryPage() const { return true; }
|
||||||
virtual bool showStatsBar() const { return false; }
|
virtual bool showStatsBar() const { return false; }
|
||||||
|
|
||||||
|
@@ -21,7 +21,6 @@
|
|||||||
#include "ui_ArtistInfoWidget.h"
|
#include "ui_ArtistInfoWidget.h"
|
||||||
|
|
||||||
#include "audio/audioengine.h"
|
#include "audio/audioengine.h"
|
||||||
#include "viewmanager.h"
|
|
||||||
#include "playlist/treemodel.h"
|
#include "playlist/treemodel.h"
|
||||||
#include "playlist/playlistmodel.h"
|
#include "playlist/playlistmodel.h"
|
||||||
#include "playlist/treeproxymodel.h"
|
#include "playlist/treeproxymodel.h"
|
||||||
@@ -63,7 +62,7 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget*
|
|||||||
TomahawkUtils::unmarginLayout( ui->albumHeader->layout() );
|
TomahawkUtils::unmarginLayout( ui->albumHeader->layout() );
|
||||||
|
|
||||||
m_albumsModel = new TreeModel( ui->albums );
|
m_albumsModel = new TreeModel( ui->albums );
|
||||||
m_albumsModel->setMode( TreeModel::InfoSystem );
|
m_albumsModel->setMode( InfoSystemMode );
|
||||||
ui->albums->setTreeModel( m_albumsModel );
|
ui->albums->setTreeModel( m_albumsModel );
|
||||||
|
|
||||||
m_relatedModel = new TreeModel( ui->relatedArtists );
|
m_relatedModel = new TreeModel( ui->relatedArtists );
|
||||||
@@ -111,7 +110,7 @@ ArtistInfoWidget::playlistInterface() const
|
|||||||
void
|
void
|
||||||
ArtistInfoWidget::onModeToggle()
|
ArtistInfoWidget::onModeToggle()
|
||||||
{
|
{
|
||||||
m_albumsModel->setMode( m_button->isChecked() ? TreeModel::InfoSystem : TreeModel::Database );
|
m_albumsModel->setMode( m_button->isChecked() ? InfoSystemMode : DatabaseMode );
|
||||||
m_albumsModel->clear();
|
m_albumsModel->clear();
|
||||||
m_albumsModel->addAlbums( m_artist, QModelIndex() );
|
m_albumsModel->addAlbums( m_artist, QModelIndex() );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user