diff --git a/src/qml/ContentView.qml b/src/qml/ContentView.qml --- a/src/qml/ContentView.qml +++ b/src/qml/ContentView.qml @@ -36,6 +36,22 @@ viewManager.goBack() } + function openArtist(name) { + viewManager.openOneArtist(viewManager.currentStackView, name, elisaTheme.artistIcon, 0) + } + + function openAlbum(artist, album, image, albumID) { + image = !image ? elisaTheme.defaultAlbumImage : image; + viewManager.openOneAlbum(viewManager.currentStackView, album, artist, image, albumID); + } + + function openNowPlaying() { + viewManager.closeAllViews(); + + // This is needed to trigger the state change + listViews.currentIndex = 0; + } + ViewManager { id: viewManager diff --git a/src/qml/ElisaMainWindow.qml b/src/qml/ElisaMainWindow.qml --- a/src/qml/ElisaMainWindow.qml +++ b/src/qml/ElisaMainWindow.qml @@ -183,7 +183,7 @@ Layout.minimumHeight: mainWindow.height * 0.2 + elisaTheme.mediaPlayerControlHeight Layout.maximumHeight: mainWindow.height * 0.2 + elisaTheme.mediaPlayerControlHeight Layout.fillWidth: true - + HeaderBar { id: headerBar @@ -197,6 +197,7 @@ title: elisa.manageHeaderBar.title artist: elisa.manageHeaderBar.artist image: elisa.manageHeaderBar.image + albumID: elisa.manageHeaderBar.albumId ratingVisible: false @@ -222,6 +223,9 @@ playerControl.onPlayNext: elisa.mediaPlayList.skipNextTrack() playerControl.isMaximized: persistentSettings.headerBarIsMaximized + onOpenArtist: { contentView.openArtist(artist) } + onOpenNowPlaying: { contentView.openNowPlaying() } + onOpenAlbum: { contentView.openAlbum(album, artist, image, albumID) } TrackImportNotification { id: importedTracksCountNotification @@ -278,7 +282,7 @@ states: [ State { name: "headerBarIsMaximized" - when: headerBar.isMaximized + when: headerBar.isMaximized changes: [ PropertyChanges { target: mainWindow diff --git a/src/qml/HeaderBar.qml b/src/qml/HeaderBar.qml --- a/src/qml/HeaderBar.qml +++ b/src/qml/HeaderBar.qml @@ -34,10 +34,15 @@ property string oldImage property string tracksCount property int trackRating + property int albumID property bool ratingVisible property alias playerControl: playControlItem property alias isMaximized: playControlItem.isMaximized + signal openArtist() + signal openAlbum() + signal openNowPlaying() + onImageChanged: { if (changeBackgroundTransition.running) { @@ -235,6 +240,16 @@ font.bold: true Layout.bottomMargin: titleFontInfo.height * 0.5 + + MouseArea { + id: titleMouseArea + hoverEnabled: true + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + onClicked: { + openNowPlaying() + } + } } LabelWithToolTip { @@ -246,6 +261,16 @@ color: myPalette.highlightedText font.pointSize: elisaTheme.defaultFontPointSize * 1.5 + MouseArea { + id: authorMouseArea + hoverEnabled: true + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + onClicked: { + openArtist() + } + } + layer.effect: Glow { cached: true @@ -275,6 +300,15 @@ samples: 9 } + MouseArea { + id: albumMouseArea + hoverEnabled: true + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + onClicked: { + openAlbum() + } + } } RatingStar {