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
405 results
Show changes
Commits on Source (7)
......@@ -1128,7 +1128,8 @@ libqt_plugin_la_QML = \
widgets/qml/FadingEdgeForListView.qml \
widgets/qml/PopupIconToolButton.qml \
widgets/qml/PartialEffect.qml \
widgets/qml/ViewHeader.qml
widgets/qml/ViewHeader.qml \
widgets/qml/ProgressIndicator.qml
# Shaders:
......
......@@ -120,7 +120,7 @@ void appendMediaIntoPlaylist(vlc_medialibrary_t* ml, int64_t playlistId, const s
if (unlikely(m_transactionPending))
return;
m_transactionPending = true;
setTransactionPending(true);
m_mediaLib->runOnMLThread(this,
//ML thread
......@@ -178,7 +178,7 @@ void appendMediaIntoPlaylist(vlc_medialibrary_t* ml, int64_t playlistId, const s
if (unlikely(m_transactionPending))
return false;
m_transactionPending = true;
setTransactionPending(true);
std::vector<MLItemId> itemList;
for (const QVariant & id : ids)
......@@ -342,12 +342,26 @@ std::unique_ptr<MLListCacheLoader> MLPlaylistListModel::createMLLoader() const /
void MLPlaylistListModel::endTransaction()
{
m_transactionPending = false;
if (m_resetAfterTransaction)
setTransactionPending(false);
}
void MLPlaylistListModel::setTransactionPending(const bool value)
{
if (m_transactionPending == value)
return;
m_transactionPending = value;
if (!value)
{
m_resetAfterTransaction = false;
emit resetRequested();
if (m_resetAfterTransaction)
{
m_resetAfterTransaction = false;
emit resetRequested();
}
}
emit transactionPendingChanged(value);
}
QString MLPlaylistListModel::getCover(MLPlaylist * playlist) const
......
......@@ -58,6 +58,8 @@ public:
Q_PROPERTY(PlaylistType playlistType READ playlistType WRITE setPlaylistType NOTIFY playlistTypeChanged FINAL)
Q_PROPERTY(bool transactionPending READ transactionPending NOTIFY transactionPendingChanged FINAL)
public:
explicit MLPlaylistListModel(QObject * parent = nullptr);
......@@ -72,6 +74,8 @@ public: // Interface
Q_INVOKABLE MLItemId getItemId(int index) const;
bool transactionPending() const { return m_transactionPending; };
public: // QAbstractItemModel implementation
QHash<int, QByteArray> roleNames() const override;
......@@ -91,6 +95,8 @@ private: // Functions
void endTransaction();
void setTransactionPending(bool);
private: // MLBaseModel implementation
void onVlcMlEvent(const MLEvent & event) override;
......@@ -99,6 +105,7 @@ signals:
void coverDefaultChanged();
void coverPrefixChanged ();
void playlistTypeChanged();
void transactionPendingChanged(bool);
public: // Properties
QSize coverSize() const;
......
......@@ -68,7 +68,7 @@ static const QHash<QByteArray, vlc_ml_sorting_criteria_t> criterias =
QVector<vlc::playlist::Media> medias = vlc::playlist::toMediaList(items);
m_transactionPending = true;
setTransactionPending(true);
m_mediaLib->runOnMLThread(this,
//ML thread
......@@ -227,7 +227,7 @@ void MLPlaylistModel::moveImpl(int64_t playlistId, HighLowRanges&& ranges)
highLowRanges.lowRangeIt = highLowRanges.lowRanges.size();
highLowRanges.highRangeIt = 0;
m_transactionPending = true;
setTransactionPending(true);
moveImpl(id, std::move(highLowRanges));
}
......@@ -275,19 +275,32 @@ void MLPlaylistModel::removeImpl(int64_t playlistId, const std::vector<std::pair
auto rangeList = getSortedRowsRanges(indexes, false);
assert(rangeList.size() > 0);
m_transactionPending = true;
setTransactionPending(true);
removeImpl(id, std::move(rangeList), 0);
}
void MLPlaylistModel::endTransaction()
{
m_transactionPending = false;
if (m_resetAfterTransaction)
setTransactionPending(false);
}
void MLPlaylistModel::setTransactionPending(bool value)
{
if (m_transactionPending == value)
return;
m_transactionPending = value;
if (!value)
{
m_resetAfterTransaction = false;
emit resetRequested();
if (m_resetAfterTransaction)
{
m_resetAfterTransaction = false;
emit resetRequested();
}
}
emit transactionPendingChanged();
}
//-------------------------------------------------------------------------------------------------
......
......@@ -26,6 +26,8 @@ class MLPlaylistModel : public MLBaseModel
{
Q_OBJECT
Q_PROPERTY(bool transactionPending READ transactionPending NOTIFY transactionPendingChanged FINAL)
public:
enum Role
{
......@@ -55,9 +57,14 @@ public: // Interface
Q_INVOKABLE void remove(const QModelIndexList & indexes);
bool transactionPending() const { return m_transactionPending; };
public: // QAbstractItemModel implementation
QHash<int, QByteArray> roleNames() const override;
signals:
void transactionPendingChanged();
protected: // MLBaseModel implementation
QVariant itemRoleData(MLItem *item, int role = Qt::DisplayRole) const override;
......@@ -95,6 +102,8 @@ private: // Functions
void endTransaction();
void setTransactionPending(bool);
void generateThumbnail(const MLItemId& itemid) const;
bool m_transactionPending = false;
......
......@@ -127,6 +127,12 @@ MainInterface.MainTableView {
onDropEntered: (delegate, index, drag, before) => {
if (!root.model || root.model.transactionPending)
{
drag.accepted = false
return
}
root._dropUpdatePosition(drag, index, delegate, before)
}
......
......@@ -129,6 +129,38 @@ FocusScope {
resetFocus();
}
onTransactionPendingChanged: {
if (transactionPending)
visibilityTimer.start()
else {
visibilityTimer.stop()
progressIndicator.visible = false
}
}
}
Widgets.ProgressIndicator {
id: progressIndicator
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.margins: VLCStyle.margin_small
visible: false
z: 99
text: qsTr("Processing...")
Timer {
id: visibilityTimer
interval: VLCStyle.duration_humanMoment
onTriggered: {
progressIndicator.visible = true
}
}
}
Widgets.MLDragItem {
......
......@@ -118,6 +118,15 @@ MainInterface.MainViewLoader {
coverDefault: root._placeHolder
coverPrefix: (isMusic) ? "playlist-music" : "playlist-video"
onTransactionPendingChanged: {
if (transactionPending)
visibilityTimer.start()
else {
visibilityTimer.stop()
progressIndicator.visible = false
}
}
}
function _actionAtIndex() {
......@@ -139,6 +148,12 @@ MainInterface.MainViewLoader {
}
function _adjustDragAccepted(drag) {
if (!root.model || root.model.transactionPending)
{
drag.accepted = false
return
}
if (drag.source !== dragItemPlaylist && Helpers.isValidInstanceOf(drag.source, Widgets.DragItem))
drag.accepted = true
else if (drag.hasUrls)
......@@ -188,6 +203,29 @@ MainInterface.MainViewLoader {
}
}
Widgets.ProgressIndicator {
id: progressIndicator
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.margins: VLCStyle.margin_small
visible: false
z: 99
text: qsTr("Processing...")
Timer {
id: visibilityTimer
interval: VLCStyle.duration_humanMoment
onTriggered: {
progressIndicator.visible = true
}
}
}
Widgets.MLDragItem {
id: dragItemPlaylist
......
......@@ -99,6 +99,7 @@
<file alias="PopupIconToolButton.qml">widgets/qml/PopupIconToolButton.qml</file>
<file alias="PartialEffect.qml">widgets/qml/PartialEffect.qml</file>
<file alias="ViewHeader.qml">widgets/qml/ViewHeader.qml</file>
<file alias="ProgressIndicator.qml">widgets/qml/ProgressIndicator.qml</file>
</qresource>
<qresource prefix="/network">
<file alias="AddressbarButton.qml">network/qml/AddressbarButton.qml</file>
......
/*****************************************************************************
* Copyright (C) 2024 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
import QtQuick.Controls
import org.videolan.vlc 0.1
import "qrc:///style/"
Control {
id: root
padding: VLCStyle.margin_xxxsmall
font.pixelSize: VLCStyle.fontSize_normal
hoverEnabled: false
required property string text
readonly property ColorContext colorContext: ColorContext {
id: theme
colorSet: ColorContext.Badge
}
background: Rectangle {
border.color: theme.border
radius: VLCStyle.dp(6, VLCStyle.scale)
color: theme.bg.primary
opacity: 0.8
}
contentItem: Row {
spacing: VLCStyle.margin_xxxsmall
Text {
anchors.verticalCenter: parent.verticalCenter
text: root.text
font: root.font
color: theme.fg.primary
visible: (text.length > 0)
}
BusyIndicator {
palette.dark: theme.fg.primary
anchors.verticalCenter: parent.verticalCenter
}
}
}