[vlc-commits] qml: split VideoDisplay content in VideoAllDisplay and VideoList
Benjamin Arnaud
git at videolan.org
Tue Feb 23 08:54:16 UTC 2021
vlc | branch: master | Benjamin Arnaud <benjamin.arnaud at videolabs.io> | Fri Feb 19 11:25:34 2021 +0100| [12be577e6811bc0387d3776c81314bf990907faa] | committer: Pierre Lamot
qml: split VideoDisplay content in VideoAllDisplay and VideoList
Signed-off-by: Pierre Lamot <pierre at videolabs.io>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=12be577e6811bc0387d3776c81314bf990907faa
---
modules/gui/qt/Makefile.am | 2 +
modules/gui/qt/medialibrary/qml/VideoAll.qml | 352 +++++++++++++++++++++
.../gui/qt/medialibrary/qml/VideoAllDisplay.qml | 102 ++++++
modules/gui/qt/medialibrary/qml/VideoDisplay.qml | 290 +++--------------
modules/gui/qt/vlc.qrc | 2 +
po/POTFILES.in | 2 +
6 files changed, 503 insertions(+), 247 deletions(-)
diff --git a/modules/gui/qt/Makefile.am b/modules/gui/qt/Makefile.am
index 7de2b03424..6df4b7c71b 100644
--- a/modules/gui/qt/Makefile.am
+++ b/modules/gui/qt/Makefile.am
@@ -664,6 +664,8 @@ libqt_plugin_la_QML = \
gui/qt/medialibrary/qml/MusicTracksDisplay.qml \
gui/qt/medialibrary/qml/UrlListDisplay.qml \
gui/qt/medialibrary/qml/VideoDisplay.qml \
+ gui/qt/medialibrary/qml/VideoAll.qml \
+ gui/qt/medialibrary/qml/VideoAllDisplay.qml \
gui/qt/medialibrary/qml/VideoDisplayRecentVideos.qml \
gui/qt/medialibrary/qml/VideoGridItem.qml \
gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml \
diff --git a/modules/gui/qt/medialibrary/qml/VideoAll.qml b/modules/gui/qt/medialibrary/qml/VideoAll.qml
new file mode 100644
index 0000000000..0287a61907
--- /dev/null
+++ b/modules/gui/qt/medialibrary/qml/VideoAll.qml
@@ -0,0 +1,352 @@
+/*****************************************************************************
+ * Copyright (C) 2021 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+import QtQuick 2.11
+import QtQuick.Controls 2.4
+import QtQuick.Layouts 1.3
+import QtQml.Models 2.2
+
+import org.videolan.medialib 0.1
+
+import "qrc:///widgets/" as Widgets
+import "qrc:///main/" as MainInterface
+import "qrc:///util/" as Util
+import "qrc:///style/"
+
+Widgets.NavigableFocusScope {
+ id: root
+
+ //---------------------------------------------------------------------------------------------
+ // Properties
+ //---------------------------------------------------------------------------------------------
+
+ // NOTE: Specify an optionnal header for the view.
+ property Component header: undefined
+
+ property Item headerItem: (currentItem) ? currentItem.headerItem : undefined
+
+ readonly property int currentIndex: currentItem.currentIndex
+
+ property int initialIndex: 0
+
+ property var sortModel: [
+ { text: i18n.qtr("Alphabetic"), criteria: "title" },
+ { text: i18n.qtr("Duration"), criteria: "duration_short" }
+ ]
+
+ //---------------------------------------------------------------------------------------------
+ // Aliases
+ //---------------------------------------------------------------------------------------------
+
+ // NOTE: This is used to determine which media(s) shall be displayed.
+ property alias parentId: model.parentId
+
+ property alias model: model
+
+ property alias currentItem: view.currentItem
+
+ //---------------------------------------------------------------------------------------------
+
+ property alias dragItem: dragItem
+
+ //---------------------------------------------------------------------------------------------
+ // Settings
+ //---------------------------------------------------------------------------------------------
+
+ navigationCancel: function() {
+ if (currentItem.currentIndex <= 0) {
+ defaultNavigationCancel()
+ } else {
+ currentItem.currentIndex = 0;
+
+ currentItem.positionViewAtIndex(0, ItemView.Contain);
+ }
+ }
+
+ //---------------------------------------------------------------------------------------------
+ // Events
+ //---------------------------------------------------------------------------------------------
+
+ onModelChanged: resetFocus()
+
+ onInitialIndexChanged: resetFocus()
+
+ //---------------------------------------------------------------------------------------------
+ // Connections
+ //---------------------------------------------------------------------------------------------
+
+ Connections {
+ target: mainInterface
+
+ onGridViewChanged: {
+ if (mainInterface.gridView) view.replace(grid);
+ else view.replace(list);
+ }
+ }
+
+ //---------------------------------------------------------------------------------------------
+ // Functions
+ //---------------------------------------------------------------------------------------------
+
+ function setCurrentItemFocus() { listView.currentItem.forceActiveFocus() }
+
+ function resetFocus() {
+ if (model.count === 0) return
+
+ var initialIndex = root.initialIndex
+
+ if (initialIndex >= model.count)
+ initialIndex = 0
+
+ modelSelect.select(model.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect);
+
+ if (currentItem)
+ currentItem.positionViewAtIndex(initialIndex, ItemView.Contain);
+ }
+
+ //---------------------------------------------------------------------------------------------
+ // Private
+
+ function _actionAtIndex(index) {
+ g_mainDisplay.showPlayer();
+
+ medialib.addAndPlay(model.getIdsForIndexes(modelSelect.selectedIndexes));
+ }
+
+ //---------------------------------------------------------------------------------------------
+ // Childs
+ //---------------------------------------------------------------------------------------------
+
+ MLVideoModel {
+ id: model
+
+ ml: medialib
+
+ onCountChanged: {
+ if (count === 0 || modelSelect.hasSelection) return;
+
+ resetFocus();
+ }
+ }
+
+ Widgets.StackViewExt {
+ id: view
+
+ anchors.fill: parent
+
+ clip: true
+
+ initialItem: (mainInterface.gridView) ? grid : list
+
+ focus: (model.count !== 0)
+ }
+
+ Widgets.DragItem {
+ id: dragItem
+
+ function updateComponents(maxCovers) {
+ var items = modelSelect.selectedIndexes.slice(0, maxCovers).map(function (x){
+ return model.getDataAt(x.row);
+ })
+
+ var covers = items.map(function (item) {
+ return { artwork: item.thumbnail || VLCStyle.noArtCover }
+ });
+
+ var title = items.map(function (item) {
+ return item.title
+ }).join(", ");
+
+ return {
+ covers: covers,
+ title: title,
+ count: modelSelect.selectedIndexes.length
+ }
+ }
+
+ function insertIntoPlaylist(index) {
+ medialib.insertIntoPlaylist(index,
+ model.getIdsForIndexes(modelSelect.selectedIndexes));
+ }
+ }
+
+ Util.SelectableDelegateModel {
+ id: modelSelect
+
+ model: root.model
+ }
+
+ VideoContextMenu {
+ id: contextMenu
+
+ model: root.model
+ }
+
+ Component {
+ id: grid
+
+ MainInterface.MainGridView {
+ id: gridView
+
+ //-------------------------------------------------------------------------------------
+ // Properties
+
+ property Item currentItem: Item{}
+
+ //-------------------------------------------------------------------------------------
+ // Settings
+
+ cellWidth : VLCStyle.gridItem_video_width
+ cellHeight: VLCStyle.gridItem_video_height
+
+ model: root.model
+
+ delegateModel: modelSelect
+
+ headerDelegate: root.header
+
+ activeFocusOnTab: true
+
+ navigationParent: root
+ navigationUpItem: (headerItem) ? headerItem.focusItem : undefined
+
+ expandDelegate: VideoInfoExpandPanel {
+ width: gridView.width
+
+ x: 0
+
+ navigationParent: gridView
+
+ navigationCancel: function() { gridView.retract() }
+ navigationUp : function() { gridView.retract() }
+ navigationDown : function() { gridView.retract() }
+
+ onRetract: gridView.retract()
+ }
+
+ delegate: VideoGridItem {
+ id: gridItem
+
+ //---------------------------------------------------------------------------------
+ // Settings
+
+ opacity: (gridView.expandIndex !== -1
+ &&
+ gridView.expandIndex !== gridItem.index) ? 0.7 : 1
+
+ dragItem: root.dragItem
+
+ //---------------------------------------------------------------------------------
+ // Events
+
+ onItemClicked: gridView.leftClickOnItem(modifier, index)
+
+ onContextMenuButtonClicked: {
+ gridView.rightClickOnItem(index);
+
+ contextMenu.popup(modelSelect.selectedIndexes, globalMousePos,
+ { "information" : index });
+ }
+
+ //---------------------------------------------------------------------------------
+ // Animations
+
+ Behavior on opacity { NumberAnimation { duration: 100 } }
+ }
+
+ //-------------------------------------------------------------------------------------
+ // Events
+
+ // NOTE: Define the initial position and selection. This is done on activeFocus rather
+ // than Component.onCompleted because modelSelect.selectedGroup update itself
+ // after this event.
+ onActiveFocusChanged: {
+ if (activeFocus == false || model.count === 0 || modelSelect.hasSelection) return;
+
+ modelSelect.select(model.index(0,0), ItemSelectionModel.ClearAndSelect)
+ }
+
+ onSelectAll: modelSelect.selectAll()
+
+ onSelectionUpdated: modelSelect.updateSelection(keyModifiers, oldIndex, newIndex)
+
+ onActionAtIndex: _actionAtIndex(index)
+
+ //-------------------------------------------------------------------------------------
+ // Connections
+
+ Connections {
+ target: contextMenu
+
+ onShowMediaInformation: gridView.switchExpandItem(index)
+ }
+ }
+ }
+
+ Component {
+ id: list
+
+ VideoListDisplay
+ {
+ id: listView
+
+ //-------------------------------------------------------------------------------------
+ // Settings
+
+ model: root.model
+
+ selectionDelegateModel: modelSelect
+
+ dragItem: root.dragItem
+
+ header: root.header
+
+ headerTopPadding: VLCStyle.margin_normal
+
+ headerPositioning: ListView.InlineHeader
+
+ navigationParent: root
+ navigationUpItem: (headerItem) ? headerItem.focus : undefined
+
+ //-------------------------------------------------------------------------------------
+ // Events
+
+ onContextMenuButtonClicked: contextMenu.popup(modelSelect.selectedIndexes,
+ menuParent.mapToGlobal(0,0))
+
+ onRightClick: contextMenu.popup(modelSelect.selectedIndexes, globalMousePos)
+ }
+ }
+
+ EmptyLabel {
+ anchors.fill: parent
+
+ coverWidth : VLCStyle.dp(182, VLCStyle.scale)
+ coverHeight: VLCStyle.dp(114, VLCStyle.scale)
+
+ visible: (model.count === 0)
+
+ text: i18n.qtr("No video found\nPlease try adding sources, by going to the Network tab")
+
+ cover: VLCStyle.noArtVideoCover
+
+ navigationParent: root
+
+ focus: visible
+ }
+}
diff --git a/modules/gui/qt/medialibrary/qml/VideoAllDisplay.qml b/modules/gui/qt/medialibrary/qml/VideoAllDisplay.qml
new file mode 100644
index 0000000000..e2f5675970
--- /dev/null
+++ b/modules/gui/qt/medialibrary/qml/VideoAllDisplay.qml
@@ -0,0 +1,102 @@
+/*****************************************************************************
+ * Copyright (C) 2021 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+import QtQuick 2.11
+import QtQuick.Controls 2.4
+import QtQuick.Layouts 1.3
+import QtQml.Models 2.2
+
+import org.videolan.medialib 0.1
+
+import "qrc:///widgets/" as Widgets
+import "qrc:///main/" as MainInterface
+import "qrc:///util/" as Util
+import "qrc:///style/"
+
+VideoAll {
+ id: root
+
+ //---------------------------------------------------------------------------------------------
+ // Events
+ //---------------------------------------------------------------------------------------------
+
+ onCurrentIndexChanged: {
+ history.update([ "mc", "video", { "initialIndex": currentIndex }])
+ }
+
+ //---------------------------------------------------------------------------------------------
+ // Settings
+ //---------------------------------------------------------------------------------------------
+
+ MLRecentsVideoModel {
+ id: modelRecent
+
+ ml: medialib
+ }
+
+ header: Column {
+ property Item focusItem: loader.item.focusItem
+
+ width: root.width
+
+ topPadding: VLCStyle.margin_normal
+
+ spacing: VLCStyle.margin_normal
+
+ Loader {
+ id: loader
+
+ width: parent.width
+
+ height: item.implicitHeight
+
+ active: (modelRecent.count)
+
+ visible: active
+
+ focus: true
+
+ sourceComponent: VideoDisplayRecentVideos {
+ id: component
+
+ width: parent.width
+
+ model: modelRecent
+
+ focus: true
+
+ navigationParent: root
+
+ navigationDown: function() {
+ component.focus = false;
+
+ currentItem.setCurrentItemFocus();
+ }
+ }
+ }
+
+ Widgets.SubtitleLabel {
+ width: root.width
+
+ leftPadding : VLCStyle.margin_xlarge
+ bottomPadding: VLCStyle.margin_xsmall
+
+ text: i18n.qtr("Videos")
+ }
+ }
+}
diff --git a/modules/gui/qt/medialibrary/qml/VideoDisplay.qml b/modules/gui/qt/medialibrary/qml/VideoDisplay.qml
index 77ca86efb1..6a6d8c43a2 100644
--- a/modules/gui/qt/medialibrary/qml/VideoDisplay.qml
+++ b/modules/gui/qt/medialibrary/qml/VideoDisplay.qml
@@ -15,279 +15,75 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-import QtQuick 2.11
+
+import QtQuick 2.11
import QtQuick.Controls 2.4
-import QtQuick.Layouts 1.3
-import QtQml.Models 2.2
+import QtQuick.Layouts 1.3
+import QtQml.Models 2.2
import org.videolan.medialib 0.1
-import "qrc:///util/" as Util
import "qrc:///widgets/" as Widgets
-import "qrc:///main/" as MainInterface
import "qrc:///style/"
-Widgets.NavigableFocusScope {
+Widgets.PageLoader {
id: root
- readonly property var currentIndex: view.currentItem.currentIndex
- property Item headerItem: view.currentItem.headerItem
- //the index to "go to" when the view is loaded
- property var initialIndex: 0
-
- property alias contentModel: videoModel
- property var sortModel: [
- { text: i18n.qtr("Alphabetic"), criteria: "title"},
- { text: i18n.qtr("Duration"), criteria: "duration_short" }
- ]
-
- navigationCancel: function() {
- if (view.currentItem.currentIndex <= 0) {
- defaultNavigationCancel()
- } else {
- view.currentItem.currentIndex = 0;
- view.currentItem.positionViewAtIndex(0, ItemView.Contain)
- }
- }
-
- onCurrentIndexChanged: {
- history.update([ "mc", "video", {"initialIndex": currentIndex}])
- }
-
- onInitialIndexChanged: resetFocus()
- onContentModelChanged: resetFocus()
- function resetFocus() {
- if (videoModel.count === 0)
- return
- var initialIndex = root.initialIndex
- if (initialIndex >= videoModel.count)
- initialIndex = 0
- selectionModel.select(videoModel.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect)
- if (view.currentItem)
- view.currentItem.positionViewAtIndex(initialIndex, ItemView.Contain)
- }
+ //---------------------------------------------------------------------------------------------
+ // Properties
+ //---------------------------------------------------------------------------------------------
- function _actionAtIndex(index) {
- g_mainDisplay.showPlayer()
- medialib.addAndPlay( videoModel.getIdsForIndexes( selectionModel.selectedIndexes ) )
- }
+ property bool isViewMultiView: true
- MLVideoModel {
- id: videoModel
- ml: medialib
+ property var contentModel
+ property var sortModel
- onCountChanged: {
- if (videoModel.count > 0 && !selectionModel.hasSelection) {
- root.resetFocus()
- }
+ property var tabModel: ListModel {
+ Component.onCompleted: {
+ pageModel.forEach(function(e) {
+ append({
+ name : e.name,
+ displayText: e.displayText
+ })
+ })
}
}
- Util.SelectableDelegateModel {
- id: selectionModel
- model: videoModel
- }
+ property Component localMenuDelegate: Widgets.LocalTabBar {
+ currentView: root.view
- VideoContextMenu {
- id: contextMenu
- model: videoModel
- }
+ model: tabModel
- MLRecentsVideoModel {
- id: recentVideoModel
- ml: medialib
+ onClicked: root.loadIndex(index)
}
- property Component header: Column {
- id: videoHeader
-
- width: root.width
+ //---------------------------------------------------------------------------------------------
+ // Settings
+ //---------------------------------------------------------------------------------------------
- property Item focusItem: recentVideosViewLoader.item.focusItem
+ defaultPage: "all"
- topPadding: VLCStyle.margin_normal
- spacing: VLCStyle.margin_normal
-
- Loader {
- id: recentVideosViewLoader
- width: parent.width
- height: item.implicitHeight
- active: recentVideoModel.count > 0
- visible: recentVideoModel.count > 0
- focus: true
-
- sourceComponent: VideoDisplayRecentVideos {
- id: recentVideosView
-
- width: parent.width
-
- model: recentVideoModel
- focus: true
- navigationParent: root
- navigationDown: function() {
- recentVideosView.focus = false
- view.currentItem.setCurrentItemFocus()
- }
- }
+ pageModel: [{
+ name: "all",
+ displayText: i18n.qtr("All"),
+ url: "qrc:///medialibrary/VideoAllDisplay.qml"
}
+ ]
- Widgets.SubtitleLabel {
- id: videosLabel
- leftPadding: VLCStyle.margin_xlarge
- bottomPadding: VLCStyle.margin_xsmall
- width: root.width
- text: i18n.qtr("Videos")
- }
- }
-
- Component {
- id: gridComponent
-
- MainInterface.MainGridView {
- id: videosGV
- property Item currentItem: Item{}
-
- activeFocusOnTab:true
- delegateModel: selectionModel
- model: videoModel
-
- headerDelegate: root.header
-
- delegate: VideoGridItem {
- id: videoGridItem
-
- opacity: videosGV.expandIndex !== -1 && videosGV.expandIndex !== videoGridItem.index ? .7 : 1
- dragItem: videoDragItem
-
- onContextMenuButtonClicked: {
- videosGV.rightClickOnItem(index)
- contextMenu.popup(selectionModel.selectedIndexes, globalMousePos, {
- "information" : index
- } )
- }
-
- onItemClicked : videosGV.leftClickOnItem(modifier, index)
-
- Behavior on opacity {
- NumberAnimation {
- duration: 100
- }
- }
- }
-
- expandDelegate: VideoInfoExpandPanel {
- onRetract: videosGV.retract()
-
- x: 0
- width: videosGV.width
- navigationParent: videosGV
- navigationCancel: function() { videosGV.retract() }
- navigationUp: function() { videosGV.retract() }
- navigationDown: function() { videosGV.retract() }
- }
-
- navigationParent: root
- navigationUpItem: headerItem.focusItem
-
- /*
- *define the intial position/selection
- * This is done on activeFocus rather than Component.onCompleted because selectionModel.
- * selectedGroup update itself after this event
- */
- onActiveFocusChanged: {
- if (activeFocus && videoModel.count > 0 && !selectionModel.hasSelection) {
- selectionModel.select(videoModel.index(0,0), ItemSelectionModel.ClearAndSelect)
- }
- }
-
- cellWidth: VLCStyle.gridItem_video_width
- cellHeight: VLCStyle.gridItem_video_height
-
- onSelectAll:selectionModel.selectAll()
- onSelectionUpdated: selectionModel.updateSelection( keyModifiers, oldIndex, newIndex )
- onActionAtIndex: _actionAtIndex( index )
-
- Connections {
- target: contextMenu
- onShowMediaInformation: videosGV.switchExpandItem(index)
- }
- }
-
- }
-
- Component {
- id: listComponent
- VideoListDisplay {
- height: view.height
- width: view.width
- model: videoModel
- dragItem: videoDragItem
- navigationParent: root
- navigationUpItem: headerItem.focusItem
-
- header: root.header
- headerTopPadding: VLCStyle.margin_normal
- headerPositioning: ListView.InlineHeader
-
- selectionDelegateModel: selectionModel
-
- onContextMenuButtonClicked: contextMenu.popup(selectionModel.selectedIndexes, menuParent.mapToGlobal(0,0) )
-
- onRightClick: contextMenu.popup(selectionModel.selectedIndexes, globalMousePos )
-
- function setCurrentItemFocus() {
- currentItem.forceActiveFocus()
- }
- }
- }
-
-
- Widgets.DragItem {
- id: videoDragItem
-
- function updateComponents(maxCovers) {
- var items = selectionModel.selectedIndexes.slice(0, maxCovers).map(function (x){
- return videoModel.getDataAt(x.row)
- })
- var title = items.map(function (item){ return item.title}).join(", ")
- var covers = items.map(function (item) { return {artwork: item.thumbnail || VLCStyle.noArtCover}})
- return {
- covers: covers,
- title: title,
- count: selectionModel.selectedIndexes.length
- }
- }
+ onCurrentItemChanged: {
+ isViewMultiView = (currentItem.isViewMultiView === undefined
+ ||
+ currentItem.isViewMultiView);
- function insertIntoPlaylist(index) {
- medialib.insertIntoPlaylist(index, videoModel.getIdsForIndexes(selectionModel.selectedIndexes))
- }
+ contentModel = currentItem.model;
+ sortModel = currentItem.sortModel;
}
- Widgets.StackViewExt {
- id: view
- anchors.fill:parent
- clip: true
- focus: videoModel.count !== 0
- initialItem: mainInterface.gridView ? gridComponent : listComponent
- Connections {
- target: mainInterface
- onGridViewChanged: {
- if (mainInterface.gridView)
- view.replace(gridComponent)
- else
- view.replace(listComponent)
- }
- }
- }
+ //---------------------------------------------------------------------------------------------
+ // Functions
+ //---------------------------------------------------------------------------------------------
- EmptyLabel {
- anchors.fill: parent
- visible: videoModel.count === 0
- focus: visible
- text: i18n.qtr("No video found\nPlease try adding sources, by going to the Network tab")
- navigationParent: root
- cover: VLCStyle.noArtVideoCover
- coverWidth: VLCStyle.dp(182, VLCStyle.scale)
- coverHeight: VLCStyle.dp(114, VLCStyle.scale)
+ function loadIndex(index) {
+ history.push(["mc", "video", root.pageModel[index].name]);
}
}
diff --git a/modules/gui/qt/vlc.qrc b/modules/gui/qt/vlc.qrc
index f04c4e7eea..59504dfd18 100644
--- a/modules/gui/qt/vlc.qrc
+++ b/modules/gui/qt/vlc.qrc
@@ -270,6 +270,8 @@
<file alias="MusicDisplay.qml">medialibrary/qml/MusicDisplay.qml</file>
<file alias="MusicGenres.qml">medialibrary/qml/MusicGenres.qml</file>
<file alias="VideoDisplay.qml">medialibrary/qml/VideoDisplay.qml</file>
+ <file alias="VideoAll.qml">medialibrary/qml/VideoAll.qml</file>
+ <file alias="VideoAllDisplay.qml">medialibrary/qml/VideoAllDisplay.qml</file>
<file alias="MusicAlbumsDisplay.qml">medialibrary/qml/MusicAlbumsDisplay.qml</file>
<file alias="MusicAlbumsGridExpandDelegate.qml">medialibrary/qml/MusicAlbumsGridExpandDelegate.qml</file>
<file alias="MusicArtist.qml">medialibrary/qml/MusicArtist.qml</file>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 7e525cd659..f0a7a984b6 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -826,6 +826,8 @@ modules/gui/qt/medialibrary/qml/VideoDisplayRecentVideos.qml
modules/gui/qt/medialibrary/qml/VideoGridItem.qml
modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml
modules/gui/qt/medialibrary/qml/VideoListDisplay.qml
+modules/gui/qt/medialibrary/qml/VideoAll.qml
+modules/gui/qt/medialibrary/qml/VideoAllDisplay.qml
modules/gui/qt/menus/qml/Menubar.qml
modules/gui/qt/network/qml/DiscoverDisplay.qml
modules/gui/qt/network/qml/DiscoverUrlDisplay.qml
More information about the vlc-commits
mailing list