[vlc-devel] [PATCH 11/18] qml: refactor NetworkList view's custom thumbnail into separate Widget
Prince Gupta
guptaprince8832 at gmail.com
Wed Sep 23 19:40:09 CEST 2020
---
modules/gui/qt/Makefile.am | 1 +
.../qt/network/qml/NetworkBrowseDisplay.qml | 80 +------------
.../qt/network/qml/NetworkThumbnailItem.qml | 112 ++++++++++++++++++
modules/gui/qt/vlc.qrc | 1 +
4 files changed, 116 insertions(+), 78 deletions(-)
create mode 100644 modules/gui/qt/network/qml/NetworkThumbnailItem.qml
diff --git a/modules/gui/qt/Makefile.am b/modules/gui/qt/Makefile.am
index d153fb4416..2dd14ee319 100644
--- a/modules/gui/qt/Makefile.am
+++ b/modules/gui/qt/Makefile.am
@@ -647,6 +647,7 @@ libqt_plugin_la_QML = \
gui/qt/network/qml/NetworkHomeDisplay.qml \
gui/qt/network/qml/NetworkHomeDeviceListView.qml \
gui/qt/network/qml/NetworkListItem.qml \
+ gui/qt/network/qml/NetworkThumbnailItem.qml \
gui/qt/network/qml/ServicesHomeDisplay.qml \
gui/qt/player/qml/ControlBar.qml \
gui/qt/player/qml/ControlButtons.qml \
diff --git a/modules/gui/qt/network/qml/NetworkBrowseDisplay.qml b/modules/gui/qt/network/qml/NetworkBrowseDisplay.qml
index dafdefa0c7..8852c1c1bb 100644
--- a/modules/gui/qt/network/qml/NetworkBrowseDisplay.qml
+++ b/modules/gui/qt/network/qml/NetworkBrowseDisplay.qml
@@ -187,84 +187,8 @@ Widgets.NavigableFocusScope {
}
}
- property Component thumbnailColumn: Item {
- id: item
-
- property var rowModel: parent.rowModel
- property var model: parent.colModel
- readonly property bool currentlyFocused: parent.currentlyFocused
- readonly property bool containsMouse: parent.containsMouse
- readonly property int index: parent.index
-
- Rectangle {
- id: background
-
- color: VLCStyle.colors.bg
- width: VLCStyle.listAlbumCover_width
- height: VLCStyle.listAlbumCover_height
- visible: !artwork.visible
-
- Image {
- id: custom_cover
-
- anchors.centerIn: parent
- sourceSize.height: VLCStyle.icon_small
- sourceSize.width: VLCStyle.icon_small
- fillMode: Image.PreserveAspectFit
- mipmap: true
- source: {
- switch (rowModel.type){
- case NetworkMediaModel.TYPE_DISC:
- return "qrc:///type/disc.svg"
- case NetworkMediaModel.TYPE_CARD:
- return "qrc:///type/capture-card.svg"
- case NetworkMediaModel.TYPE_STREAM:
- return "qrc:///type/stream.svg"
- case NetworkMediaModel.TYPE_PLAYLIST:
- return "qrc:///type/playlist.svg"
- case NetworkMediaModel.TYPE_FILE:
- return "qrc:///type/file_black.svg"
- default:
- return "qrc:///type/directory_black.svg"
- }
- }
- }
-
- ColorOverlay {
- anchors.fill: custom_cover
- source: custom_cover
- color: VLCStyle.colors.text
- visible: rowModel.type !== NetworkMediaModel.TYPE_DISC
- && rowModel.type !== NetworkMediaModel.TYPE_CARD
- && rowModel.type !== NetworkMediaModel.TYPE_STREAM
- }
- }
-
- Image {
- id: artwork
-
- x: (width - paintedWidth) / 2
- y: (height - paintedHeight) / 2
- width: VLCStyle.listAlbumCover_width
- height: VLCStyle.listAlbumCover_height
- fillMode: Image.PreserveAspectFit
- horizontalAlignment: Image.AlignLeft
- verticalAlignment: Image.AlignTop
- source: item.rowModel.artwork
- visible: item.rowModel.artwork && item.rowModel.artwork.toString() !== ""
- mipmap: true
- }
-
- Widgets.PlayCover {
- x: artwork.visible ? artwork.x : background.x
- y: artwork.visible ? artwork.y : background.y
- width: artwork.visible ? artwork.paintedWidth : background.width
- height: artwork.visible ? artwork.paintedHeight : background.height
- iconSize: VLCStyle.play_cover_small
- visible: currentlyFocused || containsMouse
- onIconClicked: providerModel.addAndPlay(item.index)
- onlyBorders: rowModel.type === NetworkMediaModel.TYPE_NODE || rowModel.type === NetworkMediaModel.TYPE_DIRECTORY
- }
+ property Component thumbnailColumn: NetworkThumbnailItem {
+ onPlayClicked: providerModel.addAndPlay(index)
}
height: view.height
diff --git a/modules/gui/qt/network/qml/NetworkThumbnailItem.qml b/modules/gui/qt/network/qml/NetworkThumbnailItem.qml
new file mode 100644
index 0000000000..8b56cfef61
--- /dev/null
+++ b/modules/gui/qt/network/qml/NetworkThumbnailItem.qml
@@ -0,0 +1,112 @@
+/*****************************************************************************
+ * Copyright (C) 2020 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 QtQml.Models 2.2
+import QtGraphicalEffects 1.0
+
+import org.videolan.vlc 0.1
+import org.videolan.medialib 0.1
+
+import "qrc:///widgets/" as Widgets
+import "qrc:///style/"
+
+Item {
+ id: item
+
+ property var rowModel: parent.rowModel
+ property var model: parent.colModel
+ readonly property bool currentlyFocused: parent.currentlyFocused
+ readonly property bool containsMouse: parent.containsMouse
+ readonly property int index: parent.index
+
+ signal playClicked(var index)
+
+ Rectangle {
+ id: background
+
+ color: VLCStyle.colors.bg
+ width: VLCStyle.listAlbumCover_width
+ height: VLCStyle.listAlbumCover_height
+ visible: !artwork.visible
+
+ Image {
+ id: custom_cover
+
+ anchors.centerIn: parent
+ sourceSize.height: VLCStyle.icon_small
+ sourceSize.width: VLCStyle.icon_small
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ source: {
+ switch (rowModel.type) {
+ case NetworkMediaModel.TYPE_DISC:
+ return "qrc:///type/disc.svg"
+ case NetworkMediaModel.TYPE_CARD:
+ return "qrc:///type/capture-card.svg"
+ case NetworkMediaModel.TYPE_STREAM:
+ return "qrc:///type/stream.svg"
+ case NetworkMediaModel.TYPE_PLAYLIST:
+ return "qrc:///type/playlist.svg"
+ case NetworkMediaModel.TYPE_FILE:
+ return "qrc:///type/file_black.svg"
+ default:
+ return "qrc:///type/directory_black.svg"
+ }
+ }
+ }
+
+ ColorOverlay {
+ anchors.fill: custom_cover
+ source: custom_cover
+ color: VLCStyle.colors.text
+ visible: rowModel.type !== NetworkMediaModel.TYPE_DISC
+ && rowModel.type !== NetworkMediaModel.TYPE_CARD
+ && rowModel.type !== NetworkMediaModel.TYPE_STREAM
+ }
+ }
+
+ Image {
+ id: artwork
+
+ x: (width - paintedWidth) / 2
+ y: (height - paintedHeight) / 2
+ width: VLCStyle.listAlbumCover_width
+ height: VLCStyle.listAlbumCover_height
+ fillMode: Image.PreserveAspectFit
+ horizontalAlignment: Image.AlignLeft
+ verticalAlignment: Image.AlignTop
+ source: item.rowModel.artwork
+ visible: item.rowModel.artwork
+ && item.rowModel.artwork.toString() !== ""
+ mipmap: true
+ }
+
+ Widgets.PlayCover {
+ x: artwork.visible ? artwork.x : background.x
+ y: artwork.visible ? artwork.y : background.y
+ width: artwork.visible ? artwork.paintedWidth : background.width
+ height: artwork.visible ? artwork.paintedHeight : background.height
+ iconSize: VLCStyle.play_cover_small
+ visible: currentlyFocused || containsMouse
+ onIconClicked: playClicked(item.index)
+ onlyBorders: rowModel.type === NetworkMediaModel.TYPE_NODE
+ || rowModel.type === NetworkMediaModel.TYPE_DIRECTORY
+ }
+}
diff --git a/modules/gui/qt/vlc.qrc b/modules/gui/qt/vlc.qrc
index 8277491dc5..a15d56dfa1 100644
--- a/modules/gui/qt/vlc.qrc
+++ b/modules/gui/qt/vlc.qrc
@@ -238,6 +238,7 @@
<file alias="NetworkBrowseDisplay.qml">network/qml/NetworkBrowseDisplay.qml</file>
<file alias="NetworkGridItem.qml">network/qml/NetworkGridItem.qml</file>
<file alias="NetworkListItem.qml">network/qml/NetworkListItem.qml</file>
+ <file alias="NetworkThumbnailItem.qml">network/qml/NetworkThumbnailItem.qml</file>
<file alias="ServicesHomeDisplay.qml">network/qml/ServicesHomeDisplay.qml</file>
</qresource>
<qresource prefix="/medialibrary">
--
2.25.1
More information about the vlc-devel
mailing list