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

* SourceTreeItem needs to be linked to the correct ViewPage.

This commit is contained in:
Christian Muehlhaeuser
2013-09-02 17:31:57 +02:00
parent 17444bf7bc
commit ab499d304a
4 changed files with 32 additions and 36 deletions

View File

@@ -870,10 +870,10 @@ ViewManager::inboxWidget() const
ViewPage*
ViewManager::dynamicPageWidget( const QString& pageName ) const
{
if( m_dynamicPages.contains( pageName ) )
if ( m_dynamicPages.contains( pageName ) )
return m_dynamicPages.value( pageName );
if( m_dynamicPagePlugins.contains( pageName ) )
if ( m_dynamicPagePlugins.contains( pageName ) )
return m_dynamicPagePlugins.value( pageName ).data();
return 0;
@@ -885,53 +885,51 @@ ViewManager::addDynamicPage( Tomahawk::ViewPagePlugin* viewPage, const QString&
{
const QString pageId = !pageName.isEmpty() ? pageName : viewPage->defaultName();
tLog() << Q_FUNC_INFO << "Trying to add " << pageId;
tLog() << Q_FUNC_INFO << "Trying to add" << pageId;
if( m_dynamicPages.contains( pageId ) || m_dynamicPagePlugins.contains( pageId ) )
if ( m_dynamicPages.contains( pageId ) || m_dynamicPagePlugins.contains( pageId ) )
{
tLog() << "Not adding a second ViewPage with name " << pageName;
tLog() << "Not adding a second ViewPage with name" << pageName;
Q_ASSERT( false );
}
m_dynamicPagePlugins.insert( pageId, viewPage );
// HACK: rather emit the viewpage itself ...
emit viewPageAdded( pageId, viewPage->title(), viewPage->pixmap(), viewPage->sortValue() );
emit viewPageAdded( pageId, viewPage, viewPage->sortValue() );
}
void
/*void
ViewManager::addDynamicPage( const QString& pageName, const QString& text, const QIcon& icon, boost::function<Tomahawk::ViewPage*()> instanceLoader, int sortValue )
{
tLog() << Q_FUNC_INFO << "Trying to add " << pageName;
tLog() << Q_FUNC_INFO << "Trying to add" << pageName;
if( m_dynamicPages.contains( pageName ) || m_dynamicPagePlugins.contains( pageName ) )
if ( m_dynamicPages.contains( pageName ) || m_dynamicPagePlugins.contains( pageName ) )
{
tLog() << "Not adding a second ViewPage with name " << pageName;
tLog() << "Not adding a second ViewPage with name" << pageName;
Q_ASSERT( false );
}
m_dynamicPagesInstanceLoaders.insert( pageName, instanceLoader );
emit viewPageAdded( pageName, text, icon, sortValue );
}
}*/
ViewPage*
ViewManager::showDynamicPage( const QString& pageName )
{
tLog() << Q_FUNC_INFO << "pageName: " << pageName;
tLog() << Q_FUNC_INFO << "pageName:" << pageName;
if( !m_dynamicPages.contains( pageName ) && !m_dynamicPagePlugins.contains( pageName ) )
if ( !m_dynamicPages.contains( pageName ) && !m_dynamicPagePlugins.contains( pageName ) )
{
if( !m_dynamicPagesInstanceLoaders.contains( pageName ) )
if ( !m_dynamicPagesInstanceLoaders.contains( pageName ) )
{
tLog() << "Trying to show a page that does not exist and does not have a registered loader";
Q_ASSERT(false);
Q_ASSERT( false );
return 0;
}
ViewPage* viewPage = m_dynamicPagesInstanceLoaders.value( pageName )();
Q_ASSERT(viewPage);
Q_ASSERT( viewPage );
m_dynamicPages.insert( pageName, viewPage );
m_dynamicPagesInstanceLoaders.remove( pageName );
@@ -947,6 +945,7 @@ ViewManager::superCollectionView() const
return m_superCollectionView;
}
InboxModel*
ViewManager::inboxModel()
{

View File

@@ -135,7 +135,7 @@ signals:
void historyBackAvailable( bool avail );
void historyForwardAvailable( bool avail );
void viewPageAdded( const QString& pageName, const QString& text, const QIcon& icon, int sortValue );
void viewPageAdded( const QString& pageName, Tomahawk::ViewPage* page, int sortValue );
public slots:
Tomahawk::ViewPage* showSuperCollection();
@@ -144,7 +144,7 @@ public slots:
Tomahawk::ViewPage* showRecentPlaysPage();
Tomahawk::ViewPage* showInboxPage();
void addDynamicPage( const QString& pageName, const QString& text, const QIcon& icon, boost::function< Tomahawk::ViewPage*() > instanceLoader, int sortValue = 0 );
// void addDynamicPage( const QString& pageName, const QString& text, const QIcon& icon, boost::function< Tomahawk::ViewPage*() > instanceLoader, int sortValue = 0 );
Tomahawk::ViewPage* showDynamicPage( const QString& pageName );
void showCurrentTrack();

View File

@@ -20,8 +20,6 @@
#include "sourcetree/SourcesModel.h"
#include "../../viewpages/dashboard/Dashboard.h"
#include "sourcetree/items/ScriptCollectionItem.h"
#include "sourcetree/items/SourceTreeItem.h"
#include "sourcetree/items/SourceItem.h"
@@ -62,9 +60,10 @@ SourcesModel::SourcesModel( QObject* parent )
{
m_rootItem = new SourceTreeItem( this, 0, Invalid );
connect( ViewManager::instance(), SIGNAL( viewPageAdded( QString, QString, QIcon, int ) ), SLOT( appendPageItem( QString, QString, QIcon, int ) ) );
appendGroups();
connect( ViewManager::instance(), SIGNAL( viewPageAdded( QString, Tomahawk::ViewPage*, int ) ),
SLOT( appendPageItem( QString, Tomahawk::ViewPage*, int ) ) );
appendGroups();
onSourcesAdded( SourceList::instance()->sources() );
connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ),
@@ -72,7 +71,7 @@ SourcesModel::SourcesModel( QObject* parent )
connect( SourceList::instance(), SIGNAL( sourceRemoved( Tomahawk::source_ptr ) ),
SLOT( onSourceRemoved( Tomahawk::source_ptr ) ) );
connect( ViewManager::instance(), SIGNAL( viewPageActivated( Tomahawk::ViewPage* ) ),
this, SLOT( viewPageActivated( Tomahawk::ViewPage* ) ) );
SLOT( viewPageActivated( Tomahawk::ViewPage* ) ) );
foreach ( const collection_ptr& c, SourceList::instance()->scriptCollections() )
{
@@ -304,7 +303,6 @@ SourcesModel::appendGroups()
// new SourceTreeItem( this, m_rootItem, SourcesModel::Divider, 2 );
m_myMusicGroup = new GroupItem( this, m_rootItem, tr( "My Music" ), 3 );
InboxItem* inbox = new InboxItem( this, m_browse );
inbox->setSortValue( 3 );
@@ -333,7 +331,6 @@ SourcesModel::appendGroups()
m_collectionsGroup = new GroupItem( this, m_rootItem, tr( "Friends" ), 4 );
m_cloudGroup = new GroupItem( this, m_rootItem, tr( "Cloud" ), 5 );
endInsertRows();
@@ -341,22 +338,20 @@ SourcesModel::appendGroups()
QHash< QString, ViewPagePlugin* > plugins = Tomahawk::Utils::PluginLoader( "viewpage" ).loadPlugins< ViewPagePlugin >();
foreach ( ViewPagePlugin* plugin, plugins.values() )
{
ViewManager::instance()->addDynamicPage( plugin );
}
ViewManager::instance()->showDynamicPage( Tomahawk::Widgets::DASHBOARD_VIEWPAGE_NAME );
}
void
SourcesModel::appendPageItem( const QString& name, const QString& text, const QIcon& icon, int sortValue )
SourcesModel::appendPageItem( const QString& name, ViewPage* page, int sortValue )
{
QModelIndex parentIndex = indexFromItem( m_browse );
beginInsertRows( parentIndex, rowCount( parentIndex ), rowCount( parentIndex ) );
GenericPageItem* pageItem = new GenericPageItem( this, m_browse, text, icon,
GenericPageItem* pageItem = new GenericPageItem( this, m_browse, page->title(), page->pixmap(),
boost::bind( &ViewManager::showDynamicPage, ViewManager::instance(), name ),
boost::bind( &ViewManager::dynamicPageWidget, ViewManager::instance(), name ) );
if( sortValue )
if ( sortValue )
{
pageItem->setSortValue( sortValue );
}
@@ -366,6 +361,8 @@ SourcesModel::appendPageItem( const QString& name, const QString& text, const QI
}
endInsertRows();
linkSourceItemToPage( pageItem, page );
}
@@ -439,7 +436,7 @@ SourcesModel::viewPageActivated( Tomahawk::ViewPage* page )
if ( m_sourceTreeLinks.contains( page ) )
{
Q_ASSERT( m_sourceTreeLinks[ page ] );
// qDebug() << "Got view page activated for item:" << m_sourceTreeLinks[ page ]->text();
tDebug() << "Got view page activated for item:" << m_sourceTreeLinks[ page ]->text();
QModelIndex idx = indexFromItem( m_sourceTreeLinks[ page ] );
if ( !idx.isValid() )

View File

@@ -147,9 +147,9 @@ private slots:
void onWidgetDestroyed( QWidget* w );
/*
* pageIcon and pageTitle are visible in the source tree, pageName is the internal name in the ViewManager
* name is the internal name in the ViewManager
*/
void appendPageItem( const QString& name, const QString& text, const QIcon& icon, int sortValue );
void appendPageItem( const QString& name, Tomahawk::ViewPage* page, int sortValue );
private:
SourceTreeItem* itemFromIndex( const QModelIndex& idx ) const;