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 (2)
......@@ -45,7 +45,7 @@ bool ControlListFilter::filterAcceptsRow(int source_row, const QModelIndex &) co
{
QAbstractItemModel * model = sourceModel();
if (model == nullptr || m_player == nullptr)
if (model == nullptr || m_player == nullptr || m_ctx == nullptr)
return true;
QVariant variant = model->data(model->index(source_row, 0), ControlListModel::ID_ROLE);
......@@ -63,11 +63,9 @@ bool ControlListFilter::filterAcceptsRow(int source_row, const QModelIndex &) co
}
else if (type == ControlListModel::BOOKMARK_BUTTON)
{
assert(m_ctx);
return (m_ctx->hasMediaLibrary() || m_player->hasChapters() || m_player->hasTitles());
}
return true;
}
......@@ -87,10 +85,10 @@ void ControlListFilter::setPlayer(PlayerController * player)
m_player = player;
connect(player, &PlayerController::teletextAvailableChanged, this, &ControlListFilter::invalidate);
connect(player, &PlayerController::hasMenuChanged, this, &ControlListFilter::invalidate);
connect(player, &PlayerController::hasChaptersChanged, this, &ControlListFilter::invalidate);
connect(player, &PlayerController::hasTitlesChanged, this, &ControlListFilter::invalidate);
connect(player, &PlayerController::teletextAvailableChanged, this, &ControlListFilter::invalidateFilter);
connect(player, &PlayerController::hasMenuChanged, this, &ControlListFilter::invalidateFilter);
connect(player, &PlayerController::hasChaptersChanged, this, &ControlListFilter::invalidateFilter);
connect(player, &PlayerController::hasTitlesChanged, this, &ControlListFilter::invalidateFilter);
invalidate();
......
......@@ -325,8 +325,13 @@ QVariant ChapterListModel::data(const QModelIndex &index, int role) const
return QVariant::fromValue<bool>(row == m_current);
else if (role == ChapterListRoles::TimeRole )
return QVariant::fromValue<vlc_tick_t>(chapter.time);
else if (role == ChapterListRoles::PositionRole && (m_title->length != 0) )
return QVariant::fromValue<float>(chapter.time /(float) m_title->length);
else if (role == ChapterListRoles::StartPositionRole && (m_title->length != 0))
return QVariant::fromValue<float>(chapter.time / (float) m_title->length);
else if (role == ChapterListRoles::EndPositionRole && (m_title->length != 0))
return (size_t)row + 1 == m_title->chapter_count
? QVariant::fromValue<float> (1)
: QVariant::fromValue<float> (m_title->chapters[row+1].time / (float) m_title->length);
return QVariant{};
}
......@@ -354,7 +359,8 @@ QHash<int, QByteArray> ChapterListModel::roleNames() const
{Qt::DisplayRole, "display"},
{Qt::CheckStateRole, "checked"},
{ChapterListRoles::TimeRole, "time"},
{ChapterListRoles::PositionRole, "position"}
{ChapterListRoles::StartPositionRole, "startPosition"},
{ChapterListRoles::EndPositionRole, "endPosition"}
};
}
......@@ -436,6 +442,8 @@ int ChapterListModel::getClosestChapterFromPos(float pos, float threshold) const
closestTime = currentChapterTime;
chapterIndex = i;
}
else
break;
}
if (closestTime == VLC_TICK_INVALID)
......
......@@ -165,7 +165,8 @@ public:
//user role
enum ChapterListRoles {
TimeRole = Qt::UserRole + 1 ,
PositionRole
StartPositionRole,
EndPositionRole
};
public:
ChapterListModel(vlc_player_t* player, QObject* parent = nullptr);
......
......@@ -29,13 +29,20 @@ import "qrc:///util/Helpers.js" as Helpers
Slider {
id: control
readonly property real _hoveredScalingFactor: 2
property int barHeight: VLCStyle.dp(5, VLCStyle.scale)
readonly property real _scaledBarHeight: control.barHeight * _hoveredScalingFactor
readonly property real _scaledY: (-control.barHeight / 2) * (control._hoveredScalingFactor - 1)
property bool _isSeekPointsShown: true
readonly property int _seekPointsDistance: VLCStyle.dp(2, VLCStyle.scale)
readonly property int _seekPointsRadius: VLCStyle.dp(0.5, VLCStyle.scale)
readonly property real _scaledSeekPointsRadius: _seekPointsRadius * _hoveredScalingFactor
property bool _currentChapterHovered: false
property real _tooltipPosition: timeTooltip.pos.x / sliderRectMouseArea.width
property alias backgroundColor: sliderRect.color
property alias progressBarColor: progressRect.color
property VLCColors colors: VLCStyle.colors
Keys.onRightPressed: Player.jumpFwd()
......@@ -134,28 +141,37 @@ Slider {
onPositionChanged: fsm.playerUpdatePosition(Player.position)
}
Component.onCompleted: {
fsm.playerUpdatePosition(Player.position)
}
height: control.barHeight
implicitHeight: control.barHeight
topPadding: 0
leftPadding: 0
bottomPadding: 0
rightPadding: 0
padding: 0
stepSize: 0.01
background: Rectangle {
id: sliderRect
background: Item {
id: slider
width: control.availableWidth
implicitHeight: control.implicitHeight
height: implicitHeight
color: control.colors.setColorAlpha( control.colors.playerFg, 0.2 )
radius: implicitHeight
Rectangle {
id: sliderRect
visible: !Player.hasChapters
color: backgroundColor
anchors.fill: parent
radius: implicitHeight
}
MouseArea {
id: sliderRectMouseArea
anchors.fill: parent
width: control.availableWidth
height: control._scaledBarHeight
y: control._scaledY
hoverEnabled: true
......@@ -175,12 +191,101 @@ Slider {
}
}
Repeater {
id: seekpointsRptr
anchors.left: parent.left
anchors.right: parent.right
height: control.barHeight
visible: Player.hasChapters
model: Player.chapters
Item {
Rectangle {
id: seekpointsRect
readonly property real startPosition: model.startPosition === undefined ? 0.0 : model.startPosition
readonly property real endPosition: model.endPosition === undefined ? 1.0 : model.endPosition
readonly property int _currentChapter: {
if (control.visualPosition < seekpointsRect.startPosition)
return 1
else if (control.visualPosition > seekpointsRect.endPosition)
return -1
return 0
}
on_CurrentChapterChanged: {
if(_hovered)
control._currentChapterHovered = _currentChapter === 0
}
readonly property bool _hovered: control.hovered &&
(sliderRectMouseArea.mouseX > x && sliderRectMouseArea.mouseX < x+width)
color: _currentChapter < 0 ? control.colors.accent : control.backgroundColor
width: sliderRect.width * seekpointsRect.endPosition - x - control._seekPointsDistance
x: sliderRect.width * seekpointsRect.startPosition
Rectangle {
id: progressRepRect
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
width: sliderRect.width * control.visualPosition - parent.x - control._seekPointsDistance
visible: parent._currentChapter === 0
color: control.colors.accent
}
}
transitions: [
Transition {
to: "*"
SequentialAnimation{
PropertyAction { targets: control; property: "_currentChapterHovered" }
NumberAnimation {
targets: [seekpointsRect, progressRepRect]; properties: "height, y, radius"
duration: VLCStyle.duration_short; easing.type: Easing.InSine
}
}
}
]
states:[
State {
name: "visible"
PropertyChanges {
target: control;
_currentChapterHovered: seekpointsRect._currentChapter === 0 ? false : control._currentChapterHovered
}
PropertyChanges { target: seekpointsRect; height: control.barHeight }
PropertyChanges { target: seekpointsRect; y: 0 }
PropertyChanges { target: seekpointsRect; radius: control._seekPointsRadius }
},
State {
name: "visibleLarge"
PropertyChanges {
target: control;
_currentChapterHovered: seekpointsRect._currentChapter === 0 ? true : control._currentChapterHovered
}
PropertyChanges { target: seekpointsRect; height: control._scaledBarHeight }
PropertyChanges { target: seekpointsRect; y: control._scaledY }
PropertyChanges { target: seekpointsRect; radius: control._scaledSeekPointsRadius }
}
]
state: (seekpointsRect._hovered || (seekpointsRect._currentChapter === 0 && fsm._state == fsmHeld))
? "visibleLarge"
: "visible"
}
}
Rectangle {
id: progressRect
width: control.visualPosition * parent.width
height: control.barHeight
visible: !Player.hasChapters
color: control.colors.accent
radius: control.barHeight
height: control.barHeight
radius: control._seekPointsRadius
}
Rectangle {
......@@ -266,47 +371,14 @@ Slider {
}
}
}
Item {
id: seekpointsRow
width: parent.width
height: control.barHeight
visible: Player.hasChapters
Repeater {
id: seekpointsRptr
model: Player.chapters
Rectangle {
id: seekpointsRect
property real position: model.position === undefined ? 0.0 : model.position
color: control.colors.seekpoint
width: VLCStyle.dp(1, VLCStyle.scale)
height: control.barHeight
x: sliderRect.width * seekpointsRect.position
}
}
OpacityAnimator on opacity {
from: 1
to: 0
running: !control._isSeekPointsShown
}
OpacityAnimator on opacity{
from: 0
to: 1
running: control._isSeekPointsShown
}
}
}
handle: Rectangle {
id: sliderHandle
visible: control.activeFocus
x: (control.visualPosition * control.availableWidth) - width / 2
y: (control.barHeight - width) / 2
y: (control.barHeight - height) / 2
implicitWidth: VLCStyle.margin_small
implicitHeight: VLCStyle.margin_small
radius: VLCStyle.margin_small
......@@ -318,12 +390,9 @@ Slider {
SequentialAnimation {
NumberAnimation {
target: sliderHandle; properties: "implicitWidth,implicitHeight"
to: 0
duration: VLCStyle.duration_short; easing.type: Easing.OutSine
}
PropertyAction { target: sliderHandle; property: "visible"; value: false; }
}
},
......@@ -331,18 +400,28 @@ Slider {
to: "visible"
SequentialAnimation {
PropertyAction { target: sliderHandle; property: "visible"; value: true; }
NumberAnimation {
target: sliderHandle; properties: "implicitWidth,implicitHeight"
to: VLCStyle.margin_small
duration: VLCStyle.duration_short; easing.type: Easing.InSine
}
}
},
Transition {
to: "visibleLarge"
SequentialAnimation {
PropertyAction { target: sliderHandle; property: "visible"; value: true; }
NumberAnimation {
target: sliderHandle; properties: "implicitWidth,implicitHeight"
to: VLCStyle.margin_small * (0.75 * control._hoveredScalingFactor)
duration: VLCStyle.duration_short; easing.type: Easing.InSine
}
}
}
]
state: (control.hovered || control.activeFocus) ? "visible" : "hidden"
state: (control.hovered || control.activeFocus)
? ((control._currentChapterHovered || (Player.hasChapters && fsm._state == fsmHeld)) ? "visibleLarge" : "visible")
: "hidden"
}
}