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
Showing
with 122 additions and 135 deletions
...@@ -126,13 +126,13 @@ vlc_ml_sorting_criteria_t MLGenreModel::nameToCriteria(QByteArray name) const ...@@ -126,13 +126,13 @@ vlc_ml_sorting_criteria_t MLGenreModel::nameToCriteria(QByteArray name) const
QString MLGenreModel::getCover(MLGenre * genre) const QString MLGenreModel::getCover(MLGenre * genre) const
{ {
return ml()->customCover()->get(genre->getId() return MLCustomCover::url(genre->getId()
, QSize(MLGENREMODEL_COVER_WIDTH, MLGENREMODEL_COVER_HEIGHT) , QSize(MLGENREMODEL_COVER_WIDTH, MLGENREMODEL_COVER_HEIGHT)
, m_coverDefault , m_coverDefault
, MLGENREMODEL_COVER_COUNTX , MLGENREMODEL_COVER_COUNTX
, MLGENREMODEL_COVER_COUNTY , MLGENREMODEL_COVER_COUNTY
, MLGENREMODEL_COVER_BLUR , MLGENREMODEL_COVER_BLUR
, true); , true);
} }
//------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------
......
...@@ -358,10 +358,10 @@ void MLPlaylistListModel::setTransactionPending(const bool value) ...@@ -358,10 +358,10 @@ void MLPlaylistListModel::setTransactionPending(const bool value)
QString MLPlaylistListModel::getCover(MLPlaylist * playlist) const QString MLPlaylistListModel::getCover(MLPlaylist * playlist) const
{ {
return ml()->customCover()->get(playlist->getId() return MLCustomCover::url(playlist->getId()
, m_coverSize , m_coverSize
, m_coverDefault , m_coverDefault
, PLAYLIST_COVERX, PLAYLIST_COVERY); , PLAYLIST_COVERX, PLAYLIST_COVERY);
} }
//------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------
......
...@@ -83,9 +83,9 @@ QVariant MLVideoFoldersModel::itemRoleData(MLItem * item, const int role) const ...@@ -83,9 +83,9 @@ QVariant MLVideoFoldersModel::itemRoleData(MLItem * item, const int role) const
return QVariant::fromValue( getFirstSymbol(folder->getTitle()) ); return QVariant::fromValue( getFirstSymbol(folder->getTitle()) );
case FOLDER_THUMBNAIL: case FOLDER_THUMBNAIL:
{ {
return ml()->customCover()->get(folder->getId() return MLCustomCover::url(folder->getId()
, QSize(MLVIDEOFOLDERSMODEL_COVER_WIDTH, MLVIDEOFOLDERSMODEL_COVER_HEIGHT) , QSize(MLVIDEOFOLDERSMODEL_COVER_WIDTH, MLVIDEOFOLDERSMODEL_COVER_HEIGHT)
, QStringLiteral(":/placeholder/noart_videoCover.svg")); , QStringLiteral(":/placeholder/noart_videoCover.svg"));
} }
case FOLDER_DURATION: case FOLDER_DURATION:
return QVariant::fromValue(folder->getDuration()); return QVariant::fromValue(folder->getDuration());
......
...@@ -94,9 +94,11 @@ QVariant MLVideoGroupsModel::itemRoleData(MLItem * item, const int role) const / ...@@ -94,9 +94,11 @@ QVariant MLVideoGroupsModel::itemRoleData(MLItem * item, const int role) const /
return QVariant::fromValue(group->getTitle()); return QVariant::fromValue(group->getTitle());
case VIDEO_THUMBNAIL: case VIDEO_THUMBNAIL:
{ {
return ml()->customCover()->get(group->getId() return MLCustomCover::url(
, QSize(MLVIDEOGROUPSMODEL_COVER_WIDTH, MLVIDEOGROUPSMODEL_COVER_HEIGHT) group->getId(),
, QStringLiteral(":/placeholder/noart_videoCover.svg")); QSize(MLVIDEOGROUPSMODEL_COVER_WIDTH, MLVIDEOGROUPSMODEL_COVER_HEIGHT),
QStringLiteral(":/placeholder/noart_videoCover.svg")
);
} }
case VIDEO_DURATION: case VIDEO_DURATION:
return QVariant::fromValue(group->getDuration()); return QVariant::fromValue(group->getDuration());
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include "dialogs/extended/extended_panels.hpp" #include "dialogs/extended/extended_panels.hpp"
#include "dialogs/systray/systray.hpp" #include "dialogs/systray/systray.hpp"
#include "util/varchoicemodel.hpp" #include "util/varchoicemodel.hpp"
#include "util/color_scheme_model.hpp"
#include "medialibrary/medialib.hpp" #include "medialibrary/medialib.hpp"
#include "medialibrary/mlrecentsmodel.hpp" #include "medialibrary/mlrecentsmodel.hpp"
#include "medialibrary/mlbookmarkmodel.hpp" #include "medialibrary/mlbookmarkmodel.hpp"
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "medialibrary/mlbookmarkmodel.hpp" #include "medialibrary/mlbookmarkmodel.hpp"
#include "network/networkdevicemodel.hpp" #include "network/networkdevicemodel.hpp"
#include "network/networkmediamodel.hpp" #include "network/networkmediamodel.hpp"
#include "player/player_controller.hpp"
#include "playlist/playlist_controller.hpp" #include "playlist/playlist_controller.hpp"
#include "playlist/playlist_model.hpp" #include "playlist/playlist_model.hpp"
#include "dialogs/dialogs_provider.hpp" #include "dialogs/dialogs_provider.hpp"
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
Q_MOC_INCLUDE("playlist/playlist_controller.hpp") Q_MOC_INCLUDE("playlist/playlist_controller.hpp")
Q_MOC_INCLUDE("playlist/playlist_model.hpp") Q_MOC_INCLUDE("playlist/playlist_model.hpp")
Q_MOC_INCLUDE("player/player_controller.hpp")
Q_MOC_INCLUDE("network/networkdevicemodel.hpp") Q_MOC_INCLUDE("network/networkdevicemodel.hpp")
Q_MOC_INCLUDE("network/networkmediamodel.hpp") Q_MOC_INCLUDE("network/networkmediamodel.hpp")
Q_MOC_INCLUDE("medialibrary/mlplaylistlistmodel.hpp") Q_MOC_INCLUDE("medialibrary/mlplaylistlistmodel.hpp")
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "mediatreelistener.hpp" #include "mediatreelistener.hpp"
#include "maininterface/mainctx.hpp" #include "maininterface/mainctx.hpp"
#include "medialibrary/medialib.hpp"
#include "medialibrary/mlmedia.hpp" #include "medialibrary/mlmedia.hpp"
#include "medialibrary/mlmediastore.hpp" #include "medialibrary/mlmediastore.hpp"
......
...@@ -63,16 +63,13 @@ PlayerControllerPrivate::~PlayerControllerPrivate() ...@@ -63,16 +63,13 @@ PlayerControllerPrivate::~PlayerControllerPrivate()
vlc_player_RemoveTimer( m_player, m_player_timer ); vlc_player_RemoveTimer( m_player, m_player_timer );
} }
bool PlayerController::isCurrentItemSynced() bool PlayerControllerPrivate::isCurrentItemSynced()
{ {
Q_D(PlayerController);
/* The media can change before the UI gets updated and thus a player /* The media can change before the UI gets updated and thus a player
* request can be submitted on the wrong media or worse, no media at * request can be submitted on the wrong media or worse, no media at
* all. Here d->m_currentItem is read and modified under the player * all. Here d->m_currentItem is read and modified under the player
* lock. */ * lock. */
return m_currentItem.get() == vlc_player_GetCurrentMedia( m_player );
return d->m_currentItem.get() == vlc_player_GetCurrentMedia( d->m_player );
} }
...@@ -1017,6 +1014,15 @@ static void on_player_timer_smpte_update(const struct vlc_player_timer_smpte_tim ...@@ -1017,6 +1014,15 @@ static void on_player_timer_smpte_update(const struct vlc_player_timer_smpte_tim
}); });
} }
static void on_art_fetch_ended_callback(input_item_t *p_item, bool fetched,
void *userdata)
{
PlayerControllerPrivate *me = reinterpret_cast<PlayerControllerPrivate *>(userdata);
me->onArtFetchEnded(p_item, fetched);
}
} //extern "C" } //extern "C"
static const struct vlc_player_cbs player_cbs = { static const struct vlc_player_cbs player_cbs = {
...@@ -1083,6 +1089,15 @@ static const struct vlc_player_timer_smpte_cbs player_timer_smpte_cbs = { ...@@ -1083,6 +1089,15 @@ static const struct vlc_player_timer_smpte_cbs player_timer_smpte_cbs = {
on_player_timer_smpte_update on_player_timer_smpte_update
}; };
// art fetcher callbacks
static const struct vlc_metadata_cbs art_fetcher_cbs = []{
struct vlc_metadata_cbs cbs{};
cbs.on_art_fetch_ended = on_art_fetch_ended_callback;
return cbs;
}();
PlayerControllerPrivate::PlayerControllerPrivate(PlayerController *playercontroller, qt_intf_t *p_intf) PlayerControllerPrivate::PlayerControllerPrivate(PlayerController *playercontroller, qt_intf_t *p_intf)
: q_ptr(playercontroller) : q_ptr(playercontroller)
, p_intf(p_intf) , p_intf(p_intf)
...@@ -1153,8 +1168,6 @@ PlayerController::PlayerController( qt_intf_t *_p_intf ) ...@@ -1153,8 +1168,6 @@ PlayerController::PlayerController( qt_intf_t *_p_intf )
this, &PlayerController::menusUpdateAudio ); this, &PlayerController::menusUpdateAudio );
connect( &d_ptr->m_position_timer, &QTimer::timeout, this, &PlayerController::updatePositionFromTimer ); connect( &d_ptr->m_position_timer, &QTimer::timeout, this, &PlayerController::updatePositionFromTimer );
connect( &d_ptr->m_time_timer, &QTimer::timeout, this, &PlayerController::updateTimeFromTimer ); connect( &d_ptr->m_time_timer, &QTimer::timeout, this, &PlayerController::updateTimeFromTimer );
input_preparser_cbs.on_art_fetch_ended = onArtFetchEnded_callback;
} }
PlayerController::~PlayerController() PlayerController::~PlayerController()
...@@ -1256,7 +1269,7 @@ void PlayerController::setTime(VLCTick new_time) ...@@ -1256,7 +1269,7 @@ void PlayerController::setTime(VLCTick new_time)
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_SetTime( d->m_player, new_time ); vlc_player_SetTime( d->m_player, new_time );
} }
...@@ -1268,7 +1281,7 @@ void PlayerController::setPosition(double position) ...@@ -1268,7 +1281,7 @@ void PlayerController::setPosition(double position)
return; return;
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_SetPosition( d->m_player, position ); vlc_player_SetPosition( d->m_player, position );
} }
...@@ -1279,7 +1292,7 @@ void PlayerController::jumpFwd() ...@@ -1279,7 +1292,7 @@ void PlayerController::jumpFwd()
msg_Dbg( d->p_intf, "jumpFwd"); msg_Dbg( d->p_intf, "jumpFwd");
int i_interval = var_InheritInteger( d->p_intf, "short-jump-size" ); int i_interval = var_InheritInteger( d->p_intf, "short-jump-size" );
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_JumpTime( d->m_player, vlc_tick_from_sec( i_interval ) ); vlc_player_JumpTime( d->m_player, vlc_tick_from_sec( i_interval ) );
} }
...@@ -1290,7 +1303,7 @@ void PlayerController::jumpBwd() ...@@ -1290,7 +1303,7 @@ void PlayerController::jumpBwd()
msg_Dbg( d->p_intf, "jumpBwd"); msg_Dbg( d->p_intf, "jumpBwd");
int i_interval = var_InheritInteger( d->p_intf, "short-jump-size" ); int i_interval = var_InheritInteger( d->p_intf, "short-jump-size" );
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_JumpTime( d->m_player, vlc_tick_from_sec( -i_interval ) ); vlc_player_JumpTime( d->m_player, vlc_tick_from_sec( -i_interval ) );
} }
...@@ -1300,7 +1313,7 @@ void PlayerController::jumpToTime(VLCTick i_time) ...@@ -1300,7 +1313,7 @@ void PlayerController::jumpToTime(VLCTick i_time)
Q_D(PlayerController); Q_D(PlayerController);
msg_Dbg( d->p_intf, "jumpToTime"); msg_Dbg( d->p_intf, "jumpToTime");
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_JumpTime( d->m_player, i_time ); vlc_player_JumpTime( d->m_player, i_time );
} }
...@@ -1310,7 +1323,7 @@ void PlayerController::jumpToPos( double new_pos ) ...@@ -1310,7 +1323,7 @@ void PlayerController::jumpToPos( double new_pos )
Q_D(PlayerController); Q_D(PlayerController);
{ {
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_SetPosition( d->m_player, new_pos ); vlc_player_SetPosition( d->m_player, new_pos );
...@@ -1322,7 +1335,7 @@ void PlayerController::frameNext() ...@@ -1322,7 +1335,7 @@ void PlayerController::frameNext()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_NextVideoFrame( d->m_player ); vlc_player_NextVideoFrame( d->m_player );
} }
...@@ -1333,7 +1346,7 @@ void PlayerController::setAudioDelay(VLCTick delay) ...@@ -1333,7 +1346,7 @@ void PlayerController::setAudioDelay(VLCTick delay)
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_SetAudioDelay( d->m_player, delay, VLC_PLAYER_WHENCE_ABSOLUTE ); vlc_player_SetAudioDelay( d->m_player, delay, VLC_PLAYER_WHENCE_ABSOLUTE );
} }
...@@ -1350,7 +1363,7 @@ void PlayerController::setSubtitleDelay(VLCTick delay) ...@@ -1350,7 +1363,7 @@ void PlayerController::setSubtitleDelay(VLCTick delay)
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if(!isCurrentItemSynced() ) if(!d->isCurrentItemSynced() )
return; return;
vlc_player_SetSubtitleDelay( d->m_player, delay, VLC_PLAYER_WHENCE_ABSOLUTE ); vlc_player_SetSubtitleDelay( d->m_player, delay, VLC_PLAYER_WHENCE_ABSOLUTE );
} }
...@@ -1367,7 +1380,7 @@ void PlayerController::setSecondarySubtitleDelay(VLCTick delay) ...@@ -1367,7 +1380,7 @@ void PlayerController::setSecondarySubtitleDelay(VLCTick delay)
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (d->m_secondarySpuEsId.get() != NULL) if (d->m_secondarySpuEsId.get() != NULL)
vlc_player_SetEsIdDelay(d->m_player, d->m_secondarySpuEsId.get(), vlc_player_SetEsIdDelay(d->m_player, d->m_secondarySpuEsId.get(),
...@@ -1419,7 +1432,7 @@ void PlayerController::setSubtitleFPS(float fps) ...@@ -1419,7 +1432,7 @@ void PlayerController::setSubtitleFPS(float fps)
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
vlc_player_SetAssociatedSubsFPS( d->m_player, fps ); vlc_player_SetAssociatedSubsFPS( d->m_player, fps );
} }
...@@ -1430,7 +1443,7 @@ void PlayerController::sectionPrev() ...@@ -1430,7 +1443,7 @@ void PlayerController::sectionPrev()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
{ {
...@@ -1445,7 +1458,7 @@ void PlayerController::sectionNext() ...@@ -1445,7 +1458,7 @@ void PlayerController::sectionNext()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
{ {
...@@ -1460,7 +1473,7 @@ void PlayerController::sectionMenu() ...@@ -1460,7 +1473,7 @@ void PlayerController::sectionMenu()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_MENU ); vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_MENU );
...@@ -1470,7 +1483,7 @@ void PlayerController::navigateUp() ...@@ -1470,7 +1483,7 @@ void PlayerController::navigateUp()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_UP); vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_UP);
...@@ -1480,7 +1493,7 @@ void PlayerController::navigateDown() ...@@ -1480,7 +1493,7 @@ void PlayerController::navigateDown()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_DOWN); vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_DOWN);
...@@ -1490,7 +1503,7 @@ void PlayerController::navigateLeft() ...@@ -1490,7 +1503,7 @@ void PlayerController::navigateLeft()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_LEFT); vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_LEFT);
...@@ -1500,7 +1513,7 @@ void PlayerController::navigateRight() ...@@ -1500,7 +1513,7 @@ void PlayerController::navigateRight()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_RIGHT); vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_RIGHT);
...@@ -1510,7 +1523,7 @@ void PlayerController::navigateActivate() ...@@ -1510,7 +1523,7 @@ void PlayerController::navigateActivate()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_ACTIVATE); vlc_player_Navigate( d->m_player, VLC_PLAYER_NAV_ACTIVATE);
...@@ -1520,7 +1533,7 @@ void PlayerController::chapterNext() ...@@ -1520,7 +1533,7 @@ void PlayerController::chapterNext()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsStarted(d->m_player )) if (vlc_player_IsStarted(d->m_player ))
vlc_player_SelectNextChapter( d->m_player ); vlc_player_SelectNextChapter( d->m_player );
...@@ -1530,7 +1543,7 @@ void PlayerController::chapterPrev() ...@@ -1530,7 +1543,7 @@ void PlayerController::chapterPrev()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsStarted(d->m_player )) if (vlc_player_IsStarted(d->m_player ))
vlc_player_SelectPrevChapter( d->m_player ); vlc_player_SelectPrevChapter( d->m_player );
...@@ -1540,7 +1553,7 @@ void PlayerController::titleNext() ...@@ -1540,7 +1553,7 @@ void PlayerController::titleNext()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsStarted(d->m_player )) if (vlc_player_IsStarted(d->m_player ))
vlc_player_SelectNextTitle( d->m_player ); vlc_player_SelectNextTitle( d->m_player );
...@@ -1550,7 +1563,7 @@ void PlayerController::titlePrev() ...@@ -1550,7 +1563,7 @@ void PlayerController::titlePrev()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsStarted(d->m_player )) if (vlc_player_IsStarted(d->m_player ))
vlc_player_SelectPrevTitle( d->m_player ); vlc_player_SelectPrevTitle( d->m_player );
...@@ -1562,7 +1575,7 @@ void PlayerController::changeProgram( int program ) ...@@ -1562,7 +1575,7 @@ void PlayerController::changeProgram( int program )
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if( vlc_player_IsStarted( d->m_player ) ) if( vlc_player_IsStarted( d->m_player ) )
vlc_player_SelectProgram( d->m_player, program ); vlc_player_SelectProgram( d->m_player, program );
...@@ -1575,7 +1588,7 @@ void PlayerController::enableTeletext( bool enable ) ...@@ -1575,7 +1588,7 @@ void PlayerController::enableTeletext( bool enable )
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsStarted(d->m_player )) if (vlc_player_IsStarted(d->m_player ))
vlc_player_SetTeletextEnabled( d->m_player, enable ); vlc_player_SetTeletextEnabled( d->m_player, enable );
...@@ -1585,7 +1598,7 @@ void PlayerController::setTeletextPage(int page) ...@@ -1585,7 +1598,7 @@ void PlayerController::setTeletextPage(int page)
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsTeletextEnabled( d->m_player )) if (vlc_player_IsTeletextEnabled( d->m_player ))
vlc_player_SelectTeletextPage( d->m_player, page ); vlc_player_SelectTeletextPage( d->m_player, page );
...@@ -1595,7 +1608,7 @@ void PlayerController::setTeletextTransparency( bool transparent ) ...@@ -1595,7 +1608,7 @@ void PlayerController::setTeletextTransparency( bool transparent )
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if( !isCurrentItemSynced() ) if( !d->isCurrentItemSynced() )
return; return;
if (vlc_player_IsTeletextEnabled( d->m_player )) if (vlc_player_IsTeletextEnabled( d->m_player ))
vlc_player_SetTeletextTransparency( d->m_player, transparent ); vlc_player_SetTeletextTransparency( d->m_player, transparent );
...@@ -1812,7 +1825,7 @@ void PlayerController::restorePlaybackPos() ...@@ -1812,7 +1825,7 @@ void PlayerController::restorePlaybackPos()
{ {
Q_D(PlayerController); Q_D(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ d->m_player };
if (!isCurrentItemSynced()) if (!d->isCurrentItemSynced())
return; return;
vlc_player_RestorePlaybackPos( d->m_player ); vlc_player_RestorePlaybackPos( d->m_player );
} }
...@@ -1960,29 +1973,22 @@ void PlayerController::requestArtUpdate( input_item_t *p_item, bool b_forced ) ...@@ -1960,29 +1973,22 @@ void PlayerController::requestArtUpdate( input_item_t *p_item, bool b_forced )
libvlc_MetadataRequest( vlc_object_instance(d->p_intf), p_item, libvlc_MetadataRequest( vlc_object_instance(d->p_intf), p_item,
(b_forced) ? META_REQUEST_OPTION_FETCH_ANY (b_forced) ? META_REQUEST_OPTION_FETCH_ANY
: META_REQUEST_OPTION_FETCH_LOCAL, : META_REQUEST_OPTION_FETCH_LOCAL,
&input_preparser_cbs, this, 0, NULL ); &art_fetcher_cbs, d, 0, NULL );
} }
} }
void PlayerController::onArtFetchEnded_callback(input_item_t *p_item, bool fetched, void PlayerControllerPrivate::onArtFetchEnded(input_item_t *p_item, bool)
void *userdata)
{
PlayerController *me = reinterpret_cast<PlayerController *>(userdata);
me->onArtFetchEnded(p_item, fetched);
}
void PlayerController::onArtFetchEnded(input_item_t *p_item, bool)
{ {
Q_D(PlayerController); Q_Q(PlayerController);
vlc_player_locker lock{ d->m_player }; vlc_player_locker lock{ m_player };
bool b_current_item = (p_item == vlc_player_GetCurrentMedia( d->m_player )); bool b_current_item = (p_item == vlc_player_GetCurrentMedia( m_player ));
/* No input will signal the cover art to update, /* No input will signal the cover art to update,
* let's do it ourself */ * let's do it ourself */
if ( b_current_item ) if ( b_current_item )
d->UpdateArt( p_item ); UpdateArt( p_item );
else else
emit artChanged( p_item ); emit q->artChanged( p_item );
} }
const QString PlayerController::decodeArtURL( input_item_t *p_item ) const QString PlayerController::decodeArtURL( input_item_t *p_item )
......
...@@ -479,16 +479,9 @@ private slots: ...@@ -479,16 +479,9 @@ private slots:
void menusUpdateAudio( const QString& ); void menusUpdateAudio( const QString& );
private: private:
bool isCurrentItemSynced();
Q_DECLARE_PRIVATE(PlayerController) Q_DECLARE_PRIVATE(PlayerController)
QScopedPointer<PlayerControllerPrivate> d_ptr; QScopedPointer<PlayerControllerPrivate> d_ptr;
QSignalMapper *menusAudioMapper; //used by VLCMenuBar QSignalMapper *menusAudioMapper; //used by VLCMenuBar
/* updateArt gui request */
struct vlc_metadata_cbs input_preparser_cbs {};
static void onArtFetchEnded_callback(input_item_t *, bool fetched, void *userdata);
void onArtFetchEnded(input_item_t *, bool fetched);
}; };
#endif #endif
...@@ -49,6 +49,8 @@ public: ...@@ -49,6 +49,8 @@ public:
void UpdateTrackSelection(vlc_es_id_t *trackid, bool selected); void UpdateTrackSelection(vlc_es_id_t *trackid, bool selected);
void UpdateSpuOrder(vlc_es_id_t *es_id, enum vlc_vout_order spu_order); void UpdateSpuOrder(vlc_es_id_t *es_id, enum vlc_vout_order spu_order);
int interpolateTime(vlc_tick_t system_now); int interpolateTime(vlc_tick_t system_now);
bool isCurrentItemSynced();
void onArtFetchEnded(input_item_t *, bool fetched);
// SMPTE Timer // SMPTE Timer
void addSMPTETimer(); void addSMPTETimer();
......
...@@ -346,8 +346,9 @@ static const struct vlc_playlist_callbacks playlist_callbacks = []{ ...@@ -346,8 +346,9 @@ static const struct vlc_playlist_callbacks playlist_callbacks = []{
//private API //private API
PlaylistControllerPrivate::PlaylistControllerPrivate(PlaylistController* playlistController) PlaylistControllerPrivate::PlaylistControllerPrivate(PlaylistController* playlistController, vlc_playlist_t *playlist)
: q_ptr(playlistController) : q_ptr(playlistController)
, m_playlist(playlist)
{ {
fillSortKeyTitleList(); fillSortKeyTitleList();
} }
...@@ -363,20 +364,31 @@ PlaylistControllerPrivate::~PlaylistControllerPrivate() ...@@ -363,20 +364,31 @@ PlaylistControllerPrivate::~PlaylistControllerPrivate()
//public API //public API
PlaylistController::PlaylistController(QObject *parent) PlaylistController::PlaylistController(vlc_playlist_t *playlist, QObject *parent)
: QObject(parent) : QObject(parent)
, d_ptr( new PlaylistControllerPrivate(this) ) , d_ptr( new PlaylistControllerPrivate(this, playlist) )
{ {
Q_D(PlaylistController);
assert(playlist);
connect(this, &PlaylistController::itemsMoved, this, &PlaylistController::resetSortKey); connect(this, &PlaylistController::itemsMoved, this, &PlaylistController::resetSortKey);
connect(this, &PlaylistController::itemsAdded, this, &PlaylistController::resetSortKey); connect(this, &PlaylistController::itemsAdded, this, &PlaylistController::resetSortKey);
connect(this, &PlaylistController::isEmptyChanged, [this](bool isEmpty) {if (isEmpty) emit resetSortKey();}); connect(this, &PlaylistController::isEmptyChanged, [this](bool isEmpty) {if (isEmpty) emit resetSortKey();});
}
PlaylistController::PlaylistController(vlc_playlist_t *playlist, QObject *parent) {
: QObject(parent) vlc_playlist_locker locker(d->m_playlist);
, d_ptr( new PlaylistControllerPrivate(this) ) d->m_listener = vlc_playlist_AddListener(d->m_playlist, &playlist_callbacks, d, true);
{ }
setPlaylist(playlist); /*
* Queue a playlistInitialized to be sent after the initial state callbacks
* vlc_playlist_AddListener will synchronously call each callback in
* playlist_callbacks, which will in turn queue an async call on the Qt
* main thread
*/
d->callAsync([this, d](){
d->m_initialized = true;
emit initializedChanged();
});
} }
PlaylistController::~PlaylistController() PlaylistController::~PlaylistController()
...@@ -705,34 +717,6 @@ Playlist PlaylistController::getPlaylist() const ...@@ -705,34 +717,6 @@ Playlist PlaylistController::getPlaylist() const
return Playlist(d->m_playlist); return Playlist(d->m_playlist);
} }
void PlaylistController::setPlaylist(vlc_playlist_t* newPlaylist)
{
Q_D(PlaylistController);
if (d->m_playlist && d->m_listener)
{
vlc_playlist_locker locker(d->m_playlist);
vlc_playlist_RemoveListener(d->m_playlist, d->m_listener);
d->m_playlist = nullptr;
d->m_listener = nullptr;
}
if (newPlaylist)
{
vlc_playlist_locker locker(newPlaylist);
d->m_playlist = newPlaylist;
d->m_listener = vlc_playlist_AddListener(d->m_playlist, &playlist_callbacks, d, true);
/*
* Queue a playlistInitialized to be sent after the initial state callbacks
* vlc_playlist_AddListener will synchronously call each callback in
* playlist_callbacks, which will in turn queue an async call on the Qt
* main thread
*/
d->callAsync([=](){
emit playlistInitialized();
});
}
emit playlistChanged( Playlist(newPlaylist) );
}
void PlaylistController::resetSortKey() void PlaylistController::resetSortKey()
{ {
Q_D(PlaylistController); Q_D(PlaylistController);
...@@ -740,11 +724,6 @@ void PlaylistController::resetSortKey() ...@@ -740,11 +724,6 @@ void PlaylistController::resetSortKey()
emit sortKeyChanged(); emit sortKeyChanged();
} }
void PlaylistController::setPlaylist(const Playlist& playlist)
{
setPlaylist(playlist.m_playlist);
}
PlaylistController::PlaybackRepeat PlaylistController::getRepeatMode() const PlaylistController::PlaybackRepeat PlaylistController::getRepeatMode() const
{ {
Q_D(const PlaylistController); Q_D(const PlaylistController);
...@@ -854,6 +833,11 @@ QVariantList PlaylistController::getSortKeyTitleList() const ...@@ -854,6 +833,11 @@ QVariantList PlaylistController::getSortKeyTitleList() const
return d->sortKeyTitleList; return d->sortKeyTitleList;
} }
bool PlaylistController::isInitialized() const
{
Q_D(const PlaylistController);
return d->m_initialized;
}
} // namespace playlist } // namespace playlist
} // namespace vlc } // namespace vlc
...@@ -90,9 +90,10 @@ public: ...@@ -90,9 +90,10 @@ public:
}; };
Q_ENUM(MediaStopAction) Q_ENUM(MediaStopAction)
Q_PROPERTY(bool initialized READ isInitialized NOTIFY initializedChanged FINAL)
Q_PROPERTY(QVariantList sortKeyTitleList READ getSortKeyTitleList CONSTANT FINAL) Q_PROPERTY(QVariantList sortKeyTitleList READ getSortKeyTitleList CONSTANT FINAL)
Q_PROPERTY(Playlist playlist READ getPlaylist WRITE setPlaylist NOTIFY playlistChanged FINAL) Q_PROPERTY(Playlist playlist READ getPlaylist CONSTANT FINAL)
Q_PROPERTY(PlaylistItem currentItem READ getCurrentItem NOTIFY currentItemChanged FINAL) Q_PROPERTY(PlaylistItem currentItem READ getCurrentItem NOTIFY currentItemChanged FINAL)
...@@ -141,46 +142,39 @@ public: ...@@ -141,46 +142,39 @@ public:
Q_INVOKABLE void explore(const PlaylistItem& pItem); Q_INVOKABLE void explore(const PlaylistItem& pItem);
public: public:
PlaylistController(QObject *parent = nullptr);
PlaylistController(vlc_playlist_t *playlist, QObject *parent = nullptr); PlaylistController(vlc_playlist_t *playlist, QObject *parent = nullptr);
virtual ~PlaylistController(); virtual ~PlaylistController();
public slots: public:
PlaylistItem getCurrentItem() const; SortKey getSortKey() const;
bool hasNext() const; bool hasNext() const;
bool hasPrev() const; bool hasPrev() const;
bool isRandom() const; bool isRandom() const;
void setRandom( bool );
MediaStopAction getMediaStopAction() const; MediaStopAction getMediaStopAction() const;
void setMediaStopAction(MediaStopAction );
PlaybackRepeat getRepeatMode() const; PlaybackRepeat getRepeatMode() const;
void setRepeatMode( PlaybackRepeat mode );
bool isEmpty() const; bool isEmpty() const;
int count() const; int count() const;
int currentIndex() const; int currentIndex() const;
SortOrder getSortOrder() const;
bool isInitialized() const;
SortKey getSortKey() const; public slots:
PlaylistItem getCurrentItem() const;
void setRandom( bool );
void setMediaStopAction(MediaStopAction );
void setRepeatMode( PlaybackRepeat mode );
void setSortKey(SortKey sortKey); void setSortKey(SortKey sortKey);
SortOrder getSortOrder() const;
void setSortOrder(SortOrder sortOrder); void setSortOrder(SortOrder sortOrder);
void switchSortOrder(); void switchSortOrder();
QVariantList getSortKeyTitleList() const; QVariantList getSortKeyTitleList() const;
Playlist getPlaylist() const; Playlist getPlaylist() const;
void setPlaylist(const Playlist& playlist);
void setPlaylist(vlc_playlist_t* newPlaylist);
void resetSortKey(); void resetSortKey();
signals: signals:
void playlistChanged( Playlist );
void currentItemChanged( ); void currentItemChanged( );
void hasNextChanged( bool ); void hasNextChanged( bool );
...@@ -201,7 +195,7 @@ signals: ...@@ -201,7 +195,7 @@ signals:
void itemsRemoved(size_t index, size_t count); void itemsRemoved(size_t index, size_t count);
void itemsUpdated(size_t index, QVector<PlaylistItem>); void itemsUpdated(size_t index, QVector<PlaylistItem>);
void playlistInitialized(); void initializedChanged();
private: private:
Q_DECLARE_PRIVATE(PlaylistController) Q_DECLARE_PRIVATE(PlaylistController)
......
...@@ -33,7 +33,7 @@ public: ...@@ -33,7 +33,7 @@ public:
PlaylistController * const q_ptr; PlaylistController * const q_ptr;
public: public:
PlaylistControllerPrivate(PlaylistController* playlistController); PlaylistControllerPrivate(PlaylistController* playlistController, vlc_playlist_t *playlist);
PlaylistControllerPrivate() = delete; PlaylistControllerPrivate() = delete;
~PlaylistControllerPrivate(); ~PlaylistControllerPrivate();
...@@ -56,6 +56,7 @@ public: ...@@ -56,6 +56,7 @@ public:
vlc_playlist_t* m_playlist = nullptr; vlc_playlist_t* m_playlist = nullptr;
vlc_playlist_listener_id* m_listener = nullptr; vlc_playlist_listener_id* m_listener = nullptr;
bool m_initialized = false;
ssize_t m_currentIndex = -1; ssize_t m_currentIndex = -1;
PlaylistItem m_currentItem; PlaylistItem m_currentItem;
bool m_hasNext= false; bool m_hasNext= false;
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <QFile> #include <QFile>
#include <maininterface/mainctx.hpp> #include <maininterface/mainctx.hpp>
#include <vlc_modules.h> #include <vlc_modules.h>
#include <vlc_picture.h>
namespace { namespace {
......