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
403 results
Show changes
Commits on Source (8)
Showing
with 249 additions and 161 deletions
......@@ -847,9 +847,6 @@ libqt_plugin_la_QML = \
gui/qt/maininterface/qml/NoMedialibHome.qml \
gui/qt/medialibrary/qml/ArtistTopBanner.qml \
gui/qt/medialibrary/qml/AudioGridItem.qml \
gui/qt/medialibrary/qml/EmptyLabel.qml \
gui/qt/medialibrary/qml/EmptyLabelButton.qml \
gui/qt/medialibrary/qml/EmptyLabelHint.qml \
gui/qt/medialibrary/qml/MediaGroupDisplay.qml \
gui/qt/medialibrary/qml/MusicAlbums.qml \
gui/qt/medialibrary/qml/MusicAlbumsDisplay.qml \
......@@ -888,6 +885,7 @@ libqt_plugin_la_QML = \
gui/qt/network/qml/BrowseDisplay.qml \
gui/qt/network/qml/BrowseHomeDisplay.qml \
gui/qt/network/qml/BrowseTreeDisplay.qml \
gui/qt/network/qml/BrowseTreeHeader.qml \
gui/qt/network/qml/DiscoverDisplay.qml \
gui/qt/network/qml/DiscoverUrlDisplay.qml \
gui/qt/network/qml/NetworkAddressbar.qml \
......@@ -1006,6 +1004,9 @@ libqt_plugin_la_QML = \
gui/qt/widgets/qml/DragItem.qml \
gui/qt/widgets/qml/DrawerExt.qml \
gui/qt/widgets/qml/ExpandGridView.qml \
gui/qt/widgets/qml/EmptyLabel.qml \
gui/qt/widgets/qml/EmptyLabelButton.qml \
gui/qt/widgets/qml/EmptyLabelHint.qml \
gui/qt/widgets/qml/GridItem.qml \
gui/qt/widgets/qml/HorizontalResizeHandle.qml \
gui/qt/widgets/qml/IconLabel.qml \
......
......@@ -269,7 +269,7 @@ MainInterface.MainViewLoader {
Component {
id: emptyLabelComponent
EmptyLabelButton {
Widgets.EmptyLabelButton {
text: I18n.qtr("No albums found\nPlease try adding sources, by going to the Browse tab")
Navigation.parentItem: root
cover: VLCStyle.noArtAlbumCover
......
......@@ -202,7 +202,7 @@ MainInterface.MainViewLoader {
Component {
id: emptyLabelComponent
EmptyLabelButton {
Widgets.EmptyLabelButton {
text: I18n.qtr("No artists found\nPlease try adding sources, by going to the Browse tab")
Navigation.parentItem: root
cover: VLCStyle.noArtArtistCover
......
......@@ -248,7 +248,7 @@ FocusScope {
}
}
EmptyLabelButton {
Widgets.EmptyLabelButton {
anchors.fill: parent
visible: artistModel.isReady && (artistModel.count <= 0)
focus: visible
......
......@@ -281,7 +281,7 @@ MainInterface.MainViewLoader {
Component {
id: emptyLabelComponent
EmptyLabelButton {
Widgets.EmptyLabelButton {
text: I18n.qtr("No genres found\nPlease try adding sources, by going to the Browse tab")
Navigation.parentItem: root
cover: VLCStyle.noArtAlbumCover
......
......@@ -72,7 +72,7 @@ FocusScope {
displayMarginEnd: g_mainDisplay.displayMargin
}
EmptyLabelButton {
Widgets.EmptyLabelButton {
anchors.fill: parent
visible: tracklistdisplay_id.model.isReady && (tracklistdisplay_id.model.count <= 0)
focus: visible
......
......@@ -194,7 +194,7 @@ FocusScope {
Keys.onDeletePressed: onDelete()
}
EmptyLabelButton {
Widgets.EmptyLabelButton {
anchors.fill: parent
visible: model.isReady && (model.count <= 0)
......
......@@ -356,7 +356,7 @@ MainInterface.MainViewLoader {
Component {
id: emptyLabel
EmptyLabelHint {
Widgets.EmptyLabelHint {
visible: (model.count === 0)
focus: true
......
......@@ -283,7 +283,7 @@ MainInterface.MainViewLoader {
Component {
id: emptylabel
EmptyLabelButton {
Widgets.EmptyLabelButton {
coverWidth : VLCStyle.dp(182, VLCStyle.scale)
coverHeight: VLCStyle.dp(114, VLCStyle.scale)
......
......@@ -26,7 +26,7 @@ import "qrc:///widgets/" as Widgets
import "qrc:///main/" as MainInterface
import "qrc:///style/"
FocusScope {
MainInterface.MainViewLoader {
id: root
// Properties
......@@ -39,8 +39,9 @@ FocusScope {
readonly property bool isViewMultiView: true
//the index to "go to" when the view is loaded
property var initialIndex: 0
// 'parsingPending' property is not available with NetworkDevicesModel
readonly property bool parsing: Helpers.get(providerModel, "parsingPending", false)
property var sortModel: [
{ text: I18n.qtr("Alphabetic"), criteria: "name"},
{ text: I18n.qtr("Url"), criteria: "mrl" },
......@@ -48,14 +49,8 @@ FocusScope {
{ text: I18n.qtr("File modified"), criteria: "fileModified" }
]
// Aliases
property alias leftPadding: view.leftPadding
property alias rightPadding: view.rightPadding
property alias model: filterModel
property alias _currentView: view.currentItem
// fixme remove this
property Item _currentView: currentItem
signal browse(var tree, int reason)
......@@ -63,31 +58,47 @@ FocusScope {
History.previous()
}
onTreeChanged: providerModel.tree = tree
model: SortFilterProxyModel {
id: filterModel
function playSelected() {
providerModel.addAndPlay(filterModel.mapIndexesToSource(selectionModel.selectedIndexes))
sourceModel: providerModel
searchRole: "name"
}
function playAt(index) {
providerModel.addAndPlay(filterModel.mapIndexToSource(index))
// override the default currentComponent assignment from MainViewLoader
// because we need to show empty label when model is parsing
currentComponent: {
if (filterModel.count == 0 || root.parsing)
return emptyLabelComponent
else if (MainCtx.gridView)
return gridComponent
else
return tableComponent
}
function setCurrentItemFocus(reason) {
_currentView.setCurrentItemFocus(reason);
}
Util.SelectableDelegateModel{
id: selectionModel
onTreeChanged: providerModel.tree = tree
model: filterModel
function playSelected() {
providerModel.addAndPlay(filterModel.mapIndexesToSource(selectionModel.selectedIndexes))
}
SortFilterProxyModel {
id: filterModel
function playAt(index) {
providerModel.addAndPlay(filterModel.mapIndexToSource(index))
}
sourceModel: providerModel
searchRole: "name"
function _actionAtIndex(index) {
if ( selectionModel.selectedIndexes.length > 1 ) {
playSelected()
} else {
var data = filterModel.getDataAt(index)
if (data.type === NetworkMediaModel.TYPE_DIRECTORY
|| data.type === NetworkMediaModel.TYPE_NODE) {
browse(data.tree, Qt.TabFocusReason)
} else {
playAt(index)
}
}
}
Widgets.DragItem {
......@@ -125,32 +136,6 @@ FocusScope {
}
}
function resetFocus() {
var initialIndex = root.initialIndex
if (initialIndex >= filterModel.count)
initialIndex = 0
selectionModel.select(filterModel.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect)
if (_currentView) {
_currentView.currentIndex = initialIndex
_currentView.positionViewAtIndex(initialIndex, ItemView.Contain)
}
}
function _actionAtIndex(index) {
if ( selectionModel.selectedIndexes.length > 1 ) {
playSelected()
} else {
var data = filterModel.getDataAt(index)
if (data.type === NetworkMediaModel.TYPE_DIRECTORY
|| data.type === NetworkMediaModel.TYPE_NODE) {
browse(data.tree, Qt.TabFocusReason)
} else {
playAt(index)
}
}
}
Component{
id: gridComponent
......@@ -160,49 +145,19 @@ FocusScope {
selectionDelegateModel: selectionModel
model: filterModel
headerDelegate: FocusScope {
id: headerId
headerDelegate: BrowseTreeHeader {
providerModel: root.providerModel
width: view.width
height: layout.implicitHeight + VLCStyle.margin_large + VLCStyle.margin_normal
// align header content with grid content
leftPadding: gridView.rowX
width: gridView.width
Navigation.navigable: btn.visible
Navigation.parentItem: root
Navigation.downAction: function() {
Navigation.downAction: function () {
focus = false
gridView.forceActiveFocus(Qt.TabFocusReason)
}
RowLayout {
id: layout
anchors.fill: parent
anchors.topMargin: VLCStyle.margin_large
anchors.bottomMargin: VLCStyle.margin_normal
anchors.rightMargin: VLCStyle.margin_small
Widgets.SubtitleLabel {
text: providerModel.name
leftPadding: gridView.rowX
color: gridView.colorContext.fg.primary
Layout.fillWidth: true
}
Widgets.ButtonExt {
id: btn
focus: true
iconTxt: providerModel.indexed ? VLCIcons.remove : VLCIcons.add
text: providerModel.indexed ? I18n.qtr("Remove from medialibrary") : I18n.qtr("Add to medialibrary")
visible: !providerModel.is_on_provider_list && !!providerModel.canBeIndexed
onClicked: providerModel.indexed = !providerModel.indexed
Layout.preferredWidth: implicitWidth
Navigation.parentItem: headerId
}
}
}
cellWidth: VLCStyle.gridItem_network_width
......@@ -309,8 +264,6 @@ FocusScope {
}]
dragItem: networkDragItem
height: view.height
width: view.width
model: filterModel
......@@ -325,48 +278,15 @@ FocusScope {
rowHeight: VLCStyle.tableCoverRow_height
header: FocusScope {
id: head
header: BrowseTreeHeader {
providerModel: root.providerModel
width: view.width
height: layout.implicitHeight + VLCStyle.margin_large + VLCStyle.margin_small
width: tableView.width
Navigation.navigable: btn.visible
Navigation.parentItem: root
RowLayout {
id: layout
anchors.fill: parent
anchors.topMargin: VLCStyle.margin_large
anchors.bottomMargin: VLCStyle.margin_small
anchors.rightMargin: VLCStyle.margin_small
Widgets.SubtitleLabel {
text: providerModel.name
leftPadding: VLCStyle.margin_large
color: tableView.colorContext.fg.primary
Layout.fillWidth: true
}
Widgets.ButtonExt {
id: btn
focus: true
iconTxt: providerModel.indexed ? VLCIcons.remove : VLCIcons.add
text: providerModel.indexed ? I18n.qtr("Remove from medialibrary") : I18n.qtr("Add to medialibrary")
visible: !providerModel.is_on_provider_list && !!providerModel.canBeIndexed
onClicked: providerModel.indexed = !providerModel.indexed
Navigation.parentItem: root
Navigation.downAction: function() {
head.focus = false
tableView.forceActiveFocus(Qt.TabFocusReason)
}
Layout.preferredWidth: implicitWidth
}
Navigation.downAction: function () {
focus = false
tableView.forceActiveFocus(Qt.TabFocusReason)
}
}
......@@ -377,28 +297,96 @@ FocusScope {
}
}
Widgets.StackViewExt {
id: view
Component {
id: emptyLabelComponent
anchors.fill: parent
FocusScope {
id: focusScope
focus: true
initialItem: MainCtx.gridView ? gridComponent : tableComponent
Navigation.navigable: layout.Navigation.navigable || (emptyLabel.visible && emptyLabel.button.enabled)
Connections {
target: MainCtx
onGridViewChanged: {
if (MainCtx.gridView)
view.replace(gridComponent)
// used by MainDisplay to transfer focus
function setCurrentItemFocus(reason) {
if (!focusScope.Navigation.navigable)
return
if (header.Navigation.navigable)
header.forceActiveFocus(reason)
else
view.replace(tableComponent)
emptyLabel.forceActiveFocus(reason)
}
}
Widgets.BusyIndicatorExt {
runningDelayed: Helpers.get(providerModel, "parsingPending", false) // 'parsingPending' property is not available with NetworkDevicesModel
anchors.centerIn: parent
z: 1
ColumnLayout {
id: layout
anchors.fill: parent
BrowseTreeHeader {
id: header
focus: true
providerModel: root.providerModel
Layout.fillWidth: true
Navigation.parentItem: root
Navigation.downItem: emptyLabel
}
Widgets.EmptyLabelButton {
id: emptyLabel
visible: !root.parsing
// FIXME: find better cover
cover: VLCStyle.noArtVideoCover
coverWidth : VLCStyle.dp(182, VLCStyle.scale)
coverHeight: VLCStyle.dp(114, VLCStyle.scale)
text: I18n.qtr("Nothing to see here, go back.")
button.iconTxt: VLCIcons.back
button.text: I18n.qtr("Back")
button.enabled: !History.previousEmpty
button.width: button.implicitWidth
function onNavigate() {
History.previous()
}
Layout.fillHeight: true
Layout.fillWidth: true
Navigation.parentItem: root
Navigation.upAction: function () {
// FIXME: for some reason default navigation flow doesn't work
// i.e setting Navigtaion.upItem doesn't fallthrough to parent's
// action if Navigtaion.upItem.Navigtaion.navigble is false
if (header.Navigation.navigable)
header.forceActiveFocus(Qt.TabFocusReason)
else
return false // fallthrough default action
}
}
Item {
visible: root.parsing
Layout.fillHeight: true
Layout.fillWidth: true
Widgets.BusyIndicatorExt {
id: busyIndicator
runningDelayed: root.parsing
anchors.centerIn: parent
z: 1
}
}
}
}
}
}
/*****************************************************************************
* Copyright (C) 2023 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:///util/" as Util
import "qrc:///util/Helpers.js" as Helpers
import "qrc:///widgets/" as Widgets
import "qrc:///style/"
FocusScope {
id: root
// Network* model
/* required */ property var providerModel
readonly property ColorContext colorContext: ColorContext {
id: theme
colorSet: ColorContext.View
}
property int leftPadding: VLCStyle.margin_large
property int rightPadding: VLCStyle.margin_small
property int topPadding: VLCStyle.margin_large
property int bottomPadding: VLCStyle.margin_normal
height: implicitHeight
implicitHeight: layout.implicitHeight + topPadding + bottomPadding
focus: medialibraryBtn.visible
Navigation.navigable: medialibraryBtn.visible
RowLayout {
id: layout
anchors {
fill: parent
leftMargin: root.leftPadding
rightMargin: root.rightPadding
topMargin: root.topPadding
bottomMargin: root.bottomPadding
}
Widgets.SubtitleLabel {
text: providerModel.name
color: colorContext.fg.primary
Layout.fillWidth: true
}
Widgets.ButtonExt {
id: medialibraryBtn
focus: true
iconTxt: providerModel.indexed ? VLCIcons.remove : VLCIcons.add
text: providerModel.indexed
? I18n.qtr("Remove from medialibrary")
: I18n.qtr("Add to medialibrary")
visible: !providerModel.is_on_provider_list
&& !!providerModel.canBeIndexed
onClicked: providerModel.indexed = !providerModel.indexed
Layout.preferredWidth: implicitWidth
Navigation.parentItem: root
}
}
}
......@@ -153,6 +153,9 @@
<file alias="MainViewLoader.qml">maininterface/qml/MainViewLoader.qml</file>
</qresource>
<qresource prefix="/widgets">
<file alias="EmptyLabel.qml">widgets/qml/EmptyLabel.qml</file>
<file alias="EmptyLabelButton.qml">widgets/qml/EmptyLabelButton.qml</file>
<file alias="EmptyLabelHint.qml">widgets/qml/EmptyLabelHint.qml</file>
<file alias="ActionButtonOverlay.qml">widgets/qml/ActionButtonOverlay.qml</file>
<file alias="ActionButtonPrimary.qml">widgets/qml/ActionButtonPrimary.qml</file>
<file alias="BannerCone.qml">widgets/qml/BannerCone.qml</file>
......@@ -231,6 +234,7 @@
<file alias="BrowseDisplay.qml">network/qml/BrowseDisplay.qml</file>
<file alias="BrowseHomeDisplay.qml">network/qml/BrowseHomeDisplay.qml</file>
<file alias="BrowseTreeDisplay.qml">network/qml/BrowseTreeDisplay.qml</file>
<file alias="BrowseTreeHeader.qml">network/qml/BrowseTreeHeader.qml</file>
<file alias="DiscoverDisplay.qml">network/qml/DiscoverDisplay.qml</file>
<file alias="DiscoverUrlDisplay.qml">network/qml/DiscoverUrlDisplay.qml</file>
<file alias="NetworkCustomCover.qml">network/qml/NetworkCustomCover.qml</file>
......@@ -242,9 +246,6 @@
<file alias="ServicesSources.qml">network/qml/ServicesSources.qml</file>
</qresource>
<qresource prefix="/medialibrary">
<file alias="EmptyLabel.qml">medialibrary/qml/EmptyLabel.qml</file>
<file alias="EmptyLabelButton.qml">medialibrary/qml/EmptyLabelButton.qml</file>
<file alias="EmptyLabelHint.qml">medialibrary/qml/EmptyLabelHint.qml</file>
<file alias="MediaGroupDisplay.qml">medialibrary/qml/MediaGroupDisplay.qml</file>
<file alias="MusicAlbums.qml">medialibrary/qml/MusicAlbums.qml</file>
<file alias="MusicDisplay.qml">medialibrary/qml/MusicDisplay.qml</file>
......
......@@ -25,6 +25,8 @@ import "qrc:///style/"
import "qrc:///widgets/" as Widgets
EmptyLabel {
id: root
// Properties
property bool _keyPressed: false
......
......@@ -767,6 +767,8 @@ modules/gui/qt/maininterface/qml/BannerSources.qml
modules/gui/qt/maininterface/qml/MainDisplay.qml
modules/gui/qt/maininterface/qml/MainInterface.qml
modules/gui/qt/maininterface/qml/NoMedialibHome.qml
modules/gui/qt/widgets/qml/EmptyLabelButton.qml
modules/gui/qt/widgets/qml/EmptyLabel.qml
modules/gui/qt/medialibrary/mlbookmarkmodel.cpp
modules/gui/qt/medialibrary/mlbookmarkmodel.hpp
modules/gui/qt/medialibrary/mlfolder.cpp
......@@ -787,7 +789,6 @@ modules/gui/qt/medialibrary/mlvideogroupsmodel.cpp
modules/gui/qt/medialibrary/mlvideogroupsmodel.hpp
modules/gui/qt/medialibrary/qml/ArtistTopBanner.qml
modules/gui/qt/medialibrary/qml/AudioGridItem.qml
modules/gui/qt/medialibrary/qml/EmptyLabelButton.qml
modules/gui/qt/medialibrary/qml/MediaGroupDisplay.qml
modules/gui/qt/medialibrary/qml/MusicAlbums.qml
modules/gui/qt/medialibrary/qml/MusicAlbumsDisplay.qml
......@@ -830,6 +831,7 @@ modules/gui/qt/network/qml/BrowseDeviceView.qml
modules/gui/qt/network/qml/BrowseDisplay.qml
modules/gui/qt/network/qml/BrowseHomeDisplay.qml
modules/gui/qt/network/qml/BrowseTreeDisplay.qml
modules/gui/qt/network/qml/BrowseTreeHeader.qml
modules/gui/qt/network/qml/DiscoverDisplay.qml
modules/gui/qt/network/qml/DiscoverUrlDisplay.qml
modules/gui/qt/network/qml/NetworkGridItem.qml
......