vlc | branch: master | Pierre Lamot <[email protected]> | Thu Dec 19 15:26:36 2019 +0100| [649b550cfe21051debfac30e0a88f66bf46db2e5] | committer: Jean-Baptiste Kempf
qml: use the same layout as the Album detail view for the Video detail view Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=649b550cfe21051debfac30e0a88f66bf46db2e5 --- .../qt/medialibrary/qml/VideoInfoExpandPanel.qml | 303 +++++++++------------ 1 file changed, 130 insertions(+), 173 deletions(-) diff --git a/modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml b/modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml index e76f610064..845662edec 100644 --- a/modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml +++ b/modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml @@ -23,6 +23,7 @@ import QtQuick.Layouts 1.3 import org.videolan.medialib 0.1 import "qrc:///widgets/" as Widgets +import "qrc:///util/KeyHelper.js" as KeyHelper import "qrc:///style/" Widgets.NavigableFocusScope { @@ -60,217 +61,173 @@ Widgets.NavigableFocusScope { Rectangle{ id: contentRect - height: implicitHeight + //height: implicitHeight implicitHeight: contentLayout.implicitHeight + VLCStyle.margin_xsmall * 2 width: parent.width + + anchors { + bottom: parent.bottom + right: parent.right + left: parent.left + top: arrowRect.bottom + } + //height: parent.height - arrowRect.height + clip: true color: VLCStyle.colors.bgAlt RowLayout { id: contentLayout - anchors { - fill: parent - topMargin: VLCStyle.margin_xsmall - bottomMargin: VLCStyle.margin_xsmall - leftMargin: VLCStyle.margin_normal - } - - spacing: VLCStyle.margin_small + spacing: VLCStyle.margin_xsmall - Image { - id: img - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: width - Layout.preferredHeight: height + anchors.margins: VLCStyle.margin_small - width: VLCStyle.cover_xlarge - height: VLCStyle.cover_xlarge - fillMode:Image.PreserveAspectFit + implicitHeight: artAndControl.implicitHeight - source: model.thumbnail || VLCStyle.noArtCover - } + anchors.fill: parent - Column{ - id: infoCol - height: childrenRect.height - width: Math.min(title.implicitWidth, 200*VLCStyle.scale) - - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: width - Layout.preferredHeight: height - - spacing: VLCStyle.margin_small - Text{ - id: newtxt - font.pixelSize: VLCStyle.fontSize_normal - font.weight: Font.ExtraBold - text: "NEW" - color: VLCStyle.colors.accent - visible: model.playcount < 1 - } - Text{ - id: title - wrapMode: Text.Wrap - font.pixelSize: VLCStyle.fontSize_xlarge - font.weight: Font.ExtraBold - text: model.title || "" - color: VLCStyle.colors.text - width: parent.width - } - Text { - id: time - text: model.duration || "" - color: VLCStyle.colors.textInactive - font.pixelSize: VLCStyle.fontSize_small - } - } + FocusScope { + id: artAndControl + focus: true - Widgets.NavigableFocusScope { - id: infoPanel + implicitHeight: artAndControlLayout.implicitHeight + implicitWidth: artAndControlLayout.implicitWidth - Layout.fillHeight: true - Layout.fillWidth: true + Layout.preferredWidth: implicitWidth + Layout.preferredHeight: implicitHeight + Layout.alignment: Qt.AlignTop - ScrollView { - id: infoPannelScrollView - contentHeight: infoInnerCol.height - - anchors.fill: parent - - focus: true - clip: true - - ListView { - id: infoInnerCol - spacing: VLCStyle.margin_xsmall - model: [ - {text: i18n.qtr("File Name"), data: expandRect.model.title, bold: true}, - {text: i18n.qtr("Path"), data: expandRect.model.mrl}, - {text: i18n.qtr("Length"), data: expandRect.model.duration}, - {text: i18n.qtr("File size"), data: ""}, - {text: i18n.qtr("Times played"), data: expandRect.model.playcount}, - {text: i18n.qtr("Video track"), data: expandRect.model.videoDesc}, - {text: i18n.qtr("Audio track"), data: expandRect.model.audioDesc}, - ] - delegate: Label { - font.bold: Boolean(modelData.bold) - font.pixelSize: VLCStyle.fontSize_normal - text: modelData.text + ": " + modelData.data - color: VLCStyle.colors.text - width: parent.width - wrapMode: Label.Wrap - } - } - Keys.priority: Keys.BeforeItem - Keys.onPressed: { - if (event.key !== Qt.Key_Up && event.key !== Qt.Key_Down) { - infoPanel.defaultKeyAction(event, 0) - } - } - } + Column { + id: artAndControlLayout + anchors.margins: VLCStyle.margin_small + spacing: VLCStyle.margin_small - Rectangle { - z: 2 - anchors.fill: parent - border.width: 1 - border.color: VLCStyle.colors.accent - color: "transparent" - visible: infoPanel.activeFocus - } + /* A bigger cover for the album */ + Image { + id: expand_cover_id - Rectangle { - anchors { top: parent.top; left: parent.left; right: parent.right } - z: 1 - visible: !infoPannelScrollView.contentItem.atYBeginning - height: parent.height * 0.2 - gradient: Gradient{ - GradientStop { position: 0.0; color: VLCStyle.colors.bgAlt } - GradientStop { position: 1.0; color: "transparent" } + height: VLCStyle.video_large_height + width: VLCStyle.video_large_width + source: model.thumbnail || VLCStyle.noArtCover + sourceSize: Qt.size(width, height) + fillMode: Image.PreserveAspectFit } - } - Rectangle { - anchors { bottom: parent.bottom; left: parent.left; right: parent.right } - z: 1 - visible: !infoPannelScrollView.contentItem.atYEnd - height: parent.height * 0.2 - gradient: Gradient{ - GradientStop { position: 0.0; color: "transparent" } - GradientStop { position: 1.0; color: VLCStyle.colors.bgAlt } - } - } + Widgets.NavigableCol { + id: actionButtons - navigationParent: expandRect - navigationRightItem: actionButtons - } + focus: true - Rectangle { - width: 1 - Layout.fillHeight: true - Layout.preferredWidth: 1 - gradient: Gradient { - GradientStop { position: 0.0; color: "transparent" } - GradientStop { position: 0.25; color: VLCStyle.colors.buttonBorder } - GradientStop { position: 0.75; color: VLCStyle.colors.buttonBorder } - GradientStop { position: 1.0; color: "transparent" } - } + width: expand_cover_id.width - } + model: ObjectModel { + Widgets.TabButtonExt { + id: playActionBtn - Widgets.NavigableCol { - id: actionButtons + width: actionButtons.width - focus: true + iconTxt: VLCIcons.play + text: i18n.qtr("Play") + onClicked: medialib.addAndPlay( model.id ) + } - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: childrenRect.width + Widgets.TabButtonExt { + id: enqueueActionBtn - model: ObjectModel { - Widgets.TabButtonExt { - id: playActionBtn - iconTxt: VLCIcons.play - text: i18n.qtr("Play") - onClicked: medialib.addAndPlay( expandRect.model.id ) - } + width: actionButtons.width - Widgets.TabButtonExt { - id: enqueueActionBtn - iconTxt: VLCIcons.add - text: i18n.qtr("Enqueue") - onClicked: medialib.addToPlaylist( expandRect.model.id ) + iconTxt: VLCIcons.add + text: i18n.qtr("Enqueue") + onClicked: medialib.addToPlaylist( model.id ) + } + } + + navigationParent: expandRect + navigationRightItem: infoPannelScrollView } } - - navigationParent: expandRect - navigationLeftItem: infoPanel - navigationRightItem: closeButton } - Widgets.NavigableFocusScope { - id: closeButton + ColumnLayout { + id: expand_infos_id - Layout.alignment: Qt.AlignTop | Qt.AlignVCenter - Layout.preferredWidth: closeButtonId.size - Layout.preferredHeight: closeButtonId.size + Layout.fillWidth: true + Layout.fillHeight: true + + spacing: VLCStyle.margin_xsmall - Widgets.IconToolButton { - id: closeButtonId + Text { + id: expand_infos_title_id - size: VLCStyle.icon_normal - iconText: VLCIcons.close - text: i18n.qtr("Close") - color: VLCStyle.colors.lightText + Layout.preferredHeight: implicitHeight + Layout.fillWidth: true - focus: true - onClicked: expandRect.retract() + text: model.title || i18n.qtr("Unknown title") + font.pixelSize: VLCStyle.fontSize_xxlarge + font.bold: true + color: VLCStyle.colors.text } - Keys.priority: Keys.AfterItem - Keys.onPressed: defaultKeyAction(event, 0) - navigationParent: expandRect - navigationLeftItem: actionButtons + Widgets.NavigableFocusScope { + id: infoPanel + + Layout.fillHeight: true + Layout.fillWidth: true + + navigationParent: expandRect + navigationLeftItem: actionButtons + + ScrollView { + id: infoPannelScrollView + + contentHeight: infoInnerCol.height + + anchors.fill: parent + anchors.margins: VLCStyle.margin_xxsmall + + focus: true + clip: true + + ListView { + id: infoInnerCol + spacing: VLCStyle.margin_xsmall + model: [ + {text: i18n.qtr("File Name"), data: expandRect.model.title, bold: true}, + {text: i18n.qtr("Path"), data: expandRect.model.mrl}, + {text: i18n.qtr("Length"), data: expandRect.model.duration}, + {text: i18n.qtr("File size"), data: ""}, + {text: i18n.qtr("Times played"), data: expandRect.model.playcount}, + {text: i18n.qtr("Video track"), data: expandRect.model.videoDesc}, + {text: i18n.qtr("Audio track"), data: expandRect.model.audioDesc}, + ] + delegate: Label { + font.bold: Boolean(modelData.bold) + font.pixelSize: VLCStyle.fontSize_normal + text: modelData.text + ": " + modelData.data + color: VLCStyle.colors.text + width: parent.width + wrapMode: Label.Wrap + } + } + Keys.priority: Keys.BeforeItem + Keys.onPressed: { + if ( !KeyHelper.matchUp(event) && !KeyHelper.matchDown(event) ) { + infoPanel.defaultKeyAction(event, 0) + } + } + } + + Rectangle { + z: 2 + anchors.fill: parent + border.width: 2 * VLCStyle.scale + border.color: VLCStyle.colors.accent + color: "transparent" + visible: infoPanel.activeFocus + } + } } } } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
