[vlc-devel] [RFC V2] Update Qt to use the new player/playlist API and use QML engine

Pierre Lamot pierre at videolabs.io
Fri Mar 15 15:58:10 CET 2019


Hi,

Here is a second version of the QML interface, the code is available here at [1] as I
didn't feel like flooding the mailing list with 80+ patches again.

[1] https://github.com/chubinou/vlc/tree/qml/30

This patchset has been rebased over Romain's lua patches and Victorien's
hotkeys patches.

Since the last RFC.

- fixed issues related to windows cross compilation.

- Added a lighter version of the UI when compiled or launched without the
  medialibrary.

- Video isn't integrated within the interface on Windows at the moment, I've
  made good progress on this side, but it's not ready yet.

- I kept the integration of the video on X11 through Qt OpenGL, as I didn't find
  a way to get proper alpha transparency of egl/glx window  (QML) over X11 window.

- use HW acceleration when rendering OpenGL video

- merged my utils/vlc_var_observer into adapters/variables, make them compatible 
  with the new vout/aout release/hold functions.

- rename VideoRenderer* as QVoutWindow*

- better integration with hotkeys.

- integration of qmlcachegen, this allow pre-compilation of QML files and
  provides faster loading times. this can be enabled with
  --enable-qt-qml-cache. It is not enabled by default as it leaks on dlclose
  [QTBUG-73928] which might be annoying when compiling with asan

- many fix/upgrades in the QML UI

Alexandre Janniaux (1):
  qt: provide Wayland video output integration

Chenrui He (1):
  qml: provide a player view for video and music

Hugo Beauzée-Luyssen (1):
  input: Let the meta reader know if the input is being preparsed

Maël Kervella (4):
  Qt : replace millimeters with pixels in SVG
  qml: provide a component to display up to 4 images in a grid
  qml: add views to browse music indexed by the medialibrary
  qml: add views to browse videos indexed by the medialibrary

Pierre Lamot (73):
  d3d11: update directX header for crosscompilation
  contrib: update qt to 5.12, compile it with ANGLE support
  contrib: udpate qtsvg to 5.12
  contrib: add qtdeclarative, qtquickcontrols2 and qtgraphicaleffects
  contrib: don't compile qtquickcontrols 1, as it is unused by the qt
    interface
  ml: Thumbnailer: Temporarily disable hardware decoders for
    thumbnailing
  qt: update minimal required version to 5.11 in configure.ac
  contrib: provide wine compatible fxc compiler
  qt: provide a wrapper around vlc_tick_t usable from QML
  qt: update Qt vlc variable wrapper
  qt: provide abstract list model for variables with VLC_VAR_HASCHOICE
  qt: provide an event filter to process events before a QML item
  qt: use the new player/playlist in qt.h
  qt: add option to setup QML debugging probe
  qt: remove legacy playlist model and view
  qt: add a context object that will be usable from QML to get a
    reference to the main interface/playlist
  qt: load static qml plugins
  qt: remove legacy input_manager and action_manager
  qt: add models for tracks, chapters, programs
  qt: Expose the new player API to Qt/QML
  qt: provide the main playist and player controler in qt context
  qt: update dialogs to use the new player/playlist API
  qt: port the control widgets to the new player/playlist API
  qt: port info panel widget to the new player/playlist API
  qt: port the extented panel to the new player/playlist API
  qt: provide helper class to build menus
  qt: port menu to use the new player/playlist
  qt: remove unused classes
  qt: port the extension manager to the new player/playlist API
  qt: update input_slider to use new player/playlist API
  qt: remove external dialogs
  qt: provide model to be able to use QML as dialog provider
  qt: port interface widgets to use the new player/playlist API
  qt: provide QML model for about/info dialog
  qt: port Recent manager to the new player/playlist API
  qt: port use the new player API in renderer manager
  qt: update includes in EPGWidget and qvlcapp
  qt: provide base classes to render video output within the interface
  qt: provide dummy video output integration
  qt: provide OpenGL video output integration
  qt: add base classes for medialibrary model
  qt: add medialibrary album model
  qt: add medialibrary albumtrack model
  qt: add medialibrary artist model
  qt: add medialibrary genre model
  qt: add medialibrary video model
  qt: add medialibrary network model
  qt: provide component to help navigation between QML views
  add .qmlc to git ignore
  qt: add graphic for menu and  track selection
  qml: add a tool to generate an icon font from SVG graphics
  qml: provide common color and size definitions
  qml: provide a base class for key navigable widgets
  qml: add helper class to handle selection in DelegateModel
  qml: implement list, grid and table view with key navigation support
  qml: extend and customize StackView
  qml: add common widgets with custom style
  qml: provide common class to serve as delegate for list and grid view
  qml: provide custom "Drawer" component, usable with key navigation
  qml: add a special grid view where elements can be expanded.
  qml: add a simple About dialog
  qml: provide dialogs for user interaction.
  qml: provide a widget to display the play queue
  qml: implement main menus
  qml: add views to browse network drives
  qml: add main view for medialibrary browsing
  qml: provide a progress bar to indicate medialibrary scan progress
  qml: provide main entry point of the UI
  qt: use the QML interface as main interface
  qt: port MainInterfaceWin32 to use the new player/playlist API
  qt: use qmlcachegen to preprocess qml files
  vgl: detect gl backend to allow hw acceleration
  egl: allow references tracking of EGL Display

Romain Vimont (12):
  playlist: assign unique id to playlist items
  Expose main playlist to any module
  playlist: remove lua search
  lua: use new playlist and player
  lua: add playlist.current_item()
  lua: add playlist.list()
  lua: add functions to the player/playlist API
  lua: scripts: use new playlist/player lua API
  lua: sd: Remove sd media browsing
  lua: update API README
  medialibrary: Add an IFileSysteFactory implementation for network
  qt: playlist: implement Qt playlist list model and controler

