ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* parent ) : QWidget( parent ) , TomahawkUtils::DpiScaler( this ) , ui( new Ui::ArtistInfoWidget ) , m_artist( artist ) { m_widget = new QWidget; m_headerWidget = new BasicHeader; ui->setupUi( m_widget ); { ui->relatedArtists->setAutoResize( true ); ui->relatedArtists->setAutoFitItems( true ); ui->relatedArtists->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->relatedArtists->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->relatedArtists->setItemWidth( scaledX( 170 ) ); m_relatedModel = new PlayableModel( ui->relatedArtists ); ui->relatedArtists->setPlayableModel( m_relatedModel ); ui->relatedArtists->proxyModel()->sort( -1 ); ui->relatedArtists->setEmptyTip( tr( "Sorry, we could not find any related artists!" ) ); TomahawkStyle::stylePageFrame( ui->relatedArtists ); TomahawkStyle::stylePageFrame( ui->artistFrame ); TomahawkStyle::styleScrollBar( ui->relatedArtists->verticalScrollBar() ); } { ui->albums->setAutoResize( true ); ui->albums->setAutoFitItems( false ); ui->albums->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->albums->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->albums->setWrapping( false ); ui->albums->setItemWidth( scaledX( 190 ) ); ui->albums->proxyModel()->setHideDupeItems( true ); ui->albums->delegate()->setWordWrapping( true ); ui->albums->setFixedHeight( ui->albums->itemSize().height() + ui->albums->spacing() * 2 ); m_albumsModel = new PlayableModel( ui->albums ); ui->albums->setPlayableModel( m_albumsModel ); ui->albums->proxyModel()->sort( -1 ); ui->albums->setEmptyTip( tr( "Sorry, we could not find any albums for this artist!" ) ); TomahawkStyle::stylePageFrame( ui->albumFrame ); TomahawkStyle::styleScrollBar( ui->albums->verticalScrollBar() ); TomahawkStyle::styleScrollBar( ui->albums->horizontalScrollBar() ); } { ui->topHits->setAutoResize( true ); ui->topHits->setAutoFitItems( false ); ui->topHits->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->topHits->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->topHits->setWrapping( false ); ui->topHits->setItemWidth( scaledX( 140 ) ); ui->topHits->proxyModel()->setHideDupeItems( true ); ui->topHits->delegate()->setWordWrapping( true ); ui->topHits->delegate()->setShowBuyButtons( true ); ui->topHits->setFixedHeight( ui->topHits->itemSize().height() + ui->topHits->spacing() * 2 ); m_topHitsModel = new PlayableModel( ui->topHits ); ui->topHits->setPlayableModel( m_topHitsModel ); ui->topHits->proxyModel()->sort( -1 ); ui->topHits->setEmptyTip( tr( "Sorry, we could not find any top hits for this artist!" ) ); TomahawkStyle::stylePageFrame( ui->trackFrame ); } { ui->biography->setObjectName( "biography" ); ui->biography->setContentsMargins( 0, 0, 0, 0 ); ui->biography->page()->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff ); ui->biography->page()->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAsNeeded ); ui->biography->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); ui->biography->installEventFilter( this ); TomahawkStyle::stylePageWidget( ui->biography ); TomahawkStyle::stylePageFrame( ui->bioFrame ); connect( ui->biography, SIGNAL( linkClicked( QUrl ) ), SLOT( onBiographyLinkClicked( QUrl ) ) ); QFont f = ui->topHitsMoreLabel->font(); f.setWeight( QFont::Light ); f.setPointSize( TomahawkUtils::defaultFontSize() + 1 ); ui->topHitsMoreLabel->setFont( f ); ui->albumsMoreLabel->setFont( f ); connect( ui->albumsMoreLabel, SIGNAL( clicked() ), SLOT( onAlbumsMoreClicked() ) ); connect( ui->topHitsMoreLabel, SIGNAL( clicked() ), SLOT( onTopHitsMoreClicked() ) ); ui->cover->setFixedSize( scaled( QSize( 384, 384 ) ) ); } { m_headerWidget->ui->anchor1Label->setText( tr( "Music" ) ); m_headerWidget->ui->anchor2Label->setText( tr( "Biography" ) ); m_headerWidget->ui->anchor3Label->setText( tr( "Related Artists" ) ); m_headerWidget->ui->anchor1Label->show(); m_headerWidget->ui->anchor2Label->show(); m_headerWidget->ui->anchor3Label->show(); QFontMetrics fm( m_headerWidget->ui->anchor1Label->font() ); m_headerWidget->ui->anchor1Label->setFixedWidth( fm.width( m_headerWidget->ui->anchor1Label->text() ) + 16 ); m_headerWidget->ui->anchor2Label->setFixedWidth( fm.width( m_headerWidget->ui->anchor2Label->text() ) + 16 ); m_headerWidget->ui->anchor3Label->setFixedWidth( fm.width( m_headerWidget->ui->anchor3Label->text() ) + 16 ); connect( m_headerWidget->ui->anchor1Label, SIGNAL( clicked() ), SLOT( onMusicAnchorClicked() ) ); connect( m_headerWidget->ui->anchor2Label, SIGNAL( clicked() ), SLOT( onBioAnchorClicked() ) ); connect( m_headerWidget->ui->anchor3Label, SIGNAL( clicked() ), SLOT( onRelatedArtistsAnchorClicked() ) ); } m_stackedWidget = new QStackedWidget(); { m_area = new QScrollArea(); m_area->setWidgetResizable( true ); m_area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); m_area->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); m_area->setWidget( m_widget ); QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); m_area->setPalette( pal ); m_area->setAutoFillBackground( true ); m_area->setFrameShape( QFrame::NoFrame ); m_area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); m_stackedWidget->addWidget( m_area ); connect( m_area->verticalScrollBar(), SIGNAL( valueChanged(int ) ), SLOT( onSliderValueChanged( int ) ) ); } { ContextView* topHitsFullView = new ContextView( m_stackedWidget ); topHitsFullView->setCaption( tr( "Songs" ) ); topHitsFullView->setShowCloseButton( true ); topHitsFullView->trackView()->setPlayableModel( m_topHitsModel ); m_stackedWidget->addWidget( topHitsFullView ); connect( topHitsFullView, SIGNAL( closeClicked() ), SLOT( onPageClosed() ) ); } { GridView* albumsFullView = new GridView( m_stackedWidget ); albumsFullView->delegate()->setWordWrapping( true ); // albumsFullView->setCaption( tr( "Albums" ) ); // albumsFullView->setShowCloseButton( true ); albumsFullView->setPlayableModel( m_albumsModel ); albumsFullView->proxyModel()->setHideDupeItems( true ); CaptionLabel* captionLabel = new CaptionLabel( this ); captionLabel->setText( tr( "Albums" ) ); captionLabel->setShowCloseButton( true ); QWidget* vbox = new QWidget; QPalette pal = vbox->palette(); pal.setBrush( vbox->backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); vbox->setPalette( pal ); vbox->setAutoFillBackground( true ); QVBoxLayout* vboxl = new QVBoxLayout; TomahawkUtils::unmarginLayout( vboxl ); vboxl->setContentsMargins( 32, 32, 32, 32 ); vboxl->setSpacing( scaledY( 8 ) ); vbox->setLayout( vboxl ); vboxl->addWidget( captionLabel ); vboxl->addWidget( albumsFullView ); vboxl->addStretch(); vboxl->setStretchFactor( albumsFullView, 1 ); m_stackedWidget->addWidget( vbox ); connect( captionLabel, SIGNAL( clicked() ), SLOT( onPageClosed() ) ); } { QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( m_headerWidget ); layout->addWidget( m_stackedWidget ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); } MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->relatedArtists->playlistInterface() ); mpl->addChildInterface( ui->topHits->playlistInterface() ); mpl->addChildInterface( ui->albums->playlistInterface() ); m_plInterface = playlistinterface_ptr( mpl ); onSliderValueChanged( 0 ); TomahawkUtils::fixMargins( this ); m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Original, scaled( QSize( 48, 48 ) ) ); load( artist ); }
WelcomeWidget::WelcomeWidget( QWidget* parent ) : QWidget( parent ) , ui( new Ui::WelcomeWidget ) { ui->setupUi( this ); ui->splitter_2->setStretchFactor( 0, 3 ); ui->splitter_2->setStretchFactor( 1, 1 ); ui->splitter->setChildrenCollapsible( false ); ui->splitter_2->setChildrenCollapsible( false ); RecentPlaylistsModel* model = new RecentPlaylistsModel( HISTORY_PLAYLIST_ITEMS, this ); ui->playlistWidget->setFrameShape( QFrame::NoFrame ); ui->playlistWidget->setAttribute( Qt::WA_MacShowFocusRect, 0 ); TomahawkUtils::unmarginLayout( layout() ); TomahawkUtils::unmarginLayout( ui->verticalLayout->layout() ); TomahawkUtils::unmarginLayout( ui->verticalLayout_2->layout() ); TomahawkUtils::unmarginLayout( ui->verticalLayout_3->layout() ); TomahawkUtils::unmarginLayout( ui->verticalLayout_4->layout() ); ui->playlistWidget->setItemDelegate( new PlaylistDelegate() ); ui->playlistWidget->setModel( model ); ui->playlistWidget->overlay()->resize( 380, 86 ); ui->playlistWidget->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); updatePlaylists(); m_tracksModel = new RecentlyPlayedModel( ui->tracksView ); ui->tracksView->proxyModel()->setStyle( PlayableProxyModel::ShortWithAvatars ); ui->tracksView->overlay()->setEnabled( false ); ui->tracksView->setPlaylistModel( m_tracksModel ); m_tracksModel->setSource( source_ptr() ); QFont f; f.setBold( true ); QFontMetrics fm( f ); ui->tracksView->setMinimumWidth( fm.width( tr( "Recently played tracks" ) ) * 2 ); m_recentAlbumsModel = new AlbumModel( ui->additionsView ); ui->additionsView->setPlayableModel( m_recentAlbumsModel ); ui->additionsView->proxyModel()->sort( -1 ); MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksView->playlistInterface() ); mpl->addChildInterface( ui->additionsView->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); connect( SourceList::instance(), SIGNAL( ready() ), SLOT( onSourcesReady() ) ); connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ), SLOT( onSourceAdded( Tomahawk::source_ptr ) ) ); connect( ui->playlistWidget, SIGNAL( activated( QModelIndex ) ), SLOT( onPlaylistActivated( QModelIndex ) ) ); connect( model, SIGNAL( emptinessChanged( bool ) ), this, SLOT( updatePlaylists() ) ); }
DashboardWidget::DashboardWidget( QWidget* parent ) : QWidget( parent ) , ui( new Ui::DashboardWidget ) { QWidget* widget = new QWidget; BasicHeader* headerWidget = new BasicHeader; headerWidget->setCaption( tr( "Feed" ) ); ui->setupUi( widget ); { m_tracksModel = new RecentlyPlayedModel( ui->trackView->trackView(), HISTORY_TRACK_ITEMS ); ui->trackView->trackView()->setPlayableModel( m_tracksModel ); ui->trackView->setCaption( tr( "Recently Played Tracks" ) ); ui->trackView->trackView()->setUniformRowHeights( false ); ui->trackView->trackView()->setIndentation( 0 ); // ui->trackView->trackView()->setAutoResize( true ); m_tracksModel->setSource( source_ptr() ); } { /* QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); area->setWidget( widget ); QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); area->setPalette( pal ); area->setAutoFillBackground( true ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 );*/ QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( headerWidget ); layout->addWidget( widget ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); } MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->trackView->trackView()->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); connect( ui->trackView, SIGNAL( pixmapChanged( QPixmap ) ), headerWidget, SLOT( setBackground( QPixmap ) ) ); }
ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* parent ) : QWidget( parent ) , ui( new Ui::ArtistInfoWidget ) , m_artist( artist ) { QWidget* widget = new QWidget; ui->setupUi( widget ); QPalette pal = palette(); pal.setColor( QPalette::Window, QColor( "#393840" ) ); widget->setPalette( pal ); widget->setAutoFillBackground( true ); /* TomahawkUtils::unmarginLayout( ui->layoutWidget->layout() ); TomahawkUtils::unmarginLayout( ui->layoutWidget1->layout() ); TomahawkUtils::unmarginLayout( ui->layoutWidget2->layout() ); TomahawkUtils::unmarginLayout( ui->albumHeader->layout() );*/ m_albumsModel = new PlayableModel( ui->albums ); ui->albums->setPlayableModel( m_albumsModel ); ui->albums->setEmptyTip( tr( "Sorry, we could not find any albums for this artist!" ) ); m_relatedModel = new PlayableModel( ui->relatedArtists ); ui->relatedArtists->setPlayableModel( m_relatedModel ); ui->relatedArtists->proxyModel()->sort( -1 ); ui->relatedArtists->setEmptyTip( tr( "Sorry, we could not find any related artists!" ) ); m_topHitsModel = new PlaylistModel( ui->topHits ); ui->topHits->proxyModel()->setStyle( PlayableProxyModel::Short ); ui->topHits->setPlayableModel( m_topHitsModel ); ui->topHits->setSortingEnabled( false ); ui->topHits->setEmptyTip( tr( "Sorry, we could not find any top hits for this artist!" ) ); ui->relatedArtists->setAutoFitItems( false ); ui->relatedArtists->setWrapping( false ); ui->relatedArtists->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->relatedArtists->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded ); ui->relatedArtists->delegate()->setItemSize( QSize( 170, 170 ) ); ui->albums->setAutoFitItems( false ); ui->albums->setWrapping( false ); ui->albums->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->albums->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded ); ui->albums->delegate()->setItemSize( QSize( 170, 170 ) ); ui->albums->proxyModel()->setHideDupeItems( true ); ui->topHits->setFrameShape( QFrame::StyledPanel ); ui->topHits->setAttribute( Qt::WA_MacShowFocusRect, 0 ); m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Original, QSize( 48, 48 ) ); ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Grid ) ); ui->cover->setShowText( true ); QFont f = font(); f.setPointSize( f.pointSize() + 1 ); ui->biography->setOpenLinks( false ); ui->biography->setOpenExternalLinks( true ); ui->biography->setFrameShape( QFrame::NoFrame ); ui->biography->setAttribute( Qt::WA_MacShowFocusRect, 0 ); ui->biography->setFont( f ); TomahawkUtils::styleScrollBar( ui->biography->verticalScrollBar() ); QPalette p = ui->biography->palette(); p.setColor( QPalette::Foreground, Qt::white ); p.setColor( QPalette::Text, Qt::gray ); ui->biography->setPalette( p ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); ui->label_3->setPalette( p ); QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setWidget( widget ); area->setStyleSheet( "QScrollArea { background-color: #454e59; }" ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); TomahawkUtils::styleScrollBar( ui->albums->horizontalScrollBar() ); TomahawkUtils::styleScrollBar( ui->relatedArtists->horizontalScrollBar() ); ui->biography->setStyleSheet( "QTextBrowser#biography { background-color: transparent; }" ); ui->biography->document()->setDefaultStyleSheet( "a { text-decoration: none; font-weight: bold; color: #ffffff; }" ); ui->albums->setStyleSheet( "QListView { background-color: transparent; }" ); ui->albumFrame->setStyleSheet( "QFrame#albumFrame { background-color: transparent; }" "QFrame#albumFrame { " "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); ui->relatedArtists->setStyleSheet( "QListView { background-color: transparent; }" ); ui->artistFrame->setStyleSheet( "QFrame#artistFrame { background-color: transparent; }" "QFrame#artistFrame { " "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); // ui->topHits->setStyleSheet( "QTreeView#topHits { background-color: transparent; }" ); ui->trackFrame->setStyleSheet( "QFrame#trackFrame { background-color: transparent; }" "QFrame#trackFrame { " "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); connect( ui->biography, SIGNAL( anchorClicked( QUrl ) ), SLOT( onBiographyLinkClicked( QUrl ) ) ); MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->relatedArtists->playlistInterface() ); mpl->addChildInterface( ui->topHits->playlistInterface() ); mpl->addChildInterface( ui->albums->playlistInterface() ); m_plInterface = playlistinterface_ptr( mpl ); load( artist ); }
AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* parent ) : QWidget( parent ) , ui( new Ui::AlbumInfoWidget ) { QWidget* widget = new QWidget; ui->setupUi( widget ); m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Original, QSize( 48, 48 ) ); ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Grid, ui->cover->size() ) ); ui->cover->setShowText( false ); ui->lineAbove->setStyleSheet( QString( "QFrame { border: 1px solid %1; }" ).arg( TomahawkStyle::HEADER_BACKGROUND.name() ) ); ui->lineBelow->setStyleSheet( QString( "QFrame { border: 1px solid black; }" ) ); { m_tracksModel = new TreeModel( ui->tracks ); m_tracksModel->setMode( Mixed ); AlbumItemDelegate* del = new AlbumItemDelegate( ui->tracks, ui->tracks->proxyModel() ); ui->tracks->setPlaylistItemDelegate( del ); ui->tracks->setEmptyTip( tr( "Sorry, we could not find any tracks for this album!" ) ); ui->tracks->proxyModel()->setStyle( PlayableProxyModel::Large ); ui->tracks->setAutoResize( true ); ui->tracks->setPlayableModel( m_tracksModel ); ui->tracks->setAlternatingRowColors( false ); QPalette p = ui->tracks->palette(); p.setColor( QPalette::Text, TomahawkStyle::PAGE_TRACKLIST_TRACK_SOLVED ); p.setColor( QPalette::BrightText, TomahawkStyle::PAGE_TRACKLIST_TRACK_UNRESOLVED ); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_TRACKLIST_NUMBER ); p.setColor( QPalette::Highlight, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT ); p.setColor( QPalette::HighlightedText, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT_TEXT ); ui->tracks->setPalette( p ); TomahawkStyle::styleScrollBar( ui->tracks->horizontalScrollBar() ); TomahawkStyle::stylePageFrame( ui->tracks ); TomahawkStyle::stylePageFrame( ui->trackFrame ); } { m_albumsModel = new PlayableModel( ui->albums ); ui->albums->setPlayableModel( m_albumsModel ); ui->albums->setEmptyTip( tr( "Sorry, we could not find any other albums for this artist!" ) ); /* ui->albums->setAutoFitItems( true ); * ui->albums->setWrapping( false ); * ui->albums->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); * ui->albums->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );*/ ui->albums->delegate()->setItemSize( QSize( 170, 170 ) ); ui->albums->proxyModel()->setHideDupeItems( true ); TomahawkStyle::styleScrollBar( ui->albums->verticalScrollBar() ); TomahawkStyle::stylePageFrame( ui->albums ); TomahawkStyle::stylePageFrame( ui->albumFrame ); } { QFont f = ui->biography->font(); f.setFamily( "Titillium Web" ); QPalette p = ui->biography->palette(); p.setColor( QPalette::Text, TomahawkStyle::HEADER_TEXT ); ui->biography->setFont( f ); ui->biography->setPalette( p ); ui->biography->setOpenLinks( false ); ui->biography->setOpenExternalLinks( true ); ui->biography->document()->setDefaultStyleSheet( QString( "a { text-decoration: none; font-weight: bold; color: %1; }" ).arg( TomahawkStyle::HEADER_LINK.name() ) ); TomahawkStyle::stylePageFrame( ui->biography ); TomahawkStyle::styleScrollBar( ui->biography->verticalScrollBar() ); // connect( ui->biography, SIGNAL( anchorClicked( QUrl ) ), SLOT( onBiographyLinkClicked( QUrl ) ) ); } { QFont f = ui->albumLabel->font(); f.setFamily( "Titillium Web" ); QPalette p = ui->albumLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::HEADER_LABEL ); ui->albumLabel->setFont( f ); ui->albumLabel->setPalette( p ); } { ui->artistLabel->setContentsMargins( 6, 2, 6, 2 ); ui->artistLabel->setElideMode( Qt::ElideMiddle ); ui->artistLabel->setType( QueryLabel::Artist ); connect( ui->artistLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) ); QFont f = ui->artistLabel->font(); f.setFamily( "Titillium Web" ); QPalette p = ui->artistLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::HEADER_TEXT ); ui->artistLabel->setFont( f ); ui->artistLabel->setPalette( p ); } { QFont f = ui->label->font(); f.setFamily( "Pathway Gothic One" ); QPalette p = ui->label->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_CAPTION ); ui->label->setFont( f ); ui->label_2->setFont( f ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); } { QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::HEADER_BACKGROUND ); area->setPalette( pal ); area->setAutoFillBackground( true ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); } { QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); ui->widget->setPalette( pal ); ui->widget->setAutoFillBackground( true ); } MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracks->playlistInterface() ); mpl->addChildInterface( ui->albums->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); load( album ); }
Dashboard::Dashboard( QWidget* parent ) : QWidget( parent ) , ui( new Ui::Dashboard ) , m_header( new BasicHeader( this ) ) { QWidget* widget = new QWidget; ui->setupUi( widget ); m_header->setPixmap( ImageRegistry::instance()->pixmap( RESPATH "images/dashboard.svg", QSize( 0, 0 ) ) ); m_header->setCaption( tr( "Dashboard" ) ); m_header->setDescription( tr( "An overview of your recent activity" ) ); RecentPlaylistsModel* model = new RecentPlaylistsModel( HISTORY_PLAYLIST_ITEMS, this ); QPalette trackViewPal = ui->tracksView->palette(); trackViewPal.setColor( QPalette::Foreground, TomahawkStyle::PAGE_FOREGROUND ); trackViewPal.setColor( QPalette::Text, TomahawkStyle::PAGE_FOREGROUND ); trackViewPal.setColor( QPalette::Highlight, QColor( "#252020" ) ); trackViewPal.setColor( QPalette::HighlightedText, Qt::white ); ui->playlistWidget->setFrameShape( QFrame::NoFrame ); ui->playlistWidget->setAttribute( Qt::WA_MacShowFocusRect, 0 ); ui->playlistWidget->setItemDelegate( new PlaylistDelegate() ); ui->playlistWidget->setModel( model ); ui->playlistWidget->overlay()->resize( 380, 86 ); ui->playlistWidget->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); ui->playlistWidget->setPalette( trackViewPal ); ui->playlistWidget->setMinimumHeight( 400 ); updatePlaylists(); m_tracksModel = new RecentlyPlayedModel( ui->tracksView, HISTORY_TRACK_ITEMS ); ui->tracksView->proxyModel()->setStyle( PlayableProxyModel::ShortWithAvatars ); ui->tracksView->overlay()->setEnabled( false ); ui->tracksView->setPlaylistModel( m_tracksModel ); ui->tracksView->setAutoResize( true ); m_tracksModel->setSource( source_ptr() ); ui->tracksView->setPalette( trackViewPal ); ui->tracksView->setAlternatingRowColors( false ); ui->tracksView->setFrameShape( QFrame::NoFrame ); ui->tracksView->setAttribute( Qt::WA_MacShowFocusRect, 0 ); m_recentAlbumsModel = new AlbumModel( ui->additionsView ); ui->additionsView->setPlayableModel( m_recentAlbumsModel ); ui->additionsView->proxyModel()->sort( -1 ); QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); QPalette pal = palette(); // background: qradialgradient(cx: 0.5, cy: -1.8, fx: 0.5, fy: 0, radius: 2, stop: 0 %1, stop: 1 %2); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); area->setPalette( pal ); area->setAutoFillBackground( true ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( m_header ); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); TomahawkStyle::styleScrollBar( ui->playlistWidget->verticalScrollBar() ); TomahawkStyle::styleScrollBar( ui->additionsView->verticalScrollBar() ); QFont f; f.setBold( true ); QFontMetrics fm( f ); ui->tracksView->setMinimumWidth( fm.width( tr( "Recently played tracks" ) ) * 2 ); QPalette p = ui->label->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_FOREGROUND ); p.setColor( QPalette::Text, TomahawkStyle::PAGE_TEXT ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); ui->label_3->setPalette( p ); ui->playlistWidget->setStyleSheet( "QListView { background-color: transparent; }" ); TomahawkStyle::stylePageFrame( ui->playlistFrame ); ui->additionsView->setStyleSheet( "QListView { background-color: transparent; }" ); TomahawkStyle::stylePageFrame( ui->additionsFrame ); ui->tracksView->setStyleSheet( "QTreeView { background-color: transparent; }" ); TomahawkStyle::stylePageFrame( ui->trackFrame ); MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksView->playlistInterface() ); mpl->addChildInterface( ui->additionsView->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); connect( SourceList::instance(), SIGNAL( ready() ), SLOT( onSourcesReady() ) ); connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ), SLOT( onSourceAdded( Tomahawk::source_ptr ) ) ); connect( ui->playlistWidget, SIGNAL( activated( QModelIndex ) ), SLOT( onPlaylistActivated( QModelIndex ) ) ); connect( model, SIGNAL( emptinessChanged( bool ) ), this, SLOT( updatePlaylists() ) ); }
WhatsHotWidget::WhatsHotWidget( QWidget* parent ) : QWidget( parent ) , ui( new Ui::WhatsHotWidget ) , m_sortedProxy( 0 ) , m_workerThread( 0 ) , m_spinner( 0 ) , m_loading( true ) { ui->setupUi( this ); TomahawkUtils::unmarginLayout( layout() ); TomahawkUtils::unmarginLayout( ui->stackLeft->layout() ); TomahawkUtils::unmarginLayout( ui->horizontalLayout->layout() ); TomahawkUtils::unmarginLayout( ui->horizontalLayout_2->layout() ); TomahawkUtils::unmarginLayout( ui->breadCrumbLeft->layout() ); TomahawkUtils::unmarginLayout( ui->verticalLayout->layout() ); m_crumbModelLeft = new QStandardItemModel( this ); m_sortedProxy = new QSortFilterProxyModel( this ); m_sortedProxy->setDynamicSortFilter( true ); m_sortedProxy->setFilterCaseSensitivity( Qt::CaseInsensitive ); ui->breadCrumbLeft->setRootIcon( TomahawkUtils::defaultPixmap( TomahawkUtils::Charts, TomahawkUtils::Original ) ); connect( ui->breadCrumbLeft, SIGNAL( activateIndex( QModelIndex ) ), SLOT( leftCrumbIndexChanged( QModelIndex ) ) ); ui->tracksViewLeft->setHeaderHidden( true ); ui->tracksViewLeft->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); PlaylistChartItemDelegate* del = new PlaylistChartItemDelegate( ui->tracksViewLeft, ui->tracksViewLeft->proxyModel() ); ui->tracksViewLeft->setPlaylistItemDelegate( del ); ui->tracksViewLeft->setUniformRowHeights( false ); TreeProxyModel* artistsProxy = new TreeProxyModel( ui->artistsViewLeft ); artistsProxy->setFilterCaseSensitivity( Qt::CaseInsensitive ); artistsProxy->setDynamicSortFilter( true ); ui->artistsViewLeft->setProxyModel( artistsProxy ); ui->artistsViewLeft->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->artistsViewLeft->header()->setVisible( true ); m_workerThread = new QThread( this ); m_workerThread->start(); connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ), SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) ); connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ), SLOT( infoSystemFinished( QString ) ) ); // Read last viewed charts, to be used as defaults m_currentVIds = TomahawkSettings::instance()->lastChartIds(); tDebug( LOGVERBOSE ) << "Re-loading last chartIds:" << m_currentVIds; MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksViewLeft->playlistInterface() ); mpl->addChildInterface( ui->artistsViewLeft->proxyModel()->playlistInterface() ); mpl->addChildInterface( ui->albumsView->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); // Lets have a spinner until loaded ui->breadCrumbLeft->setVisible( false ); ui->stackLeft->setCurrentIndex( 2 ); m_spinner = new AnimatedSpinner( ui->albumsView ); m_spinner->fadeIn(); }
NetworkActivityWidget::NetworkActivityWidget( QWidget* parent ) : QWidget( parent ) , d_ptr( new NetworkActivityWidgetPrivate ( this ) ) { Q_D( NetworkActivityWidget ); QWidget* widget = new QWidget(); d->ui->setupUi( widget ); d->crumbModelLeft = new QStandardItemModel( this ); d->sortedProxy = new QSortFilterProxyModel( this ); // d_func()->ui->breadCrumbLeft->setRootIcon( TomahawkUtils::defaultPixmap( TomahawkUtils::NetworkActivity, TomahawkUtils::Original ) ); connect( d->ui->breadCrumbLeft, SIGNAL( activateIndex( QModelIndex ) ), SLOT( leftCrumbIndexChanged( QModelIndex ) ) ); // Build up breadcrumb QStandardItem* rootItem = d->crumbModelLeft->invisibleRootItem(); // Breadcumps for Charts { QStandardItem* chartItem = new QStandardItem( tr( "Charts" ) ); rootItem->appendRow( chartItem ); QStandardItem* overallItem = new QStandardItem( tr( "Overall" ) ); overallItem->setData( OverallChart, Breadcrumb::DefaultRole ); chartItem->appendRow( overallItem ); QStandardItem* yearItem = new QStandardItem( tr( "Last Year" ) ); yearItem->setData( YearChart, Breadcrumb::DefaultRole ); chartItem->appendRow( yearItem ); QStandardItem* monthItem = new QStandardItem( tr( "Last Month" ) ); monthItem->setData( MonthChart, Breadcrumb::DefaultRole ); chartItem->appendRow( monthItem ); QStandardItem* weekItem = new QStandardItem( tr( "Last Week" ) ); weekItem->setData( WeekChart, Breadcrumb::DefaultRole ); chartItem->appendRow( weekItem ); } // Breadcrumbs for Loved Tracks { QStandardItem* lovedItem = new QStandardItem( tr( "Loved Tracks" ) ); rootItem->appendRow( lovedItem ); QStandardItem* topItem = new QStandardItem( tr( "Top Loved" ) ); topItem->setData( TopLoved, Breadcrumb::DefaultRole ); lovedItem->appendRow( topItem ); QStandardItem* recentlyItem = new QStandardItem( tr( "Recently Loved" ) ); recentlyItem->setData( RecentlyLoved, Breadcrumb::DefaultRole ); lovedItem->appendRow( recentlyItem ); } d->sortedProxy->setSourceModel( d->crumbModelLeft ); d->ui->breadCrumbLeft->setModel( d->sortedProxy ); d->ui->breadCrumbLeft->setVisible( true ); { TrackItemDelegate* del = new TrackItemDelegate( d->ui->tracksViewLeft, d->ui->tracksViewLeft->proxyModel(), true ); d->ui->tracksViewLeft->setPlaylistItemDelegate( del ); d->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Short ); d->ui->tracksViewLeft->setAutoResize( true ); d->ui->tracksViewLeft->setAlternatingRowColors( false ); d->ui->tracksViewLeft->setSortingEnabled( false ); d->ui->tracksViewLeft->setEmptyTip( tr( "Sorry, we are still loading the charts." ) ); QPalette p = d->ui->tracksViewLeft->palette(); p.setColor( QPalette::Text, TomahawkStyle::PAGE_TRACKLIST_TRACK_SOLVED ); p.setColor( QPalette::BrightText, TomahawkStyle::PAGE_TRACKLIST_TRACK_UNRESOLVED ); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_TRACKLIST_NUMBER ); p.setColor( QPalette::Highlight, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT ); p.setColor( QPalette::HighlightedText, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT_TEXT ); d->ui->tracksViewLeft->setPalette( p ); TomahawkStyle::stylePageFrame( d->ui->tracksViewLeft ); TomahawkStyle::stylePageFrame( d->ui->chartsFrame ); } // Trending Tracks { d->trendingTracksModel = new PlaylistModel( d->ui->trendingTracksView ); d->ui->trendingTracksView->proxyModel()->setStyle( PlayableProxyModel::Short ); d->ui->trendingTracksView->overlay()->setEnabled( true ); d->ui->trendingTracksView->setPlaylistModel( d->trendingTracksModel ); d->ui->trendingTracksView->setAutoResize( true ); d->ui->trendingTracksView->setAlternatingRowColors( false ); d->ui->trendingTracksView->setEmptyTip( tr( "Sorry, we couldn't find any trending tracks." ) ); d->trendingTracksModel->startLoading(); QPalette p = d->ui->trendingTracksView->palette(); p.setColor( QPalette::Text, TomahawkStyle::PAGE_TRACKLIST_TRACK_SOLVED ); p.setColor( QPalette::BrightText, TomahawkStyle::PAGE_TRACKLIST_TRACK_UNRESOLVED ); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_TRACKLIST_NUMBER ); p.setColor( QPalette::Highlight, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT ); p.setColor( QPalette::HighlightedText, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT_TEXT ); d->ui->trendingTracksView->setPalette( p ); TomahawkStyle::stylePageFrame( d->ui->trendingTracksView ); TomahawkStyle::stylePageFrame( d->ui->trendingTracksFrame ); } { QFont f = d->ui->trendingTracksLabel->font(); f.setFamily( "Roboto" ); QPalette p = d->ui->trendingTracksLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_CAPTION ); d->ui->trendingTracksLabel->setFont( f ); d->ui->trendingTracksLabel->setPalette( p ); } // Hot Playlists { TomahawkStyle::stylePageFrame( d->ui->playlistsFrame ); QFont f = d->ui->hotPlaylistsLabel->font(); f.setFamily( "Roboto" ); QPalette p = d->ui->hotPlaylistsLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_CAPTION ); d->ui->hotPlaylistsLabel->setFont( f ); d->ui->hotPlaylistsLabel->setPalette( p ); } { d->ui->playlistView->setItemDelegate( new PlaylistDelegate() ); d->ui->playlistView->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); QPalette p = d->ui->playlistView->palette(); p.setColor( QPalette::Text, TomahawkStyle::PAGE_FOREGROUND ); p.setColor( QPalette::BrightText, TomahawkStyle::PAGE_FOREGROUND ); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_FOREGROUND ); p.setColor( QPalette::Highlight, TomahawkStyle::PAGE_FOREGROUND ); p.setColor( QPalette::HighlightedText, TomahawkStyle::PAGE_BACKGROUND ); d->ui->playlistView->setPalette( p ); d->ui->playlistView->overlay()->setPalette( p ); TomahawkStyle::styleScrollBar( d->ui->playlistView->verticalScrollBar() ); TomahawkStyle::stylePageFrame( d->ui->playlistView ); TomahawkStyle::stylePageFrame( d->ui->playlistsFrame ); connect( d->ui->playlistView, SIGNAL( activated( QModelIndex ) ), SLOT( onPlaylistActivated( QModelIndex ) ) ); } // Trending artists { d->artistsModel = new PlayableModel( d->ui->trendingArtistsView ); d->ui->trendingArtistsView->setPlayableModel( d->artistsModel ); d->artistsModel->startLoading(); } { d->ui->trendingArtistsView->proxyModel()->sort( -1 ); d->ui->trendingArtistsView->proxyModel()->setHideDupeItems( true ); d->ui->trendingArtistsView->setAutoResize( true ); d->ui->trendingArtistsView->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); TomahawkStyle::stylePageFrame( d->ui->trendingArtistsView ); TomahawkStyle::stylePageFrame( d->ui->trendingArtistsFrame ); } { QFont f = d->ui->trendingArtistsLabel->font(); f.setFamily( "Roboto" ); QPalette p = d->ui->trendingArtistsLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_CAPTION ); d->ui->trendingArtistsLabel->setFont( f ); d->ui->trendingArtistsLabel->setPalette( p ); } { QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); area->setPalette( pal ); area->setAutoFillBackground( true ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); } MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( d->ui->trendingTracksView->playlistInterface() ); mpl->addChildInterface( d->ui->tracksViewLeft->playlistInterface() ); d->playlistInterface = playlistinterface_ptr( mpl ); // Load data in separate thread d->workerThread = new QThread(); d->workerThread->start(); d->worker = new NetworkActivityWorker(); d->worker->moveToThread( d->workerThread ); connect( d->worker, SIGNAL( trendingTracks( QList<Tomahawk::track_ptr> ) ), SLOT( trendingTracks( QList<Tomahawk::track_ptr> ) ), Qt::QueuedConnection ); connect( d->worker, SIGNAL( hotPlaylists(QList<Tomahawk::playlist_ptr>) ), SLOT(hotPlaylists(QList<Tomahawk::playlist_ptr>)), Qt::QueuedConnection ); connect( d->worker, SIGNAL( trendingArtists( QList< Tomahawk::artist_ptr > ) ), SLOT( trendingArtists( QList< Tomahawk::artist_ptr > ) ), Qt::QueuedConnection ); connect( d->worker, SIGNAL( finished() ), d->workerThread, SLOT( quit() ), Qt::QueuedConnection ); // connect( d->workerThread, SIGNAL( finished() ), d->workerThread, SLOT( deleteLater() ), Qt::QueuedConnection ); // connect( d->workerThread, SIGNAL( destroyed() ), d->worker, SLOT( deleteLater() ), Qt::QueuedConnection ); QMetaObject::invokeMethod( d->worker, "run", Qt::QueuedConnection ); }
DashboardWidget::DashboardWidget( QWidget* parent ) : QWidget( parent ) , ui( new Ui::DashboardWidget ) { QWidget* widget = new QWidget; ui->setupUi( widget ); ui->lineAbove->setStyleSheet( QString( "QFrame { border: 1px solid black; }" ) ); ui->lineBelow->setStyleSheet( QString( "QFrame { border: 1px solid %1; }" ).arg( TomahawkStyle::HEADER_BACKGROUND.name() ) ); { m_tracksModel = new RecentlyPlayedModel( ui->tracksView, HISTORY_TRACK_ITEMS ); ui->tracksView->proxyModel()->setStyle( PlayableProxyModel::Short ); ui->tracksView->overlay()->setEnabled( false ); ui->tracksView->setPlaylistModel( m_tracksModel ); ui->tracksView->setAutoResize( true ); ui->tracksView->setAlternatingRowColors( false ); m_tracksModel->setSource( source_ptr() ); QPalette p = ui->tracksView->palette(); p.setColor( QPalette::Text, TomahawkStyle::PAGE_TRACKLIST_TRACK_SOLVED ); p.setColor( QPalette::BrightText, TomahawkStyle::PAGE_TRACKLIST_TRACK_UNRESOLVED ); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_TRACKLIST_NUMBER ); p.setColor( QPalette::Highlight, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT ); p.setColor( QPalette::HighlightedText, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT_TEXT ); ui->tracksView->setPalette( p ); TomahawkStyle::stylePageFrame( ui->tracksView ); TomahawkStyle::stylePageFrame( ui->trackFrame ); } { RecentPlaylistsModel* model = new RecentPlaylistsModel( HISTORY_PLAYLIST_ITEMS, this ); ui->playlistWidget->setFrameShape( QFrame::NoFrame ); ui->playlistWidget->setAttribute( Qt::WA_MacShowFocusRect, 0 ); ui->playlistWidget->setItemDelegate( new PlaylistDelegate() ); ui->playlistWidget->setModel( model ); ui->playlistWidget->overlay()->resize( 380, 86 ); ui->playlistWidget->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); QPalette p = ui->playlistWidget->palette(); p.setColor( QPalette::Text, TomahawkStyle::HEADER_TEXT ); p.setColor( QPalette::BrightText, TomahawkStyle::HEADER_TEXT ); p.setColor( QPalette::Foreground, TomahawkStyle::HEADER_TEXT ); p.setColor( QPalette::Highlight, TomahawkStyle::HEADER_TEXT ); p.setColor( QPalette::HighlightedText, TomahawkStyle::HEADER_BACKGROUND ); ui->playlistWidget->setPalette( p ); ui->playlistWidget->setMinimumHeight( 400 ); TomahawkStyle::styleScrollBar( ui->playlistWidget->verticalScrollBar() ); TomahawkStyle::stylePageFrame( ui->playlistWidget ); TomahawkStyle::stylePageFrame( ui->playlistFrame ); updatePlaylists(); connect( ui->playlistWidget, SIGNAL( activated( QModelIndex ) ), SLOT( onPlaylistActivated( QModelIndex ) ) ); connect( model, SIGNAL( emptinessChanged( bool ) ), this, SLOT( updatePlaylists() ) ); } { m_recentAlbumsModel = new AlbumModel( ui->additionsView ); ui->additionsView->setPlayableModel( m_recentAlbumsModel ); ui->additionsView->proxyModel()->sort( -1 ); TomahawkStyle::styleScrollBar( ui->additionsView->verticalScrollBar() ); TomahawkStyle::stylePageFrame( ui->additionsView ); TomahawkStyle::stylePageFrame( ui->additionsFrame ); } { QFont f = ui->label->font(); f.setFamily( "Pathway Gothic One" ); QPalette p = ui->label->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_CAPTION ); ui->label->setFont( f ); ui->label_2->setFont( f ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); } { QFont f = ui->playlistLabel->font(); f.setFamily( "Pathway Gothic One" ); QPalette p = ui->playlistLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::HEADER_TEXT ); ui->playlistLabel->setFont( f ); ui->playlistLabel->setPalette( p ); } { QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::HEADER_BACKGROUND ); area->setPalette( pal ); area->setAutoFillBackground( true ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); } { QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); ui->widget->setPalette( pal ); ui->widget->setAutoFillBackground( true ); } MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksView->playlistInterface() ); mpl->addChildInterface( ui->additionsView->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); connect( SourceList::instance(), SIGNAL( ready() ), SLOT( onSourcesReady() ) ); connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ), SLOT( onSourceAdded( Tomahawk::source_ptr ) ) ); }
AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* parent ) : QWidget( parent ) , ui( new Ui::AlbumInfoWidget ) { QWidget* widget = new QWidget; ui->setupUi( widget ); QPalette pal = palette(); pal.setColor( QPalette::Window, TomahawkStyle::PAGE_BACKGROUND ); widget->setPalette( pal ); widget->setAutoFillBackground( true ); m_albumsModel = new PlayableModel( ui->albums ); ui->albums->setPlayableModel( m_albumsModel ); ui->albums->setEmptyTip( tr( "Sorry, we could not find any other albums for this artist!" ) ); m_tracksModel = new TreeModel( ui->tracks ); m_tracksModel->setMode( Mixed ); ui->tracks->setRootIsDecorated( false ); ui->tracks->setEmptyTip( tr( "Sorry, we could not find any tracks for this album!" ) ); ui->tracks->proxyModel()->setStyle( PlayableProxyModel::Large ); ui->tracks->setAutoResize( true ); ui->tracks->setPlayableModel( m_tracksModel ); AlbumItemDelegate* del = new AlbumItemDelegate( ui->tracks, ui->tracks->proxyModel() ); ui->tracks->setPlaylistItemDelegate( del ); ui->albums->setAutoFitItems( false ); ui->albums->setWrapping( false ); ui->albums->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->albums->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded ); ui->albums->delegate()->setItemSize( QSize( 170, 170 ) ); ui->albums->proxyModel()->setHideDupeItems( true ); ui->tracks->setFrameShape( QFrame::StyledPanel ); ui->tracks->setAttribute( Qt::WA_MacShowFocusRect, 0 ); m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Original, QSize( 48, 48 ) ); ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Grid, ui->cover->size() ) ); ui->cover->setShowText( true ); ui->biography->setFrameShape( QFrame::NoFrame ); ui->biography->setAttribute( Qt::WA_MacShowFocusRect, 0 ); TomahawkUtils::styleScrollBar( ui->biography->verticalScrollBar() ); QPalette p = ui->biography->palette(); p.setColor( QPalette::Foreground, Qt::white ); p.setColor( QPalette::Text, Qt::white ); ui->biography->setPalette( p ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); area->setStyleSheet( "QScrollArea { background-color: #454e59; }" ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); TomahawkUtils::styleScrollBar( ui->tracks->horizontalScrollBar() ); TomahawkUtils::styleScrollBar( ui->albums->horizontalScrollBar() ); ui->biography->setStyleSheet( "QTextBrowser#biography { background-color: transparent; }" ); ui->albums->setStyleSheet( "QListView { background-color: transparent; }" ); ui->albumFrame->setStyleSheet( "QFrame#albumFrame { background-color: transparent; }" "QFrame#albumFrame { " "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); ui->trackFrame->setStyleSheet( "QFrame#trackFrame { background-color: transparent; }" "QFrame#trackFrame { " "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracks->playlistInterface() ); mpl->addChildInterface( ui->albums->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); load( album ); }
ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* parent ) : QWidget( parent ) , ui( new Ui::ArtistInfoWidget ) , m_artist( artist ) { QWidget* widget = new QWidget; ui->setupUi( widget ); artist->loadStats(); connect( artist.data(), SIGNAL( statsLoaded() ), SLOT( onArtistStatsLoaded() ) ); ui->lineAbove->setStyleSheet( QString( "QFrame { border: 1px solid %1; }" ).arg( TomahawkStyle::HEADER_BACKGROUND.name() ) ); ui->lineBelow->setStyleSheet( QString( "QFrame { border: 1px solid black; }" ) ); ui->lineAbove2->setStyleSheet( QString( "QFrame { border: 1px solid black; }" ) ); ui->lineBelow2->setStyleSheet( QString( "QFrame { border: 1px solid %1; }" ).arg( TomahawkStyle::HEADER_BACKGROUND.name() ) ); QHBoxLayout* l = new QHBoxLayout( ui->statsWidget ); m_playStatsGauge = new StatsGauge( ui->statsWidget ); m_playStatsGauge->setText( tr( "YOUR ARTIST RANK" ) ); m_playStatsGauge->setInvertedAppearance( true ); l->addSpacerItem( new QSpacerItem( 0, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ) ); l->addWidget( m_playStatsGauge ); l->addSpacerItem( new QSpacerItem( 0, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ) ); ui->statsWidget->setLayout( l ); TomahawkUtils::unmarginLayout( l ); m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Original, QSize( 48, 48 ) ); ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Grid, ui->cover->size() ) ); ui->cover->setShowText( false ); { m_relatedModel = new PlayableModel( ui->relatedArtists ); ui->relatedArtists->setPlayableModel( m_relatedModel ); ui->relatedArtists->proxyModel()->sort( -1 ); ui->relatedArtists->setEmptyTip( tr( "Sorry, we could not find any related artists!" ) ); ui->relatedArtists->setAutoFitItems( true ); /* ui->relatedArtists->setWrapping( false ); ui->relatedArtists->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); ui->relatedArtists->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );*/ ui->relatedArtists->delegate()->setItemSize( QSize( 170, 170 ) ); TomahawkStyle::stylePageFrame( ui->relatedArtists ); TomahawkStyle::stylePageFrame( ui->artistFrame ); TomahawkStyle::styleScrollBar( ui->relatedArtists->verticalScrollBar() ); } { ui->albums->setAutoResize( true ); ui->albums->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); /* ui->albums->setWrapping( false ); ui->albums->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );*/ ui->albums->delegate()->setItemSize( QSize( 170, 170 ) ); ui->albums->proxyModel()->setHideDupeItems( true ); m_albumsModel = new PlayableModel( ui->albums ); ui->albums->setPlayableModel( m_albumsModel ); ui->albums->proxyModel()->sort( -1 ); ui->albums->setEmptyTip( tr( "Sorry, we could not find any albums for this artist!" ) ); ui->albums->setStyleSheet( QString( "QListView { background-color: %1; }" ).arg( TomahawkStyle::HEADER_BACKGROUND.name() ) ); TomahawkStyle::stylePageFrame( ui->albumFrame ); TomahawkStyle::styleScrollBar( ui->albums->verticalScrollBar() ); } { m_topHitsModel = new PlaylistModel( ui->topHits ); AlbumItemDelegate* del = new AlbumItemDelegate( ui->topHits, ui->topHits->proxyModel() ); ui->topHits->setPlaylistItemDelegate( del ); ui->topHits->proxyModel()->setStyle( PlayableProxyModel::Short ); ui->topHits->setPlayableModel( m_topHitsModel ); ui->topHits->setSortingEnabled( false ); ui->topHits->setEmptyTip( tr( "Sorry, we could not find any top hits for this artist!" ) ); ui->topHits->setAutoResize( true ); ui->topHits->setAlternatingRowColors( false ); QPalette p = ui->topHits->palette(); p.setColor( QPalette::Text, TomahawkStyle::PAGE_TRACKLIST_TRACK_SOLVED ); p.setColor( QPalette::BrightText, TomahawkStyle::PAGE_TRACKLIST_TRACK_UNRESOLVED ); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_TRACKLIST_NUMBER ); p.setColor( QPalette::Highlight, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT ); p.setColor( QPalette::HighlightedText, TomahawkStyle::PAGE_TRACKLIST_HIGHLIGHT_TEXT ); ui->topHits->setPalette( p ); TomahawkStyle::stylePageFrame( ui->topHits ); TomahawkStyle::stylePageFrame( ui->trackFrame ); } { QFont f = ui->biography->font(); f.setFamily( "Titillium Web" ); QPalette p = ui->biography->palette(); p.setColor( QPalette::Text, TomahawkStyle::HEADER_TEXT ); ui->biography->setFont( f ); ui->biography->setPalette( p ); ui->biography->setOpenLinks( false ); ui->biography->setOpenExternalLinks( true ); ui->biography->document()->setDefaultStyleSheet( QString( "a { text-decoration: none; font-weight: bold; color: %1; }" ).arg( TomahawkStyle::HEADER_LINK.name() ) ); TomahawkStyle::stylePageFrame( ui->biography ); TomahawkStyle::styleScrollBar( ui->biography->verticalScrollBar() ); connect( ui->biography, SIGNAL( anchorClicked( QUrl ) ), SLOT( onBiographyLinkClicked( QUrl ) ) ); } { QFont f = ui->artistLabel->font(); f.setFamily( "Titillium Web" ); QPalette p = ui->artistLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::HEADER_LABEL ); ui->artistLabel->setFont( f ); ui->artistLabel->setPalette( p ); } { QFont f = ui->label->font(); f.setFamily( "Pathway Gothic One" ); QPalette p = ui->label->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::PAGE_CAPTION ); ui->label->setFont( f ); ui->label_2->setFont( f ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); } { QFont f = ui->albumLabel->font(); f.setFamily( "Pathway Gothic One" ); QPalette p = ui->albumLabel->palette(); p.setColor( QPalette::Foreground, TomahawkStyle::HEADER_TEXT ); ui->albumLabel->setFont( f ); ui->albumLabel->setPalette( p ); } { QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::HEADER_BACKGROUND ); area->setPalette( pal ); area->setAutoFillBackground( true ); area->setFrameShape( QFrame::NoFrame ); area->setAttribute( Qt::WA_MacShowFocusRect, 0 ); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget( area ); setLayout( layout ); TomahawkUtils::unmarginLayout( layout ); } { QPalette pal = palette(); pal.setBrush( backgroundRole(), TomahawkStyle::PAGE_BACKGROUND ); ui->widget->setPalette( pal ); ui->widget->setAutoFillBackground( true ); } MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->relatedArtists->playlistInterface() ); mpl->addChildInterface( ui->topHits->playlistInterface() ); mpl->addChildInterface( ui->albums->playlistInterface() ); m_plInterface = playlistinterface_ptr( mpl ); load( artist ); }
ChartsWidget::ChartsWidget( QWidget* parent ) : QWidget( parent ) , ui( new Ui::ChartsWidget ) , m_sortedProxy( 0 ) , m_workerThread( 0 ) , m_spinner( 0 ) , m_loading( true ) { ui->setupUi( this ); TomahawkUtils::unmarginLayout( layout() ); TomahawkUtils::unmarginLayout( ui->stackLeft->layout() ); TomahawkUtils::unmarginLayout( ui->horizontalLayout->layout() ); TomahawkUtils::unmarginLayout( ui->horizontalLayout_2->layout() ); TomahawkUtils::unmarginLayout( ui->breadCrumbLeft->layout() ); TomahawkUtils::unmarginLayout( ui->verticalLayout->layout() ); m_crumbModelLeft = new QStandardItemModel( this ); m_sortedProxy = new QSortFilterProxyModel( this ); m_sortedProxy->setDynamicSortFilter( true ); m_sortedProxy->setFilterCaseSensitivity( Qt::CaseInsensitive ); ui->breadCrumbLeft->setRootIcon( TomahawkUtils::defaultPixmap( TomahawkUtils::Charts, TomahawkUtils::Original ) ); connect( ui->breadCrumbLeft, SIGNAL( activateIndex( QModelIndex ) ), SLOT( leftCrumbIndexChanged( QModelIndex ) ) ); ui->artistsView->setItemWidth( TomahawkUtils::DpiScaler::scaledX( this, 190 ) ); ui->albumsView->setItemWidth( TomahawkUtils::DpiScaler::scaledX( this, 190 ) ); ui->tracksView->setItemWidth( TomahawkUtils::DpiScaler::scaledX( this, 190 ) ); ui->albumsView->delegate()->setWordWrapping( true ); ui->tracksView->delegate()->setWordWrapping( true ); ui->artistsView->delegate()->setShowPosition( true ); ui->albumsView->delegate()->setShowPosition( true ); ui->tracksView->delegate()->setShowPosition( true ); m_workerThread = new QThread( this ); m_workerThread->start(); connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ), SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) ); connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ), SLOT( infoSystemFinished( QString ) ) ); // Read last viewed charts, to be used as defaults m_currentVIds = TomahawkSettings::instance()->lastChartIds(); tDebug( LOGVERBOSE ) << "Reloading last chartIds:" << m_currentVIds; MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksView->playlistInterface() ); mpl->addChildInterface( ui->artistsView->playlistInterface() ); mpl->addChildInterface( ui->albumsView->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); // Lets have a spinner until loaded ui->breadCrumbLeft->setVisible( false ); ui->stackLeft->setCurrentIndex( 2 ); m_spinner = new AnimatedSpinner( ui->albumsView ); m_spinner->fadeIn(); fetchData(); }