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)
......@@ -32,27 +32,9 @@ FocusScope {
// Properties
readonly property real minimumWidth: {
var count = repeater.count
property int contentWidth: 0
if (count === 0)
return 0
var size = 0
for (var i = 0; i < count; ++i) {
var item = repeater.itemAt(i)
if (item.minimumWidth === undefined)
size += item.implicitWidth
else
size += item.minimumWidth
}
return size + ((count - 1) * playerControlLayout.spacing)
}
property bool rightAligned: false
property int alignment: 0
property var altFocusAction: Navigation.defaultNavigationUp
......@@ -63,6 +45,8 @@ FocusScope {
// Aliases
property alias count: repeater.count
property alias model: repeater.model
// Signals
......@@ -71,7 +55,23 @@ FocusScope {
// Settings
implicitWidth: minimumWidth
implicitWidth: {
if (count === 0)
return 0
var size = 0
for (var i = 0; i < count; ++i) {
size += repeater.itemAt(i).preferredWidth
}
if (alignment)
// NOTE: We provision the spacing induced by the alignment item.
return size + count * rowLayout.spacing
else
return size + (count - 1) * rowLayout.spacing
}
implicitHeight: rowLayout.implicitHeight
Navigation.navigable: {
......@@ -102,6 +102,28 @@ FocusScope {
altFocusAction()
}
function _updateContentWidth() {
var size = 0
for (var i = 0; i < count; i++) {
var item = repeater.itemAt(i)
if (item === null || item.isActive === false)
continue
var width = item.width
if (width)
size += width + spacing
}
if (size)
contentWidth = size - spacing
else
contentWidth = size
}
// Children
RowLayout {
......@@ -112,20 +134,26 @@ FocusScope {
spacing: playerControlLayout.spacing
Item {
Layout.fillWidth: rightAligned
Layout.fillWidth: (controlLayout.alignment === Qt.AlignRight)
}
Repeater {
id: repeater
// NOTE: We apply the 'navigation chain' after adding the item.
onItemAdded: item.applyNavigation()
onItemAdded: {
item.applyNavigation()
controlLayout._updateContentWidth()
}
onItemRemoved: {
// NOTE: We update the 'navigation chain' after removing the item.
item.removeNavigation()
item.recoverFocus(index)
controlLayout._updateContentWidth()
}
delegate: Loader {
......@@ -133,6 +161,9 @@ FocusScope {
// Properties
// NOTE: This is required for contentWidth because the visible property is delayed.
property bool isActive: (x + minimumWidth <= rowLayout.width)
property int minimumWidth: {
if (expandable)
return item.minimumWidth
......@@ -142,6 +173,9 @@ FocusScope {
return 0
}
property int preferredWidth: (item && item.preferredWidth) ? item.preferredWidth
: minimumWidth
readonly property bool expandable: (item && item.minimumWidth !== undefined)
// Settings
......@@ -154,22 +188,27 @@ FocusScope {
Layout.minimumWidth: minimumWidth
// NOTE: -1 resets to the implicit maximum width.
Layout.maximumWidth: (item) ? item.implicitWidth : -1
Layout.preferredWidth: preferredWidth
Layout.maximumWidth: preferredWidth
Layout.alignment: Qt.AlignVCenter | (rightAligned ? Qt.AlignRight : Qt.AlignLeft)
Layout.alignment: (Qt.AlignVCenter | controlLayout.alignment)
BindingCompat {
delayed: true // this is important
target: loader
property: "visible"
value: (loader.x + minimumWidth <= rowLayout.width)
value: isActive
}
// Events
Component.onCompleted: repeater.countChanged.connect(controlLayout._handleFocus)
onIsActiveChanged: controlLayout._updateContentWidth()
onWidthChanged: controlLayout._updateContentWidth()
onActiveFocusChanged: {
if (activeFocus && (!!item && !item.focus)) {
recoverFocus()
......@@ -328,7 +367,7 @@ FocusScope {
}
Item {
Layout.fillWidth: !rightAligned
Layout.fillWidth: (controlLayout.alignment === Qt.AlignLeft)
}
}
}
......@@ -32,7 +32,7 @@ FocusScope {
property real spacing: VLCStyle.margin_normal // spacing between controls
property real layoutSpacing: VLCStyle.margin_xxlarge // spacing between layouts (left, center, and right)
property real layoutSpacing: VLCStyle.margin_xlarge // spacing between layouts (left, center, and right)
property int identifier: -1
......@@ -48,35 +48,96 @@ FocusScope {
colorSet: ColorContext.Window
}
// Private
property int _minimumSpacing: layoutSpacing - spacing
// Signals
signal requestLockUnlockAutoHide(bool lock)
// Settings
implicitWidth: loaderLeft.implicitWidth + loaderCenter.implicitWidth
+ loaderRight.implicitWidth + 2 * layoutSpacing
implicitHeight: VLCStyle.maxControlbarControlHeight
// Events
Component.onCompleted: console.assert(identifier >= 0)
Component.onCompleted: {
console.assert(identifier >= 0)
_updateLayout()
}
onWidthChanged: _updateLayout()
// Functions
function _updateLayout() {
var item = loaderCenter.item
// NOTE: Sometimes this gets called before the item is loaded.
if (item === null)
return
if (item.count) {
loaderCenter.width = Math.min(loaderCenter.implicitWidth, width)
loaderLeft.width = loaderCenter.x - _minimumSpacing
loaderRight.width = width - loaderCenter.x - loaderCenter.width - _minimumSpacing
} else if (loaderRight.item.count) {
var implicitLeft = loaderLeft.implicitWidth
var implicitRight = loaderRight.implicitWidth
var total = implicitLeft + implicitRight
var size = total + _minimumSpacing
if (size > width) {
size = width - _minimumSpacing
// NOTE: When both sizes are equals we expand on the left.
if (implicitLeft >= implicitRight) {
loaderRight.width = Math.round(size * (implicitRight / total))
var contentWidth = loaderRight.item.contentWidth
// NOTE: We assign the remaining width based on the contentWidth.
if (contentWidth)
loaderLeft.width = width - contentWidth - _minimumSpacing
else
loaderLeft.width = width
} else {
loaderLeft.width = Math.round(size * (implicitLeft / total))
var contentWidth = loaderLeft.item.contentWidth
// NOTE: We assign the remaining width based on the contentWidth.
if (contentWidth)
loaderRight.width = width - contentWidth - _minimumSpacing
else
loaderRight.width = width
}
} else {
loaderLeft.width = implicitLeft
loaderRight.width = implicitRight
}
} else
loaderLeft.width = width
}
// Children
Loader {
id: loaderLeft
anchors {
right: loaderCenter.left
left: parent.left
top: parent.top
bottom: parent.bottom
// Spacing for the filler item acts as padding
rightMargin: layoutSpacing - spacing
}
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
active: !!playerControlLayout.model && !!playerControlLayout.model.left
......@@ -90,6 +151,8 @@ FocusScope {
ctx: MainCtx
}
alignment: Qt.AlignLeft
focus: true
altFocusAction: Navigation.defaultNavigationRight
......@@ -97,6 +160,10 @@ FocusScope {
Navigation.parentItem: playerControlLayout
Navigation.rightItem: loaderCenter.item
onImplicitWidthChanged: playerControlLayout._updateLayout()
onCountChanged: playerControlLayout._updateLayout()
onRequestLockUnlockAutoHide: playerControlLayout.requestLockUnlockAutoHide(lock)
}
}
......@@ -104,16 +171,12 @@ FocusScope {
Loader {
id: loaderCenter
anchors {
horizontalCenter: parent.horizontalCenter
top: parent.top
bottom: parent.bottom
}
anchors.top: parent.top
anchors.bottom: parent.bottom
active: !!playerControlLayout.model && !!playerControlLayout.model.center
anchors.horizontalCenter: parent.horizontalCenter
width: (parent.width < implicitWidth) ? parent.width
: implicitWidth
active: !!playerControlLayout.model && !!playerControlLayout.model.center
sourceComponent: ControlLayout {
model: ControlListFilter {
......@@ -131,6 +194,10 @@ FocusScope {
Navigation.leftItem: loaderLeft.item
Navigation.rightItem: loaderRight.item
onImplicitWidthChanged: playerControlLayout._updateLayout()
onCountChanged: playerControlLayout._updateLayout()
onRequestLockUnlockAutoHide: playerControlLayout.requestLockUnlockAutoHide(lock)
}
}
......@@ -138,15 +205,9 @@ FocusScope {
Loader {
id: loaderRight
anchors {
left: loaderCenter.right
right: parent.right
top: parent.top
bottom: parent.bottom
// Spacing for the filler item acts as padding
leftMargin: layoutSpacing - spacing
}
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
active: !!playerControlLayout.model && !!playerControlLayout.model.right
......@@ -158,7 +219,7 @@ FocusScope {
ctx: MainCtx
}
rightAligned: true
alignment: Qt.AlignRight
focus: true
......@@ -167,6 +228,10 @@ FocusScope {
Navigation.parentItem: playerControlLayout
Navigation.leftItem: loaderCenter.item
onImplicitWidthChanged: playerControlLayout._updateLayout()
onCountChanged: playerControlLayout._updateLayout()
onRequestLockUnlockAutoHide: playerControlLayout.requestLockUnlockAutoHide(lock)
}
}
......
......@@ -33,6 +33,12 @@ AbstractButton {
readonly property real minimumWidth: coverRect.implicitWidth +
+ (leftPadding + rightPadding)
readonly property int preferredWidth: minimumWidth + contentItem.spacing * 2
+
Math.max(titleLabel.implicitWidth,
artistLabel.implicitWidth,
progressIndicator.implicitWidth)
property bool _keyPressed: false
text: I18n.qtr("Open player")
......