diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -369,7 +369,6 @@ qml/NavigationActionBar.qml qml/MediaPlayerControl.qml qml/ContextView.qml - qml/ContextViewLyrics.qml qml/ContentView.qml qml/ViewSelector.qml qml/ViewSelectorDelegate.qml diff --git a/src/models/trackcontextmetadatamodel.cpp b/src/models/trackcontextmetadatamodel.cpp --- a/src/models/trackcontextmetadatamodel.cpp +++ b/src/models/trackcontextmetadatamodel.cpp @@ -26,6 +26,7 @@ removeMetaData(DatabaseInterface::TitleRole); removeMetaData(DatabaseInterface::ArtistRole); removeMetaData(DatabaseInterface::AlbumRole); + removeMetaData(DatabaseInterface::AlbumArtistRole); if (dataFromType(DatabaseInterface::IsSingleDiscAlbumRole).toBool() && dataFromType(DatabaseInterface::DiscNumberRole).toInt() == 1) { diff --git a/src/qml/ContextView.qml b/src/qml/ContextView.qml --- a/src/qml/ContextView.qml +++ b/src/qml/ContextView.qml @@ -90,6 +90,8 @@ id: content width: topItem.width + anchors.leftMargin: elisaTheme.layoutHorizontalMargin + anchors.rightMargin: elisaTheme.layoutHorizontalMargin // Album art slice Image { @@ -99,11 +101,12 @@ Layout.maximumHeight: elisaTheme.contextCoverImageSize Layout.preferredHeight: elisaTheme.contextCoverImageSize Layout.fillWidth: true - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin - Layout.topMargin: elisaTheme.layoutVerticalMargin Layout.bottomMargin: elisaTheme.layoutVerticalMargin + // Touch the sides of the scrollview + Layout.leftMargin: -elisaTheme.layoutHorizontalMargin + Layout.rightMargin: -elisaTheme.layoutHorizontalMargin + sourceSize.width: topItem.width sourceSize.height: topItem.width @@ -119,69 +122,55 @@ font.pointSize: elisaTheme.headerTitleFontSize font.weight: Font.Bold + horizontalAlignment: Label.AlignHCenter + Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft | Qt.AlignTop - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin + Layout.alignment: Qt.AlignTop + Layout.topMargin: elisaTheme.layoutVerticalMargin } LabelWithToolTip { - id: albumArtistLabel - - text: (artistName && albumName ? i18nc('display of artist and album in context view', 'by %1 from %2', artistName, albumName) : '') + id: subtitleLabel + + text: { + if (artistName !== '' && albumName !== '') { + return i18nc('display of artist and album in context view', 'by %1 from %2', artistName, albumName) + } else if (artistName === '' && albumName !== '') { + return i18nc('display of album in context view', 'from %1', albumName) + } else if (artistName !== '' && albumName === '') { + i18nc('display of artist in context view', 'by %1', artistName) + } + } font.pointSize: Math.round(elisaTheme.defaultFontPointSize * 1.4) + horizontalAlignment: Label.AlignHCenter visible: artistName !== '' && albumName !== '' Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft | Qt.AlignTop - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin - Layout.bottomMargin: elisaTheme.layoutVerticalMargin + Layout.alignment: Qt.AlignTop } - LabelWithToolTip { - id: albumLabel - - text: (albumName ? i18nc('display of album in context view', 'from %1', albumName) : '') - - font.pointSize: Math.round(elisaTheme.defaultFontPointSize * 1.4) - - visible: artistName === '' && albumName !== '' - + // Horizontal line separating title and subtitle from metadata + Rectangle { Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft | Qt.AlignTop - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin - Layout.bottomMargin: elisaTheme.layoutVerticalMargin - } + Layout.leftMargin: elisaTheme.layoutHorizontalMargin * 5 + Layout.rightMargin: elisaTheme.layoutHorizontalMargin * 5 + Layout.topMargin: elisaTheme.layoutVerticalMargin * 2 + Layout.bottomMargin: elisaTheme.layoutVerticalMargin * 2 - LabelWithToolTip { - id: artistLabel - - text: (artistName ? i18nc('display of artist in context view', 'by %1', artistName) : '') - - font.pointSize: Math.round(elisaTheme.defaultFontPointSize * 1.4) + height: 1 - visible: artistName !== '' && albumName === '' - - Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft | Qt.AlignTop - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin - Layout.bottomMargin: elisaTheme.layoutVerticalMargin + color: myPalette.mid } // Metadata ColumnLayout { id: allMetaData spacing: 0 Layout.fillWidth: true - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin Repeater { id: trackData @@ -194,18 +183,34 @@ } } + // Horizontal line separating metadata from lyrics + Rectangle { + Layout.fillWidth: true + Layout.leftMargin: elisaTheme.layoutHorizontalMargin * 5 + Layout.rightMargin: elisaTheme.layoutHorizontalMargin * 5 + Layout.topMargin: elisaTheme.layoutVerticalMargin * 2 + Layout.bottomMargin: elisaTheme.layoutVerticalMargin * 2 + + height: 1 + + color: myPalette.mid + + visible: metaDataModel.lyrics !== "" + } + // Lyrics - ContextViewLyrics { - id: lyricsContextView + Label { + text: metaDataModel.lyrics + + wrapMode: Text.WordWrap + + horizontalAlignment: Label.AlignHCenter Layout.fillWidth: true - Layout.leftMargin: elisaTheme.layoutHorizontalMargin - Layout.rightMargin: elisaTheme.layoutHorizontalMargin Layout.bottomMargin: elisaTheme.layoutVerticalMargin visible: metaDataModel.lyrics !== "" - lyrics: metaDataModel.lyrics } } } diff --git a/src/qml/ContextViewLyrics.qml b/src/qml/ContextViewLyrics.qml deleted file mode 100644 --- a/src/qml/ContextViewLyrics.qml +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2016 Matthieu Gallien - * - * This program is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -import QtQuick 2.10 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.2 - -import org.kde.elisa 1.0 - -ColumnLayout { - property string lyrics - - Label { - id: title - - horizontalAlignment: Label.AlignHCenter - - text: i18nc("Lyrics label for track metadata view", "Lyrics") - - font.weight: Font.Bold - - Layout.fillWidth: true - } - - Label { - text: lyrics - - horizontalAlignment: Text.AlignLeft - - Layout.fillWidth: true - - wrapMode: Text.WordWrap - } -} diff --git a/src/qml/MetaDataDelegate.qml b/src/qml/MetaDataDelegate.qml --- a/src/qml/MetaDataDelegate.qml +++ b/src/qml/MetaDataDelegate.qml @@ -32,23 +32,21 @@ id: metaDataLabelMetric text: 'Metadata Name' - - font.weight: Font.Bold } Label { id: metaDataLabels - text: model.name + text: i18nc("Label for a piece of metadata, e.g. 'Album Artist:'", "%1:", model.name) font.weight: Font.Bold - horizontalAlignment: Text.AlignLeft + horizontalAlignment: Text.AlignRight Layout.alignment: Qt.AlignTop Layout.preferredWidth: 0.8 * elisaTheme.coverImageSize - Layout.rightMargin: !LayoutMirroring.enabled ? elisaTheme.layoutHorizontalMargin * 2 : 0 - Layout.leftMargin: LayoutMirroring.enabled ? elisaTheme.layoutHorizontalMargin * 2 : 0 + Layout.rightMargin: !LayoutMirroring.enabled ? elisaTheme.layoutHorizontalMargin / 2 : 0 + Layout.leftMargin: LayoutMirroring.enabled ? elisaTheme.layoutHorizontalMargin / 2 : 0 } Loader { diff --git a/src/resources.qrc b/src/resources.qrc --- a/src/resources.qrc +++ b/src/resources.qrc @@ -40,7 +40,6 @@ qml/PlayListAlbumHeader.qml qml/BasicPlayListAlbumHeader.qml qml/MetaDataDelegate.qml - qml/ContextViewLyrics.qml qml/ViewSelectorDelegate.qml qml/HeaderFooterToolbar.qml