Thomas Guillem (4):
  clock: forward clock update pts
  input: forward clock update pts
  player: add helper to get input time/pos
  player: forward output clock pts

Victorien Le Couviour--Tuffet (11):
  libvlc: create intf legacy playlist vars
  intf: use new playlist
  dbus: use new playlist / player
  dbus: fix MPRIS MediaPlayer2 interface properties
  audioscrobbler: use new playlist / player
  gestures: use new playlist / player
  gestures: enhance gesture detection
  actions: reorder into relevant sections
  hotkeys: use new playlist / player and refactor
  oldrc: use new playlist / player
  ncurses: use new playlist / player

 .gitignore                                    |    1 +
 configure.ac                                  |   15 +-
 contrib/src/d3d11/SHA512SUMS                  |   14 +-
 contrib/src/d3d11/d3d11.idl                   | 3823 ++++++++++++
 contrib/src/d3d11/d3d11_1.h                   | 4229 +++++++++++++
 contrib/src/d3d11/d3d11_2.h                   | 2248 +++++++
 contrib/src/d3d11/d3d11_3.h                   | 5236 +++++++++++++++++
 contrib/src/d3d11/dxgi.idl                    |  491 ++
 contrib/src/d3d11/dxgi12.patch                |  109 -
 contrib/src/d3d11/dxgi1_2.idl                 |  422 ++
 contrib/src/d3d11/dxgi1_3.idl                 |  267 +-
 contrib/src/d3d11/dxgi1_4.idl                 |  139 +-
 contrib/src/d3d11/dxgi1_5.idl                 |   96 +-
 contrib/src/d3d11/dxgicommon.idl              |   61 +
 contrib/src/d3d11/dxgidebug.idl               |   43 +
 contrib/src/d3d11/dxgidebug.patch             |   51 -
 contrib/src/d3d11/dxgiformat.idl              |  145 +
 contrib/src/d3d11/dxgitype.idl                |   94 +
 contrib/src/d3d11/processor_format.patch      |   14 +-
 contrib/src/d3d11/rules.mak                   |   98 +-
 ...-as-optional-and-provide-default-var.patch |   81 +
 ...tyle-flags-and-splitted-argument-val.patch |  260 +
 .../0003-Use-meson-as-a-build-system.patch    |   47 +
 ...arrowing-conversion-from-int-to-BYTE.patch |   56 +
 contrib/src/fxc2/rules.mak                    |   30 +
 ...cross-compilation-of-angle-with-wine.patch |   55 +
 ...at-win32-clang-g-the-same-as-win32-g.patch |   30 -
 ...ash.c-mingw-clang-64-bit-compilation.patch |   25 +
 ...ilding-with-lld-with-mingw-makefiles.patch |   80 -
 contrib/src/qt/SHA512SUMS                     |    2 +-
 contrib/src/qt/fix-glibc-2.28-build.patch     |   49 -
 contrib/src/qt/rules.mak                      |   42 +-
 contrib/src/qtdeclarative/SHA512SUMS          |    2 +-
 contrib/src/qtdeclarative/rules.mak           |   14 +-
 contrib/src/qtgraphicaleffects/SHA512SUMS     |    2 +-
 contrib/src/qtgraphicaleffects/rules.mak      |    9 +-
 contrib/src/qtquickcontrols/SHA512SUMS        |    1 -
 contrib/src/qtquickcontrols/rules.mak         |   24 -
 contrib/src/qtquickcontrols2/SHA512SUMS       |    2 +-
 contrib/src/qtquickcontrols2/rules.mak        |   12 +-
 contrib/src/qtsvg/SHA512SUMS                  |    2 +-
 contrib/src/qtsvg/rules.mak                   |    6 +-
 include/vlc_actions.h                         |  167 +-
 include/vlc_demux.h                           |    1 +
 include/vlc_input.h                           |   11 +
 include/vlc_interface.h                       |    3 -
 include/vlc_playlist.h                        |   24 +
 modules/control/dbus/dbus.c                   |  535 +-
 modules/control/dbus/dbus_common.h            |   18 +-
 modules/control/dbus/dbus_player.c            |  334 +-
 modules/control/dbus/dbus_root.c              |   45 +-
 modules/control/dbus/dbus_tracklist.c         |  162 +-
 modules/control/gestures.c                    |  377 +-
 modules/control/hotkeys.c                     | 2284 +++----
 modules/control/oldrc.c                       |  825 ++-
 modules/gui/macosx/main/VLCMain.m             |    2 +-
 modules/gui/ncurses.c                         |  815 ++-
 modules/gui/qt/Makefile.am                    |  241 +-
 modules/gui/qt/actions_manager.cpp            |  207 -
 modules/gui/qt/actions_manager.hpp            |   95 -
 modules/gui/qt/adapters/seekpoints.cpp        |   98 -
 modules/gui/qt/adapters/seekpoints.hpp        |   68 -
 modules/gui/qt/adapters/var_choice_model.cpp  |  227 +
 modules/gui/qt/adapters/var_choice_model.hpp  |  217 +
 modules/gui/qt/adapters/var_common_p.hpp      |  169 +
 modules/gui/qt/adapters/variables.cpp         |  106 +-
 modules/gui/qt/adapters/variables.hpp         |  283 +-
 modules/gui/qt/components/aboutmodel.cpp      |   50 +
 modules/gui/qt/components/aboutmodel.hpp      |   40 +
 modules/gui/qt/components/controller.cpp      |  239 +-
 modules/gui/qt/components/controller.hpp      |    9 +-
 .../gui/qt/components/controller_widget.cpp   |  105 +-
 .../gui/qt/components/controller_widget.hpp   |   34 +-
 modules/gui/qt/components/custom_menus.cpp    |  119 +
 modules/gui/qt/components/custom_menus.hpp    |   54 +
 modules/gui/qt/components/dialogmodel.cpp     |  113 +
 modules/gui/qt/components/dialogmodel.hpp     |  100 +
 modules/gui/qt/components/epg/EPGWidget.cpp   |    2 +-
 modules/gui/qt/components/extended_panels.cpp |  181 +-
 modules/gui/qt/components/extended_panels.hpp |    2 +
 modules/gui/qt/components/info_panels.cpp     |   36 +-
 modules/gui/qt/components/info_panels.hpp     |    2 +-
 .../gui/qt/components/interface_widgets.cpp   |   78 +-
 .../gui/qt/components/interface_widgets.hpp   |    4 +-
 .../qt/components/mediacenter/mcmedialib.cpp  |  237 +
 .../qt/components/mediacenter/mcmedialib.hpp  |   82 +
 .../gui/qt/components/mediacenter/mlalbum.cpp |  126 +
 .../gui/qt/components/mediacenter/mlalbum.hpp |   80 +
 .../components/mediacenter/mlalbummodel.cpp   |  170 +
 .../components/mediacenter/mlalbummodel.hpp   |   54 +
 .../components/mediacenter/mlalbumtrack.cpp   |  133 +
 .../components/mediacenter/mlalbumtrack.hpp   |   81 +
 .../mediacenter/mlalbumtrackmodel.cpp         |  179 +
 .../mediacenter/mlalbumtrackmodel.hpp         |   53 +
 .../qt/components/mediacenter/mlartist.cpp    |   95 +
 .../qt/components/mediacenter/mlartist.hpp    |   75 +
 .../components/mediacenter/mlartistmodel.cpp  |  141 +
 .../components/mediacenter/mlartistmodel.hpp  |   52 +
 .../qt/components/mediacenter/mlbasemodel.cpp |  181 +
 .../qt/components/mediacenter/mlbasemodel.hpp |  210 +
 .../gui/qt/components/mediacenter/mlgenre.cpp |   58 +
 .../gui/qt/components/mediacenter/mlgenre.hpp |   60 +
 .../components/mediacenter/mlgenremodel.cpp   |  127 +
 .../components/mediacenter/mlgenremodel.hpp   |   54 +
 .../qt/components/mediacenter/mlhelper.hpp    |   74 +
 .../components/mediacenter/mlnetworkmodel.cpp |  437 ++
 .../components/mediacenter/mlnetworkmodel.hpp |  158 +
 .../qt/components/mediacenter/mlqmltypes.hpp  |   61 +
 .../gui/qt/components/mediacenter/mlvideo.cpp |  148 +
 .../gui/qt/components/mediacenter/mlvideo.hpp |   82 +
 .../components/mediacenter/mlvideomodel.cpp   |  136 +
 .../components/mediacenter/mlvideomodel.hpp   |   55 +
 .../gui/qt/components/navigation_history.cpp  |   68 +
 .../gui/qt/components/navigation_history.hpp  |   72 +
 .../gui/qt/components/player_controller.cpp   | 1491 +++++
 .../gui/qt/components/player_controller.hpp   |  416 ++
 .../gui/qt/components/player_controller_p.hpp |  144 +
 modules/gui/qt/components/playlist/media.hpp  |  101 +
 .../gui/qt/components/playlist/playlist.cpp   |  411 --
 .../gui/qt/components/playlist/playlist.hpp   |  129 -
 .../components/playlist/playlist_common.cpp   |   40 +
 .../components/playlist/playlist_common.hpp   |   58 +
 .../playlist/playlist_controller.cpp          |  667 +++
 .../playlist/playlist_controller.hpp          |  167 +
 .../playlist/playlist_controller_p.hpp        |   69 +
 .../qt/components/playlist/playlist_item.cpp  |  146 +-
 .../qt/components/playlist/playlist_item.hpp  |  140 +-
 .../qt/components/playlist/playlist_model.cpp | 1261 +---
 .../qt/components/playlist/playlist_model.hpp |  198 +-
 .../components/playlist/playlist_model_p.hpp  |   72 +
 .../gui/qt/components/playlist/selector.cpp   |  636 --
 .../gui/qt/components/playlist/selector.hpp   |  160 -
 modules/gui/qt/components/playlist/sorting.h  |  138 -
 .../qt/components/playlist/standardpanel.cpp  |  842 ---
 .../qt/components/playlist/standardpanel.hpp  |  147 -
 modules/gui/qt/components/playlist/views.cpp  |  591 --
 modules/gui/qt/components/playlist/views.hpp  |  151 -
 .../gui/qt/components/playlist/vlc_model.cpp  |  214 -
 .../gui/qt/components/playlist/vlc_model.hpp  |  164 -
 .../gui/qt/components/playlist_new/media.hpp  |   76 +
 .../gui/qt/components/qml_main_context.cpp    |   42 +
 .../gui/qt/components/qml_main_context.hpp    |   48 +
 .../qt/components/voutwindow/qvoutwindow.cpp  |   94 +
 .../qt/components/voutwindow/qvoutwindow.hpp  |   42 +
 .../voutwindow/qvoutwindowdummy.cpp           |   48 +
 .../voutwindow/qvoutwindowdummy.hpp           |   51 +
 .../components/voutwindow/qvoutwindowgl.cpp   |  260 +
 .../components/voutwindow/qvoutwindowgl.hpp   |   99 +
 .../voutwindow/qvoutwindowwayland.cpp         |  184 +
 .../voutwindow/qvoutwindowwayland.hpp         |   63 +
 .../qt/components/voutwindow/videosurface.cpp |  189 +
 .../qt/components/voutwindow/videosurface.hpp |  110 +
 modules/gui/qt/dialogs/bookmarks.cpp          |  274 +-
 modules/gui/qt/dialogs/epg.cpp                |   35 +-
 modules/gui/qt/dialogs/extended.cpp           |    8 +-
 modules/gui/qt/dialogs/extended.hpp           |    3 +-
 modules/gui/qt/dialogs/external.cpp           |  402 --
 modules/gui/qt/dialogs/external.hpp           |  156 -
 modules/gui/qt/dialogs/gototime.cpp           |   10 +-
 modules/gui/qt/dialogs/mediainfo.cpp          |   28 +-
 modules/gui/qt/dialogs/messages.cpp           |   39 +-
 modules/gui/qt/dialogs/playlist.cpp           |   97 -
 modules/gui/qt/dialogs/playlist.hpp           |   63 -
 .../gui/qt/dialogs/podcast_configuration.cpp  |   11 +-
 modules/gui/qt/dialogs/toolbar.cpp            |    4 +-
 modules/gui/qt/dialogs_provider.cpp           |   96 +-
 modules/gui/qt/dialogs_provider.hpp           |    7 +-
 modules/gui/qt/extensions_manager.cpp         |   41 +-
 modules/gui/qt/extensions_manager.hpp         |    3 +-
 modules/gui/qt/input_manager.cpp              | 1283 ----
 modules/gui/qt/input_manager.hpp              |  344 --
 modules/gui/qt/main_interface.cpp             | 1185 +---
 modules/gui/qt/main_interface.hpp             |  119 +-
 modules/gui/qt/main_interface_win32.cpp       |   92 +-
 modules/gui/qt/main_interface_win32.hpp       |    5 +-
 modules/gui/qt/managers/renderer_manager.cpp  |    5 +-
 modules/gui/qt/menus.cpp                      |  936 +--
 modules/gui/qt/menus.hpp                      |   89 +-
 modules/gui/qt/pixmaps/VLCIcons.json          |  126 +
 modules/gui/qt/pixmaps/VLCIcons.ttf           |  Bin 0 -> 21816 bytes
 modules/gui/qt/pixmaps/makeIconFont.py        |  110 +
 modules/gui/qt/pixmaps/menu.svg               |  128 +
 modules/gui/qt/pixmaps/menus/.directory       |    4 -
 modules/gui/qt/pixmaps/menus/help_16px.svg    |   27 +-
 .../playlist/sidebar-icons/capture.svg        |  129 +-
 .../pixmaps/playlist/sidebar-icons/disc.svg   |   37 +-
 .../qt/pixmaps/playlist/sidebar-icons/lan.svg |   53 +-
 .../playlist/sidebar-icons/library.svg        |   27 +-
 .../pixmaps/playlist/sidebar-icons/movie.svg  |   23 +-
 .../qt/pixmaps/playlist/sidebar-icons/mtp.svg |   47 +-
 .../pixmaps/playlist/sidebar-icons/music.svg  |   45 +-
 .../playlist/sidebar-icons/network.svg        |   27 +-
 .../playlist/sidebar-icons/pictures.svg       |   24 +-
 .../playlist/sidebar-icons/playlist.svg       |   30 +-
 .../playlist/sidebar-icons/podcast.svg        |   20 +-
 .../pixmaps/playlist/sidebar-icons/screen.svg |   30 +-
 .../sidebar-icons/sd/appletrailers.svg        |   18 +-
 .../sidebar-icons/sd/assembleenationale.svg   |  144 +-
 .../pixmaps/playlist/sidebar-icons/sd/fmc.svg |   35 +-
 .../playlist/sidebar-icons/sd/frenchtv.svg    |   88 +-
 .../playlist/sidebar-icons/sd/icecast.svg     |   20 +-
 .../playlist/sidebar-icons/sd/jamendo.svg     |   18 +-
 .../playlist/sidebar-icons/sd/katsomo.svg     |   16 +-
 .../sidebar-icons/sd/metachannels.svg         |   29 +-
 modules/gui/qt/pixmaps/toolbar/audiosub.svg   |   71 +
 .../pixmaps/toolbar/volume-slider-inside.svg  |   27 +-
 .../pixmaps/toolbar/volume-slider-outside.svg |   29 +-
 modules/gui/qt/qml/BannerSources.qml          |  210 +
 modules/gui/qt/qml/MainInterface.qml          |  134 +
 modules/gui/qt/qml/about/About.qml            |  169 +
 modules/gui/qt/qml/dialogs/Dialogs.qml        |  322 +
 modules/gui/qt/qml/dialogs/ModalDialog.qml    |   73 +
 .../gui/qt/qml/mediacenter/ArtistGridView.qml |   61 +
 .../gui/qt/qml/mediacenter/ArtistListView.qml |   56 +
 .../qt/qml/mediacenter/ArtistTopBanner.qml    |  108 +
 .../gui/qt/qml/mediacenter/MCMainDisplay.qml  |  204 +
 .../gui/qt/qml/mediacenter/MCMusicDisplay.qml |  245 +
 .../qt/qml/mediacenter/MCNetworkDisplay.qml   |  114 +
 .../gui/qt/qml/mediacenter/MCVideoDisplay.qml |  172 +
 .../qt/qml/mediacenter/MusicAlbumsDisplay.qml |  258 +
 .../MusicAlbumsGridExpandDelegate.qml         |  206 +
 .../qml/mediacenter/MusicArtistsDisplay.qml   |  252 +
 .../qt/qml/mediacenter/MusicGenresDisplay.qml |  224 +
 .../qml/mediacenter/MusicTrackListDisplay.qml |   54 +
 .../qt/qml/mediacenter/MusicTracksDisplay.qml |   39 +
 .../qml/mediacenter/NetworkDriveDisplay.qml   |   71 +
 .../qt/qml/mediacenter/NetworkFileDisplay.qml |   57 +
 .../qt/qml/mediacenter/NetworkListItem.qml    |   92 +
 modules/gui/qt/qml/menus/AudioMenu.qml        |   55 +
 .../qt/qml/menus/CheckableModelSubMenu.qml    |   34 +
 modules/gui/qt/qml/menus/HelpMenu.qml         |   28 +
 modules/gui/qt/qml/menus/MainDropdownMenu.qml |   50 +
 modules/gui/qt/qml/menus/MainMenubar.qml      |   33 +
 modules/gui/qt/qml/menus/MediaMenu.qml        |   42 +
 modules/gui/qt/qml/menus/PlaybackMenu.qml     |   88 +
 modules/gui/qt/qml/menus/PopupMenu.qml        |   64 +
 modules/gui/qt/qml/menus/SubtitleMenu.qml     |   35 +
 modules/gui/qt/qml/menus/ToolsMenu.qml        |   33 +
 modules/gui/qt/qml/menus/VideoMenu.qml        |   97 +
 modules/gui/qt/qml/menus/ViewMenu.qml         |   71 +
 modules/gui/qt/qml/player/ControlBar.qml      |  207 +
 modules/gui/qt/qml/player/ModalControlBar.qml |   81 +
 modules/gui/qt/qml/player/Player.qml          |  217 +
 modules/gui/qt/qml/player/SliderBar.qml       |   89 +
 modules/gui/qt/qml/player/TrackInfo.qml       |   71 +
 modules/gui/qt/qml/player/TrackSelector.qml   |  124 +
 modules/gui/qt/qml/playlist/PLItem.qml        |  150 +
 modules/gui/qt/qml/playlist/PLItemFooter.qml  |   56 +
 .../gui/qt/qml/playlist/PlaylistListView.qml  |  256 +
 .../gui/qt/qml/playlist/PlaylistMainView.qml  |   88 +
 modules/gui/qt/qml/playlist/PlaylistMenu.qml  |  275 +
 modules/gui/qt/qml/style/VLCColors.qml        |  163 +
 modules/gui/qt/qml/style/VLCIcons.qml         |  152 +
 modules/gui/qt/qml/style/VLCStyle.qml         |  109 +
 modules/gui/qt/qml/style/qmldir               |    2 +
 modules/gui/qt/qml/utils/ComboBoxExt.qml      |  119 +
 modules/gui/qt/qml/utils/DNDLabel.qml         |   45 +
 modules/gui/qt/qml/utils/Drawer.qml           |   80 +
 modules/gui/qt/qml/utils/ExpandGridView.qml   |  335 ++
 modules/gui/qt/qml/utils/GridItem.qml         |  256 +
 modules/gui/qt/qml/utils/IconToolButton.qml   |   66 +
 modules/gui/qt/qml/utils/ImageToolButton.qml  |   52 +
 .../gui/qt/qml/utils/KeyNavigableGridView.qml |  120 +
 .../gui/qt/qml/utils/KeyNavigableListView.qml |  131 +
 .../qt/qml/utils/KeyNavigableTableView.qml    |  213 +
 modules/gui/qt/qml/utils/ListItem.qml         |  173 +
 modules/gui/qt/qml/utils/MenuExt.qml          |   64 +
 modules/gui/qt/qml/utils/MenuItemExt.qml      |   91 +
 .../gui/qt/qml/utils/MultiCoverPreview.qml    |   85 +
 .../gui/qt/qml/utils/NavigableFocusScope.qml  |   56 +
 modules/gui/qt/qml/utils/ScanProgressBar.qml  |   54 +
 .../qt/qml/utils/SelectableDelegateModel.qml  |   89 +
 modules/gui/qt/qml/utils/StackViewExt.qml     |   86 +
 modules/gui/qt/qml/utils/TextToolButton.qml   |   56 +
 modules/gui/qt/qml/utils/ToolTipArea.qml      |   38 +
 modules/gui/qt/qt.cpp                         |  117 +-
 modules/gui/qt/qt.hpp                         |   56 +-
 modules/gui/qt/recents.cpp                    |   37 +-
 modules/gui/qt/styles/seekstyle.cpp           |    1 -
 modules/gui/qt/util/input_models.cpp          |  485 ++
 modules/gui/qt/util/input_models.hpp          |  219 +
 modules/gui/qt/util/input_slider.cpp          |   50 +-
 modules/gui/qt/util/input_slider.hpp          |    4 +-
 modules/gui/qt/util/pictureflow.cpp           | 1179 ----
 modules/gui/qt/util/pictureflow.hpp           |  383 --
 modules/gui/qt/util/qmenuview.cpp             |  125 -
 modules/gui/qt/util/qmenuview.hpp             |   61 -
 modules/gui/qt/util/qmleventfilter.cpp        |   70 +
 modules/gui/qt/util/qmleventfilter.hpp        |   75 +
 modules/gui/qt/util/qvlcapp.hpp               |    2 +-
 modules/gui/qt/util/vlctick.cpp               |   51 +
 modules/gui/qt/util/vlctick.hpp               |   47 +
 modules/gui/qt/vlc.qrc                        |   89 +
 modules/hw/d3d11/d3d11_deinterlace.c          |    2 -
 modules/lua/extension.c                       |    6 +-
 modules/lua/intf.c                            |    4 +-
 modules/lua/libs.h                            |    2 +
 modules/lua/libs/equalizer.c                  |   29 +-
 modules/lua/libs/input.c                      |  554 +-
 modules/lua/libs/input.h                      |    4 +-
 modules/lua/libs/objects.c                    |   60 +-
 modules/lua/libs/osd.c                        |   58 +-
 modules/lua/libs/playlist.c                   |  634 +-
 modules/lua/libs/sd.c                         |   57 -
 modules/lua/libs/video.c                      |    9 +-
 modules/lua/libs/volume.c                     |   57 +-
 modules/lua/vlc.h                             |    6 +-
 modules/misc/Makefile.am                      |   12 +-
 modules/misc/audioscrobbler.c                 |  212 +-
 modules/misc/medialibrary/Thumbnailer.cpp     |    1 +
 modules/misc/medialibrary/fs/device.cpp       |  156 +
 modules/misc/medialibrary/fs/device.h         |   56 +
 modules/misc/medialibrary/fs/directory.cpp    |  208 +
 modules/misc/medialibrary/fs/directory.h      |   58 +
 modules/misc/medialibrary/fs/file.cpp         |   69 +
 modules/misc/medialibrary/fs/file.h           |   52 +
 modules/misc/medialibrary/fs/fs.cpp           |  252 +
 modules/misc/medialibrary/fs/fs.h             |  102 +
 modules/misc/medialibrary/fs/util.cpp         |   57 +
 modules/misc/medialibrary/fs/util.h           |   37 +
 modules/misc/medialibrary/medialib.cpp        |    7 +
 modules/video_output/opengl/egl.c             |   10 +-
 modules/video_output/vgl.c                    |   79 +
 share/lua/README.txt                          |   59 +-
 share/lua/extensions/VLSub.lua                |    8 +-
 share/lua/http/js/controllers.js              |    2 +-
 share/lua/http/requests/playlist_jstree.xml   |   64 +-
 share/lua/http/requests/status.xml            |    2 +-
 share/lua/intf/cli.lua                        |  260 +-
 share/lua/intf/dumpmeta.lua                   |    2 +-
 share/lua/intf/http.lua                       |    9 +-
 share/lua/intf/modules/httprequests.lua       |   76 +-
 share/lua/modules/common.lua                  |   13 +-
 src/clock/clock.c                             |   29 +-
 src/clock/clock.h                             |    9 +-
 src/input/es_out.c                            |   17 +-
 src/input/event.h                             |   10 +
 src/input/input.c                             |    1 +
 src/input/player.c                            |   73 +-
 src/interface/interface.c                     |  197 +-
 src/libvlc.c                                  |   18 +
 src/libvlc.h                                  |    1 +
 src/libvlccore.sym                            |    4 +-
 src/misc/actions.c                            |    4 +-
 src/playlist/content.c                        |   27 +-
 src/playlist/item.c                           |    9 +-
 src/playlist/item.h                           |    3 +-
 src/playlist/playlist.c                       |   64 +
 src/playlist/playlist.h                       |    1 +
 src/playlist/preparse.c                       |    9 +-
 src/playlist/test.c                           |    4 +-
 351 files changed, 44311 insertions(+), 17589 deletions(-)
 create mode 100644 contrib/src/d3d11/d3d11.idl
 create mode 100644 contrib/src/d3d11/d3d11_1.h
 create mode 100644 contrib/src/d3d11/d3d11_2.h
 create mode 100644 contrib/src/d3d11/d3d11_3.h
 create mode 100644 contrib/src/d3d11/dxgi.idl
 delete mode 100644 contrib/src/d3d11/dxgi12.patch
 create mode 100644 contrib/src/d3d11/dxgi1_2.idl
 create mode 100644 contrib/src/d3d11/dxgicommon.idl
 create mode 100644 contrib/src/d3d11/dxgidebug.idl
 delete mode 100644 contrib/src/d3d11/dxgidebug.patch
 create mode 100644 contrib/src/d3d11/dxgiformat.idl
 create mode 100644 contrib/src/d3d11/dxgitype.idl
 create mode 100644 contrib/src/fxc2/0001-make-Vn-argument-as-optional-and-provide-default-var.patch
 create mode 100644 contrib/src/fxc2/0002-accept-windows-style-flags-and-splitted-argument-val.patch
 create mode 100644 contrib/src/fxc2/0003-Use-meson-as-a-build-system.patch
 create mode 100644 contrib/src/fxc2/0004-Revert-Fix-narrowing-conversion-from-int-to-BYTE.patch
 create mode 100644 contrib/src/fxc2/rules.mak
 create mode 100644 contrib/src/qt/0003-allow-cross-compilation-of-angle-with-wine.patch
 delete mode 100644 contrib/src/qt/0003-configure-Treat-win32-clang-g-the-same-as-win32-g.patch
 create mode 100644 contrib/src/qt/0004-Fix-PMurHash.c-mingw-clang-64-bit-compilation.patch
 delete mode 100644 contrib/src/qt/0004-qmake-Fix-building-with-lld-with-mingw-makefiles.patch
 delete mode 100644 contrib/src/qt/fix-glibc-2.28-build.patch
 delete mode 100644 contrib/src/qtquickcontrols/SHA512SUMS
 delete mode 100644 contrib/src/qtquickcontrols/rules.mak
 delete mode 100644 modules/gui/qt/actions_manager.cpp
 delete mode 100644 modules/gui/qt/actions_manager.hpp
 delete mode 100644 modules/gui/qt/adapters/seekpoints.cpp
 delete mode 100644 modules/gui/qt/adapters/seekpoints.hpp
 create mode 100644 modules/gui/qt/adapters/var_choice_model.cpp
 create mode 100644 modules/gui/qt/adapters/var_choice_model.hpp
 create mode 100644 modules/gui/qt/adapters/var_common_p.hpp
 create mode 100644 modules/gui/qt/components/aboutmodel.cpp
 create mode 100644 modules/gui/qt/components/aboutmodel.hpp
 create mode 100644 modules/gui/qt/components/dialogmodel.cpp
 create mode 100644 modules/gui/qt/components/dialogmodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mcmedialib.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mcmedialib.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbum.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbum.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbummodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbummodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbumtrack.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbumtrack.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbumtrackmodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlalbumtrackmodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlartist.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlartist.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlartistmodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlartistmodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlbasemodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlbasemodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlgenre.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlgenre.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlgenremodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlgenremodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlhelper.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlnetworkmodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlnetworkmodel.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlqmltypes.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlvideo.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlvideo.hpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlvideomodel.cpp
 create mode 100644 modules/gui/qt/components/mediacenter/mlvideomodel.hpp
 create mode 100644 modules/gui/qt/components/navigation_history.cpp
 create mode 100644 modules/gui/qt/components/navigation_history.hpp
 create mode 100644 modules/gui/qt/components/player_controller.cpp
 create mode 100644 modules/gui/qt/components/player_controller.hpp
 create mode 100644 modules/gui/qt/components/player_controller_p.hpp
 create mode 100644 modules/gui/qt/components/playlist/media.hpp
 delete mode 100644 modules/gui/qt/components/playlist/playlist.cpp
 delete mode 100644 modules/gui/qt/components/playlist/playlist.hpp
 create mode 100644 modules/gui/qt/components/playlist/playlist_common.cpp
 create mode 100644 modules/gui/qt/components/playlist/playlist_common.hpp
 create mode 100644 modules/gui/qt/components/playlist/playlist_controller.cpp
 create mode 100644 modules/gui/qt/components/playlist/playlist_controller.hpp
 create mode 100644 modules/gui/qt/components/playlist/playlist_controller_p.hpp
 create mode 100644 modules/gui/qt/components/playlist/playlist_model_p.hpp
 delete mode 100644 modules/gui/qt/components/playlist/selector.cpp
 delete mode 100644 modules/gui/qt/components/playlist/selector.hpp
 delete mode 100644 modules/gui/qt/components/playlist/sorting.h
 delete mode 100644 modules/gui/qt/components/playlist/standardpanel.cpp
 delete mode 100644 modules/gui/qt/components/playlist/standardpanel.hpp
 delete mode 100644 modules/gui/qt/components/playlist/views.cpp
 delete mode 100644 modules/gui/qt/components/playlist/views.hpp
 delete mode 100644 modules/gui/qt/components/playlist/vlc_model.cpp
 delete mode 100644 modules/gui/qt/components/playlist/vlc_model.hpp
 create mode 100644 modules/gui/qt/components/playlist_new/media.hpp
 create mode 100644 modules/gui/qt/components/qml_main_context.cpp
 create mode 100644 modules/gui/qt/components/qml_main_context.hpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindow.cpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindow.hpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindowdummy.cpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindowdummy.hpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindowgl.cpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindowgl.hpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindowwayland.cpp
 create mode 100644 modules/gui/qt/components/voutwindow/qvoutwindowwayland.hpp
 create mode 100644 modules/gui/qt/components/voutwindow/videosurface.cpp
 create mode 100644 modules/gui/qt/components/voutwindow/videosurface.hpp
 delete mode 100644 modules/gui/qt/dialogs/external.cpp
 delete mode 100644 modules/gui/qt/dialogs/external.hpp
 delete mode 100644 modules/gui/qt/dialogs/playlist.cpp
 delete mode 100644 modules/gui/qt/dialogs/playlist.hpp
 delete mode 100644 modules/gui/qt/input_manager.cpp
 delete mode 100644 modules/gui/qt/input_manager.hpp
 create mode 100644 modules/gui/qt/pixmaps/VLCIcons.json
 create mode 100644 modules/gui/qt/pixmaps/VLCIcons.ttf
 create mode 100755 modules/gui/qt/pixmaps/makeIconFont.py
 create mode 100644 modules/gui/qt/pixmaps/menu.svg
 delete mode 100644 modules/gui/qt/pixmaps/menus/.directory
 create mode 100644 modules/gui/qt/pixmaps/toolbar/audiosub.svg
 create mode 100644 modules/gui/qt/qml/BannerSources.qml
 create mode 100644 modules/gui/qt/qml/MainInterface.qml
 create mode 100644 modules/gui/qt/qml/about/About.qml
 create mode 100644 modules/gui/qt/qml/dialogs/Dialogs.qml
 create mode 100644 modules/gui/qt/qml/dialogs/ModalDialog.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/ArtistGridView.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/ArtistListView.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/ArtistTopBanner.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MCMainDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MCMusicDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MCNetworkDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MCVideoDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MusicAlbumsDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MusicAlbumsGridExpandDelegate.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MusicArtistsDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MusicGenresDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MusicTrackListDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/MusicTracksDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/NetworkDriveDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/NetworkFileDisplay.qml
 create mode 100644 modules/gui/qt/qml/mediacenter/NetworkListItem.qml
 create mode 100644 modules/gui/qt/qml/menus/AudioMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/CheckableModelSubMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/HelpMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/MainDropdownMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/MainMenubar.qml
 create mode 100644 modules/gui/qt/qml/menus/MediaMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/PlaybackMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/PopupMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/SubtitleMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/ToolsMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/VideoMenu.qml
 create mode 100644 modules/gui/qt/qml/menus/ViewMenu.qml
 create mode 100644 modules/gui/qt/qml/player/ControlBar.qml
 create mode 100644 modules/gui/qt/qml/player/ModalControlBar.qml
 create mode 100644 modules/gui/qt/qml/player/Player.qml
 create mode 100644 modules/gui/qt/qml/player/SliderBar.qml
 create mode 100644 modules/gui/qt/qml/player/TrackInfo.qml
 create mode 100644 modules/gui/qt/qml/player/TrackSelector.qml
 create mode 100644 modules/gui/qt/qml/playlist/PLItem.qml
 create mode 100644 modules/gui/qt/qml/playlist/PLItemFooter.qml
 create mode 100644 modules/gui/qt/qml/playlist/PlaylistListView.qml
 create mode 100644 modules/gui/qt/qml/playlist/PlaylistMainView.qml
 create mode 100644 modules/gui/qt/qml/playlist/PlaylistMenu.qml
 create mode 100644 modules/gui/qt/qml/style/VLCColors.qml
 create mode 100644 modules/gui/qt/qml/style/VLCIcons.qml
 create mode 100644 modules/gui/qt/qml/style/VLCStyle.qml
 create mode 100644 modules/gui/qt/qml/style/qmldir
 create mode 100644 modules/gui/qt/qml/utils/ComboBoxExt.qml
 create mode 100644 modules/gui/qt/qml/utils/DNDLabel.qml
 create mode 100644 modules/gui/qt/qml/utils/Drawer.qml
 create mode 100644 modules/gui/qt/qml/utils/ExpandGridView.qml
 create mode 100644 modules/gui/qt/qml/utils/GridItem.qml
 create mode 100644 modules/gui/qt/qml/utils/IconToolButton.qml
 create mode 100644 modules/gui/qt/qml/utils/ImageToolButton.qml
 create mode 100644 modules/gui/qt/qml/utils/KeyNavigableGridView.qml
 create mode 100644 modules/gui/qt/qml/utils/KeyNavigableListView.qml
 create mode 100644 modules/gui/qt/qml/utils/KeyNavigableTableView.qml
 create mode 100644 modules/gui/qt/qml/utils/ListItem.qml
 create mode 100644 modules/gui/qt/qml/utils/MenuExt.qml
 create mode 100644 modules/gui/qt/qml/utils/MenuItemExt.qml
 create mode 100644 modules/gui/qt/qml/utils/MultiCoverPreview.qml
 create mode 100644 modules/gui/qt/qml/utils/NavigableFocusScope.qml
 create mode 100644 modules/gui/qt/qml/utils/ScanProgressBar.qml
 create mode 100644 modules/gui/qt/qml/utils/SelectableDelegateModel.qml
 create mode 100644 modules/gui/qt/qml/utils/StackViewExt.qml
 create mode 100644 modules/gui/qt/qml/utils/TextToolButton.qml
 create mode 100644 modules/gui/qt/qml/utils/ToolTipArea.qml
 create mode 100644 modules/gui/qt/util/input_models.cpp
 create mode 100644 modules/gui/qt/util/input_models.hpp
 delete mode 100644 modules/gui/qt/util/pictureflow.cpp
 delete mode 100644 modules/gui/qt/util/pictureflow.hpp
 delete mode 100644 modules/gui/qt/util/qmenuview.cpp
 delete mode 100644 modules/gui/qt/util/qmenuview.hpp
 create mode 100644 modules/gui/qt/util/qmleventfilter.cpp
 create mode 100644 modules/gui/qt/util/qmleventfilter.hpp
 create mode 100644 modules/gui/qt/util/vlctick.cpp
 create mode 100644 modules/gui/qt/util/vlctick.hpp
 create mode 100644 modules/misc/medialibrary/fs/device.cpp
 create mode 100644 modules/misc/medialibrary/fs/device.h
 create mode 100644 modules/misc/medialibrary/fs/directory.cpp
 create mode 100644 modules/misc/medialibrary/fs/directory.h
 create mode 100644 modules/misc/medialibrary/fs/file.cpp
 create mode 100644 modules/misc/medialibrary/fs/file.h
 create mode 100644 modules/misc/medialibrary/fs/fs.cpp
 create mode 100644 modules/misc/medialibrary/fs/fs.h
 create mode 100644 modules/misc/medialibrary/fs/util.cpp
 create mode 100644 modules/misc/medialibrary/fs/util.h

