Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
408 results
Show changes
Commits on Source (4)
......@@ -860,6 +860,8 @@ libqt_plugin_la_QML = \
gui/qt/network/qml/NetworkListItem.qml \
gui/qt/network/qml/NetworkThumbnailItem.qml \
gui/qt/network/qml/ServicesHomeDisplay.qml \
gui/qt/network/qml/ServicesManage.qml \
gui/qt/network/qml/ServicesSources.qml \
gui/qt/player/qml/qmldir \
gui/qt/player/qml/Bookmarks.qml \
gui/qt/player/qml/ControlBar.qml \
......
......@@ -37,10 +37,10 @@ Widgets.PageLoader {
pageModel: [{
name: "all",
component: allSourcesComponent
url: "qrc:///network/ServicesSources.qml"
}, {
name: "services_manage",
component: servicesManageComponent
url: "qrc:///network/ServicesManage.qml"
}, {
name: "source_root",
component: sourceRootComponent
......@@ -156,252 +156,4 @@ Widgets.PageLoader {
}
}
}
Component {
id: servicesManageComponent
Widgets.KeyNavigableListView {
id: servicesView
readonly property bool isViewMultiView: false
model: discoveryFilterModel
topMargin: VLCStyle.margin_large
leftMargin: VLCStyle.margin_large
rightMargin: VLCStyle.margin_large
spacing: VLCStyle.margin_xsmall
// To get blur effect while scrolling in mainview
displayMarginEnd: g_mainDisplay.displayMargin
delegate: Rectangle {
width: servicesView.width - VLCStyle.margin_large * 2
height: row.implicitHeight + VLCStyle.margin_small * 2
color: VLCStyle.colors.bgAlt
onActiveFocusChanged: if (activeFocus) action_btn.forceActiveFocus()
RowLayout {
id: row
spacing: VLCStyle.margin_xsmall
anchors.fill: parent
anchors.margins: VLCStyle.margin_small
Image {
width: VLCStyle.icon_large
height: VLCStyle.icon_large
fillMode: Image.PreserveAspectFit
source: model.artwork
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
}
ColumnLayout {
id: content
spacing: 0
Layout.fillWidth: true
Layout.fillHeight: true
RowLayout {
spacing: 0
Layout.fillWidth: true
Layout.fillHeight: true
Column {
Layout.fillWidth: true
Layout.fillHeight: true
Widgets.SubtitleLabel {
text: model.name
width: parent.width
}
Widgets.CaptionLabel {
color: VLCStyle.colors.text
text: model.author ? I18n.qtr("by <b>%1</b>").arg(model.author) : I18n.qtr("by <b>Unknown</b>")
topPadding: VLCStyle.margin_xxxsmall
width: parent.width
}
}
Widgets.TabButtonExt {
id: action_btn
focus: true
iconTxt: model.state === ServicesDiscoveryModel.INSTALLED ? VLCIcons.del : VLCIcons.add
busy: model.state === ServicesDiscoveryModel.INSTALLING || model.state === ServicesDiscoveryModel.UNINSTALLING
text: {
switch(model.state) {
case ServicesDiscoveryModel.INSTALLED:
return I18n.qtr("Remove")
case ServicesDiscoveryModel.NOTINSTALLED:
return I18n.qtr("Install")
case ServicesDiscoveryModel.INSTALLING:
return I18n.qtr("Installing")
case ServicesDiscoveryModel.UNINSTALLING:
return I18n.qtr("Uninstalling")
}
}
onClicked: {
if (model.state === ServicesDiscoveryModel.NOTINSTALLED)
discoveryModel.installService(discoveryFilterModel.mapIndexToSource(index))
else if (model.state === ServicesDiscoveryModel.INSTALLED)
discoveryModel.installService(discoveryFilterModel.mapIndexToSource(index))
}
}
}
Widgets.CaptionLabel {
elide: Text.ElideRight
text: model.description || model.summary || I18n.qtr("No information available")
topPadding: VLCStyle.margin_xsmall
wrapMode: Text.WordWrap
Layout.fillWidth: true
Layout.preferredHeight: implicitHeight
}
Widgets.CaptionLabel {
text: I18n.qtr("Score: %1/5 Downloads: %2").arg(model.score).arg(model.downloads)
topPadding: VLCStyle.margin_xsmall
Layout.fillWidth: true
}
}
}
}
Widgets.BusyIndicatorExt {
runningDelayed: discoveryModel.parsingPending
anchors.centerIn: parent
z: 1
}
ServicesDiscoveryModel {
id: discoveryModel
ctx: MainCtx
}
SortFilterProxyModel {
id: discoveryFilterModel
sourceModel: discoveryModel
searchRole: "name"
}
}
}
Component {
id: allSourcesComponent
MainInterface.MainGridView {
id: gridView
readonly property bool isViewMultiView: false
selectionDelegateModel: selectionModel
model: sourcesFilterModel
topMargin: VLCStyle.margin_large
cellWidth: VLCStyle.gridItem_network_width
cellHeight: VLCStyle.gridCover_network_height + VLCStyle.margin_xsmall + VLCStyle.fontHeight_normal
delegate: Widgets.GridItem {
property var model: ({})
property int index: -1
readonly property bool is_dummy: model.type === NetworkSourcesModel.TYPE_DUMMY
title: is_dummy ? I18n.qtr("Add a service") : model.long_name
subtitle: ""
pictureWidth: VLCStyle.colWidth(1)
pictureHeight: VLCStyle.gridCover_network_height
height: VLCStyle.gridCover_network_height + VLCStyle.margin_xsmall + VLCStyle.fontHeight_normal
playCoverBorderWidth: VLCStyle.gridCover_network_border
playCoverShowPlay: false
image: {
if (is_dummy) {
return SVGColorImage.colorize("qrc:///placeholder/add_service.svg")
.color1(VLCStyle.colors.text)
.accent(VLCStyle.colors.accent)
.uri()
} else if (model.artwork && model.artwork.toString() !== "") {
//if the source is a qrc artwork, we should colorize it
if (model.artwork.toString().match(/qrc:\/\/.*svg/))
{
return SVGColorImage.colorize(model.artwork)
.color1(VLCStyle.colors.text)
.accent(VLCStyle.colors.accent)
.uri()
}
return model.artwork
} else {
return SVGColorImage.colorize("qrc:///sd/directory.svg")
.color1(VLCStyle.colors.text)
.uri()
}
}
onItemDoubleClicked: {
if (is_dummy)
History.push(["mc", "discover", "services", "services_manage"]);
else
History.push(["mc", "discover", "services", "source_root",
{ source_name: model.name }]);
root.setCurrentItemFocus(Qt.MouseFocusReason);
}
onItemClicked : {
selectionModel.updateSelection(modifier , gridView.currentIndex, index)
gridView.currentIndex = index
gridView.forceActiveFocus()
}
}
onActionAtIndex: {
var itemData = sourcesFilterModel.getDataAt(index);
if (itemData.type === NetworkSourcesModel.TYPE_DUMMY)
History.push(["mc", "discover", "services", "services_manage"]);
else
History.push(["mc", "discover", "services", "source_root",
{ source_name: itemData.name }]);
root.setCurrentItemFocus(Qt.TabFocusReason);
}
Navigation.parentItem: root
Navigation.cancelAction: function() {
History.previous();
root.setCurrentItemFocus(Qt.TabFocusReason);
}
NetworkSourcesModel {
id: sourcesModel
ctx: MainCtx
}
Util.SelectableDelegateModel {
id: selectionModel
model: sourcesFilterModel
}
SortFilterProxyModel {
id: sourcesFilterModel
sourceModel: sourcesModel
searchRole: "name"
}
}
}
}
/*****************************************************************************
* 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.Layouts 1.11
import org.videolan.vlc 0.1
import "qrc:///widgets/" as Widgets
import "qrc:///style/"
Widgets.KeyNavigableListView {
id: servicesView
// required by g_root to indicate view with 'grid' or 'list' mode
readonly property bool isViewMultiView: false
model: discoveryFilterModel
topMargin: VLCStyle.margin_large
leftMargin: VLCStyle.margin_large
rightMargin: VLCStyle.margin_large
spacing: VLCStyle.margin_xsmall
// To get blur effect while scrolling in mainview
displayMarginEnd: g_mainDisplay.displayMargin
delegate: Rectangle {
width: servicesView.width - VLCStyle.margin_large * 2
height: row.implicitHeight + VLCStyle.margin_small * 2
color: VLCStyle.colors.bgAlt
onActiveFocusChanged: if (activeFocus) action_btn.forceActiveFocus()
RowLayout {
id: row
spacing: VLCStyle.margin_xsmall
anchors.fill: parent
anchors.margins: VLCStyle.margin_small
Image {
width: VLCStyle.icon_large
height: VLCStyle.icon_large
fillMode: Image.PreserveAspectFit
source: model.artwork
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
}
ColumnLayout {
id: content
spacing: 0
Layout.fillWidth: true
Layout.fillHeight: true
RowLayout {
spacing: 0
Layout.fillWidth: true
Layout.fillHeight: true
Column {
Layout.fillWidth: true
Layout.fillHeight: true
Widgets.SubtitleLabel {
text: model.name
width: parent.width
}
Widgets.CaptionLabel {
color: VLCStyle.colors.text
textFormat: Text.StyledText
text: model.author ? I18n.qtr("by <b>%1</b>").arg(model.author) : I18n.qtr("by <b>Unknown</b>")
topPadding: VLCStyle.margin_xxxsmall
width: parent.width
}
}
Widgets.TabButtonExt {
id: action_btn
focus: true
iconTxt: model.state === ServicesDiscoveryModel.INSTALLED ? VLCIcons.del : VLCIcons.add
busy: model.state === ServicesDiscoveryModel.INSTALLING || model.state === ServicesDiscoveryModel.UNINSTALLING
text: {
switch(model.state) {
case ServicesDiscoveryModel.INSTALLED:
return I18n.qtr("Remove")
case ServicesDiscoveryModel.NOTINSTALLED:
return I18n.qtr("Install")
case ServicesDiscoveryModel.INSTALLING:
return I18n.qtr("Installing")
case ServicesDiscoveryModel.UNINSTALLING:
return I18n.qtr("Uninstalling")
}
}
onClicked: {
if (model.state === ServicesDiscoveryModel.NOTINSTALLED)
discoveryModel.installService(discoveryFilterModel.mapIndexToSource(index))
else if (model.state === ServicesDiscoveryModel.INSTALLED)
discoveryModel.installService(discoveryFilterModel.mapIndexToSource(index))
}
}
}
Widgets.CaptionLabel {
elide: Text.ElideRight
text: model.description || model.summary || I18n.qtr("No information available")
topPadding: VLCStyle.margin_xsmall
wrapMode: Text.WordWrap
Layout.fillWidth: true
Layout.preferredHeight: implicitHeight
}
Widgets.CaptionLabel {
text: I18n.qtr("Score: %1/5 Downloads: %2").arg(model.score).arg(model.downloads)
topPadding: VLCStyle.margin_xsmall
Layout.fillWidth: true
}
}
}
}
Widgets.BusyIndicatorExt {
runningDelayed: discoveryModel.parsingPending
anchors.centerIn: parent
z: 1
}
ServicesDiscoveryModel {
id: discoveryModel
ctx: MainCtx
}
SortFilterProxyModel {
id: discoveryFilterModel
sourceModel: discoveryModel
searchRole: "name"
}
}
/*****************************************************************************
* 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 QtQuick.Layouts 1.11
import org.videolan.vlc 0.1
import "qrc:///widgets/" as Widgets
import "qrc:///util/" as Util
import "qrc:///main/" as MainInterface
import "qrc:///style/"
MainInterface.MainGridView {
id: root
readonly property bool isViewMultiView: false
selectionDelegateModel: selectionModel
model: sourcesFilterModel
topMargin: VLCStyle.margin_large
cellWidth: VLCStyle.gridItem_network_width
cellHeight: VLCStyle.gridCover_network_height + VLCStyle.margin_xsmall + VLCStyle.fontHeight_normal
delegate: Widgets.GridItem {
property var model: ({})
property int index: -1
readonly property bool is_dummy: model.type === NetworkSourcesModel.TYPE_DUMMY
title: is_dummy ? I18n.qtr("Add a service") : model.long_name
subtitle: ""
pictureWidth: VLCStyle.colWidth(1)
pictureHeight: VLCStyle.gridCover_network_height
height: VLCStyle.gridCover_network_height + VLCStyle.margin_xsmall + VLCStyle.fontHeight_normal
playCoverBorderWidth: VLCStyle.gridCover_network_border
playCoverShowPlay: false
image: {
if (is_dummy) {
return SVGColorImage.colorize("qrc:///placeholder/add_service.svg")
.color1(VLCStyle.colors.text)
.accent(VLCStyle.colors.accent)
.uri()
} else if (model.artwork && model.artwork.toString() !== "") {
//if the source is a qrc artwork, we should colorize it
if (model.artwork.toString().match(/qrc:\/\/.*svg/))
{
return SVGColorImage.colorize(model.artwork)
.color1(VLCStyle.colors.text)
.accent(VLCStyle.colors.accent)
.uri()
}
return model.artwork
} else {
return SVGColorImage.colorize("qrc:///sd/directory.svg")
.color1(VLCStyle.colors.text)
.uri()
}
}
onItemDoubleClicked: {
if (is_dummy)
History.push(["mc", "discover", "services", "services_manage"]);
else
History.push(["mc", "discover", "services", "source_root",
{ source_name: model.name }]);
root.setCurrentItemFocus(Qt.MouseFocusReason);
}
onItemClicked : {
selectionModel.updateSelection(modifier , root.currentIndex, index)
root.currentIndex = index
root.forceActiveFocus()
}
}
onActionAtIndex: {
var itemData = sourcesFilterModel.getDataAt(index);
if (itemData.type === NetworkSourcesModel.TYPE_DUMMY)
History.push(["mc", "discover", "services", "services_manage"]);
else
History.push(["mc", "discover", "services", "source_root",
{ source_name: itemData.name }]);
root.setCurrentItemFocus(Qt.TabFocusReason);
}
Navigation.parentItem: root
Navigation.cancelAction: function() {
History.previous();
root.setCurrentItemFocus(Qt.TabFocusReason);
}
NetworkSourcesModel {
id: sourcesModel
ctx: MainCtx
}
Util.SelectableDelegateModel {
id: selectionModel
model: sourcesFilterModel
}
SortFilterProxyModel {
id: sourcesFilterModel
sourceModel: sourcesModel
searchRole: "name"
}
}
......@@ -231,6 +231,8 @@
<file alias="NetworkThumbnailItem.qml">network/qml/NetworkThumbnailItem.qml</file>
<file alias="NetworkAddressbar.qml">network/qml/NetworkAddressbar.qml</file>
<file alias="ServicesHomeDisplay.qml">network/qml/ServicesHomeDisplay.qml</file>
<file alias="ServicesManage.qml">network/qml/ServicesManage.qml</file>
<file alias="ServicesSources.qml">network/qml/ServicesSources.qml</file>
</qresource>
<qresource prefix="/medialibrary">
<file alias="EmptyLabel.qml">medialibrary/qml/EmptyLabel.qml</file>
......
......@@ -103,7 +103,7 @@ T.TabButton {
implicitWidth: VLCStyle.fontHeight_normal
implicitHeight: VLCStyle.fontHeight_normal
visible: (control.iconTxt !== "")
visible: (control.iconTxt !== "") || control.busy
Widgets.IconLabel {
id: icon
......@@ -122,8 +122,11 @@ T.TabButton {
font.pixelSize: control.iconSize
}
// FIXME: use Control.Templates
BusyIndicator {
anchors.centerIn: parent
anchors.fill: parent
padding: 0
running: control.busy
}
......