>> Hi,
>>
>> The main goals of this patchset are:
>>
>>   - use the new player / playlist API in the Qt interface,
>>   - update internal UI models to be usable from QML.
>>   - update the UI to use a modern engine (QML) and give VLC a fresh look
>>   - provide an integration of the medialibrary within the desktop UI
>>
>> secondary goals are:
>>
>>   - be able to navigate and use the interface with a keyboard / remote
>>     controler.
>>
>> So ... this is a huge patchset, we wanted to port the player/playlist API and change
>> the engine at the same time to avoid breaking the interface twice by doing one
>> then the other.
>>
>> the patches is composed in two main parts, first the port to the new
>> player/playlist API, then the integration of the QML UI
>>
>> There are still many rough edges, amongst the known issues:
>>
>> - Medialibrary is required, there is currently no fallback
>> - No video integration on Windows platform
>> - Possible crash when closing the window (vout try to render in a closed window,
>>   vout_display_window_CloseNotify has no effect)
>> - Main window might freeze when using Qt 12 with X11 (QTBUG-72679)
>> - bookmarks is unimplemented
>> - Playlist export is missing
>> - No extension integration
>> - No "extra interface" integration
>> - No "Renderer" integration
>> - Recent play isn't filled properly






More information about the vlc-devel mailing list