Projects
Staging
vlc-beta
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 381
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/ControlbarControls.qml
Deleted
@@ -1,86 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2019 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. - *****************************************************************************/ - -pragma Singleton - -import QtQml - -import org.videolan.vlc 0.1 - -import "qrc:///player/controlbarcontrols/" as Controls -import "qrc:///widgets/" as Widgets -import "qrc:///style/" - -QtObject { - readonly property string controlPath : "qrc:///player/controlbarcontrols/" - - readonly property var controlList: - { id: ControlListModel.PLAY_BUTTON, file: "PlayButton.qml", label: VLCIcons.play_filled, text: qsTr("Play") }, - { id: ControlListModel.STOP_BUTTON, file: "StopButton.qml", label: VLCIcons.stop, text: qsTr("Stop") }, - { id: ControlListModel.OPEN_BUTTON, file: "OpenButton.qml", label: VLCIcons.eject, text: qsTr("Open") }, - { id: ControlListModel.PREVIOUS_BUTTON, file: "PreviousButton.qml", label: VLCIcons.previous, text: qsTr("Previous") }, - { id: ControlListModel.NEXT_BUTTON, file: "NextButton.qml", label: VLCIcons.next, text: qsTr("Next") }, - { id: ControlListModel.SLOWER_BUTTON, file: "SlowerButton.qml", label: VLCIcons.slower, text: qsTr("Slower") }, - { id: ControlListModel.FASTER_BUTTON, file: "FasterButton.qml", label: VLCIcons.faster, text: qsTr("Faster") }, - { id: ControlListModel.FULLSCREEN_BUTTON, file: "FullscreenButton.qml", label: VLCIcons.fullscreen, text: qsTr("Fullscreen") }, - { id: ControlListModel.EXTENDED_BUTTON, file: "ExtendedSettingsButton.qml", label: VLCIcons.effect_filter, text: qsTr("Extended panel") }, - { id: ControlListModel.PLAYLIST_BUTTON, file: "PlaylistButton.qml", label: VLCIcons.playlist, text: qsTr("Playlist") }, - { id: ControlListModel.SNAPSHOT_BUTTON, file: "SnapshotButton.qml", label: VLCIcons.snapshot, text: qsTr("Snapshot") }, - { id: ControlListModel.RECORD_BUTTON, file: "RecordButton.qml", label: VLCIcons.record, text: qsTr("Record") }, - { id: ControlListModel.ATOB_BUTTON, file: "AtoBButton.qml", label: VLCIcons.atob, text: qsTr("A-B Loop") }, - { id: ControlListModel.FRAME_BUTTON, file: "FrameButton.qml", label: VLCIcons.frame_by_frame, text: qsTr("Frame By Frame") }, - { id: ControlListModel.REVERSE_BUTTON, file: "ReverseButton.qml", label: VLCIcons.play_reverse, text: qsTr("Trickplay Reverse") }, - { id: ControlListModel.SKIP_BACK_BUTTON, file: "SkipBackButton.qml", label: VLCIcons.skip_back, text: qsTr("Step backward") }, - { id: ControlListModel.SKIP_FW_BUTTON, file: "SkipForwardButton.qml", label: VLCIcons.skip_for, text: qsTr("Step forward") }, - { id: ControlListModel.QUIT_BUTTON, file: "QuitButton.qml", label: VLCIcons.clear, text: qsTr("Quit") }, - { id: ControlListModel.RANDOM_BUTTON, file: "RandomButton.qml", label: VLCIcons.shuffle, text: qsTr("Random") }, - { id: ControlListModel.LOOP_BUTTON, file: "LoopButton.qml", label: VLCIcons.repeat_all, text: qsTr("Loop") }, - { id: ControlListModel.INFO_BUTTON, file: "InfoButton.qml", label: VLCIcons.info, text: qsTr("Information") }, - { id: ControlListModel.LANG_BUTTON, file: "LangButton.qml", label: VLCIcons.audiosub, text: qsTr("Open subtitles") }, - { id: ControlListModel.BOOKMARK_BUTTON, file: "BookmarkButton.qml", label: VLCIcons.bookmark, text: qsTr("Bookmark Button") }, - { id: ControlListModel.CHAPTER_PREVIOUS_BUTTON, file: "ChapterPreviousButton.qml", label: VLCIcons.dvd_prev, text: qsTr("Previous chapter") }, - { id: ControlListModel.CHAPTER_NEXT_BUTTON, file: "ChapterNextButton.qml", label: VLCIcons.dvd_next, text: qsTr("Next chapter") }, - { id: ControlListModel.VOLUME, file: "VolumeWidget.qml", label: VLCIcons.volume_high, text: qsTr("Volume Widget") }, - { id: ControlListModel.NAVIGATION_BOX, file: "NavigationBoxButton.qml", label: VLCIcons.ic_fluent_arrow_move, text: qsTr("Navigation Box") }, - { id: ControlListModel.NAVIGATION_BUTTONS, file: "NavigationWidget.qml", label: VLCIcons.dvd_menu, text: qsTr("Navigation") }, - { id: ControlListModel.DVD_MENUS_BUTTON, file: "DvdMenuButton.qml", label: VLCIcons.dvd_menu, text: qsTr("DVD menus") }, - { id: ControlListModel.PROGRAM_BUTTON, file: "ProgramButton.qml", label: VLCIcons.tv, text: qsTr("Program Button") }, - { id: ControlListModel.TELETEXT_BUTTONS, file: "TeletextButton.qml", label: VLCIcons.tvtelx, text: qsTr("Teletext") }, - { id: ControlListModel.RENDERER_BUTTON, file: "RendererButton.qml", label: VLCIcons.renderer, text: qsTr("Renderer Button") }, - { id: ControlListModel.ASPECT_RATIO_COMBOBOX, file: "AspectRatioWidget.qml", label: VLCIcons.aspect_ratio, text: qsTr("Aspect Ratio") }, - { id: ControlListModel.WIDGET_SPACER, file: "SpacerWidget.qml", label: VLCIcons.space, text: qsTr("Spacer") }, - { id: ControlListModel.WIDGET_SPACER_EXTEND, file: "ExpandingSpacerWidget.qml", label: VLCIcons.space, text: qsTr("Expanding Spacer") }, - { id: ControlListModel.PLAYER_SWITCH_BUTTON, file: "PlayerSwitchButton.qml", label: VLCIcons.fullscreen, text: qsTr("Switch Player") }, - { id: ControlListModel.ARTWORK_INFO, file: "ArtworkInfoWidget.qml", label: VLCIcons.info, text: qsTr("Artwork Info") }, - { id: ControlListModel.PLAYBACK_SPEED_BUTTON, file: "PlaybackSpeedButton.qml", label: "1x", text: qsTr("Playback Speed") }, - { id: ControlListModel.HIGH_RESOLUTION_TIME_WIDGET, file: "HighResolutionTimeWidget.qml", label: VLCIcons.info, text: qsTr("High Resolution Time") } - - - function control(id) { - const entry = controlList.find( function(e) { return ( e.id === id ) } ) - - if (entry === undefined) { - console.log("control delegate id " + id + " doesn't exist") - return { source: controlPath + "Fallback.qml" } - } - - entry.source = controlPath + entry.file - - return entry - } -}
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/qmldir
Deleted
@@ -1,1 +0,0 @@ -singleton PlayerControlbarControls ControlbarControls.qml
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/qml.qrc
Deleted
@@ -1,259 +0,0 @@ -<?xml version="1.0"?> -<RCC> - <qresource prefix="/util"> - <file alias="Helpers.js">util/qml/Helpers.js</file> - <file alias="ModelSortSettingHandler.qml">util/qml/ModelSortSettingHandler.qml</file> - <file alias="FlickableScrollHandler.qml">util/qml/FlickableScrollHandler.qml</file> - <file alias="ViewDragAutoScrollHandler.qml">util/qml/ViewDragAutoScrollHandler.qml</file> - <file alias="NativeMenu.qml">util/qml/NativeMenu.qml</file> - <file alias="MLContextMenu.qml">util/qml/MLContextMenu.qml</file> - <file alias="FSM.qml">util/qml/FSM.qml</file> - <file alias="FSMState.qml">util/qml/FSMState.qml</file> - <file alias="FadeControllerStateGroup.qml">util/qml/FadeControllerStateGroup.qml</file> - <file alias="GridSizeHelper.qml">util/qml/GridSizeHelper.qml</file> - </qresource> - <qresource prefix="/main"> - <file alias="BannerSources.qml">maininterface/qml/BannerSources.qml</file> - <file alias="MainInterface.qml">maininterface/qml/MainInterface.qml</file> - <file alias="MainDisplay.qml">maininterface/qml/MainDisplay.qml</file> - <file alias="NoMedialibHome.qml">maininterface/qml/NoMedialibHome.qml</file> - <file alias="MainTableView.qml">maininterface/qml/MainTableView.qml</file> - <file alias="MainGridView.qml">maininterface/qml/MainGridView.qml</file> - <file alias="MainViewLoader.qml">maininterface/qml/MainViewLoader.qml</file> - </qresource> - <qresource prefix="/widgets"> - <file alias="LabelExt.qml">widgets/qml/LabelExt.qml</file> - <file alias="EmptyLabel.qml">widgets/qml/EmptyLabel.qml</file> - <file alias="EmptyLabelButton.qml">widgets/qml/EmptyLabelButton.qml</file> - <file alias="EmptyLabelHint.qml">widgets/qml/EmptyLabelHint.qml</file> - <file alias="ActionButtonOverlay.qml">widgets/qml/ActionButtonOverlay.qml</file> - <file alias="ActionButtonPrimary.qml">widgets/qml/ActionButtonPrimary.qml</file> - <file alias="BannerCone.qml">widgets/qml/BannerCone.qml</file> - <file alias="BannerTabButton.qml">widgets/qml/BannerTabButton.qml</file> - <file alias="BusyIndicatorExt.qml">widgets/qml/BusyIndicatorExt.qml</file> - <file alias="AcrylicBackground.qml">widgets/qml/AcrylicBackground.qml</file> - <file alias="AnimatedBackground.qml">widgets/qml/AnimatedBackground.qml</file> - <file alias="CheckButton.qml">widgets/qml/CheckButton.qml</file> - <file alias="CSDWindowButton.qml">widgets/qml/CSDWindowButton.qml</file> - <file alias="CSDWindowButtonSet.qml">widgets/qml/CSDWindowButtonSet.qml</file> - <file alias="CSDTitlebarTapNDrapHandler.qml">widgets/qml/CSDTitlebarTapNDrapHandler.qml</file> - <file alias="CSDMouseStealer.qml">widgets/qml/CSDMouseStealer.qml</file> - <file alias="TrackDelayButton.qml">widgets/qml/TrackDelayButton.qml</file> - <file alias="CurrentIndicator.qml">widgets/qml/CurrentIndicator.qml</file> - <file alias="GridItem.qml">widgets/qml/GridItem.qml</file> - <file alias="DrawerExt.qml">widgets/qml/DrawerExt.qml</file> - <file alias="KeyNavigableListView.qml">widgets/qml/KeyNavigableListView.qml</file> - <file alias="KeyNavigableTableView.qml">widgets/qml/KeyNavigableTableView.qml</file> - <file alias="TableViewDelegate.qml">widgets/qml/TableViewDelegate.qml</file> - <file alias="TableColumns.qml">widgets/qml/TableColumns.qml</file> - <file alias="MLTableColumns.qml">widgets/qml/MLTableColumns.qml</file> - <file alias="TableHeaderDelegate.qml">widgets/qml/TableHeaderDelegate.qml</file> - <file alias="TableRowDelegate.qml">widgets/qml/TableRowDelegate.qml</file> - <file alias="ImageToolButton.qml">widgets/qml/ImageToolButton.qml</file> - <file alias="TextToolButton.qml">widgets/qml/TextToolButton.qml</file> - <file alias="IconToolButton.qml">widgets/qml/IconToolButton.qml</file> - <file alias="IconTrackButton.qml">widgets/qml/IconTrackButton.qml</file> - <file alias="StackViewExt.qml">widgets/qml/StackViewExt.qml</file> - <file alias="ComboBoxExt.qml">widgets/qml/ComboBoxExt.qml</file> - <file alias="SpinBoxExt.qml">widgets/qml/SpinBoxExt.qml</file> - <file alias="ExpandGridView.qml">widgets/qml/ExpandGridView.qml</file> - <file alias="ScanProgressBar.qml">widgets/qml/ScanProgressBar.qml</file> - <file alias="SearchBox.qml">widgets/qml/SearchBox.qml</file> - <file alias="SortControl.qml">widgets/qml/SortControl.qml</file> - <file alias="RoundButton.qml">widgets/qml/RoundButton.qml</file> - <file alias="VideoQualityLabels.qml">widgets/qml/VideoQualityLabels.qml</file> - <file alias="VideoProgressBar.qml">widgets/qml/VideoProgressBar.qml</file> - <file alias="NavigableCol.qml">widgets/qml/NavigableCol.qml</file> - <file alias="NavigableRow.qml">widgets/qml/NavigableRow.qml</file> - <file alias="ButtonExt.qml">widgets/qml/ButtonExt.qml</file> - <file alias="TextAutoScroller.qml">widgets/qml/TextAutoScroller.qml</file> - <file alias="CaptionLabel.qml">widgets/qml/CaptionLabel.qml</file> - <file alias="IconLabel.qml">widgets/qml/IconLabel.qml</file> - <file alias="ListLabel.qml">widgets/qml/ListLabel.qml</file> - <file alias="SubtitleLabel.qml">widgets/qml/SubtitleLabel.qml</file> - <file alias="PlayCover.qml">widgets/qml/PlayCover.qml</file> - <file alias="MenuCaption.qml">widgets/qml/MenuCaption.qml</file> - <file alias="MediaCover.qml">widgets/qml/MediaCover.qml</file> - <file alias="MenuLabel.qml">widgets/qml/MenuLabel.qml</file> - <file alias="ListSubtitleLabel.qml">widgets/qml/ListSubtitleLabel.qml</file> - <file alias="HorizontalResizeHandle.qml">widgets/qml/HorizontalResizeHandle.qml</file> - <file alias="PointingTooltip.qml">widgets/qml/PointingTooltip.qml</file> - <file alias="FrostedGlassEffect.qml">widgets/qml/FrostedGlassEffect.qml</file> - <file alias="CheckedDelegate.qml">widgets/qml/CheckedDelegate.qml</file> - <file alias="PageLoader.qml">widgets/qml/PageLoader.qml</file> - <file alias="LocalTabBar.qml">widgets/qml/LocalTabBar.qml</file> - <file alias="IconButton.qml">widgets/qml/IconButton.qml</file> - <file alias="DragItem.qml">widgets/qml/DragItem.qml</file> - <file alias="DefaultShadow.qml">widgets/qml/DefaultShadow.qml</file> - <file alias="OverlayMenu.qml">widgets/qml/OverlayMenu.qml</file> - <file alias="ToolTipExt.qml">widgets/qml/ToolTipExt.qml</file> - <file alias="MLDragItem.qml">widgets/qml/MLDragItem.qml</file> - <file alias="ScaledImage.qml">widgets/qml/ScaledImage.qml</file> - <file alias="DropShadowImage.qml">widgets/qml/DropShadowImage.qml</file> - <file alias="DoubleShadow.qml">widgets/qml/DoubleShadow.qml</file> - <file alias="CSDThemeButtonSet.qml">widgets/qml/CSDThemeButtonSet.qml</file> - <file alias="CSDThemeButton.qml">widgets/qml/CSDThemeButton.qml</file> - <file alias="TextFieldExt.qml">widgets/qml/TextFieldExt.qml</file> - <file alias="SliderExt.qml">widgets/qml/SliderExt.qml</file> - <file alias="FadingEdge.qml">widgets/qml/FadingEdge.qml</file> - <file alias="FadingEdgeForListView.qml">widgets/qml/FadingEdgeForListView.qml</file> - <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> - <file alias="ExpandGridItemView.qml">widgets/qml/ExpandGridItemView.qml</file> - </qresource> - <qresource prefix="/network"> - <file alias="AddressbarButton.qml">network/qml/AddressbarButton.qml</file> - <file alias="BrowseDeviceView.qml">network/qml/BrowseDeviceView.qml</file> - <file alias="BrowseDisplay.qml">network/qml/BrowseDisplay.qml</file> - <file alias="BrowseHomeDisplay.qml">network/qml/BrowseHomeDisplay.qml</file> - <file alias="BrowseTreeDisplay.qml">network/qml/BrowseTreeDisplay.qml</file> - <file alias="BrowseTreeHeader.qml">network/qml/BrowseTreeHeader.qml</file> - <file alias="DiscoverDisplay.qml">network/qml/DiscoverDisplay.qml</file> - <file alias="DiscoverUrlDisplay.qml">network/qml/DiscoverUrlDisplay.qml</file> - <file alias="NetworkCustomCover.qml">network/qml/NetworkCustomCover.qml</file> - <file alias="NetworkGridItem.qml">network/qml/NetworkGridItem.qml</file> - <file alias="NetworkThumbnailItem.qml">network/qml/NetworkThumbnailItem.qml</file> - <file alias="NetworkAddressbar.qml">network/qml/NetworkAddressbar.qml</file> - <file alias="ServicesHomeDisplay.qml">network/qml/ServicesHomeDisplay.qml</file> - <file alias="ServicesManage.qml">network/qml/ServicesManage.qml</file> - <file alias="ServicesSources.qml">network/qml/ServicesSources.qml</file> - </qresource> - <qresource prefix="/medialibrary"> - <file alias="MediaGroupDisplay.qml">medialibrary/qml/MediaGroupDisplay.qml</file> - <file alias="MusicAlbums.qml">medialibrary/qml/MusicAlbums.qml</file> - <file alias="MusicDisplay.qml">medialibrary/qml/MusicDisplay.qml</file> - <file alias="MusicGenres.qml">medialibrary/qml/MusicGenres.qml</file> - <file alias="VideoDisplay.qml">medialibrary/qml/VideoDisplay.qml</file> - <file alias="VideoAll.qml">medialibrary/qml/VideoAll.qml</file> - <file alias="VideoAllDisplay.qml">medialibrary/qml/VideoAllDisplay.qml</file> - <file alias="VideoAllSubDisplay.qml">medialibrary/qml/VideoAllSubDisplay.qml</file> - <file alias="PlaylistMediaList.qml">medialibrary/qml/PlaylistMediaList.qml</file> - <file alias="PlaylistMedia.qml">medialibrary/qml/PlaylistMedia.qml</file> - <file alias="PlaylistMediaDisplay.qml">medialibrary/qml/PlaylistMediaDisplay.qml</file> - <file alias="VideoPlaylistsDisplay.qml">medialibrary/qml/VideoPlaylistsDisplay.qml</file> - <file alias="MusicAlbumsDisplay.qml">medialibrary/qml/MusicAlbumsDisplay.qml</file> - <file alias="MusicAlbumsGridExpandDelegate.qml">medialibrary/qml/MusicAlbumsGridExpandDelegate.qml</file> - <file alias="MusicArtist.qml">medialibrary/qml/MusicArtist.qml</file> - <file alias="MusicArtistDelegate.qml">medialibrary/qml/MusicArtistDelegate.qml</file> - <file alias="MusicArtistsAlbums.qml">medialibrary/qml/MusicArtistsAlbums.qml</file> - <file alias="MusicAllArtists.qml">medialibrary/qml/MusicAllArtists.qml</file> - <file alias="MusicArtistsDisplay.qml">medialibrary/qml/MusicArtistsDisplay.qml</file> - <file alias="MusicGenresDisplay.qml">medialibrary/qml/MusicGenresDisplay.qml</file> - <file alias="MusicPlaylistsDisplay.qml">medialibrary/qml/MusicPlaylistsDisplay.qml</file> - <file alias="MusicTracksDisplay.qml">medialibrary/qml/MusicTracksDisplay.qml</file> - <file alias="MusicTrackListDisplay.qml">medialibrary/qml/MusicTrackListDisplay.qml</file> - <file alias="ArtistTopBanner.qml">medialibrary/qml/ArtistTopBanner.qml</file> - <file alias="UrlListDisplay.qml">medialibrary/qml/UrlListDisplay.qml</file> - <file alias="VideoInfoExpandPanel.qml">medialibrary/qml/VideoInfoExpandPanel.qml</file> - <file alias="VideoListDisplay.qml">medialibrary/qml/VideoListDisplay.qml</file> - <file alias="VideoGridItem.qml">medialibrary/qml/VideoGridItem.qml</file> - <file alias="AudioGridItem.qml">medialibrary/qml/AudioGridItem.qml</file> - <file alias="VideoRecentVideos.qml">medialibrary/qml/VideoRecentVideos.qml</file> - <file alias="VideoGridDisplay.qml">medialibrary/qml/VideoGridDisplay.qml</file> - <file alias="VideoRecentVideosDisplay.qml">medialibrary/qml/VideoRecentVideosDisplay.qml</file> - </qresource> - <qresource prefix="/style"> - <file alias="AcrylicController.qml">style/AcrylicController.qml</file> - <file alias="qmldir">style/qmldir</file> - <file alias="VLCStyle.qml">style/VLCStyle.qml</file> - <file alias="VLCIcons.qml">style/VLCIcons.qml</file> - </qresource> - <qresource prefix="/playlist"> - <file alias="PlaylistDelegate.qml">playlist/qml/PlaylistDelegate.qml</file> - <file alias="PlaylistListView.qml">playlist/qml/PlaylistListView.qml</file> - <file alias="PlaylistToolbar.qml">playlist/qml/PlaylistToolbar.qml</file> - <file alias="PlaylistDetachedWindow.qml">playlist/qml/PlaylistDetachedWindow.qml</file> - </qresource> - <qresource prefix="/menus"> - <file alias="Menubar.qml">menus/qml/Menubar.qml</file> - <file alias="GlobalShortcuts.qml">menus/qml/GlobalShortcuts.qml</file> - <file alias="GlobalShortcutsMedialib.qml">menus/qml/GlobalShortcutsMedialib.qml</file> - <file alias="ShortcutExt.qml">menus/qml/ShortcutExt.qml</file> - </qresource> - <qresource prefix="/player"> - <file alias="qmldir">player/qml/qmldir</file> - <file alias="Player.qml">player/qml/Player.qml</file> - <file alias="ControlBar.qml">player/qml/ControlBar.qml</file> - <file alias="ResumeDialog.qml">player/qml/ResumeDialog.qml</file> - <file alias="SliderBar.qml">player/qml/SliderBar.qml</file> - <file alias="TracksMenu.qml">player/qml/TracksMenu.qml</file> - <file alias="TracksPage.qml">player/qml/TracksPage.qml</file> - <file alias="TracksPageSpeed.qml">player/qml/TracksPageSpeed.qml</file> - <file alias="TracksPageAudio.qml">player/qml/TracksPageAudio.qml</file> - <file alias="TracksPageSubtitle.qml">player/qml/TracksPageSubtitle.qml</file> - <file alias="TracksListPage.qml">player/qml/TracksListPage.qml</file> - <file alias="ControlbarControls.qml">player/qml/ControlbarControls.qml</file> - <file alias="MiniPlayer.qml">player/qml/MiniPlayer.qml</file> - <file alias="TopBar.qml">player/qml/TopBar.qml</file> - <file alias="PIPPlayer.qml">player/qml/PIPPlayer.qml</file> - <file alias="PlayerControlLayout.qml">player/qml/PlayerControlLayout.qml</file> - <file alias="ControlLayout.qml">player/qml/ControlLayout.qml</file> - <file alias="ControlRepeater.qml">player/qml/ControlRepeater.qml</file> - <file alias="PlaybackSpeed.qml">player/qml/PlaybackSpeed.qml</file> - <file alias="PlayerPlaylistVisibilityFSM.qml">player/qml/PlayerPlaylistVisibilityFSM.qml</file> - <file alias="PlayerBlurredBackground.qml">player/qml/PlayerBlurredBackground.qml</file> - <file alias="Bookmarks.qml">player/qml/Bookmarks.qml</file> - <file alias="NavigationBox.qml">player/qml/NavigationBox.qml</file> - </qresource> - <qresource prefix="/player/controlbarcontrols"> - <file alias="HighResolutionTimeWidget.qml">player/qml/controlbarcontrols/HighResolutionTimeWidget.qml</file> - <file alias="ArtworkInfoWidget.qml">player/qml/controlbarcontrols/ArtworkInfoWidget.qml</file> - <file alias="AspectRatioWidget.qml">player/qml/controlbarcontrols/AspectRatioWidget.qml</file> - <file alias="AtoBButton.qml">player/qml/controlbarcontrols/AtoBButton.qml</file> - <file alias="BackButton.qml">player/qml/controlbarcontrols/BackButton.qml</file> - <file alias="BookmarkButton.qml">player/qml/controlbarcontrols/BookmarkButton.qml</file> - <file alias="ChapterNextButton.qml">player/qml/controlbarcontrols/ChapterNextButton.qml</file> - <file alias="ChapterPreviousButton.qml">player/qml/controlbarcontrols/ChapterPreviousButton.qml</file> - <file alias="DvdMenuButton.qml">player/qml/controlbarcontrols/DvdMenuButton.qml</file> - <file alias="ExpandingSpacerWidget.qml">player/qml/controlbarcontrols/ExpandingSpacerWidget.qml</file> - <file alias="ExtendedSettingsButton.qml">player/qml/controlbarcontrols/ExtendedSettingsButton.qml</file> - <file alias="FasterButton.qml">player/qml/controlbarcontrols/FasterButton.qml</file> - <file alias="FrameButton.qml">player/qml/controlbarcontrols/FrameButton.qml</file> - <file alias="FullscreenButton.qml">player/qml/controlbarcontrols/FullscreenButton.qml</file> - <file alias="InfoButton.qml">player/qml/controlbarcontrols/InfoButton.qml</file> - <file alias="LangButton.qml">player/qml/controlbarcontrols/LangButton.qml</file> - <file alias="LoopButton.qml">player/qml/controlbarcontrols/LoopButton.qml</file> - <file alias="MenuButton.qml">player/qml/controlbarcontrols/MenuButton.qml</file> - <file alias="NavigationBoxButton.qml">player/qml/controlbarcontrols/NavigationBoxButton.qml</file> - <file alias="NavigationWidget.qml">player/qml/controlbarcontrols/NavigationWidget.qml</file> - <file alias="NextButton.qml">player/qml/controlbarcontrols/NextButton.qml</file> - <file alias="OpenButton.qml">player/qml/controlbarcontrols/OpenButton.qml</file> - <file alias="PlaybackSpeedButton.qml">player/qml/controlbarcontrols/PlaybackSpeedButton.qml</file> - <file alias="PlayButton.qml">player/qml/controlbarcontrols/PlayButton.qml</file> - <file alias="PlayerSwitchButton.qml">player/qml/controlbarcontrols/PlayerSwitchButton.qml</file> - <file alias="PlaylistButton.qml">player/qml/controlbarcontrols/PlaylistButton.qml</file> - <file alias="PreviousButton.qml">player/qml/controlbarcontrols/PreviousButton.qml</file> - <file alias="ProgramButton.qml">player/qml/controlbarcontrols/ProgramButton.qml</file> - <file alias="QuitButton.qml">player/qml/controlbarcontrols/QuitButton.qml</file> - <file alias="RandomButton.qml">player/qml/controlbarcontrols/RandomButton.qml</file> - <file alias="RendererButton.qml">player/qml/controlbarcontrols/RendererButton.qml</file> - <file alias="RecordButton.qml">player/qml/controlbarcontrols/RecordButton.qml</file> - <file alias="ReverseButton.qml">player/qml/controlbarcontrols/ReverseButton.qml</file> - <file alias="SkipBackButton.qml">player/qml/controlbarcontrols/SkipBackButton.qml</file> - <file alias="SkipForwardButton.qml">player/qml/controlbarcontrols/SkipForwardButton.qml</file> - <file alias="SlowerButton.qml">player/qml/controlbarcontrols/SlowerButton.qml</file> - <file alias="SnapshotButton.qml">player/qml/controlbarcontrols/SnapshotButton.qml</file> - <file alias="SpacerWidget.qml">player/qml/controlbarcontrols/SpacerWidget.qml</file> - <file alias="StopButton.qml">player/qml/controlbarcontrols/StopButton.qml</file> - <file alias="TeletextButton.qml">player/qml/controlbarcontrols/TeletextButton.qml</file> - <file alias="TeletextColorButton.qml">player/qml/controlbarcontrols/TeletextColorButton.qml</file> - <file alias="TeletextWidget.qml">player/qml/controlbarcontrols/TeletextWidget.qml</file> - <file alias="VolumeWidget.qml">player/qml/controlbarcontrols/VolumeWidget.qml</file> - <file alias="Fallback.qml">player/qml/controlbarcontrols/Fallback.qml</file> - </qresource> - <qresource prefix="/dialogs"> - <file alias="CustomDialog.qml">dialogs/dialogs/qml/CustomDialog.qml</file> - <file alias="Dialogs.qml">dialogs/dialogs/qml/Dialogs.qml</file> - <file alias="ModalDialog.qml">dialogs/dialogs/qml/ModalDialog.qml</file> - <file alias="WindowDialog.qml">dialogs/dialogs/qml/WindowDialog.qml</file> - <file alias="EditorDummyButton.qml">dialogs/toolbar/qml/EditorDummyButton.qml</file> - <file alias="EditorDNDDelegate.qml">dialogs/toolbar/qml/EditorDNDDelegate.qml</file> - <file alias="ToolbarEditorButtonList.qml">dialogs/toolbar/qml/ToolbarEditorButtonList.qml</file> - <file alias="ToolbarEditor.qml">dialogs/toolbar/qml/ToolbarEditor.qml</file> - <file alias="ToolbarEditorDialog.qml">dialogs/toolbar/qml/ToolbarEditorDialog.qml</file> - <file alias="EditorDNDView.qml">dialogs/toolbar/qml/EditorDNDView.qml</file> - <file alias="EditorTabButton.qml">dialogs/toolbar/qml/EditorTabButton.qml</file> - </qresource> -</RCC>
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/style/qmldir
Deleted
@@ -1,3 +0,0 @@ -singleton VLCStyle VLCStyle.qml -singleton VLCIcons VLCIcons.qml -singleton AcrylicController AcrylicController.qml
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/Helpers.js
Deleted
@@ -1,126 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2021 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. - *****************************************************************************/ - -.pragma library - -function clamp(num, min, max) { - return num <= min ? min : num >= max ? max : num; -} - -function isValidInstanceOf(object, type) { - return (!!object && (object instanceof type)) -} - -// NOTE: This allows us to force another 'reason' even when the item has activeFocus. -function enforceFocus(item, reason) { - if (item.activeFocus && item.focusReason === reason) - return - - item.focus = false; - - item.forceActiveFocus(reason); -} - -function applyVolume(player, delta) { - // Degrees to steps for standard mouse - delta = delta / 8 / 15 - - const steps = Math.ceil(Math.abs(delta)) - - player.muted = false - - if (delta > 0) - player.setVolumeUp(steps) - else - player.setVolumeDown(steps) -} - -function pointInRadius(x, y, radius) { - return (x * x + y * y < radius * radius) -} - -// checks if point `pos` lies in rect `rect` -function contains(rect, pos) { - return (clamp(pos.x, rect.x, rect.x + rect.width) === pos.x) - && (clamp(pos.y, rect.y, rect.y + rect.height) === pos.y) -} - -function isInteger(data) { - return (typeof data === 'number' && (data % 1) === 0) -} - -function compareFloat(a, b) { - return (Math.abs(a - b) < Number.EPSILON) -} - -function alignUp(a, b) { - return Math.ceil(a / b) * b -} - -function alignDown(a, b) { - return Math.floor(a / b) * b -} - -function isSortedIntegerArrayConsecutive(array) { - for (let i = 1; i < array.length; ++i) { - if ((arrayi - arrayi - 1) !== 1) - return false - } - - return true -} - -function itemsMovable(sortedItemIndexes, targetIndex) { - return !isSortedIntegerArrayConsecutive(sortedItemIndexes) || - (targetIndex > (sortedItemIndexessortedItemIndexes.length - 1 + 1) || - targetIndex < sortedItemIndexes0) -} - -/** - * calculate content y for flickable such that item with given param will be fully visible - * @param type:Flickable flickable - * @param type:real y - * @param type:real height - * @param type:real topMargin - * @param type:real bottomMargin - * @return type:real appropriate contentY for flickable - */ -function flickablePositionContaining(flickable, y, height, topMargin, bottomMargin) { - const itemTopY = flickable.originY + y - const itemBottomY = itemTopY + height - - const viewTopY = flickable.contentY - const viewBottomY = viewTopY + flickable.height - - let newContentY - - if (itemTopY < viewTopY) - //item above view - newContentY = itemTopY - topMargin - else if (itemBottomY > viewBottomY) - //item below view - newContentY = itemBottomY + bottomMargin - flickable.height - else - newContentY = flickable.contentY - - return newContentY -} - -function isArray(obj) { - return (obj?.length !== undefined) ?? false -}
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/configure.ac -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/configure.ac
Changed
@@ -1890,23 +1890,105 @@ AS_HELP_STRING(--enable-rust, enable building Rust modules (default disabled))) AS_IF(test "${enable_rust}" = "yes", + + rust_target_flags= + AS_IF(test "$vlc_winstore_app" = "1", + rust_target_flags="${rust_target_flags} --uwp" + ) + AS_IF(test "${win_ucrt_build}" = "yes", + rust_target_flags="${rust_target_flags} --ucrt" + ) + AS_IF(test "${HAVE_TVOS}" = "1", + rust_target_flags="${rust_target_flags} --darwin=tvos" + , + AS_IF(test "${HAVE_WATCHOS}" = "1", + rust_target_flags="${rust_target_flags} --darwin=watchos" + , + AS_IF(test "${HAVE_XROS}" = "1", + rust_target_flags="${rust_target_flags} --darwin=xros" + , + AS_IF(test "${HAVE_IOS}" = "1", + rust_target_flags="${rust_target_flags} --darwin=ios" + , + AS_IF(test "${HAVE_OSX}" = "1", + rust_target_flags="${rust_target_flags} --darwin=macos" + ) + ) + ) + ) + ) + + AC_MSG_CHECKING(Rust target) + rust_target=$(${srcdir}/contrib/src/get-rust-target.sh \ + ${rust_target_flags} \ + ${host}) + ac_status=$? + AS_IF(test $ac_status = 0, + AC_MSG_RESULT(${rust_target}) + AC_SUBST(RUST_TARGET, "${rust_target}") + , + AC_MSG_RESULT(unsupported) + AC_MSG_ERROR(Unsupported Rust target for ${host}) + ) + + AS_IF(test -z "${CARGO_HOME}" -a "${host}" != "${build}", + AC_MSG_CHECKING(CARGO_HOME from contribs) + AS_IF(test -d "${CONTRIB_DIR}/../bin/.cargo", + CARGO_HOME=$(cd "${CONTRIB_DIR}/../bin/.cargo" && pwd -P) + AC_MSG_RESULT(${CARGO_HOME}) + , + AC_MSG_RESULT(not found) + ) + ) + + RUST_ENV= + AS_IF(test -n "${CARGO_HOME}", + RUST_ENV="${RUST_ENV} CARGO_HOME=\"${CARGO_HOME}\"" + AS_IF(test -x "${CARGO_HOME}/bin/cargo", + ac_cv_prog_CARGO="${CARGO_HOME}/bin/cargo" + ) + AS_IF(test -x "${CARGO_HOME}/bin/rustc", + ac_cv_prog_RUSTC="${CARGO_HOME}/bin/rustc" + ) + ) + + AS_IF(test "${host}" != "${build}", + dnl RUSTUP_HOME is needed to cross-compile Rust + AS_IF(test -z "${RUSTUP_HOME}", + AC_MSG_CHECKING(RUSTUP_HOME from contribs) + AS_IF(test -d "${CONTRIB_DIR}/../bin/.rustup", + RUSTUP_HOME=$(cd "${CONTRIB_DIR}/../bin/.rustup" && pwd -P) + AC_MSG_RESULT(${RUSTUP_HOME}) + , + AC_MSG_RESULT(not found) + ) + ) + ) + + AS_IF(test -n "${RUSTUP_HOME}", + RUST_ENV="${RUST_ENV} RUSTUP_HOME=\"${RUSTUP_HOME}\"" + ) + AC_CHECK_PROGS(RUSTC, rustc, no) AS_IF(test "$RUSTC" = "no", AC_MSG_ERROR(rustc not found but required to build Rust modules) ) - AS_IF(test "${host}" = "${build}", - AC_CACHE_CHECK(rustc host target, ac_cv_rustc_host_target, - ac_cv_rustc_host_target=$($RUSTC --verbose --version | grep "host:" | cut -d" " -f2-)) - AS_IF(test -n "${ac_cv_rustc_host_target}", - AC_SUBST(RUST_TARGET, "$ac_cv_rustc_host_target"), - AC_MSG_ERROR(failed to extract rustc host target)) + + AC_MSG_CHECKING(Rust compiler supports ${rust_target}) + ac_try="echo 'fn main() {}' | ${RUST_ENV} \"${RUSTC}\" --target=${rust_target} --emit=dep-info - -o -" + (eval "$ac_try") 2>&5 + ac_status=$? + AS_IF(test $ac_status = 0, + AC_MSG_RESULT(yes) , - AC_MSG_ERROR(cross compilation is not yet supported for Rust modules (${host} != ${build})) + AC_MSG_RESULT(no) + AC_MSG_ERROR(Required target ${rust_target} missing (using ${RUST_ENV})) ) AC_CHECK_PROGS(CARGO, cargo, no) AS_IF(test "$CARGO" = "no", AC_MSG_ERROR(cargo not found. cargo is required to build Rust modules) ) + AC_SUBST(RUST_ENV) AC_DEFINE(ENABLE_RUST, 1, Define to 1 for building rust modules.) ) AM_CONDITIONAL(HAVE_RUST, test "${enable_rust}" = "yes") @@ -4212,6 +4294,7 @@ AM_CONDITIONAL(HAVE_QT_GUI_PRIVATE, test "${have_qt_gui_private}" = "yes") AM_CONDITIONAL(HAVE_QT_CORE_PRIVATE, test "${have_qt_core_private}" = "yes") AM_CONDITIONAL(HAVE_FXC, test "${have_fxc}" = "yes") +AM_CONDITIONAL(HAVE_QT67, test "${QT_VERSION_MAJ}" -gt "6" || (test "${QT_VERSION_MAJ}" = "6" && test "${QT_VERSION_MIN}" -ge "7")) dnl dnl detect kde4-config patch (used for kde solids).
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/contrib/bootstrap -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/contrib/bootstrap
Changed
@@ -296,6 +296,10 @@ then add_make_enabled "HAVE_BITCODE_ENABLED" fi + if test "$BUILDFORSIMULATOR" + then + add_make_enabled "HAVE_SIMULATOR" + fi ;; *bsd*) MAKE=gmake
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/contrib/src/cargo-c/rules.mak -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/contrib/src/cargo-c/rules.mak
Changed
@@ -3,7 +3,7 @@ CARGOC_VERSION := 0.9.29 ifdef BUILD_RUST -PKGS_TOOLS += cargo-c +# PKGS_TOOLS += cargo-c ifneq ($(call system_tool_majmin, cargo-capi --version),) PKGS_FOUND += cargo-c @@ -11,11 +11,7 @@ endif -ifdef HAVE_CROSS_COMPILE -DEPS_cargo-c = rustc-cross $(DEPS_rustc-cross) -else DEPS_cargo-c = rustc $(DEPS_rustc) -endif .sum-cargo-c: touch $@ @@ -32,5 +28,5 @@ .cargo-c: +unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH CFLAGS CPPFLAGS LDFLAGS; \ - $(CARGO) install --locked $(CARGOC_FEATURES) cargo-c --version $(CARGOC_VERSION) + $(CARGO_NATIVE) install --target=$(RUST_HOST) --locked $(CARGOC_FEATURES) cargo-c --version $(CARGOC_VERSION) touch $@
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/contrib/src/get-rust-target.sh
Added
@@ -0,0 +1,215 @@ +#!/bin/sh +# SPDX-License-Identifier: ISC +# Copyright (C) 2024 VideoLabs, VLC authors and VideoLAN +# +# Authors: Denis Charmet <typx@dinauz.org> +# Steve Lhomme <robux4@videolabs.io> +# +# Transform a compilation triplet into a Rust Tier 1 and Tier 2 target +# based on https://doc.rust-lang.org/rustc/platform-support.html + +DARWIN= +ARCH= +OS= +UWP= +UCRT= +SIMULATOR= +TRIPLET= + +abort_err() +{ + echo "ERROR: $1" >&2 + exit 1 +} + +return_triplet() +{ + echo "$1" + exit 0 +} + +validate_darwin() +{ + D=$(echo $1 | cut -f2 -d"=") + case $D in + macos) + DARWIN=macos + ;; + ios) + DARWIN=ios + ;; + tvos) + DARWIN=tvos + ;; + watchos) + DARWIN=watchos + ;; + xros) + DARWIN=xros + ;; + *) + abort_err "Unsupported Darwin variant '$D'" + ;; + esac +} + +validate_triplet() +{ + TRIPLET=$1 + ARCH=$(echo $1 | cut -f 1 -d '-') + UNUSED=$(echo $1 | cut -f 2 -d '-') + OS=$(echo $1 | cut -f 3 -d '-') + REST=$(echo $1 | cut -f 4 -d '-') + + if test ! -z "$REST"; then + OS=$REST + fi + if test -z "$ARCH" || test -z "$UNUSED" || test -z "$OS"; then + abort_err "Unsupported triplet '$1'" + fi +} + +print_usage() +{ + echo "Usage: $0 --ucrt --uwp --darwin {macos,ios,tvos,watchos,xros} --simulator triplet" +} + + +for ARG in "$@"; do + case $ARG in + --uwp) + UWP=1 + ;; + --ucrt) + UCRT=1 + ;; + --simulator) + SIMULATOR=1 + ;; + --darwin=*) + validate_darwin $ARG + ;; + *-*-*) + validate_triplet $ARG + break + ;; + *) + print_usage + abort_err "Unknown parameter $ARG" + ;; + esac +done + +case $OS in + mingw32|mingw32ucrt|mingw32uwp) + if test ! -z "$UWP"; then + abort_err "UWP Windows is Tier 3" + fi + if test ! -z "$UCRT"; then + return_triplet $ARCH-pc-windows-gnullvm + else + return_triplet $ARCH-pc-windows-gnu + fi + ;; + + android) + case $ARCH in + aarch64|i686|x86_64) + return_triplet $TRIPLET + ;; + esac + ;; + + androideabi) + case $ARCH in + arm|armv7|thumbv7neon) + return_triplet $TRIPLET + ;; + esac + ;; + + darwin*) + case $DARWIN in + macos) + case $ARCH in + aarch64|arm64) + return_triplet aarch64-apple-darwin + ;; + x86_64) + return_triplet x86_64-apple-darwin + ;; + esac + ;; + + ios) + if test ! -z "$SIMULATOR"; then + case $ARCH in + aarch64|arm64) + return_triplet aarch64-apple-ios-sim + ;; + esac + else + case $ARCH in + aarch64|arm64) + return_triplet aarch64-apple-ios + ;; + x86_64) + return_triplet x86_64-apple-ios + ;; + esac + fi + ;; + + esac + abort_err "Unsupported Darwin triplet '$TRIPLET' for '$DARWIN'" + ;; + + gnueabihf) + case $ARCH in + arm|armv7|thumbv7neon) + return_triplet $ARCH-unknown-linux-gnueabihf + ;; + esac + ;; + + gnu) + case $ARCH in + riscv64) + return_triplet riscv64gc-unknown-linux-gnu + ;; + x86_64|aarch64|i686|loongarch64|powerpc|powerpc64|powerpcle|s390x|i586|sparc64) + return_triplet $ARCH-unknown-linux-gnu + ;; + esac + ;; + + netbsd) + case $ARCH in + x86_64) + return_triplet x86_64-unknown-netbsd + ;; + esac + ;; + + freebsd) + case $ARCH in + x86_64) + return_triplet x86_64-unknown-freebsd + ;; + esac + ;; + + emscripten) + case $ARCH in + wasm32) + return_triplet wasm32-unknown-emscripten + ;; + esac + ;; + + *) + abort_err "Unknown OS '$OS'" + ;; +esac + +abort_err "Unsupported triplet '$TRIPLET'"
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/contrib/src/main-rust.mak -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/contrib/src/main-rust.mak
Changed
@@ -7,64 +7,46 @@ RUST_VERSION_MIN=1.63.0 ifdef HAVE_WIN32 +ifdef HAVE_WINSTORE +RUST_TARGET_FLAGS += --uwp +endif ifdef HAVE_UCRT # does not work as Tier 2 before that RUST_VERSION_MIN=1.79.0 - -ifndef HAVE_WINSTORE # UWP is available as Tier 3 -ifeq ($(HOST),i686-w64-mingw32) -RUST_TARGET = i686-pc-windows-gnullvm # ARCH is i386 -else ifneq ($(HOST),armv7-w64-mingw32) -# Not supported on armv7 -RUST_TARGET = $(ARCH)-pc-windows-gnullvm -endif # archs -endif # WINSTORE -else # MSVCRT -ifeq ($(HOST),i686-w64-mingw32) -RUST_TARGET = i686-pc-windows-gnu # ARCH is i386 -else ifeq ($(HOST),x86_64-w64-mingw32) -RUST_TARGET = $(ARCH)-pc-windows-gnu -else -# Not supported on armv7/aarch64 yet -endif # archs -endif # MSVCRT -else ifdef HAVE_ANDROID -RUST_TARGET = $(HOST) -else ifdef HAVE_IOS -ifneq ($(ARCH),arm) # iOS 32bit is Tier 3 -ifneq ($(ARCH),i386) # iOS 32bit is Tier 3 -ifndef HAVE_TVOS # tvOS is Tier 3 -RUST_TARGET = $(ARCH)-apple-ios -endif +RUST_TARGET_FLAGS += --ucrt endif endif -else ifdef HAVE_MACOSX -RUST_TARGET = $(ARCH)-apple-darwin -# else ifdef HAVE_SOLARIS -# Solaris x86_64 is Tier 3 -# RUST_TARGET = x86_64-sun-solaris -else ifdef HAVE_LINUX -ifeq ($(HOST),arm-linux-gnueabihf) -RUST_TARGET = arm-unknown-linux-gnueabihf #add eabihf -else -ifeq ($(HOST),riscv64-linux-gnu) -RUST_TARGET = riscv64gc-unknown-linux-gnu + +ifdef HAVE_DARWIN_OS +ifdef HAVE_TVOS +RUST_TARGET_FLAGS += --darwin=tvos +else ifdef HAVE_WATCHOS +RUST_TARGET_FLAGS += --darwin=watchos +else ifdef HAVE_IOS +RUST_TARGET_FLAGS += --darwin=ios else -RUST_TARGET = $(ARCH)-unknown-linux-gnu +RUST_TARGET_FLAGS += --darwin=macos +endif +ifdef HAVE_SIMULATOR +RUST_TARGET_FLAGS += --simulator endif endif -else ifdef HAVE_BSD -RUST_TARGET = $(HOST) -else ifdef HAVE_EMSCRIPTEN -RUST_TARGET = $(HOST) + +ifneq ($(findstring darwin,$(BUILD)),) +RUST_BUILD_FLAGS += --darwin=macos endif +RUST_TARGET := $(shell $(SRC)/get-rust-target.sh $(RUST_TARGET_FLAGS) $(HOST) 2>/dev/null || echo FAIL) +RUST_HOST := $(shell $(SRC)/get-rust-target.sh $(RUST_BUILD_FLAGS) $(BUILD) 2>/dev/null || echo FAIL) + +ifneq ($(RUST_HOST),FAIL) # For now, VLC don't support Tier 3 platforms (ios 32bit, tvOS). # Supporting a Tier 3 platform means building an untested rust toolchain. # TODO Let's hope tvOS move from Tier 3 to Tier 2 before the VLC 4.0 release. -ifneq ($(RUST_TARGET),) +ifneq ($(RUST_TARGET),FAIL) BUILD_RUST="1" endif +endif RUSTUP_HOME= $(BUILDBINDIR)/.rustup CARGO_HOME = $(BUILDBINDIR)/.cargo @@ -84,12 +66,17 @@ CARGO_ENV = TARGET_CC="$(CC)" TARGET_AR="$(AR)" TARGET_RANLIB="$(RANLIB)" \ TARGET_CFLAGS="$(CFLAGS)" RUSTFLAGS="$(RUSTFLAGS)" +CARGO_ENV_NATIVE = TARGET_CC="$(BUILDCC)" TARGET_AR="$(BUILDAR)" TARGET_RANLIB="$(BUILDRANLIB)" \ + TARGET_CFLAGS="$(BUILDCFLAGS)" ifneq ($(call system_tool_majmin, cargo --version),) CARGO = RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) $(CARGO_ENV) cargo +CARGO_NATIVE = RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) $(CARGO_ENV_NATIVE) cargo else CARGO = . $(CARGO_HOME)/env && \ RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) $(CARGO_ENV) cargo +CARGO_NATIVE = . $(CARGO_HOME)/env && \ + RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) $(CARGO_ENV_NATIVE) cargo endif CARGO_INSTALL_ARGS = --target=$(RUST_TARGET) --prefix=$(PREFIX) \
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/contrib/src/rav1e/rules.mak -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/contrib/src/rav1e/rules.mak
Changed
@@ -23,12 +23,11 @@ # we may not need cargo if the tarball is downloaded, but it will be needed by rav1e anyway ifdef HAVE_CROSS_COMPILE -DEPS_rav1e-vendor = rustc-cross $(DEPS_rustc-cross) DEPS_rav1e = rustc-cross $(DEPS_rustc-cross) else -DEPS_rav1e-vendor = rustc $(DEPS_rustc) DEPS_rav1e = rustc $(DEPS_rustc) endif +DEPS_rav1e-vendor = rustc $(DEPS_rustc) DEPS_rav1e += rav1e-vendor $(DEPS_rav1e-vendor) cargo-c $(DEPS_cargo-c) # rav1e-vendor @@ -37,7 +36,7 @@ $(RM) -R $@ mkdir -p $@ tar xzfo $(TARBALLS)/rav1e-$(RAV1E_VERSION).tar.gz -C $@ --strip-components=1 - cd $@ && $(CARGO) vendor --locked rav1e-$(RAV1E_VERSION)-vendor + cd $@ && $(CARGO_NATIVE) vendor --locked rav1e-$(RAV1E_VERSION)-vendor cd $@ && tar -jcf rav1e-$(RAV1E_VERSION)-vendor.tar.bz2 rav1e-$(RAV1E_VERSION)-vendor install $@/rav1e-$(RAV1E_VERSION)-vendor.tar.bz2 "$(TARBALLS)" # cd $@ && sha512sum rav1e-$(RAV1E_VERSION)-vendor.tar.bz2 > SHA512SUMS
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/contrib/src/rustc/rules.mak -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/contrib/src/rustc/rules.mak
Changed
@@ -17,13 +17,14 @@ RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) rustup endif -ifeq ($(call system_tool_matches_min, cargo --version,$(RUST_VERSION_MIN)),) +ifeq ($(call system_tool_matches_min, echo 'fn main() {}' | rustc --target=$(RUST_HOST) --emit=dep-info - -o /dev/null 2>/dev/null && rustc --target=$(RUST_HOST) --version,$(RUST_VERSION_MIN)),) PKGS_FOUND += rustc -# TODO detect if the target is available -# PKGS_FOUND += rustc-cross else DEPS_rustc = rustup $(DEPS_rustup) endif +ifeq ($(call system_tool_matches_min, echo 'fn main() {}' | rustc --target=$(RUST_TARGET) --emit=dep-info - -o /dev/null 2>/dev/null && rustc --target=$(RUST_TARGET) --version,$(RUST_VERSION_MIN)),) +PKGS_FOUND += rustc-cross +endif endif
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/extras/ci/gitlab-ci.yml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/extras/ci/gitlab-ci.yml
Changed
@@ -20,7 +20,7 @@ variables: VLC_TEST_TIMEOUT: 60 - VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64-posix:20240612181044 + VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64-posix:20240722111928 VLC_WIN_LLVM_MSVCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-msvcrt:20240617101054 VLC_WIN_LLVM_UCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-ucrt:20240617101054 VLC_DEBIAN_IMAGE: registry.videolan.org/vlc-debian-unstable:20240402131352 @@ -381,10 +381,10 @@ - | # We split in two different commands to handle the case where # the coverage will be generated on different jobs later. - # Note: qt6-assets_qrc.cpp, qt6-qml_qrc.cpp, qt6-shaders_qrc.cpp, qt6-windows_qrc.cpp need to be remove from the report since their + # Note: qt generated files need to be remove from the report since their # coverage should not be checked. It leads to gcovr having trouble # parsing the coverage otherwise. - gcovr -r "${CI_PROJECT_DIR}/" --json "${CI_PROJECT_DIR}/${CI_JOB_NAME}.cov.json" -j$NCPU --gcov-ignore-parse-errors=negative_hits.warn_once_per_file --exclude build-meson/modules/gui/qt/qt6-assets_qrc.cpp --exclude build-meson/modules/gui/qt/qt6-qml_qrc.cpp --exclude build-meson/modules/gui/qt/shaders/qt6-shaders_qrc.cpp --exclude build-meson/modules/gui/qt/qt6-windows_qrc.cpp + gcovr -r "${CI_PROJECT_DIR}/" --json "${CI_PROJECT_DIR}/${CI_JOB_NAME}.cov.json" -j$NCPU --gcov-ignore-parse-errors=negative_hits.warn_once_per_file --exclude "build-meson/modules/gui/qt/.*_qrc.cpp" --exclude "build-meson/modules/gui/qt/.*_assets.cpp" - mkdir html-coverage - >
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/extras/package/apple/build.sh -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/extras/package/apple/build.sh
Changed
@@ -637,6 +637,9 @@ export BUILDFORIOS="yes" export BUILDFORWATCHOS="yes" fi +if "$VLC_HOST_PLATFORM_SIMULATOR" = "yes" ; then + export BUILDFORSIMULATOR="yes" +fi # Default to "make" if there is no MAKE env variable MAKE=${MAKE:-make}
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/extras/package/macosx/VLC.xcodeproj/project.pbxproj -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/extras/package/macosx/VLC.xcodeproj/project.pbxproj
Changed
@@ -85,6 +85,7 @@ 5317FE04294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5317FE03294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m */; }; 532572032C3D79D80068DEC3 /* VLCLibrarySegmentBookmarkedLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 532572022C3D79D80068DEC3 /* VLCLibrarySegmentBookmarkedLocation.m */; }; 532572062C3EF3710068DEC3 /* VLCLibraryWindowNavigationSidebarOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 532572052C3EF3710068DEC3 /* VLCLibraryWindowNavigationSidebarOutlineView.m */; }; + 5325720F2C4966630068DEC3 /* VLCLibraryShowsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325720E2C4966630068DEC3 /* VLCLibraryShowsDataSource.m */; }; 5325C57D29302E6800B2B63A /* VLCLibraryAudioViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */; }; 533B5D2C29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 533B5D2B29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.m */; }; 534E73E229D2EDB1009982DE /* VLCBookmarksTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 534E73E129D2EDB1009982DE /* VLCBookmarksTableViewDelegate.m */; }; @@ -300,6 +301,8 @@ 532572022C3D79D80068DEC3 /* VLCLibrarySegmentBookmarkedLocation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibrarySegmentBookmarkedLocation.m; sourceTree = "<group>"; }; 532572042C3EF3710068DEC3 /* VLCLibraryWindowNavigationSidebarOutlineView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryWindowNavigationSidebarOutlineView.h; sourceTree = "<group>"; }; 532572052C3EF3710068DEC3 /* VLCLibraryWindowNavigationSidebarOutlineView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryWindowNavigationSidebarOutlineView.m; sourceTree = "<group>"; }; + 5325720D2C4966630068DEC3 /* VLCLibraryShowsDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryShowsDataSource.h; sourceTree = "<group>"; }; + 5325720E2C4966630068DEC3 /* VLCLibraryShowsDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryShowsDataSource.m; sourceTree = "<group>"; }; 5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryAudioViewController.m; sourceTree = "<group>"; }; 5325C57C29302E6800B2B63A /* VLCLibraryAudioViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAudioViewController.h; sourceTree = "<group>"; }; 533B5D2A29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCBookmarksTableViewDataSource.h; sourceTree = "<group>"; }; @@ -1554,6 +1557,8 @@ 53B447EB293BB47A00857588 /* video-library */ = { isa = PBXGroup; children = ( + 5325720D2C4966630068DEC3 /* VLCLibraryShowsDataSource.h */, + 5325720E2C4966630068DEC3 /* VLCLibraryShowsDataSource.m */, 536EFC37295E521600F4CB13 /* VLCLibraryVideoViewController.h */, 536EFC38295E521600F4CB13 /* VLCLibraryVideoViewController.m */, 53B447F0293BB47A00857588 /* VLCLibraryVideoGroupDescriptor.h */, @@ -2068,6 +2073,7 @@ 53ED473C29CBC64200795DB1 /* NSPasteboardItem+VLCAdditions.m in Sources */, 7D713D362201DC640042BEB7 /* VLCLibraryWindow.xib in Sources */, 1CCC88EE2078A3D500E5626F /* VLCStatusBarIconMainMenu.xib in Sources */, + 5325720F2C4966630068DEC3 /* VLCLibraryShowsDataSource.m in Sources */, 1CCC88EF2078A3D500E5626F /* VLCFullScreenPanel.xib in Sources */, 536283F5291146BC00640C15 /* VLCLibraryCollectionViewSupplementaryDetailView.m in Sources */, 531343E72A8E7B94007AEDFA /* VLCLibraryWindowNavigationSidebarViewController.m in Sources */,
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/Makefile.am -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/Makefile.am
Changed
@@ -198,6 +198,7 @@ demux/mkv/chapter_command.hpp demux/mkv/chapter_command.cpp \ demux/mkv/chapter_command_dvd.hpp demux/mkv/chapter_command_dvd.cpp \ demux/mkv/chapter_command_script.hpp demux/mkv/chapter_command_script.cpp \ + demux/mkv/chapter_command_script_common.hpp demux/mkv/chapter_command_script_common.cpp \ demux/mkv/stream_io_callback.hpp demux/mkv/stream_io_callback.cpp \ demux/mkv/vlc_colors.c demux/mkv/vlc_colors.h \ demux/vobsub.h \
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/meson.build -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/meson.build
Changed
@@ -275,6 +275,7 @@ 'mkv/chapter_command.cpp', 'mkv/chapter_command_dvd.cpp', 'mkv/chapter_command_script.cpp', + 'mkv/chapter_command_script_common.cpp', 'mkv/stream_io_callback.cpp', 'mkv/vlc_colors.c', 'mp4/libmp4.c',
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/mkv/chapter_command.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/chapter_command.hpp
Changed
@@ -89,7 +89,6 @@ struct vlc_logger *l; chapter_codec_vm & vm; }; - } // namespace #endif
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/mkv/chapter_command_script.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/chapter_command_script.cpp
Changed
@@ -1,7 +1,7 @@ // Copyright (C) 2003-2024 VLC authors and VideoLAN // SPDX-License-Identifier: LGPL-2.1-or-later // -// chapter_command_script.cpp : DVD codec for Matroska Chapter Codecs +// chapter_command_script.cpp : Matroska Script Codec for Matroska Chapter Codecs // Authors: Laurent Aimar <fenrir@via.ecp.fr> // Steve Lhomme <steve.lhomme@free.fr> @@ -11,6 +11,7 @@ namespace mkv { +//Matroska Script const std::string matroska_script_interpretor_c::CMD_MS_GOTO_AND_PLAY = "GotoAndPlay"; // see http://www.matroska.org/technical/specs/chapters/index.html#mscript @@ -65,36 +66,4 @@ return b_result; } -bool matroska_script_codec_c::Enter() -{ - bool f_result = false; - ChapterProcess::iterator index = enter_cmds.begin(); - while ( index != enter_cmds.end() ) - { - if ( (*index).GetSize() ) - { - vlc_debug( l, "Matroska Script enter command" ); - f_result |= interpreter.Interpret( (*index).GetBuffer(), (*index).GetSize() ); - } - ++index; - } - return f_result; -} - -bool matroska_script_codec_c::Leave() -{ - bool f_result = false; - ChapterProcess::iterator index = leave_cmds.begin(); - while ( index != leave_cmds.end() ) - { - if ( (*index).GetSize() ) - { - vlc_debug( l, "Matroska Script leave command" ); - f_result |= interpreter.Interpret( (*index).GetBuffer(), (*index).GetSize() ); - } - ++index; - } - return f_result; -} - } // namespace
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/mkv/chapter_command_script.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/chapter_command_script.hpp
Changed
@@ -8,42 +8,39 @@ #ifndef VLC_MKV_CHAPTER_COMMAND_SCRIPT_HPP_ #define VLC_MKV_CHAPTER_COMMAND_SCRIPT_HPP_ -#include "chapter_command.hpp" +#include "chapter_command_script_common.hpp" namespace mkv { -class matroska_script_interpretor_c +class matroska_script_interpretor_c : public matroska_script_interpreter_common_c { public: matroska_script_interpretor_c( struct vlc_logger *log, chapter_codec_vm & vm_ ) - :l( log ) - ,vm( vm_ ) + :matroska_script_interpreter_common_c(log, vm_) {} - bool Interpret( const binary * p_command, size_t i_size ); + bool Interpret( const binary * p_command, size_t i_size ) override; - // DVD command IDs + // Matroska Script commands static const std::string CMD_MS_GOTO_AND_PLAY; -protected: - struct vlc_logger *l; - chapter_codec_vm & vm; }; - -class matroska_script_codec_c : public chapter_codec_cmds_c +class matroska_script_codec_c : public matroska_script_codec_common_c { public: - matroska_script_codec_c( struct vlc_logger *log, chapter_codec_vm & vm_ ) - :chapter_codec_cmds_c( log, vm_, MATROSKA_CHAPTER_CODEC_NATIVE ) - ,interpreter( log, vm_ ) + matroska_script_codec_c( struct vlc_logger *log, chapter_codec_vm & vm_, matroska_script_interpretor_c & interpreter_) + :matroska_script_codec_common_c( log, vm_, MATROSKA_CHAPTER_CODEC_NATIVE ) + ,interpreter( interpreter_ ) {} - bool Enter(); - bool Leave(); + matroska_script_interpreter_common_c & get_interpreter() override + { + return interpreter; + } protected: - matroska_script_interpretor_c interpreter; + matroska_script_interpretor_c & interpreter; }; } // namespace
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/chapter_command_script_common.cpp
Added
@@ -0,0 +1,47 @@ +// Copyright (C) 2024 VLC authors and VideoLAN +// SPDX-License-Identifier: LGPL-2.1-or-later +// +// chapter_command_script_common.cpp : +// Common file for Matroska JS and Matroska Script +// Authors: Laurent Aimar <fenrir@via.ecp.fr> +// Steve Lhomme <steve.lhomme@free.fr> +// Khalid Masum <khalid.masum.92@gmail.com> + + +#include "chapter_command_script_common.hpp" + +namespace mkv { + +bool matroska_script_codec_common_c::Enter() +{ + bool f_result = false; + ChapterProcess::iterator index = enter_cmds.begin(); + while ( index != enter_cmds.end() ) + { + if ( (*index).GetSize() ) + { + vlc_debug( l, "Matroska Script enter command" ); + f_result |= get_interpreter().Interpret( (*index).GetBuffer(), (*index).GetSize() ); + } + ++index; + } + return f_result; +} + +bool matroska_script_codec_common_c::Leave() +{ + bool f_result = false; + ChapterProcess::iterator index = leave_cmds.begin(); + while ( index != leave_cmds.end() ) + { + if ( (*index).GetSize() ) + { + vlc_debug( l, "Matroska Script leave command" ); + f_result |= get_interpreter().Interpret( (*index).GetBuffer(), (*index).GetSize() ); + } + ++index; + } + return f_result; +} + +} // namespace
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/chapter_command_script_common.hpp
Added
@@ -0,0 +1,49 @@ +// Copyright (C) 2003-2024 VLC authors and VideoLAN +// SPDX-License-Identifier: LGPL-2.1-or-later +// +// chapter_command_script.hpp : MatroskaScript codec for Matroska Chapter Codecs +// Authors: Laurent Aimar <fenrir@via.ecp.fr> +// Steve Lhomme <steve.lhomme@free.fr> + +#ifndef VLC_MKV_CHAPTER_COMMAND_SCRIPT_COMMON_HPP_ +#define VLC_MKV_CHAPTER_COMMAND_SCRIPT_COMMON_HPP_ + +#include "chapter_command.hpp" + +namespace mkv { + +class matroska_script_interpreter_common_c +{ +public: + matroska_script_interpreter_common_c( struct vlc_logger *log, chapter_codec_vm & vm_ ) + :l( log ) + ,vm( vm_ ) + {} + + virtual ~matroska_script_interpreter_common_c() = default; + + // DVD command IDs + virtual bool Interpret( const binary * p_command, size_t i_size ) = 0; + +protected: + struct vlc_logger *l; + chapter_codec_vm & vm; +}; + +class matroska_script_codec_common_c : public chapter_codec_cmds_c +{ +public: + + matroska_script_codec_common_c( struct vlc_logger *log, chapter_codec_vm &vm_, enum chapter_codec_id codec_id) + :chapter_codec_cmds_c(log, vm_, codec_id) + {} + + bool Enter(); + bool Leave(); + + virtual matroska_script_interpreter_common_c & get_interpreter()=0; +}; + +} // namespace + +#endif // VLC_MKV_CHAPTER_COMMAND_SCRIPT_HPP_
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/mkv/demux.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/demux.hpp
Changed
@@ -28,6 +28,7 @@ #include "chapter_command.hpp" #include "chapter_command_dvd.hpp" +#include "chapter_command_script.hpp" #include "events.hpp" #include <memory> @@ -123,6 +124,19 @@ return dvd_interpretor.get(); } + matroska_script_interpretor_c * GetMatroskaScriptInterpreter() + { + if (!ms_interpreter) + { + try { + ms_interpreter = std::make_unique<matroska_script_interpretor_c> ( vlc_object_logger( &demuxer ), *this ); + } catch ( const std::bad_alloc & ) { + } + } + + return ms_interpreter.get(); + } + uint8_t palette44; vlc_mutex_t lock_demuxer; @@ -132,6 +146,7 @@ private: virtual_segment_c *p_current_vsegment = nullptr; std::unique_ptr<dvd_command_interpretor_c> dvd_interpretor; // protected by lock_demuxer + std::unique_ptr<matroska_script_interpretor_c> ms_interpreter; }; } // namespace
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/demux/mkv/matroska_segment_parse.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/demux/mkv/matroska_segment_parse.cpp
Changed
@@ -1442,7 +1442,16 @@ if( MKV_CHECKED_PTR_DECL_CONST( p_codec_id, KaxChapterProcessCodecID, proc ) ) { if ( p_codec_id->GetValue() == MATROSKA_CHAPTER_CODEC_NATIVE ) - p_ccodec = new matroska_script_codec_c( vlc_object_logger( &vars.obj->sys.demuxer ), vars.obj->sys ); + { + auto interpreter = vars.obj->sys.GetMatroskaScriptInterpreter(); + if (unlikely(interpreter == nullptr)) + debug( vars, "failed to get the Matroska Script interpreter "); + else + p_ccodec = new matroska_script_codec_c( + vlc_object_logger( &vars.obj->sys.demuxer ), + vars.obj->sys, *interpreter + ); + } else if ( p_codec_id->GetValue() == MATROSKA_CHAPTER_CODEC_DVD ) { auto interepreter = vars.obj->sys.GetDVDInterpretor();
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/Makefile.am -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/Makefile.am
Changed
@@ -183,6 +183,8 @@ gui/macosx/library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.m \ gui/macosx/library/home-library/VLCLibraryHomeViewVideoGridContainerView.h \ gui/macosx/library/home-library/VLCLibraryHomeViewVideoGridContainerView.m \ + gui/macosx/library/video-library/VLCLibraryShowsDataSource.h \ + gui/macosx/library/video-library/VLCLibraryShowsDataSource.m \ gui/macosx/library/video-library/VLCLibraryVideoViewController.h \ gui/macosx/library/video-library/VLCLibraryVideoViewController.m \ gui/macosx/library/video-library/VLCLibraryVideoGroupDescriptor.h \
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/UI/VLCDetachedAudioWindow.xib -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/UI/VLCDetachedAudioWindow.xib
Changed
@@ -15,38 +15,49 @@ <window title="VLC media player" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="detachedaudiowindow" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="2" userLabel="Detached Audio Window" customClass="VLCDetachedAudioWindow"> <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" topStrut="YES"/> - <rect key="contentRect" x="91" y="467" width="239" height="239"/> - <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/> + <rect key="contentRect" x="91" y="467" width="500" height="500"/> + <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/> <value key="minSize" type="size" width="239" height="239"/> <view key="contentView" id="4" customClass="VLCTrackingView"> - <rect key="frame" x="0.0" y="0.0" width="239" height="239"/> + <rect key="frame" x="0.0" y="0.0" width="500" height="500"/> <autoresizingMask key="autoresizingMask"/> <subviews> <customView wantsLayer="YES" translatesAutoresizingMaskIntoConstraints="NO" id="s7h-2z-AKB" customClass="VLCMainVideoViewOverlayView"> - <rect key="frame" x="0.0" y="0.0" width="239" height="239"/> + <rect key="frame" x="0.0" y="0.0" width="500" height="500"/> <subviews> <customView appearanceType="darkAqua" translatesAutoresizingMaskIntoConstraints="NO" id="5" customClass="VLCBottomBarView"> - <rect key="frame" x="0.0" y="0.0" width="239" height="77"/> + <rect key="frame" x="0.0" y="0.0" width="500" height="115"/> <subviews> <customView translatesAutoresizingMaskIntoConstraints="NO" id="65" customClass="VLCDragDropView"> - <rect key="frame" x="0.0" y="0.0" width="239" height="77"/> + <rect key="frame" x="0.0" y="0.0" width="500" height="115"/> <subviews> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hHQ-ue-m9C" customClass="VLCWrappableTextField"> - <rect key="frame" x="8" y="71" width="223" height="19"/> + <rect key="frame" x="8" y="63" width="484" height="19"/> <shadow key="shadow" blurRadius="5"> <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </shadow> <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Label" id="JyX-u7-Hkb"> - <font key="font" textStyle="title3" name=".SFNS-Regular"/> + <font key="font" metaFont="systemMedium" size="15"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zpq-en-EAi" customClass="VLCWrappableTextField"> + <rect key="frame" x="8" y="82" width="484" height="28"/> + <shadow key="shadow" blurRadius="5"> + <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </shadow> + <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Label" id="y5L-0x-avz"> + <font key="font" metaFont="systemBold" size="24"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> <customView translatesAutoresizingMaskIntoConstraints="NO" id="Vae-cT-EEI" userLabel="Play controls group"> - <rect key="frame" x="72" y="10" width="96" height="32"/> + <rect key="frame" x="202" y="10" width="96" height="32"/> <subviews> <button translatesAutoresizingMaskIntoConstraints="NO" id="11"> - <rect key="frame" x="0.0" y="-1.5" width="32" height="35"/> + <rect key="frame" x="0.0" y="-1" width="32" height="35"/> <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="backward.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="backward.fill" controlSize="large" continuous="YES" enabled="NO" imageScaling="proportionallyUpOrDown" id="14"> <behavior key="behavior" lightByContents="YES"/> <font key="font" metaFont="system"/> @@ -72,7 +83,7 @@ </connections> </button> <button translatesAutoresizingMaskIntoConstraints="NO" id="12"> - <rect key="frame" x="64" y="-1.5" width="32" height="35"/> + <rect key="frame" x="64" y="-1" width="32" height="35"/> <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="forward.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="forward.fill" controlSize="large" continuous="YES" enabled="NO" imageScaling="proportionallyUpOrDown" id="13"> <behavior key="behavior" lightByContents="YES"/> <font key="font" metaFont="system"/> @@ -100,10 +111,7 @@ </constraints> </customView> <slider hidden="YES" horizontalHuggingPriority="200" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="20" customClass="VLCPlaybackProgressSlider"> - <rect key="frame" x="8" y="50" width="176" height="18"/> - <constraints> - <constraint firstAttribute="height" constant="14" id="MYp-CS-yPe"/> - </constraints> + <rect key="frame" x="8" y="45" width="484" height="20"/> <sliderCell key="cell" controlSize="small" continuous="YES" state="on" alignment="left" maxValue="1" doubleValue="0.32600000000000001" tickMarkPosition="above" sliderType="linear" id="23" customClass="VLCPlaybackProgressSliderCell"> <font key="font" size="12" name="Helvetica"/> </sliderCell> @@ -111,8 +119,8 @@ <action selector="timeSliderAction:" target="3" id="46"/> </connections> </slider> - <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField"> - <rect key="frame" x="185" y="53" width="46" height="13"/> + <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField"> + <rect key="frame" x="446" y="34" width="46" height="13"/> <constraints> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="42" id="EvZ-Sy-m25"/> <constraint firstAttribute="height" constant="13" id="LYT-Sd-Gf6"/> @@ -126,19 +134,55 @@ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> + <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xR4-jH-evo"> + <rect key="frame" x="373" y="10" width="117" height="32"/> + <subviews> + <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tJC-hA-c4P" customClass="VLCImageButton"> + <rect key="frame" x="0.0" y="-1" width="32" height="33"/> + <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="volume.3.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="f8j-zW-474"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <constraints> + <constraint firstAttribute="width" constant="32" id="SWZ-0H-DDq"/> + <constraint firstAttribute="width" secondItem="tJC-hA-c4P" secondAttribute="height" multiplier="1:1" id="g7m-Pi-ahM"/> + </constraints> + </button> + <slider verticalHuggingPriority="750" horizontalCompressionResistancePriority="800" translatesAutoresizingMaskIntoConstraints="NO" id="z4Z-7V-IQk" customClass="VLCVolumeSlider"> + <rect key="frame" x="35" y="8" width="84" height="17"/> + <constraints> + <constraint firstAttribute="width" constant="80" id="Z0g-An-VZe"/> + </constraints> + <sliderCell key="cell" controlSize="mini" continuous="YES" state="on" alignment="left" maxValue="512" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="KnE-u5-aI1" customClass="VLCVolumeSliderCell"/> + </slider> + </subviews> + <visibilityPriorities> + <integer value="1000"/> + <integer value="1000"/> + </visibilityPriorities> + <customSpacing> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + </customSpacing> + </stackView> </subviews> <constraints> - <constraint firstItem="20" firstAttribute="top" secondItem="hHQ-ue-m9C" secondAttribute="bottom" constant="5" id="C7Y-fI-Dqe"/> - <constraint firstItem="hHQ-ue-m9C" firstAttribute="top" secondItem="65" secondAttribute="top" constant="5" id="JZy-V4-KFy"/> + <constraint firstAttribute="trailing" secondItem="20" secondAttribute="trailing" constant="10" id="0Wf-Ej-xo8"/> + <constraint firstItem="xR4-jH-evo" firstAttribute="trailing" secondItem="20" secondAttribute="trailing" id="7Q8-0W-utn"/> + <constraint firstItem="20" firstAttribute="top" secondItem="hHQ-ue-m9C" secondAttribute="bottom" id="C7Y-fI-Dqe"/> + <constraint firstItem="xR4-jH-evo" firstAttribute="centerY" secondItem="Vae-cT-EEI" secondAttribute="centerY" id="FyE-dh-oPk"/> <constraint firstItem="hHQ-ue-m9C" firstAttribute="trailing" secondItem="9" secondAttribute="trailing" id="KgS-6V-onl"/> <constraint firstItem="20" firstAttribute="leading" secondItem="65" secondAttribute="leading" constant="10" id="KrJ-x3-HIr"/> + <constraint firstItem="zpq-en-EAi" firstAttribute="leading" secondItem="hHQ-ue-m9C" secondAttribute="leading" id="RXc-05-Wtz"/> <constraint firstItem="Vae-cT-EEI" firstAttribute="centerX" secondItem="65" secondAttribute="centerX" id="Rf0-0E-Wiz"/> - <constraint firstItem="9" firstAttribute="centerY" secondItem="20" secondAttribute="centerY" id="SW9-5i-MQL"/> <constraint firstAttribute="bottom" secondItem="Vae-cT-EEI" secondAttribute="bottom" constant="10" id="T6V-Vf-TOT"/> <constraint firstItem="hHQ-ue-m9C" firstAttribute="leading" secondItem="20" secondAttribute="leading" id="VP9-OW-xmq"/> - <constraint firstItem="9" firstAttribute="leading" secondItem="20" secondAttribute="trailing" constant="5" id="gyE-0N-u6t"/> + <constraint firstItem="9" firstAttribute="top" secondItem="20" secondAttribute="bottom" id="Xfc-cS-E8y"/> + <constraint firstItem="zpq-en-EAi" firstAttribute="top" secondItem="65" secondAttribute="top" constant="5" id="dgI-qM-hLE"/> + <constraint firstItem="hHQ-ue-m9C" firstAttribute="top" secondItem="zpq-en-EAi" secondAttribute="bottom" id="hbj-oW-kLQ"/> <constraint firstAttribute="trailing" secondItem="9" secondAttribute="trailing" constant="10" id="p5i-nM-pBs"/> <constraint firstItem="Vae-cT-EEI" firstAttribute="top" secondItem="20" secondAttribute="bottom" constant="5" id="pfB-W2-CWB"/> + <constraint firstAttribute="trailing" secondItem="zpq-en-EAi" secondAttribute="trailing" constant="10" id="qYc-DT-uwy"/> </constraints> </customView> </subviews> @@ -147,7 +191,6 @@ <constraint firstItem="65" firstAttribute="leading" secondItem="5" secondAttribute="leading" id="84j-is-ZZ4"/> <constraint firstAttribute="bottom" secondItem="65" secondAttribute="bottom" id="WrS-PS-vpi"/> <constraint firstItem="65" firstAttribute="top" secondItem="5" secondAttribute="top" id="ecn-UJ-dvK"/> - <constraint firstAttribute="height" constant="90" id="z2X-5w-wme"/> </constraints> <shadow key="shadow" blurRadius="10"> <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> @@ -173,23 +216,25 @@ <outlet property="controlsBar" destination="3" id="69"/> <outlet property="overlayView" destination="s7h-2z-AKB" id="VGk-aw-I4j"/> </connections> - <point key="canvasLocation" x="138.5" y="146.5"/> + <point key="canvasLocation" x="264.5" y="267"/> </window> <customObject id="3" userLabel="Detached Window Controls Bar" customClass="VLCControlsBarCommon"> <connections> <outlet property="backwardButton" destination="11" id="aQU-S3-4ZI"/> + <outlet property="detailLabel" destination="hHQ-ue-m9C" id="YOa-QZ-nmx"/> <outlet property="dropView" destination="65" id="9kL-XQ-Akn"/> <outlet property="forwardButton" destination="12" id="f7L-YR-p1H"/> <outlet property="playButton" destination="10" id="Gsq-tx-qf3"/> - <outlet property="playingItemDisplayField" destination="hHQ-ue-m9C" id="gz6-0p-XEt"/> + <outlet property="playingItemDisplayField" destination="zpq-en-EAi" id="9js-uK-Dgf"/> <outlet property="timeField" destination="9" id="uzI-2c-bs3"/> <outlet property="timeSlider" destination="20" id="AFS-sq-vuw"/> </connections> </customObject> </objects> <resources> - <image name="backward.fill" catalog="system" width="19" height="12"/> - <image name="forward.fill" catalog="system" width="19" height="12"/> + <image name="backward.fill" catalog="system" width="20" height="12"/> + <image name="forward.fill" catalog="system" width="20" height="12"/> <image name="play.circle.fill" catalog="system" width="15" height="15"/> + <image name="volume.3.fill" catalog="system" width="22" height="15"/> </resources> </document>
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewFlowLayout.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewFlowLayout.m
Changed
@@ -31,6 +31,7 @@ #import "library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.h" +#import "library/video-library/VLCLibraryShowsDataSource.h" #import "library/video-library/VLCLibraryVideoDataSource.h" #pragma mark - Private data @@ -281,7 +282,8 @@ } else if (dataSource isKindOfClass:VLCLibraryAudioGroupDataSource.class) { layoutAttributesArray addObject:self layoutAttributesForSupplementaryViewOfKind:VLCLibraryCollectionViewAlbumSupplementaryDetailViewKind atIndexPath:self.selectedIndexPath; } else if (dataSource isKindOfClass:VLCLibraryHomeViewVideoContainerViewDataSource.class || - dataSource isKindOfClass:VLCLibraryVideoDataSource.class) { + dataSource isKindOfClass:VLCLibraryVideoDataSource.class || + dataSource isKindOfClass:VLCLibraryShowsDataSource.class) { layoutAttributesArray addObject:self layoutAttributesForSupplementaryViewOfKind:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewKind atIndexPath:self.selectedIndexPath; }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryDataTypes.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryDataTypes.h
Changed
@@ -216,7 +216,21 @@ @end -@interface VLCMediaLibraryMediaItem : VLCAbstractMediaLibraryItem<VLCMediaLibraryItemProtocol> +@interface VLCMediaLibraryShow : VLCAbstractMediaLibraryItem<VLCMediaLibraryItemProtocol> + +- (instancetype)initWithShow:(struct vlc_ml_show_t *)p_show; + +@property (readonly) NSString *name; +@property (readonly) NSString *summary; +@property (readonly) NSString *tvdbId; +@property (readonly) unsigned int releaseYear; +@property (readonly) uint32_t episodeCount; +@property (readonly) uint32_t seasonCount; +@property (readonly) NSArray<VLCMediaLibraryMediaItem *> *episodes; + +@end + +@interface VLCMediaLibraryMediaItem : NSObject<VLCMediaLibraryItemProtocol> + (nullable instancetype)mediaItemForLibraryID:(int64_t)libraryID; + (nullable instancetype)mediaItemForURL:(NSURL *)url;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryDataTypes.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryDataTypes.m
Changed
@@ -293,8 +293,7 @@ - (VLCMediaLibraryMediaItem *)firstMediaItem { - self doesNotRecognizeSelector:_cmd; - return nil; + return self.mediaItems.firstObject; } - (NSArray<VLCMediaLibraryMediaItem *> *)mediaItems @@ -317,12 +316,14 @@ - (void)moveToTrash { - self doesNotRecognizeSelector:_cmd; + self iterateMediaItemsWithBlock:^(VLCMediaLibraryMediaItem * const childMediaItem) { + childMediaItem moveToTrash; + }; } - (void)revealInFinder { - self doesNotRecognizeSelector:_cmd; + self.firstMediaItem revealInFinder; } - (void)iterateMediaItemsWithBlock:(nonnull void (^)(VLCMediaLibraryMediaItem * _Nonnull))mediaItemBlock @@ -380,12 +381,6 @@ return nil; } -- (NSArray<VLCMediaLibraryMediaItem *> *)mediaItems -{ - self doesNotRecognizeSelector:_cmd; - return nil; -} - - (unsigned int)numberOfTracks { self doesNotRecognizeSelector:_cmd; @@ -398,28 +393,6 @@ return VLCMediaLibraryParentGroupTypeUnknown; } -- (void)iterateMediaItemsWithBlock:(void (^)(VLCMediaLibraryMediaItem*))mediaItemBlock -{ - self doesNotRecognizeSelector:_cmd; -} - -- (VLCMediaLibraryMediaItem *)firstMediaItem -{ - return self.mediaItems.firstObject; -} - -- (void)moveToTrash -{ - self iterateMediaItemsWithBlock:^(VLCMediaLibraryMediaItem* childMediaItem) { - childMediaItem moveToTrash; - }; -} - -- (void)revealInFinder -{ - self.firstMediaItem revealInFinder; -} - @end @interface VLCMediaLibraryArtist () @@ -778,6 +751,11 @@ @implementation VLCMediaLibraryMediaItem +@synthesize libraryID = _libraryID; +@synthesize smallArtworkGenerated = _smallArtworkGenerated; +@synthesize smallArtworkMRL = _smallArtworkMRL; +@synthesize primaryActionableDetail = _primaryActionableDetail; +@synthesize secondaryActionableDetail = _secondaryActionableDetail; @synthesize primaryActionableDetailLibraryItem = _primaryActionableDetailLibraryItem; @synthesize secondaryActionableDetailLibraryItem = _secondaryActionableDetailLibraryItem; @@ -836,13 +814,13 @@ { self = super init; if (self && p_mediaItem != NULL && p_mediaLibrary != NULL) { - self.libraryID = p_mediaItem->i_id; - self.smallArtworkGenerated = p_mediaItem->thumbnailsVLC_ML_THUMBNAIL_SMALL.psz_mrl != NULL; - self.smallArtworkMRL = self.smallArtworkGenerated ? toNSStr(p_mediaItem->thumbnailsVLC_ML_THUMBNAIL_SMALL.psz_mrl) : nil; + _libraryID = p_mediaItem->i_id; + _smallArtworkGenerated = p_mediaItem->thumbnailsVLC_ML_THUMBNAIL_SMALL.psz_mrl != NULL; + _smallArtworkMRL = self.smallArtworkGenerated ? toNSStr(p_mediaItem->thumbnailsVLC_ML_THUMBNAIL_SMALL.psz_mrl) : nil; const BOOL isAlbumTrack = p_mediaItem->i_subtype == VLC_ML_MEDIA_SUBTYPE_ALBUMTRACK; - self.primaryActionableDetail = isAlbumTrack; - self.secondaryActionableDetail = isAlbumTrack; + _primaryActionableDetail = isAlbumTrack; + _secondaryActionableDetail = isAlbumTrack; _p_mediaLibrary = p_mediaLibrary; _mediaType = p_mediaItem->i_type; @@ -1368,6 +1346,45 @@ @end +@implementation VLCMediaLibraryShow + +@synthesize episodes = _episodes; + +- (instancetype)initWithShow:(struct vlc_ml_show_t *)p_show +{ + self = super init; + if (self) { + _name = p_show->psz_name ? toNSStr(p_show->psz_name) : @""; + _summary = p_show->psz_summary ? toNSStr(p_show->psz_summary) : @""; + _tvdbId = p_show->psz_tvdb_id ? toNSStr(p_show->psz_tvdb_id) : @""; + _releaseYear = p_show->i_release_year; + _episodeCount = p_show->i_nb_episodes; + _seasonCount = p_show->i_nb_seasons; + + self.libraryID = p_show->i_id; + self.smallArtworkMRL = p_show->psz_artwork_mrl ? toNSStr(p_show->psz_artwork_mrl) : @""; + self.smallArtworkGenerated = self.smallArtworkMRL.length > 0; + self.displayString = self.name; + self.primaryDetailString = + NSString stringWithFormat:_NS("%u seasons, %u episodes"), _seasonCount, _episodeCount; + self.secondaryDetailString = NSString stringWithFormat:_NS("Released in %u"), _releaseYear; + self.durationString = self.secondaryDetailString; + } + return self; +} + +- (NSArray<VLCMediaLibraryMediaItem *> *)episodes +{ + return fetchMediaItemsForLibraryItem(vlc_ml_list_show_episodes, self.libraryID); +} + +- (NSArray<VLCMediaLibraryMediaItem *> *)mediaItems +{ + return self.episodes; +} + +@end + @implementation VLCMediaLibraryEntryPoint - (instancetype)initWithEntryPoint:(struct vlc_ml_folder_t *)p_entryPoint
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryModel.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryModel.h
Changed
@@ -27,13 +27,6 @@ NS_ASSUME_NONNULL_BEGIN -@class VLCMediaLibraryMediaItem; -@class VLCMediaLibraryArtist; -@class VLCMediaLibraryAlbum; -@class VLCMediaLibraryGenre; -@class VLCMediaLibraryEntryPoint; -@protocol VLCMediaLibraryItemProtocol; - extern NSString * const VLCLibraryModelArtistListReset; extern NSString * const VLCLibraryModelAlbumListReset; extern NSString * const VLCLibraryModelGenreListReset; @@ -44,6 +37,7 @@ extern NSString * const VLCLibraryModelVideoMediaListReset; extern NSString * const VLCLibraryModelRecentsMediaListReset; extern NSString * const VLCLibraryModelRecentAudioMediaListReset; +extern NSString * const VLCLibraryModelListOfShowsReset; extern NSString * const VLCLibraryModelAudioMediaItemDeleted; extern NSString * const VLCLibraryModelVideoMediaItemDeleted; @@ -92,6 +86,9 @@ @property (readonly) size_t numberOfRecentAudioMedia; @property (readonly) NSArray <VLCMediaLibraryMediaItem *> *listOfRecentAudioMedia; +@property (readonly) size_t numberOfShows; +@property (readonly) NSArray <VLCMediaLibraryShow *> *listOfShows; + @property (readonly) NSArray <VLCMediaLibraryEntryPoint *> *listOfMonitoredFolders; @property (readonly) NSDictionary<NSNumber *, NSString *> *albumDict;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryModel.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryModel.m
Changed
@@ -37,6 +37,7 @@ NSString * const VLCLibraryModelVideoMediaListReset = @"VLCLibraryModelVideoMediaListReset"; NSString * const VLCLibraryModelRecentsMediaListReset = @"VLCLibraryModelRecentsMediaListReset"; NSString * const VLCLibraryModelRecentAudioMediaListReset = @"VLCLibraryModelRecentAudioMediaListReset"; +NSString * const VLCLibraryModelListOfShowsReset = @"VLCLibraryModelListOfShowsReset"; NSString * const VLCLibraryModelAudioMediaItemDeleted = @"VLCLibraryModelAudioMediaItemDeleted"; NSString * const VLCLibraryModelVideoMediaItemDeleted = @"VLCLibraryModelVideoMediaItemDeleted"; @@ -69,6 +70,7 @@ size_t _initialAlbumCount; size_t _initialArtistCount; size_t _initialGenreCount; + size_t _initialShowCount; size_t _initialRecentsCount; size_t _initialRecentAudioCount; @@ -83,6 +85,7 @@ @property (readwrite, atomic) NSArray *cachedAlbums; @property (readwrite, atomic) NSArray *cachedGenres; @property (readwrite, atomic) NSArray *cachedVideoMedia; +@property (readwrite, atomic) NSArray *cachedListOfShows; @property (readwrite, atomic) NSArray *cachedRecentMedia; @property (readwrite, atomic) NSArray *cachedRecentAudioMedia; @property (readwrite, atomic) NSArray *cachedListOfMonitoredFolders; @@ -91,6 +94,7 @@ - (void)resetCachedListOfArtists; - (void)resetCachedListOfAlbums; - (void)resetCachedListOfGenres; +- (void)resetCachedListOfShows; - (void)resetCachedListOfMonitoredFolders; - (void)mediaItemThumbnailGenerated:(VLCMediaLibraryMediaItem *)mediaItem; - (void)handleMediaItemDeletionEvent:(const vlc_ml_event_t * const)p_event; @@ -115,12 +119,15 @@ { case VLC_ML_EVENT_MEDIA_ADDED: libraryModel resetCachedMediaItemLists; + libraryModel resetCachedListOfShows; // TODO: Handle granularly break; case VLC_ML_EVENT_MEDIA_UPDATED: libraryModel handleMediaItemUpdateEvent:p_event; + libraryModel resetCachedListOfShows; // TODO: Handle granularly break; case VLC_ML_EVENT_MEDIA_DELETED: libraryModel handleMediaItemDeletionEvent:p_event; + libraryModel resetCachedListOfShows; // TODO: Handle granularly break; case VLC_ML_EVENT_MEDIA_THUMBNAIL_GENERATED: if (p_event->media_thumbnail_generated.b_success) { @@ -218,6 +225,7 @@ self->_initialAlbumCount = vlc_ml_count_albums(self->_p_mediaLibrary, &queryParameters); self->_initialArtistCount = vlc_ml_count_artists(self->_p_mediaLibrary, &queryParameters, true); self->_initialGenreCount = vlc_ml_count_genres(self->_p_mediaLibrary, &queryParameters); + self->_initialShowCount = vlc_ml_count_shows(self->_p_mediaLibrary, &queryParameters); queryParameters.i_nbResults = self->_recentMediaLimit; self->_initialRecentsCount = vlc_ml_count_video_history(self->_p_mediaLibrary, &queryParameters); @@ -542,12 +550,55 @@ return _cachedRecentAudioMedia; } +- (void)resetCachedListOfShows +{ + dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{ + vlc_ml_show_list_t * const p_show_list = vlc_ml_list_shows(self->_p_mediaLibrary, NULL); + if (p_show_list == NULL) { + return; + } + const size_t itemCount = p_show_list->i_nb_items; + NSMutableArray * const mutableArray = NSMutableArray alloc initWithCapacity:itemCount; + for (size_t x = 0; x < p_show_list->i_nb_items; x++) { + vlc_ml_show_t * const p_vlc_show = &p_show_list->p_itemsx; + VLCMediaLibraryShow * const show = VLCMediaLibraryShow alloc initWithShow:p_vlc_show; + if (show) { + mutableArray addObject:show; + } + } + vlc_ml_show_list_release(p_show_list); + dispatch_async(dispatch_get_main_queue(), ^{ + self.cachedListOfShows = mutableArray.copy; + self.changeDelegate notifyChange:VLCLibraryModelListOfShowsReset withObject:self; + }); + }); +} + +- (size_t)numberOfShows +{ + if (!_cachedListOfShows) { + self resetCachedListOfShows; + // Return initial count here, otherwise it will return 0 on the first time + return _initialShowCount; + } + return _cachedListOfShows.count; +} + +- (NSArray<VLCMediaLibraryShow *> *)listOfShows +{ + if (!_cachedListOfShows) { + self resetCachedListOfShows; + } + return _cachedListOfShows; +} + - (void)resetCachedMediaItemLists { self resetCachedListOfRecentMedia; self resetCachedListOfRecentAudioMedia; self resetCachedListOfAudioMedia; self resetCachedListOfVideoMedia; + self resetCachedListOfShows; } - (void)resetCachedListOfMonitoredFolders
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibrarySegment.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibrarySegment.h
Changed
@@ -31,6 +31,7 @@ VLCLibraryLowSentinelSegment = -1, VLCLibraryHomeSegment, VLCLibraryVideoSegment, + VLCLibraryShowsVideoSubSegment, VLCLibraryMusicSegment, VLCLibraryArtistsMusicSubSegment, VLCLibraryAlbumsMusicSubSegment,
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibrarySegment.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibrarySegment.m
Changed
@@ -83,7 +83,9 @@ - (NSArray<NSTreeNode *> *)childNodes { - if (self.segmentType == VLCLibraryMusicSegment) { + if (self.segmentType == VLCLibraryVideoSegment) { + return @VLCLibrarySegment segmentWithSegmentType:VLCLibraryShowsVideoSubSegment; + } else if (self.segmentType == VLCLibraryMusicSegment) { return @ VLCLibrarySegment segmentWithSegmentType:VLCLibraryArtistsMusicSubSegment, VLCLibrarySegment segmentWithSegmentType:VLCLibraryAlbumsMusicSubSegment, @@ -159,6 +161,8 @@ return _NS("Genres"); case VLCLibraryVideoSegment: return _NS("Videos"); + case VLCLibraryShowsVideoSubSegment: + return _NS("Shows"); case VLCLibraryBrowseSegment: return _NS("Browse"); case VLCLibraryBrowseBookmarkedLocationSubSegment: @@ -185,6 +189,7 @@ case VLCLibraryGenresMusicSubSegment: return NSImage imageNamed:@"sidebar-music"; case VLCLibraryVideoSegment: + case VLCLibraryShowsVideoSubSegment: return NSImage imageNamed:@"sidebar-movie"; case VLCLibraryBrowseSegment: case VLCLibraryBrowseBookmarkedLocationSubSegment: @@ -222,6 +227,9 @@ case VLCLibraryVideoSegment: return NSImage imageWithSystemSymbolName:@"film.stack" accessibilityDescription:@"Video icon"; + case VLCLibraryShowsVideoSubSegment: + return NSImage imageWithSystemSymbolName:@"tv" + accessibilityDescription:@"Shows icon"; case VLCLibraryBrowseSegment: return NSImage imageWithSystemSymbolName:@"folder" accessibilityDescription:@"Browse icon";
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryWindow.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryWindow.m
Changed
@@ -216,6 +216,9 @@ case VLCLibraryVideoSegment: _currentSelectedViewModeSegment = preferences.videoLibraryViewMode; break; + case VLCLibraryShowsVideoSubSegment: + _currentSelectedViewModeSegment = preferences.showsLibraryViewMode; + break; case VLCLibraryMusicSegment: case VLCLibraryArtistsMusicSubSegment: _currentSelectedViewModeSegment = preferences.artistLibraryViewMode; @@ -251,6 +254,9 @@ case VLCLibraryVideoSegment: self showVideoLibrary; break; + case VLCLibraryShowsVideoSubSegment: + self showShowLibrary; + break; case VLCLibraryMusicSegment: case VLCLibraryArtistsMusicSubSegment: case VLCLibraryAlbumsMusicSubSegment: @@ -298,6 +304,9 @@ case VLCLibraryVideoSegment: preferences.videoLibraryViewMode = _currentSelectedViewModeSegment; break; + case VLCLibraryShowsVideoSubSegment: + preferences.showsLibraryViewMode = _currentSelectedViewModeSegment; + break; case VLCLibraryMusicSegment: case VLCLibraryArtistsMusicSubSegment: preferences.artistLibraryViewMode = _currentSelectedViewModeSegment; @@ -338,6 +347,12 @@ _libraryVideoViewController presentVideoView; } +- (void)showShowLibrary +{ + self.toolbarDelegate layoutForSegment:VLCLibraryShowsVideoSubSegment; + self.libraryVideoViewController presentShowsView; +} + - (void)showAudioLibrary { self.toolbarDelegate layoutForSegment:VLCLibraryMusicSegment;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryWindowNavigationSidebarViewController.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryWindowNavigationSidebarViewController.m
Changed
@@ -131,7 +131,9 @@ VLCLibrarySegment * const segment = VLCLibrarySegment segmentWithSegmentType:segmentType; self.libraryWindow.librarySegmentType = segment.segmentType; - if (segmentType >= VLCLibraryMusicSegment && segmentType <= VLCLibraryGenresMusicSubSegment) { + if (segmentType > VLCLibraryVideoSegment && segmentType <= VLCLibraryShowsVideoSubSegment) { + self.outlineView expandItem:self nodeForSegmentType:VLCLibraryVideoSegment; + } else if (segmentType >= VLCLibraryMusicSegment && segmentType <= VLCLibraryGenresMusicSubSegment) { self.outlineView expandItem:self nodeForSegmentType:VLCLibraryMusicSegment; } else if (segmentType >= VLCLibraryBrowseSegment && segmentType <= VLCLibraryBrowseBookmarkedLocationSubSegment) {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryWindowPersistentPreferences.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryWindowPersistentPreferences.h
Changed
@@ -32,6 +32,7 @@ @property (readwrite, nonatomic) VLCLibraryViewModeSegment homeLibraryViewMode; @property (readwrite, nonatomic) VLCLibraryViewModeSegment videoLibraryViewMode; +@property (readwrite, nonatomic) VLCLibraryViewModeSegment showsLibraryViewMode; @property (readwrite, nonatomic) VLCLibraryViewModeSegment albumLibraryViewMode; @property (readwrite, nonatomic) VLCLibraryViewModeSegment genreLibraryViewMode; @property (readwrite, nonatomic) VLCLibraryViewModeSegment songsLibraryViewMode;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryWindowPersistentPreferences.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryWindowPersistentPreferences.m
Changed
@@ -26,6 +26,7 @@ NSString * const VLCLibraryHomeLibraryViewModePreferenceKey = @"HomeLibraryViewMode"; NSString * const VLCLibraryVideoLibraryViewModePreferenceKey = @"VideoLibraryViewMode"; +NSString * const VLCLibraryShowsLibraryViewModePreferenceKey = @"ShowsLibraryViewMode"; NSString * const VLCLibraryAlbumLibraryViewModePreferenceKey = @"AlbumLibraryViewMode"; NSString * const VLCLibraryGenreLibraryViewModePreferenceKey = @"GenreLibraryViewMode"; NSString * const VLCLibrarySongsLibraryViewModePreferenceKey = @"SongsLibraryViewMode"; @@ -101,6 +102,17 @@ value:videoLibraryViewMode; } +- (VLCLibraryViewModeSegment)showsLibraryViewMode +{ + return self libraryViewModePreferenceWithKey:VLCLibraryShowsLibraryViewModePreferenceKey; +} + +- (void)setShowsLibraryViewMode:(VLCLibraryViewModeSegment)showsLibraryViewMode +{ + self setLibraryWindowViewModePreferenceWithKey:VLCLibraryShowsLibraryViewModePreferenceKey + value:showsLibraryViewMode; +} + - (VLCLibraryViewModeSegment)albumLibraryViewMode { return self libraryViewModePreferenceWithKey:VLCLibraryAlbumLibraryViewModePreferenceKey;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/VLCLibraryWindowToolbarDelegate.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/VLCLibraryWindowToolbarDelegate.m
Changed
@@ -152,6 +152,7 @@ self setViewModeToolbarItemVisible:NO; break; case VLCLibraryVideoSegment: + case VLCLibraryShowsVideoSubSegment: self setForwardsBackwardsToolbarItemsVisible:NO; self setSortOrderToolbarItemVisible:YES; self setLibrarySearchToolbarItemVisible:YES;
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/video-library/VLCLibraryShowsDataSource.h
Added
@@ -0,0 +1,43 @@ +/***************************************************************************** + * VLCLibraryShowsDataSource.h: MacOS X interface module + ***************************************************************************** + * Copyright (C) 2024 VLC authors and VideoLAN + * + * Authors: Claudio Cambra <developer@claudiocambra.com> + * + * 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 <Cocoa/Cocoa.h> + +#import "library/VLCLibraryCollectionViewDataSource.h" +#import "library/VLCLibraryTableViewDataSource.h" + +NS_ASSUME_NONNULL_BEGIN + +@class VLCLibraryModel; + +@interface VLCLibraryShowsDataSource : NSObject <VLCLibraryTableViewDataSource, VLCLibraryCollectionViewDataSource> + +@property (readwrite, assign) VLCLibraryModel *libraryModel; +@property (readwrite, assign) NSCollectionView *collectionView; +@property (readwrite, assign) NSTableView *showsTableView; +@property (readwrite, assign) NSTableView *selectedShowTableView; + +- (void)reloadData; + +@end + +NS_ASSUME_NONNULL_END
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/video-library/VLCLibraryShowsDataSource.m
Added
@@ -0,0 +1,251 @@ +/***************************************************************************** + * VLCLibraryShowsDataSource.m: MacOS X interface module + ***************************************************************************** + * Copyright (C) 2024 VLC authors and VideoLAN + * + * Authors: Claudio Cambra <developer@claudiocambra.com> + * + * 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 "VLCLibraryShowsDataSource.h" + +#import "extensions/NSPasteboardItem+VLCAdditions.h" + +#import "library/VLCLibraryCollectionViewItem.h" +#import "library/VLCLibraryCollectionViewFlowLayout.h" +#import "library/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.h" +#import "library/VLCLibraryCollectionViewSupplementaryElementView.h" +#import "library/VLCLibraryModel.h" +#import "library/VLCLibraryRepresentedItem.h" + +@interface VLCLibraryShowsDataSource () + +@property (readwrite, atomic) NSArray<VLCMediaLibraryShow *> *showsArray; + +@end + +@implementation VLCLibraryShowsDataSource + +- (instancetype)init +{ + self = super init; + if(self) { + self connect; + } + return self; +} + +- (void)connect +{ + NSNotificationCenter * const notificationCenter = NSNotificationCenter.defaultCenter; + + notificationCenter addObserver:self + selector:@selector(libraryModelShowsListReset:) + name:VLCLibraryModelListOfShowsReset + object:nil; + + self reloadData; +} + +- (void)disconnect +{ + NSNotificationCenter.defaultCenter removeObserver:self; +} + +- (void)libraryModelShowsListReset:(NSNotification *)notification +{ + self reloadData; +} + +- (void)reloadData +{ + (VLCLibraryCollectionViewFlowLayout *)self.collectionView.collectionViewLayout resetLayout; + + self.showsArray = self.libraryModel.listOfShows; + + self.showsTableView reloadData; + self.selectedShowTableView reloadData; + self.collectionView reloadData; +} + +- (NSUInteger)indexOfMediaItem:(const NSUInteger)libraryId inArray:(NSArray const *)array +{ + return array indexOfObjectPassingTest:^BOOL(const id<VLCMediaLibraryItemProtocol> findItem, + const NSUInteger idx, + BOOL * const stop) { + NSAssert(findItem != nil, @"Collection should not contain nil items"); + return findItem.libraryID == libraryId; + }; +} + +#pragma mark - table view data source and delegation + +- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView +{ + if (tableView == self.showsTableView) { + return self.showsArray.count; + } + + const NSInteger selectedShowRow = self.showsTableView.selectedRow; + if (tableView == self.selectedShowTableView && selectedShowRow > -1) { + VLCMediaLibraryShow * const show = self.showsArrayselectedShowRow; + return show.episodeCount; + } + + return 0; +} + +- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row +{ + const id<VLCMediaLibraryItemProtocol> libraryItem = self libraryItemAtRow:row + forTableView:tableView; + return NSPasteboardItem pasteboardItemWithLibraryItem:libraryItem; +} + +- (id<VLCMediaLibraryItemProtocol>)libraryItemAtRow:(NSInteger)row + forTableView:(NSTableView *)tableView +{ + if (tableView == self.showsTableView) { + return self.showsArrayrow; + } + + const NSInteger selectedShowRow = self.showsTableView.selectedRow; + if (tableView == self.selectedShowTableView && selectedShowRow > -1) { + VLCMediaLibraryShow * const show = self.showsArrayselectedShowRow; + return show.episodesrow; + } + + return nil; +} + +- (NSInteger)rowForLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem +{ + if (libraryItem == nil) { + return NSNotFound; + } + return self indexOfMediaItem:libraryItem.libraryID inArray:self.showsArray; +} + +- (VLCMediaLibraryParentGroupType)currentParentType +{ + return VLCMediaLibraryParentGroupTypeShow; +} + +# pragma mark - collection view data source and delegation + +- (id<VLCMediaLibraryItemProtocol>)libraryItemAtIndexPath:(NSIndexPath *)indexPath + forCollectionView:(NSCollectionView *)collectionView +{ + VLCMediaLibraryShow * const show = self.showsArrayindexPath.section; + return show.episodesindexPath.item; +} + +- (NSIndexPath *)indexPathForLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem +{ + __block NSInteger showEpisodeIndex = NSNotFound; + const NSInteger showIndex = + self.showsArray indexOfObjectPassingTest:^BOOL(VLCMediaLibraryShow * const show, + const NSUInteger idx, + BOOL * const stop) { + showEpisodeIndex = + show.episodes indexOfObjectPassingTest:^BOOL(VLCMediaLibraryMediaItem * const item, + const NSUInteger idx, + BOOL * const stop) { + return item.libraryID == libraryItem.libraryID; + }; + return showEpisodeIndex != NSNotFound; + }; + return showIndex != NSNotFound + ? NSIndexPath indexPathForItem:showEpisodeIndex inSection:showIndex + : nil; +} + +- (NSArray<VLCLibraryRepresentedItem *> *)representedItemsAtIndexPaths:(NSSet<NSIndexPath *> *const)indexPaths + forCollectionView:(NSCollectionView *)collectionView +{ + NSMutableArray<VLCLibraryRepresentedItem *> * const representedItems = + NSMutableArray arrayWithCapacity:indexPaths.count; + + for (NSIndexPath * const indexPath in indexPaths) { + const id<VLCMediaLibraryItemProtocol> libraryItem = + self libraryItemAtIndexPath:indexPath forCollectionView:collectionView; + VLCLibraryRepresentedItem * const representedItem = + VLCLibraryRepresentedItem alloc initWithItem:libraryItem + parentType:self.currentParentType; + representedItems addObject:representedItem; + } + + return representedItems; +} + +- (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView *)collectionView +{ + return self.showsArray.count; +} + +- (NSInteger)collectionView:(NSCollectionView *)collectionView + numberOfItemsInSection:(NSInteger)section +{ + return self.showsArraysection.episodeCount; +} + +- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView + itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath +{ + VLCLibraryCollectionViewItem * const viewItem = + collectionView makeItemWithIdentifier:VLCLibraryCellIdentifier forIndexPath:indexPath; + const id<VLCMediaLibraryItemProtocol> item = + self libraryItemAtIndexPath:indexPath forCollectionView:collectionView; + VLCLibraryRepresentedItem * const representedItem = + VLCLibraryRepresentedItem alloc initWithItem:item parentType:self.currentParentType; + viewItem.representedItem = representedItem; + return viewItem; +} + +- (NSView *)collectionView:(NSCollectionView *)collectionView +viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind + atIndexPath:(NSIndexPath *)indexPath +{ + if(kind isEqualToString:NSCollectionElementKindSectionHeader) { + VLCLibraryCollectionViewSupplementaryElementView * const sectionHeadingView = + collectionView makeSupplementaryViewOfKind:kind + withIdentifier:VLCLibrarySupplementaryElementViewIdentifier + forIndexPath:indexPath; + VLCMediaLibraryShow * const show = self.showsArrayindexPath.section; + sectionHeadingView.stringValue = show.displayString; + return sectionHeadingView; + + } else if (kind isEqualToString:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewKind) { + NSString * const viewIdentifier = + VLCLibraryCollectionViewMediaItemSupplementaryDetailViewIdentifier; + VLCLibraryCollectionViewMediaItemSupplementaryDetailView * const mediaItemDetailView = + collectionView makeSupplementaryViewOfKind:kind + withIdentifier:viewIdentifier + forIndexPath:indexPath; + const id<VLCMediaLibraryItemProtocol> item = self libraryItemAtIndexPath:indexPath + forCollectionView:collectionView; + VLCLibraryRepresentedItem * const representedItem = + VLCLibraryRepresentedItem alloc initWithItem:item parentType:self.currentParentType; + + mediaItemDetailView.representedItem = representedItem; + mediaItemDetailView.selectedItem = collectionView itemAtIndexPath:indexPath; + return mediaItemDetailView; + } + + return nil; +} + +@end
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoDataSource.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoDataSource.h
Changed
@@ -1,5 +1,5 @@ /***************************************************************************** - * VVLCLibraryVideoDataSource.h: MacOS X interface module + * VLCLibraryVideoDataSource.h: MacOS X interface module ***************************************************************************** * Copyright (C) 2019 VLC authors and VideoLAN * @@ -39,7 +39,6 @@ @property (readwrite, assign) NSTableView *groupSelectionTableView; - (void)reloadData; -- (void)setupCollectionView:(NSCollectionView *)collectionView; @end
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoDataSource.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoDataSource.m
Changed
@@ -63,24 +63,6 @@ return self; } -- (void)setupCollectionView:(NSCollectionView *)collectionView -{ - collectionView registerClass:VLCLibraryCollectionViewItem.class - forItemWithIdentifier:VLCLibraryCellIdentifier; - - collectionView registerClass:VLCLibraryCollectionViewSupplementaryElementView.class - forSupplementaryViewOfKind:NSCollectionElementKindSectionHeader - withIdentifier:VLCLibrarySupplementaryElementViewIdentifier; - - NSNib * const mediaItemSupplementaryDetailView = NSNib alloc initWithNibNamed:NSStringFromClass(VLCLibraryCollectionViewMediaItemSupplementaryDetailView.class) bundle:nil; - collectionView registerNib:mediaItemSupplementaryDetailView - forSupplementaryViewOfKind:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewKind - withIdentifier:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewIdentifier; - - collectionView.dataSource = self; - collectionView reloadData; -} - - (NSUInteger)indexOfMediaItem:(const NSUInteger)libraryId inArray:(NSArray const *)array { return array indexOfObjectPassingTest:^BOOL(VLCMediaLibraryMediaItem * const findMediaItem, const NSUInteger idx, BOOL * const stop) { @@ -190,8 +172,16 @@ self->_recentsArray = self.libraryModel listOfRecentMedia; self->_libraryArray = self.libraryModel listOfVideoMedia; - self.groupSelectionTableView reloadData; - self.collectionView reloadData; + + if (self.groupsTableView.dataSource == self) { + self.groupsTableView reloadData; + } + if (self.groupSelectionTableView.dataSource == self) { + self.groupSelectionTableView reloadData; + } + if (self.collectionView.dataSource == self) { + self.collectionView reloadData; + } NSNotificationCenter.defaultCenter postNotificationName:VLCLibraryVideoDataSourceDisplayedCollectionChangedNotification object:self userInfo:nil; @@ -249,18 +239,28 @@ } completionHandler:^(NSIndexSet * const rowIndexSet) { - const NSInteger section = self videoGroupToRow:group; - NSSet<NSIndexPath *> * const indexPathSet = rowIndexSet indexPathSetWithSection:section; - self.collectionView reloadItemsAtIndexPaths:indexPathSet; - - const NSInteger selectedTableViewVideoGroup = self rowToVideoGroup:self.groupsTableView.selectedRow; - if (selectedTableViewVideoGroup == group) { - // Don't regenerate the groups by index as these do not change according to the notification - // Stick to the selection table view - const NSRange columnRange = NSMakeRange(0, self->_groupsTableView.numberOfColumns); - NSIndexSet * const columnIndexSet = NSIndexSet indexSetWithIndexesInRange:columnRange; - self.groupSelectionTableView reloadDataForRowIndexes:rowIndexSet columnIndexes:columnIndexSet; + if (self.collectionView.dataSource == self) { + const NSInteger section = self videoGroupToRow:group; + NSSet<NSIndexPath *> * const indexPathSet = + rowIndexSet indexPathSetWithSection:section; + self.collectionView reloadItemsAtIndexPaths:indexPathSet; + } + + if (self.groupSelectionTableView.dataSource == self) { + const NSInteger selectedTableViewVideoGroup = + self rowToVideoGroup:self.groupsTableView.selectedRow; + if (selectedTableViewVideoGroup == group) { + // Don't regenerate the groups by index as these do not change according to the + // notification, stick to the selection table view + const NSRange columnRange = NSMakeRange(0, self->_groupsTableView.numberOfColumns); + NSIndexSet * const columnIndexSet = + NSIndexSet indexSetWithIndexesInRange:columnRange; + self.groupSelectionTableView reloadDataForRowIndexes:rowIndexSet + columnIndexes:columnIndexSet; + } } + + // Don't bother with the groups table view as we always show "recents" and "videos" there }; } @@ -273,17 +273,24 @@ mediaArray removeObjectAtIndex:mediaItemIndex; - } completionHandler:^(NSIndexSet * const rowIndexSet){ + } completionHandler:^(NSIndexSet * const rowIndexSet) { - const NSInteger section = self videoGroupToRow:group; - NSSet<NSIndexPath *> * const indexPathSet = rowIndexSet indexPathSetWithSection:section; - self.collectionView deleteItemsAtIndexPaths:indexPathSet; + if (self.collectionView.dataSource == self) { + const NSInteger section = self videoGroupToRow:group; + NSSet<NSIndexPath *> * const indexPathSet = + rowIndexSet indexPathSetWithSection:section; + self.collectionView deleteItemsAtIndexPaths:indexPathSet; + } - const NSInteger selectedTableViewVideoGroup = self rowToVideoGroup:self.groupsTableView.selectedRow; - if (selectedTableViewVideoGroup == group) { - // Don't regenerate the groups by index as these do not change according to the notification - // Stick to the selection table view - self.groupSelectionTableView removeRowsAtIndexes:rowIndexSet withAnimation:NSTableViewAnimationSlideUp; + if (self.groupSelectionTableView.dataSource == self) { + const NSInteger selectedTableViewVideoGroup = + self rowToVideoGroup:self.groupsTableView.selectedRow; + if (selectedTableViewVideoGroup == group) { + // Don't regenerate the groups by index as these do not change according to the + // notification, stick to the selection table view + self.groupSelectionTableView removeRowsAtIndexes:rowIndexSet + withAnimation:NSTableViewAnimationSlideUp; + } } }; }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoViewController.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoViewController.h
Changed
@@ -25,6 +25,7 @@ @class VLCLoadingOverlayView; @class VLCLibraryWindow; @class VLCLibraryVideoDataSource; +@class VLCLibraryShowsDataSource; @protocol VLCMediaLibraryItemProtocol; @@ -50,11 +51,13 @@ @property (readonly) VLCLoadingOverlayView *loadingOverlayView; @property (readonly) VLCLibraryVideoDataSource *libraryVideoDataSource; +@property (readonly) VLCLibraryShowsDataSource *libraryShowsDataSource; @property (readonly) NSArray<NSLayoutConstraint *> *videoPlaceholderImageViewSizeConstraints; - (instancetype)initWithLibraryWindow:(VLCLibraryWindow *)libraryWindow; - (void)presentVideoView; +- (void)presentShowsView; - (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem; @end
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoViewController.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/library/video-library/VLCLibraryVideoViewController.m
Changed
@@ -27,6 +27,7 @@ #import "library/VLCLibraryCollectionViewDelegate.h" #import "library/VLCLibraryCollectionViewFlowLayout.h" #import "library/VLCLibraryCollectionViewItem.h" +#import "library/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.h" #import "library/VLCLibraryCollectionViewSupplementaryElementView.h" #import "library/VLCLibraryController.h" #import "library/VLCLibraryModel.h" @@ -41,6 +42,7 @@ #import "library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.h" +#import "library/video-library/VLCLibraryShowsDataSource.h" #import "library/video-library/VLCLibraryVideoDataSource.h" #import "library/video-library/VLCLibraryVideoTableViewDelegate.h" @@ -78,9 +80,8 @@ _splitViewDelegate = VLCLibraryTwoPaneSplitViewDelegate alloc init; self setupPropertiesFromLibraryWindow:libraryWindow; - self setupDataSource; + self setupDataSources; self setupCollectionView; - self setupTableViews; self setupVideoPlaceholderView; self setupVideoLibraryViews; self setupLoadingOverlayView; @@ -140,7 +141,7 @@ _emptyLibraryView = libraryWindow.emptyLibraryView; } -- (void)setupDataSource +- (void)setupDataSources { _videoLibrarySplitView.delegate = _splitViewDelegate; _splitViewDelegate resetDefaultSplitForSplitView:self.videoLibrarySplitView; @@ -151,6 +152,13 @@ _libraryVideoDataSource.groupSelectionTableView = _videoLibraryGroupSelectionTableView; _libraryVideoDataSource.collectionView = _videoLibraryCollectionView; + _libraryShowsDataSource = VLCLibraryShowsDataSource alloc init; + self.libraryShowsDataSource.libraryModel = + VLCMain.sharedInstance.libraryController.libraryModel; + self.libraryShowsDataSource.collectionView = self.videoLibraryCollectionView; + self.libraryShowsDataSource.showsTableView = self.videoLibraryGroupsTableView; + self.libraryShowsDataSource.selectedShowTableView = self.videoLibraryGroupSelectionTableView; + NSNib * const tableCellViewNib = NSNib alloc initWithNibNamed:NSStringFromClass(VLCLibraryTableCellView.class) bundle:nil; _videoLibraryGroupsTableView registerNib:tableCellViewNib forIdentifier:@"VLCVideoLibraryTableViewCellIdentifier"; _videoLibraryGroupSelectionTableView registerNib:tableCellViewNib forIdentifier:@"VLCVideoLibraryTableViewCellIdentifier"; @@ -158,7 +166,7 @@ - (void)setupCollectionView { - _collectionViewLayout = VLCLibraryCollectionViewFlowLayout alloc init; + _collectionViewLayout = VLCLibraryCollectionViewFlowLayout alloc init; const CGFloat collectionItemSpacing = VLCLibraryUIUnits.collectionViewItemSpacing; const NSEdgeInsets collectionViewSectionInset = VLCLibraryUIUnits.collectionViewSectionInsets; @@ -167,25 +175,29 @@ _collectionViewLayout.minimumInteritemSpacing = collectionItemSpacing; _collectionViewLayout.sectionInset = collectionViewSectionInset; - self.videoLibraryCollectionView.collectionViewLayout = _collectionViewLayout; + NSCollectionView * const collectionView = self.videoLibraryCollectionView; + collectionView.collectionViewLayout = _collectionViewLayout; _collectionViewDelegate = VLCLibraryCollectionViewDelegate alloc init; _collectionViewDelegate.itemsAspectRatio = VLCLibraryCollectionViewItemAspectRatioVideoItem; _collectionViewDelegate.staticItemSize = VLCLibraryCollectionViewItem.defaultVideoItemSize; - self.videoLibraryCollectionView.delegate = _collectionViewDelegate; - - self.libraryVideoDataSource setupCollectionView:self.videoLibraryCollectionView; -} - -- (void)setupTableViews -{ - _videoLibraryGroupsTableView.dataSource = _libraryVideoDataSource; - _videoLibraryGroupsTableView.target = _libraryVideoDataSource; - _videoLibraryGroupsTableView.delegate = _videoLibraryTableViewDelegate; - - _videoLibraryGroupSelectionTableView.dataSource = _libraryVideoDataSource; - _videoLibraryGroupSelectionTableView.target = _libraryVideoDataSource; - _videoLibraryGroupSelectionTableView.delegate = _videoLibraryTableViewDelegate; + collectionView.delegate = _collectionViewDelegate; + + collectionView registerClass:VLCLibraryCollectionViewItem.class + forItemWithIdentifier:VLCLibraryCellIdentifier; + + collectionView registerClass:VLCLibraryCollectionViewSupplementaryElementView.class + forSupplementaryViewOfKind:NSCollectionElementKindSectionHeader + withIdentifier:VLCLibrarySupplementaryElementViewIdentifier; + + NSString * const mediaItemSupplementaryDetailViewString = + NSStringFromClass(VLCLibraryCollectionViewMediaItemSupplementaryDetailView.class); + NSNib * const mediaItemSupplementaryDetailViewNib = + NSNib alloc initWithNibNamed:mediaItemSupplementaryDetailViewString bundle:nil; + + collectionView registerNib:mediaItemSupplementaryDetailViewNib + forSupplementaryViewOfKind:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewKind + withIdentifier:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewIdentifier; } - (void)setupVideoPlaceholderView @@ -266,11 +278,24 @@ #pragma mark - Show the video library view -- (void)updatePresentedView +- (void)updatePresentedVideoLibraryView { + self.videoLibraryCollectionView.dataSource = self.libraryVideoDataSource; + + self.videoLibraryGroupsTableView.dataSource = self.libraryShowsDataSource; + self.videoLibraryGroupsTableView.target = self.libraryVideoDataSource; + self.videoLibraryGroupsTableView.delegate = _videoLibraryTableViewDelegate; + + self.videoLibraryGroupSelectionTableView.dataSource = self.libraryVideoDataSource; + self.videoLibraryGroupSelectionTableView.target = self.libraryVideoDataSource; + self.videoLibraryGroupSelectionTableView.delegate = _videoLibraryTableViewDelegate; + + self.libraryVideoDataSource reloadData; + const BOOL anyVideoMedia = self.libraryVideoDataSource.libraryModel.numberOfVideoMedia > 0; if (anyVideoMedia) { - self presentVideoLibraryView; + const VLCLibraryViewModeSegment viewModeSegment = VLCLibraryWindowPersistentPreferences.sharedInstance.videoLibraryViewMode; + self presentVideoLibraryView:viewModeSegment; } else if (self.libraryVideoDataSource.libraryModel.filterString.length > 0) { self presentNoResultsView; } else { @@ -278,10 +303,41 @@ } } +- (void)updatePresentedShowsLibraryView +{ + self.videoLibraryCollectionView.dataSource = self.libraryShowsDataSource; + + self.videoLibraryGroupsTableView.dataSource = self.libraryShowsDataSource; + self.videoLibraryGroupsTableView.target = self.libraryShowsDataSource; + self.videoLibraryGroupsTableView.delegate = _videoLibraryTableViewDelegate; + + self.videoLibraryGroupSelectionTableView.dataSource = self.libraryShowsDataSource; + self.videoLibraryGroupSelectionTableView.target = self.libraryShowsDataSource; + self.videoLibraryGroupSelectionTableView.delegate = _videoLibraryTableViewDelegate; + + self.libraryShowsDataSource reloadData; + + const BOOL anyShows = self.libraryShowsDataSource.libraryModel.listOfShows.count > 0; + if (anyShows) { + const VLCLibraryViewModeSegment viewModeSegment = VLCLibraryWindowPersistentPreferences.sharedInstance.showsLibraryViewMode; + self presentVideoLibraryView:viewModeSegment; + } else if (self.libraryShowsDataSource.libraryModel.filterString.length > 0) { + self presentNoResultsView; + } else { + self presentPlaceholderVideoLibraryView; + } +} + - (void)presentVideoView { _libraryTargetView.subviews = @; - self updatePresentedView; + self updatePresentedVideoLibraryView; +} + +- (void)presentShowsView +{ + self.libraryTargetView.subviews = @; + self updatePresentedShowsLibraryView; } - (void)presentPlaceholderVideoLibraryView @@ -326,7 +382,7 @@ ; } -- (void)presentVideoLibraryView +- (void)presentVideoLibraryView:(VLCLibraryViewModeSegment)viewModeSegment { _videoLibraryView.translatesAutoresizingMaskIntoConstraints = NO; if (self.libraryTargetView.subviews containsObject:self.loadingOverlayView) { @@ -339,8 +395,6 @@ _libraryTargetView addConstraints:NSLayoutConstraint constraintsWithVisualFormat:@"H:|_videoLibraryView(>=572.)|" options:0 metrics:0 views:dict; _libraryTargetView addConstraints:NSLayoutConstraint constraintsWithVisualFormat:@"V:|_videoLibraryView(>=444.)|" options:0 metrics:0 views:dict; - const VLCLibraryViewModeSegment viewModeSegment = VLCLibraryWindowPersistentPreferences.sharedInstance.videoLibraryViewMode; - if (viewModeSegment == VLCLibraryGridViewModeSegment) { _videoLibrarySplitView.hidden = YES; _videoLibraryCollectionViewScrollView.hidden = NO; @@ -350,7 +404,6 @@ } else { NSAssert(false, @"View mode must be grid or list mode"); } - self.libraryVideoDataSource reloadData; } - (void)libraryModelUpdated:(NSNotification *)aNotification @@ -358,14 +411,21 @@ NSParameterAssert(aNotification); VLCLibraryModel *model = VLCMain.sharedInstance.libraryController.libraryModel; const NSUInteger videoCount = model.numberOfVideoMedia; + const NSUInteger showsCount = model.numberOfShows; if (_libraryWindow.librarySegmentType == VLCLibraryVideoSegment && ((videoCount == 0 && !_libraryTargetView.subviews containsObject:_emptyLibraryView) || (videoCount > 0 && !_libraryTargetView.subviews containsObject:_videoLibraryView)) && _libraryWindow.videoViewController.view.hidden) { - self updatePresentedView; - } + self updatePresentedVideoLibraryView; + } else if (_libraryWindow.librarySegmentType == VLCLibraryShowsVideoSubSegment && + ((showsCount == 0 && !_libraryTargetView.subviews containsObject:_emptyLibraryView) || + (showsCount > 0 && !_libraryTargetView.subviews containsObject:_videoLibraryView)) && + _libraryWindow.videoViewController.view.hidden) { + + self updatePresentedShowsLibraryView; + } } - (void)presentLibraryItemWaitForCollectionViewDataSourceFinished:(NSNotification *)notification
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h
Changed
@@ -53,6 +53,7 @@ @property (readwrite, strong) IBOutlet VLCImageView *artworkImageView; @property (readwrite, strong) IBOutlet NSButton *artworkButton; @property (readwrite, strong) IBOutlet VLCWrappableTextField *playingItemDisplayField; +@property (readwrite, strong) IBOutlet VLCWrappableTextField *detailLabel; @property (readwrite, strong) IBOutlet VLCTimeField *timeField; @property (readwrite, strong) IBOutlet VLCTimeField *trailingTimeField;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
Changed
@@ -464,6 +464,17 @@ _playingItemDisplayField.stringValue = inputItem.name; + VLCMediaLibraryMediaItem * const mediaItem = + VLCMediaLibraryMediaItem mediaItemForURL:_playerController.URLOfCurrentMediaItem; + if (!mediaItem) { + self.detailLabel.hidden = YES; + } else { + _detailLabel.hidden = + mediaItem.primaryDetailString isEqualToString:@"" || + mediaItem.primaryDetailString isEqualToString:mediaItem.durationString; + _detailLabel.stringValue = mediaItem.primaryDetailString; + } + NSURL * const artworkURL = inputItem.artworkURL; if (artworkURL) {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.h -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.h
Changed
@@ -26,7 +26,6 @@ @interface VLCMainVideoViewControlsBar : VLCControlsBarCommon -@property (readwrite, strong) IBOutlet VLCWrappableTextField *detailLabel; @property (readwrite, strong) IBOutlet NSButton *bookmarksButton; @property (readwrite, strong) IBOutlet NSButton *subtitlesButton; @property (readwrite, strong) IBOutlet NSButton *audioButton;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m
Changed
@@ -68,10 +68,6 @@ NSNotificationCenter * const notificationCenter = NSNotificationCenter.defaultCenter; notificationCenter addObserver:self - selector:@selector(currentMediaItemChanged:) - name:VLCPlayerCurrentMediaItemChanged - object:nil; - notificationCenter addObserver:self selector:@selector(floatOnTopChanged:) name:VLCWindowFloatOnTopChangedNotificationName object:nil; @@ -82,15 +78,9 @@ - (void)update { super update; - self updateDetailLabel; self updateFloatOnTopButton; } -- (void)currentMediaItemChanged:(NSNotification *)notification -{ - self updateDetailLabel; -} - - (void)floatOnTopChanged:(NSNotification *)notification { VLCVideoWindowCommon * const videoWindow = (VLCVideoWindowCommon *)notification.object; @@ -105,21 +95,6 @@ self updateFloatOnTopButton; } -- (void)updateDetailLabel -{ - VLCMediaLibraryMediaItem * const mediaItem = - VLCMediaLibraryMediaItem mediaItemForURL:_playerController.URLOfCurrentMediaItem; - - if (!mediaItem) { - self.detailLabel.hidden = YES; - return; - } - - _detailLabel.hidden = mediaItem.primaryDetailString isEqualToString:@"" || - mediaItem.primaryDetailString isEqualToString:mediaItem.durationString; - _detailLabel.stringValue = mediaItem.primaryDetailString; -} - - (void)updateFloatOnTopButton { VLCVideoWindowCommon * const videoWindow = (VLCVideoWindowCommon *)self.floatOnTopButton.window;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/Makefile.am -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/Makefile.am
Changed
@@ -14,9 +14,9 @@ include ../../common.am guidir = $(pluginsdir)/gui gui_LTLIBRARIES = -SUFFIXES += .ui .h .hpp .moc.cpp .qml +SUFFIXES += .ui .h .hpp .moc.cpp .qml .js .mjs .moc TEST_EXTENSIONS = .qml -EXTRA_DIST = qt6.pro private-core.pro private-gui.pro private-quick.pro quicktest.pro +EXTRA_DIST = qt6.pro private-core.pro private-gui.pro private-quick.pro quicktest.pro scripts vlc_qt_libs = $(QT_LIBS) vlc_qt_check_SOURCES = vlc-qt-check.cpp plugins.hpp @@ -39,7 +39,7 @@ -I$(builddir)/dialogs/sout \ -I$(builddir)/dialogs/vlm -libqt_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) $(CXXFLAGS_qt) +libqt_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) $(CXXFLAGS_qt) -fPIC libqt_plugin_la_LIBADD = $(vlc_qt_libs) libqt_plugin_la_LDFLAGS = $(AM_LDFLAGS) $(QT_LDFLAGS) if HAVE_DARWIN @@ -352,6 +352,9 @@ .hpp.moc.cpp: $(moc_verbose)$(MOC) $(MOC_CPPFLAGS) -o $@ $< +.cpp.moc: + $(moc_verbose)$(MOC) $(MOC_CPPFLAGS) -o $@ $< + # These MOC files depend on the configure settings: dialogs/dialogs_provider.moc.cpp dialogs/vlm/vlm.moc.cpp: $(top_builddir)/config.h @@ -884,8 +887,12 @@ pixmaps/win7/play.svg endif -#QML and JS resources -libqt_plugin_la_QML = \ +#QML modules +libqml_module_dialogs_a_Module = VLC.Dialogs +libqml_module_dialogs_a_ModulePath = VLC/Dialogs +libqml_module_dialogs_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_dialogs_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_dialogs_a_QML = \ dialogs/dialogs/qml/CustomDialog.qml \ dialogs/dialogs/qml/Dialogs.qml \ dialogs/dialogs/qml/ModalDialog.qml \ @@ -896,14 +903,33 @@ dialogs/toolbar/qml/EditorTabButton.qml \ dialogs/toolbar/qml/ToolbarEditor.qml \ dialogs/toolbar/qml/ToolbarEditorDialog.qml \ - dialogs/toolbar/qml/ToolbarEditorButtonList.qml \ + dialogs/toolbar/qml/ToolbarEditorButtonList.qml + +$(libqml_module_dialogs_a_QML:.qml=.cpp) : $(builddir)/dialogs/res.qrc +$(libqml_module_dialogs_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/dialogs/res.qrc +nodist_libqml_module_dialogs_a_SOURCES = dialogs_qmlassets.cpp + +libqml_module_maininterface_a_Module = VLC.MainInterface +libqml_module_maininterface_a_ModulePath = VLC/MainInterface +libqml_module_maininterface_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_maininterface_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_maininterface_a_QML = \ maininterface/qml/BannerSources.qml \ maininterface/qml/MainInterface.qml \ maininterface/qml/MainViewLoader.qml \ maininterface/qml/MainDisplay.qml \ maininterface/qml/MainGridView.qml \ maininterface/qml/MainTableView.qml \ - maininterface/qml/NoMedialibHome.qml \ + maininterface/qml/NoMedialibHome.qml +nodist_libqml_module_maininterface_a_SOURCES = maininterface_qmlassets.cpp +$(libqml_module_maininterface_a_QML:.qml=.cpp) : $(builddir)/maininterface/res.qrc +$(libqml_module_maininterface_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/maininterface/res.qrc + +libqml_module_medialibrary_a_Module = VLC.MediaLibrary +libqml_module_medialibrary_a_ModulePath = VLC/MediaLibrary +libqml_module_medialibrary_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_medialibrary_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_medialibrary_a_QML = \ medialibrary/qml/ArtistTopBanner.qml \ medialibrary/qml/AudioGridItem.qml \ medialibrary/qml/MediaGroupDisplay.qml \ @@ -930,16 +956,34 @@ medialibrary/qml/PlaylistMedia.qml \ medialibrary/qml/PlaylistMediaDisplay.qml \ medialibrary/qml/VideoPlaylistsDisplay.qml \ - medialibrary/qml/VideoRecentVideos.qml \ - medialibrary/qml/VideoRecentVideosDisplay.qml \ + medialibrary/qml/VideoRecentVideos.qml \ + medialibrary/qml/VideoRecentVideosDisplay.qml \ medialibrary/qml/VideoGridItem.qml \ medialibrary/qml/VideoInfoExpandPanel.qml \ medialibrary/qml/VideoListDisplay.qml \ - medialibrary/qml/VideoGridDisplay.qml \ + medialibrary/qml/VideoGridDisplay.qml +nodist_libqml_module_medialibrary_a_SOURCES = medialibrary_qmlassets.cpp +$(libqml_module_medialibrary_a_QML:.qml=.cpp) : $(builddir)/medialibrary/res.qrc +$(libqml_module_medialibrary_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/medialibrary/res.qrc + +libqml_module_menus_a_Module = VLC.Menus +libqml_module_menus_a_ModulePath = VLC/Menus +libqml_module_menus_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_menus_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_menus_a_QML = \ menus/qml/GlobalShortcuts.qml \ menus/qml/GlobalShortcutsMedialib.qml \ menus/qml/Menubar.qml \ - menus/qml/ShortcutExt.qml \ + menus/qml/ShortcutExt.qml +nodist_libqml_module_menus_a_SOURCES = menus_qmlassets.cpp +$(libqml_module_menus_a_QML:.qml=.cpp) : $(builddir)/menus/res.qrc +$(libqml_module_menus_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/menus/res.qrc + +libqml_module_network_a_Module = VLC.Network +libqml_module_network_a_ModulePath = VLC/Network +libqml_module_network_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_network_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_network_a_QML = \ network/qml/AddressbarButton.qml \ network/qml/BrowseDeviceView.qml \ network/qml/BrowseDisplay.qml \ @@ -954,11 +998,18 @@ network/qml/NetworkThumbnailItem.qml \ network/qml/ServicesHomeDisplay.qml \ network/qml/ServicesManage.qml \ - network/qml/ServicesSources.qml \ - player/qml/qmldir \ - player/qml/Bookmarks.qml \ + network/qml/ServicesSources.qml +nodist_libqml_module_network_a_SOURCES = network_qmlassets.cpp +$(libqml_module_network_a_QML:.qml=.cpp) : $(builddir)/network/res.qrc +$(libqml_module_network_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/network/res.qrc + +libqml_module_player_a_Module = VLC.Player +libqml_module_player_a_ModulePath = VLC/Player +libqml_module_player_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_player_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_player_a_QML = \ + player/qml/Bookmarks.qml \ player/qml/ControlBar.qml \ - player/qml/ControlbarControls.qml \ player/qml/PlaybackSpeed.qml \ player/qml/MiniPlayer.qml \ player/qml/PIPPlayer.qml \ @@ -977,7 +1028,20 @@ player/qml/TracksListPage.qml \ player/qml/ControlLayout.qml \ player/qml/ControlRepeater.qml \ - player/qml/NavigationBox.qml \ + player/qml/NavigationBox.qml + +libqml_module_player_a_Singleton_QML = \ + player/qml/PlayerControlbarControls.qml + +nodist_libqml_module_player_a_SOURCES = player_qmlassets.cpp +$(libqml_module_player_a_QML:.qml=.cpp) $(libqml_module_player_a_Singleton_QML:.qml=.cpp) : $(builddir)/player/res.qrc +$(libqml_module_player_a_QML:.qml=.cpp) $(libqml_module_player_a_Singleton_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/player/res.qrc + +libqml_module_playercontrols_a_Module = VLC.PlayerControls +libqml_module_playercontrols_a_ModulePath = VLC/PlayerControls +libqml_module_playercontrols_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_playercontrols_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_playercontrols_a_QML = \ player/qml/controlbarcontrols/HighResolutionTimeWidget.qml \ player/qml/controlbarcontrols/ArtworkInfoWidget.qml \ player/qml/controlbarcontrols/AspectRatioWidget.qml \ @@ -1021,16 +1085,42 @@ player/qml/controlbarcontrols/TeletextColorButton.qml \ player/qml/controlbarcontrols/TeletextWidget.qml \ player/qml/controlbarcontrols/VolumeWidget.qml \ - player/qml/controlbarcontrols/Fallback.qml \ + player/qml/controlbarcontrols/Fallback.qml +nodist_libqml_module_playercontrols_a_SOURCES = playercontrols_qmlassets.cpp +$(libqml_module_playercontrols_a_QML:.qml=.cpp) : $(builddir)/playercontrols/res.qrc +$(libqml_module_playercontrols_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/playercontrols/res.qrc + +libqml_module_playlist_a_Module = VLC.Playlist +libqml_module_playlist_a_ModulePath = VLC/Playlist +libqml_module_playlist_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_playlist_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_playlist_a_QML = \ playlist/qml/PlaylistDelegate.qml \ playlist/qml/PlaylistListView.qml \ playlist/qml/PlaylistToolbar.qml \ - playlist/qml/PlaylistDetachedWindow.qml \ + playlist/qml/PlaylistDetachedWindow.qml +nodist_libqml_module_playlist_a_SOURCES = playlist_qmlassets.cpp +$(libqml_module_playlist_a_QML:.qml=.cpp) : $(builddir)/playlist/res.qrc +$(libqml_module_playlist_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/playlist/res.qrc + +libqml_module_style_a_Module = VLC.Style +libqml_module_style_a_ModulePath = VLC/Style +libqml_module_style_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_style_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_style_a_QML = +libqml_module_style_a_Singleton_QML = \ style/AcrylicController.qml \ style/VLCIcons.qml \ - style/VLCStyle.qml \ - style/qmldir \ - util/qml/Helpers.js \ + style/VLCStyle.qml +nodist_libqml_module_style_a_SOURCES = style_qmlassets.cpp +$(libqml_module_style_a_QML:.qml=.cpp) $(libqml_module_style_a_Singleton_QML:.qml=.cpp) : $(builddir)/style/res.qrc +$(libqml_module_style_a_QML:.qml=.cpp) $(libqml_module_style_a_Singleton_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/style/res.qrc + +libqml_module_util_a_Module = VLC.Util +libqml_module_util_a_ModulePath = VLC/Util +libqml_module_util_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_util_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_util_a_QML = \ util/qml/ModelSortSettingHandler.qml \ util/qml/FlickableScrollHandler.qml \ util/qml/ViewDragAutoScrollHandler.qml \ @@ -1039,7 +1129,18 @@ util/qml/NativeMenu.qml \ util/qml/MLContextMenu.qml \ util/qml/FadeControllerStateGroup.qml \ - util/qml/GridSizeHelper.qml \ + util/qml/GridSizeHelper.qml +libqml_module_util_a_Singleton_QML = \ + util/qml/Helpers.qml +nodist_libqml_module_util_a_SOURCES = util_qmlassets.cpp +$(libqml_module_util_a_QML:.qml=.cpp) $(libqml_module_util_a_Singleton_QML:.qml=.cpp) : $(builddir)/util/res.qrc +$(libqml_module_util_a_QML:.qml=.cpp) $(libqml_module_util_a_Singleton_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/util/res.qrc + +libqml_module_widgets_a_Module = VLC.Widgets +libqml_module_widgets_a_ModulePath = VLC/Widgets +libqml_module_widgets_a_CXXFLAGS = $(libqt_plugin_la_CXXFLAGS) +libqml_module_widgets_a_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +libqml_module_widgets_a_QML = \ widgets/qml/LabelExt.qml \ widgets/qml/ActionButtonOverlay.qml \ widgets/qml/ActionButtonPrimary.qml \ @@ -1092,7 +1193,7 @@ widgets/qml/RoundButton.qml \ widgets/qml/ScaledImage.qml \ widgets/qml/ScanProgressBar.qml \ - widgets/qml/TextAutoScroller.qml \ + widgets/qml/TextAutoScroller.qml \ widgets/qml/SearchBox.qml \ widgets/qml/SliderExt.qml \ widgets/qml/SortControl.qml \ @@ -1117,10 +1218,41 @@ widgets/qml/FadingEdge.qml \ widgets/qml/FadingEdgeForListView.qml \ widgets/qml/PopupIconToolButton.qml \ - widgets/qml/PartialEffect.qml \ - widgets/qml/ViewHeader.qml \ - widgets/qml/ProgressIndicator.qml - + widgets/qml/PartialEffect.qml \ + widgets/qml/ViewHeader.qml \ + widgets/qml/ProgressIndicator.qml +nodist_libqml_module_widgets_a_SOURCES = widgets_qmlassets.cpp +$(libqml_module_widgets_a_QML:.qml=.cpp) : $(builddir)/widgets/res.qrc +$(libqml_module_widgets_a_QML:.qml=.cpp) : QML_CACHEGEN_ARGS=--resource=$(builddir)/widgets/res.qrc + +libqt_plugin_la_QML_MODULES = \ + dialogs \ + maininterface \ + medialibrary \ + menus \ + network \ + player \ + playercontrols \ + playlist \ + style \ + util \ + widgets + +libqt_plugin_la_ALL_QML = \ + $(libqml_module_dialogs_a_QML) \ + $(libqml_module_maininterface_a_QML) \ + $(libqml_module_medialibrary_a_QML) \ + $(libqml_module_menus_a_QML) \ + $(libqml_module_network_a_QML) \ + $(libqml_module_player_a_QML) \ + $(libqml_module_player_a_Singleton_QML) \ + $(libqml_module_playercontrols_a_QML) \ + $(libqml_module_playlist_a_QML) \ + $(libqml_module_style_a_QML) \ + $(libqml_module_style_a_Singleton_QML) \ + $(libqml_module_util_a_QML) \ + $(libqml_module_util_a_Singleton_QML) \ + $(libqml_module_widgets_a_QML) # Shaders: libqt_plugin_la_SHADER := shaders/FadingEdge.frag \ @@ -1131,6 +1263,31 @@ shaders/SubTexture.vert \ shaders/PlayerBlurredBackground.frag if ENABLE_QT + +libqt_plugin_la_LIBADD += libqml_module_dialogs.a \ + libqml_module_maininterface.a \ + libqml_module_medialibrary.a \ + libqml_module_menus.a \ + libqml_module_network.a \ + libqml_module_player.a \ + libqml_module_playercontrols.a \ + libqml_module_playlist.a \ + libqml_module_style.a \ + libqml_module_util.a \ + libqml_module_widgets.a + +noinst_LIBRARIES = libqml_module_dialogs.a \ + libqml_module_maininterface.a \ + libqml_module_medialibrary.a \ + libqml_module_menus.a \ + libqml_module_network.a \ + libqml_module_player.a \ + libqml_module_playercontrols.a \ + libqml_module_playlist.a \ + libqml_module_style.a \ + libqml_module_util.a \ + libqml_module_widgets.a + BUILT_SOURCES += \ $(libqt_plugin_la_SHADER:.frag=.frag.qsb) \ $(libqt_plugin_la_SHADER:.vert=.vert.qsb) @@ -1161,7 +1318,7 @@ libqt_plugin_la_SOURCES += shaders/shaders.qrc $(libqt_plugin_la_SHADER) BUILT_SOURCES += shaders/shaders.qrc -lib_qt_plugin_la_QRC = assets.qrc qml.qrc +lib_qt_plugin_la_QRC = assets.qrc if HAVE_WIN32 lib_qt_plugin_la_QRC += windows.qrc @@ -1175,46 +1332,124 @@ EXTRA_DIST += $(lib_qt_plugin_la_QRC) $(libqt_plugin_la_RES) $(libqt_plugin_la_SHADER) -nodist_libqt_plugin_la_SOURCES += assets.cpp qml.cpp shaders/shaders.cpp +nodist_libqt_plugin_la_SOURCES += assets.cpp shaders/shaders.cpp endif if ENABLE_VLM nodist_libqt_plugin_la_SOURCES += dialogs/vlm/vlm.moc.cpp endif +# QRC generation depends on the list of files (defined here) but not the file contents +%/res.qrc: Makefile + $(AM_V_GEN)$(PYTHON3) $(srcdir)/scripts/genqrc.py \ + -o $@ \ + -s $(srcdir) \ + --prefix qt/qml/$(libqml_module_$*_a_ModulePath) \ + --sources $(libqml_module_$*_a_QML) $(libqml_module_$*_a_Singleton_QML) + +%/qmldir: Makefile + $(AM_V_GEN)$(PYTHON3) $(srcdir)/scripts/genqmldir.py \ + -o $@ \ + --prefix qt/qml \ + --module $(libqml_module_$*_a_Module) \ + --sources $(libqml_module_$*_a_QML) \ + --singletons $(libqml_module_$*_a_Singleton_QML) + +%/qmldir.qrc: %/qmldir + $(AM_V_GEN)$(PYTHON3) $(srcdir)/scripts/genqrc.py -o $@ --prefix qt/qml/$(libqml_module_$*_a_ModulePath) --sources $< + +CLEANFILES += $(libqt_plugin_la_QML_MODULES:%=%/res.qrc) $(libqt_plugin_la_QML_MODULES:%=%/qmldir) $(libqt_plugin_la_QML_MODULES:%=%/qmldir.qrc) $(libqml_module_util_a_QML:%.qml=%.cpp) + if HAVE_QMLCACHEGEN -nodist_libqt_plugin_la_SOURCES += qmlcache_loader.cpp -libqt_plugin_la_SOURCES += $(libqt_plugin_la_QML) +libqt_plugin_la_CPPFLAGS += -DQT_USE_QMLCACHEGEN + +nodist_libqml_module_dialogs_a_SOURCES += dialogs_qmlcache_loader.cpp +nodist_libqml_module_maininterface_a_SOURCES += maininterface_qmlcache_loader.cpp +nodist_libqml_module_medialibrary_a_SOURCES += medialibrary_qmlcache_loader.cpp +nodist_libqml_module_menus_a_SOURCES += menus_qmlcache_loader.cpp +nodist_libqml_module_network_a_SOURCES += network_qmlcache_loader.cpp +nodist_libqml_module_player_a_SOURCES += player_qmlcache_loader.cpp +nodist_libqml_module_playercontrols_a_SOURCES += playercontrols_qmlcache_loader.cpp +nodist_libqml_module_playlist_a_SOURCES += playlist_qmlcache_loader.cpp +nodist_libqml_module_style_a_SOURCES += style_qmlcache_loader.cpp +nodist_libqml_module_util_a_SOURCES += util_qmlcache_loader.cpp +nodist_libqml_module_widgets_a_SOURCES += widgets_qmlcache_loader.cpp + +libqml_module_dialogs_a_SOURCES = $(libqml_module_dialogs_a_QML) +libqml_module_maininterface_a_SOURCES = $(libqml_module_maininterface_a_QML) +libqml_module_medialibrary_a_SOURCES = $(libqml_module_medialibrary_a_QML) +libqml_module_menus_a_SOURCES = $(libqml_module_menus_a_QML) +libqml_module_network_a_SOURCES = $(libqml_module_network_a_QML) +libqml_module_player_a_SOURCES = $(libqml_module_player_a_QML) $(libqml_module_player_a_Singleton_QML) +libqml_module_playercontrols_a_SOURCES = $(libqml_module_playercontrols_a_QML) +libqml_module_playlist_a_SOURCES = $(libqml_module_playlist_a_QML) +libqml_module_style_a_SOURCES = $(libqml_module_style_a_QML) $(libqml_module_style_a_Singleton_QML) +libqml_module_util_a_SOURCES = $(libqml_module_util_a_QML) $(libqml_module_util_a_Singleton_QML) +libqml_module_widgets_a_SOURCES = $(libqml_module_widgets_a_QML) + +cachegen_verbose = $(cachegen_verbose_$(V)) +cachegen_verbose_ = $(cachegen_verbose__$(AM_DEFAULT_VERBOSITY)) +cachegen_verbose_0 = @echo "CACHEGEN" $@; +cachegen_verbose__0 = $(cachegen_verbose_0) + +if HAVE_QT67 +QML_CACHEGEN_EXTRA_ARGS=--validate-basic-blocks +endif .qml.cpp: - $(AM_V_GEN)$(QMLCACHEGEN) --resource=$(srcdir)/qml.qrc -o $@ $< + $(cachegen_verbose)$(QMLCACHEGEN) $(QML_CACHEGEN_EXTRA_ARGS) $(QML_CACHEGEN_ARGS) -o $@ $< .js.cpp: - $(AM_V_GEN)$(QMLCACHEGEN) --resource=$(srcdir)/qml.qrc -o $@ $< + $(cachegen_verbose)$(QMLCACHEGEN) $(QML_CACHEGEN_EXTRA_ARGS) $(QML_CACHEGEN_ARGS) -o $@ $< .mjs.cpp: - $(AM_V_GEN)$(QMLCACHEGEN) --resource=$(srcdir)/qml.qrc -o $@ $< + $(cachegen_verbose)$(QMLCACHEGEN) $(QML_CACHEGEN_EXTRA_ARGS) $(QML_CACHEGEN_ARGS) -o $@ $< + +#we need to pass the resource path and as it appears in the qrc, this is easier to generate it externally +%_qmlcachegen.rsp: $(builddir)/%/res.qrc + $(AM_V_GEN)$(PYTHON3) $(srcdir)/scripts/qrc2rsp.py --output $@ $^ #output name matters here -qmlcache_loader.cpp: $(libqt_plugin_la_QML) -qmlcache_loader.cpp: qml.qrc - $(AM_V_GEN)$(QMLCACHEGEN) $< -o $@ +%_qmlcache_loader.cpp: %_qmlcachegen.rsp + $(cachegen_verbose)$(QMLCACHEGEN) --resource-name $*_cachegen --resource=$(builddir)/$*/res.qrc -o $@ @$< + +#package qmldir files +%_qmlassets.cpp: $(builddir)/%/qmldir.qrc + $(AM_V_GEN)$(RCC) --name $*_assets -o $@ $< + + +CLEANFILES += \ + $(libqt_plugin_la_QML_MODULES:%=%_qmlcache_loader.cpp) \ + $(libqt_plugin_la_QML_MODULES:%=%_qmlcachegen.rsp) \ + $(libqt_plugin_la_QML_MODULES:%=%_qmlassets.cpp) \ + $(libqt_plugin_la_ALL_QML:%.qml=%.cpp) else -EXTRA_DIST += $(libqt_plugin_la_QML) +#package all qml from the genreated QRC files +libqt_plugin_la_QML_MODULES_RES_QRC = $(libqt_plugin_la_QML_MODULES:%=$(builddir)/%/res.qrc) +libqt_plugin_la_QML_MODULES_QMLDIR = $(libqt_plugin_la_QML_MODULES:%=$(builddir)/%/qmldir) +libqt_plugin_la_QML_MODULES_QMLDIR_QRC = $(libqt_plugin_la_QML_MODULES:%=$(builddir)/%/qmldir.qrc) + +%_qmlassets.cpp: $(builddir)/%/qmldir.qrc $(builddir)/%/res.qrc $(libqt_plugin_la_ALL_QML) + $(AM_V_GEN)$(RCC) --name $*_assets -o $@ $(builddir)/$*/qmldir.qrc $(builddir)/$*/res.qrc + +nodist_libqt_plugin_la_SOURCES += $(libqt_plugin_la_QML_MODULES:%=%_qmlassets.cpp) + +if ENABLE_QT +BUILT_SOURCES += $(libqt_plugin_la_QML_MODULES_QRC) $(libqt_plugin_la_QML_MODULES_QMLDIR) endif +endif + +EXTRA_DIST += $(libqt_plugin_la_QML) + assets.cpp: $(libqt_plugin_la_RES) assets.cpp: assets.qrc $(AM_V_GEN)$(RCC) --name assets -o $@ $< -qml.cpp: $(libqt_plugin_la_QML) -qml.cpp: qml.qrc - $(AM_V_GEN)$(RCC) --name qml -o $@ $< - if HAVE_QT_GTK libqt_gtktheme_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(GTK3_CFLAGS) @@ -1266,12 +1501,11 @@ if HAVE_QT_QUICK_TEST qml_test_SOURCES = tests/qml_test.cpp -nodist_qml_test_SOURCES = qml.cpp assets.cpp -if HAVE_QMLCACHEGEN -nodist_qml_test_SOURCES += qmlcache_loader.cpp $(libqt_plugin_la_QML) -endif -qml_test_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt) ${QT_QUICK_TEST_CFLAGS} -DQUICK_TEST_SOURCE_DIR="\"${srcdir}/tests\"" -qml_test_LDADD = $(QT_INDIRECT_LIBS) ${QT_QUICK_TEST_LIBS} $(QT_LIBS) $(LIBS_qt) +qml_test_DEPENDENCIES = tests/qml_test.moc +CLEANFILES += tests/qml_test.moc +qml_test_CPPFLAGS = $(libqt_plugin_la_CPPFLAGS) +qml_test_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt) ${QT_QUICK_TEST_CFLAGS} -DQUICK_TEST_SOURCE_DIR="\"${srcdir}/tests\"" -I"${builddir}/tests" +qml_test_LDADD = $(QT_INDIRECT_LIBS) ${QT_QUICK_TEST_LIBS} $(QT_LIBS) $(LIBS_qt) libqml_module_util.a qml_test_LDFLAGS = $(AM_LDFLAGS) $(QT_QUICK_TEST_LDFLAGS) check_PROGRAMS += qml_test EXTRA_DIST += tests/tst_FSM.qml
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/dialogs/qml/CustomDialog.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/dialogs/qml/CustomDialog.qml
Changed
@@ -18,10 +18,10 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets ModalDialog { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/dialogs/qml/Dialogs.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/dialogs/qml/Dialogs.qml
Changed
@@ -20,11 +20,12 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects import QtQuick.Templates as T -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Dialogs +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style Item { id: root @@ -164,8 +165,8 @@ } edge: Widgets.DrawerExt.Edges.Bottom - width: contentItem.layoutWidth - height: contentItem.height + width: contentItem?.layoutWidth ?? 0 + height: contentItem?.height ?? 0 z: 10 ColorContext { @@ -583,7 +584,7 @@ Loader { id: toolbarEditorDialogLoader active: false - source: "qrc:///dialogs/ToolbarEditorDialog.qml" + source: "qrc:///qt/qml/VLC/Dialogs/ToolbarEditorDialog.qml" Connections { target: toolbarEditorDialogLoader.item
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/dialogs/qml/ModalDialog.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/dialogs/qml/ModalDialog.qml
Changed
@@ -21,10 +21,11 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style Dialog { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/dialogs/qml/WindowDialog.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/dialogs/qml/WindowDialog.qml
Changed
@@ -21,13 +21,14 @@ import QtQuick.Layouts import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Window { id: root + transientParent: MainCtx.intfMainWindow + flags: Qt.Dialog property bool modal: false
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorDNDDelegate.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorDNDDelegate.qml
Changed
@@ -21,11 +21,10 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///player/" -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Player +import VLC.Widgets as Widgets +import VLC.Style T.Control { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorDNDView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorDNDView.qml
Changed
@@ -19,10 +19,9 @@ import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///util/" as Util +import VLC.Style +import VLC.Util ListView { id: playerBtnDND @@ -96,8 +95,8 @@ id: theme colorSet: ColorContext.View } - - Util.FlickableScrollHandler { + + FlickableScrollHandler { fallbackScroll: true enabled: true }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorDummyButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorDummyButton.qml
Changed
@@ -18,9 +18,8 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style Label { font.pixelSize: VLCStyle.icon_medium
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorTabButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/EditorTabButton.qml
Changed
@@ -18,10 +18,9 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.Style +import VLC.Widgets as Widgets Widgets.BannerTabButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/ToolbarEditor.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/ToolbarEditor.qml
Changed
@@ -20,11 +20,12 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util +import VLC.PlayerControls Item { id: root @@ -300,7 +301,7 @@ } } - Util.ViewDragAutoScrollHandler { + ViewDragAutoScrollHandler { id: dragAutoScrollHandler view: _viewThatContainsDrag ?? null
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/ToolbarEditorButtonList.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/ToolbarEditorButtonList.qml
Changed
@@ -20,12 +20,11 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///player/" -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util +import VLC.Player +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util GridView { id: root @@ -61,7 +60,7 @@ preventStealing: true } - Util.FlickableScrollHandler { } + FlickableScrollHandler { } DropArea { id: dropArea
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/dialogs/toolbar/qml/ToolbarEditorDialog.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/dialogs/toolbar/qml/ToolbarEditorDialog.qml
Changed
@@ -20,10 +20,11 @@ import QtQuick.Templates as T import QtQuick.Layouts -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Dialogs -import org.videolan.vlc 0.1 WindowDialog { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/compositor.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/compositor.cpp
Changed
@@ -326,6 +326,14 @@ assert(window); assert(m_intf); + if (enable) + { + if (!var_InheritBool(m_intf, "qt-backdrop-blur")) + { + return false; + } + } + if (m_failedToLoadWindowEffectsModule) return false;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/compositor_dcomp.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/compositor_dcomp.cpp
Changed
@@ -194,15 +194,18 @@ if (!m_blurBehind) { - try + if (var_InheritBool(m_intf, "qt-backdrop-blur")) { - m_acrylicSurface = new CompositorDCompositionAcrylicSurface(m_intf, this, m_mainCtx, m_dcompDevice); - } - catch (const std::exception& exception) - { - if (const auto what = exception.what()) - msg_Warn(m_intf, "%s", what); - delete m_acrylicSurface.data(); + try + { + m_acrylicSurface = new CompositorDCompositionAcrylicSurface(m_intf, this, m_mainCtx, m_dcompDevice); + } + catch (const std::exception& exception) + { + if (const auto what = exception.what()) + msg_Warn(m_intf, "%s", what); + delete m_acrylicSurface.data(); + } } } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/mainctx.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/mainctx.hpp
Changed
@@ -252,6 +252,13 @@ unsigned char patch) { return QT_VERSION_CHECK(major, minor, patch); } + Q_INVOKABLE static /*constexpr*/ inline bool qtQuickControlRejectsHoverEvents() { + // QTBUG-100543 + return (QT_VERSION < QT_VERSION_CHECK(6, 3, 0) && QT_VERSION >= QT_VERSION_CHECK(6, 2, 5)) || + (QT_VERSION < QT_VERSION_CHECK(6, 4, 0) && QT_VERSION >= QT_VERSION_CHECK(6, 3, 1)) || + (QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)); + } + /** * @brief ask for the application to terminate * @return true if the application can be close right away, false if it will be delayed
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/mainctx_win32.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/mainctx_win32.cpp
Changed
@@ -172,7 +172,7 @@ const int action = TrackPopupMenu(hmenu, (TPM_RETURNCMD | alignment) , screenPoints.x(), screenPoints.y() - , NULL, hwnd, 0); + , 0, hwnd, nullptr); // unlike native system menu which sends WM_SYSCOMMAND, TrackPopupMenu sends WM_COMMAND // imitate native system menu by sending the action manually as WM_SYSCOMMAND
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/mainui.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/mainui.cpp
Changed
@@ -169,11 +169,15 @@ engine->addImageProvider(MLCUSTOMCOVER_PROVIDERID, customCover); } +#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0) + engine->addImportPath(":/qt/qml"); +#endif + SingletonRegisterHelper<EffectsImageProvider>::setInstance(new EffectsImageProvider(engine)); engine->addImageProvider(QStringLiteral("svgcolor"), new SVGColorImageImageProvider()); engine->addImageProvider(QStringLiteral("vlcaccess"), new VLCAccessImageProvider()); - m_component = new QQmlComponent(engine, QStringLiteral("qrc:/main/MainInterface.qml"), QQmlComponent::PreferSynchronous, engine); + m_component = new QQmlComponent(engine, QStringLiteral("qrc:/qt/qml/VLC/MainInterface/MainInterface.qml"), QQmlComponent::PreferSynchronous, engine); if (m_component->isLoading()) { msg_Warn(m_intf, "component is still loading"); @@ -222,122 +226,198 @@ void MainUI::registerQMLTypes() { { - const char* uri = "org.videolan.vlc"; - const int versionMajor = 0; - const int versionMinor = 1; + const char* uri = "VLC.MainInterface"; + const int versionMajor = 1; + const int versionMinor = 0; + // @uri VLC.MainInterface qmlRegisterSingletonType<MainCtx>(uri, versionMajor, versionMinor, "MainCtx", SingletonRegisterHelper<MainCtx>::callback); qmlRegisterUncreatableType<SearchCtx>(uri, versionMajor, versionMinor, "SearchCtx", ""); qmlRegisterUncreatableType<SortCtx>(uri, versionMajor, versionMinor, "SortCtx", ""); - qmlRegisterSingletonType<NavigationHistory>(uri, versionMajor, versionMinor, "History", SingletonRegisterHelper<NavigationHistory>::callback); - qmlRegisterSingletonType<PlayerController>(uri, versionMajor, versionMinor, "Player", SingletonRegisterHelper<PlayerController>::callback); - qmlRegisterSingletonType<DialogsProvider>(uri, versionMajor, versionMinor, "DialogsProvider", SingletonRegisterHelper<DialogsProvider>::callback); - qmlRegisterSingletonType<DialogErrorModel>(uri, versionMajor, versionMinor, "DialogErrorModel", SingletonRegisterHelper<DialogErrorModel>::callback); - qmlRegisterSingletonType<QmlKeyHelper>(uri, versionMajor, versionMinor, "KeyHelper", SingletonRegisterHelper<QmlKeyHelper>::callback); - qmlRegisterSingletonType<EffectsImageProvider>(uri, versionMajor, versionMinor, "Effects", SingletonRegisterHelper<EffectsImageProvider>::callback); - qmlRegisterSingletonType<SVGColorImage>(uri, versionMajor, versionMinor, "SVGColorImage", SingletonRegisterHelper<SVGColorImage>::callback); - qmlRegisterSingletonType<VLCAccessImage>(uri, versionMajor, versionMinor, "VLCAccessImage", SingletonRegisterHelper<VLCAccessImage>::callback); - qmlRegisterSingletonType<PlaylistController>(uri, versionMajor, versionMinor, "MainPlaylistController", SingletonRegisterHelper<PlaylistController>::callback); - - qmlRegisterType<DelayEstimator>( uri, versionMajor, versionMinor, "DelayEstimator" ); - qmlRegisterUncreatableType<QAbstractItemModel>(uri, versionMajor, versionMinor, "QtAbstractItemModel", ""); qmlRegisterUncreatableType<QWindow>(uri, versionMajor, versionMinor, "QtWindow", ""); qmlRegisterUncreatableType<QScreen>(uri, versionMajor, versionMinor, "QtScreen", ""); - qmlRegisterUncreatableType<SVGColorImageBuilder>(uri, versionMajor, versionMinor, "SVGColorImageBuilder", ""); - qmlRegisterUncreatableType<VLCTick>(uri, versionMajor, versionMinor, "VLCTick", ""); - qmlRegisterUncreatableType<ColorSchemeModel>(uri, versionMajor, versionMinor, "ColorSchemeModel", ""); - qmlRegisterType<ColorContext>(uri, versionMajor, versionMinor, "ColorContext"); - qmlRegisterUncreatableType<ColorProperty>(uri, versionMajor, versionMinor, "ColorProperty", ""); - qmlRegisterType<SystemPalette>(uri, versionMajor, versionMinor, "SystemPalette"); - qmlRegisterType<CSDThemeImage>(uri, versionMajor, versionMinor, "CSDThemeImage"); - qmlRegisterType<VideoSurface>(uri, versionMajor, versionMinor, "VideoSurface"); - qmlRegisterUncreatableType<BaseModel>( uri, versionMajor, versionMinor, "BaseModel", "Base Model is uncreatable." ); - qmlRegisterType<NetworkMediaModel>( uri, versionMajor, versionMinor, "NetworkMediaModel"); - qmlRegisterType<NetworkDeviceModel>( uri, versionMajor, versionMinor, "NetworkDeviceModel"); - qmlRegisterType<NetworkSourcesModel>( uri, versionMajor, versionMinor, "NetworkSourcesModel"); - qmlRegisterType<ServicesDiscoveryModel>( uri, versionMajor, versionMinor, "ServicesDiscoveryModel"); - qmlRegisterType<StandardPathModel>( uri, versionMajor, versionMinor, "StandardPathModel"); - qmlRegisterType<MLFoldersModel>( uri, versionMajor, versionMinor, "MLFolderModel"); - qmlRegisterType<ImageLuminanceExtractor>( uri, versionMajor, versionMinor, "ImageLuminanceExtractor"); - - qmlRegisterUncreatableType<TrackListModel>(uri, versionMajor, versionMinor, "TrackListModel", "available tracks of a media (audio/video/sub)" ); - qmlRegisterUncreatableType<TitleListModel>(uri, versionMajor, versionMinor, "TitleListModel", "available titles of a media" ); - qmlRegisterUncreatableType<ChapterListModel>(uri, versionMajor, versionMinor, "ChapterListModel", "available chapters of a media" ); - qmlRegisterUncreatableType<ProgramListModel>(uri, versionMajor, versionMinor, "ProgramListModel", "available programs of a media" ); qmlRegisterUncreatableType<VLCVarChoiceModel>(uri, versionMajor, versionMinor, "VLCVarChoiceModel", "generic variable with choice model" ); - qmlRegisterUncreatableType<CSDButton>(uri, versionMajor, versionMinor, "CSDButton", ""); qmlRegisterUncreatableType<CSDButtonModel>(uri, versionMajor, versionMinor, "CSDButtonModel", "has CSD buttons and provides for communicating CSD events between UI and backend"); + qmlRegisterUncreatableType<NavigationAttached>( uri, versionMajor, versionMinor, "Navigation", "Navigation is only available via attached properties"); - qmlRegisterUncreatableType<PlaylistItem>(uri, versionMajor, versionMinor, "PlaylistItem", ""); - qmlRegisterType<PlaylistListModel>( uri, versionMajor, versionMinor, "PlaylistListModel" ); - qmlRegisterType<PlaylistController>( uri, versionMajor, versionMinor, "PlaylistController" ); + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } - qmlRegisterType<AboutModel>( uri, versionMajor, versionMinor, "AboutModel" ); + { + const char* uri = "VLC.Dialogs"; + const int versionMajor = 1; + const int versionMinor = 0; + // @uri VLC.Dialogs + qmlRegisterType<AboutModel>( uri, versionMajor, versionMinor, "AboutModel" ); qmlRegisterType<DialogModel>(uri, versionMajor, versionMinor, "DialogModel"); - qmlRegisterUncreatableType<DialogId>( uri, versionMajor, versionMinor, "DialogId", ""); + qmlRegisterSingletonType<DialogsProvider>(uri, versionMajor, versionMinor, "DialogsProvider", SingletonRegisterHelper<DialogsProvider>::callback); + qmlRegisterSingletonType<DialogErrorModel>(uri, versionMajor, versionMinor, "DialogErrorModel", SingletonRegisterHelper<DialogErrorModel>::callback); - qmlRegisterType<ItemKeyEventFilter>( uri, versionMajor, versionMinor, "KeyEventFilter" ); - qmlRegisterType<FlickableScrollHandler>( uri, versionMajor, versionMinor, "FlickableScrollHandler" ); + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } - qmlRegisterUncreatableType<ControlbarProfileModel>(uri, versionMajor, versionMinor, "ControlbarProfileModel", ""); - qmlRegisterUncreatableType<ControlbarProfile>(uri, versionMajor, versionMinor, "ControlbarProfile", ""); - qmlRegisterUncreatableType<PlayerControlbarModel>(uri, versionMajor, versionMinor, "PlayerControlbarModel", ""); - qmlRegisterUncreatableType<ControlListModel>( uri, versionMajor, versionMinor, "ControlListModel", "" ); - qmlRegisterType<ControlListFilter>(uri, versionMajor, versionMinor, "ControlListFilter"); - qmlRegisterSingletonType(uri, versionMajor, versionMinor, "PlayerListModel", PlayerControlbarModel::getPlaylistIdentifierListModel); + { + const char* uri = "VLC.Menus"; + const int versionMajor = 1; + const int versionMinor = 0; + // @uri VLC.Menus qmlRegisterType<StringListMenu>( uri, versionMajor, versionMinor, "StringListMenu" ); qmlRegisterType<SortMenu>( uri, versionMajor, versionMinor, "SortMenu" ); qmlRegisterType<SortMenuVideo>( uri, versionMajor, versionMinor, "SortMenuVideo" ); qmlRegisterType<QmlGlobalMenu>( uri, versionMajor, versionMinor, "QmlGlobalMenu" ); qmlRegisterType<QmlMenuBar>( uri, versionMajor, versionMinor, "QmlMenuBar" ); + + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } + + { + const char* uri = "VLC.Player"; + const int versionMajor = 1; + const int versionMinor = 0; + + // @uri VLC.Player + qmlRegisterUncreatableType<TrackListModel>(uri, versionMajor, versionMinor, "TrackListModel", "available tracks of a media (audio/video/sub)" ); + qmlRegisterUncreatableType<TitleListModel>(uri, versionMajor, versionMinor, "TitleListModel", "available titles of a media" ); + qmlRegisterUncreatableType<ChapterListModel>(uri, versionMajor, versionMinor, "ChapterListModel", "available chapters of a media" ); + qmlRegisterUncreatableType<ProgramListModel>(uri, versionMajor, versionMinor, "ProgramListModel", "available programs of a media" ); + qmlRegisterSingletonType<PlayerController>(uri, versionMajor, versionMinor, "Player", SingletonRegisterHelper<PlayerController>::callback); + qmlRegisterType<QmlBookmarkMenu>( uri, versionMajor, versionMinor, "QmlBookmarkMenu" ); qmlRegisterType<QmlProgramMenu>( uri, versionMajor, versionMinor, "QmlProgramMenu" ); qmlRegisterType<QmlRendererMenu>( uri, versionMajor, versionMinor, "QmlRendererMenu" ); qmlRegisterType<QmlSubtitleMenu>( uri, versionMajor, versionMinor, "QmlSubtitleMenu" ); qmlRegisterType<QmlAudioMenu>( uri, versionMajor, versionMinor, "QmlAudioMenu" ); + + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } + + { + const char* uri = "VLC.PlayerControls"; + const int versionMajor = 1; + const int versionMinor = 0; + + // @uri VLC.PlayerControls + qmlRegisterUncreatableType<ControlbarProfileModel>(uri, versionMajor, versionMinor, "ControlbarProfileModel", ""); + qmlRegisterUncreatableType<ControlbarProfile>(uri, versionMajor, versionMinor, "ControlbarProfile", ""); + qmlRegisterUncreatableType<PlayerControlbarModel>(uri, versionMajor, versionMinor, "PlayerControlbarModel", ""); + qmlRegisterUncreatableType<ControlListModel>( uri, versionMajor, versionMinor, "ControlListModel", "" ); + qmlRegisterType<ControlListFilter>(uri, versionMajor, versionMinor, "ControlListFilter"); + qmlRegisterSingletonType(uri, versionMajor, versionMinor, "PlayerListModel", PlayerControlbarModel::getPlaylistIdentifierListModel); + + + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } + + { + const char* uri = "VLC.Playlist"; + const int versionMajor = 1; + const int versionMinor = 0; + + // @uri VLC.Playlist + qmlRegisterUncreatableType<PlaylistItem>(uri, versionMajor, versionMinor, "PlaylistItem", ""); + qmlRegisterType<PlaylistListModel>( uri, versionMajor, versionMinor, "PlaylistListModel" ); + qmlRegisterType<PlaylistController>( uri, versionMajor, versionMinor, "PlaylistController" ); + qmlRegisterType<PlaylistContextMenu>( uri, versionMajor, versionMinor, "PlaylistContextMenu" ); + qmlRegisterSingletonType<PlaylistController>(uri, versionMajor, versionMinor, "MainPlaylistController", SingletonRegisterHelper<PlaylistController>::callback); + + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } + + { + const char* uri = "VLC.Network"; + const int versionMajor = 1; + const int versionMinor = 0; + + // @uri VLC.Network + qmlRegisterType<NetworkMediaModel>( uri, versionMajor, versionMinor, "NetworkMediaModel"); + qmlRegisterType<NetworkDeviceModel>( uri, versionMajor, versionMinor, "NetworkDeviceModel"); + qmlRegisterType<NetworkSourcesModel>( uri, versionMajor, versionMinor, "NetworkSourcesModel"); + qmlRegisterType<ServicesDiscoveryModel>( uri, versionMajor, versionMinor, "ServicesDiscoveryModel"); + qmlRegisterType<StandardPathModel>( uri, versionMajor, versionMinor, "StandardPathModel"); + qmlRegisterType<MLFoldersModel>( uri, versionMajor, versionMinor, "MLFolderModel"); + qmlRegisterType<NetworkMediaContextMenu>( uri, versionMajor, versionMinor, "NetworkMediaContextMenu" ); qmlRegisterType<NetworkDeviceContextMenu>( uri, versionMajor, versionMinor, "NetworkDeviceContextMenu" ); - qmlRegisterType<PlaylistContextMenu>( uri, versionMajor, versionMinor, "PlaylistContextMenu" ); - qmlRegisterUncreatableType<NavigationAttached>( uri, versionMajor, versionMinor, "Navigation", "Navigation is only available via attached properties"); + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } - qmlRegisterType<ViewBlockingRectangle>( uri, versionMajor, versionMinor, "ViewBlockingRectangle" ); + { + const char* uri = "VLC.Style"; + const int versionMajor = 1; + const int versionMinor = 0; - qmlRegisterType<ListSelectionModel>( uri, versionMajor, versionMinor, "ListSelectionModel" ); + // @uri VLC.Style + qmlRegisterUncreatableType<ColorSchemeModel>(uri, versionMajor, versionMinor, "ColorSchemeModel", ""); + qmlRegisterType<ColorContext>(uri, versionMajor, versionMinor, "ColorContext"); + qmlRegisterUncreatableType<ColorProperty>(uri, versionMajor, versionMinor, "ColorProperty", ""); + qmlRegisterType<SystemPalette>(uri, versionMajor, versionMinor, "SystemPalette"); + + qmlRegisterModule(uri, versionMajor, versionMinor); + qmlProtectModule(uri, versionMajor); + } + + { + const char* uri = "VLC.Util"; + const int versionMajor = 1; + const int versionMinor = 0; + // @uri VLC.Util + qmlRegisterSingletonType<QmlKeyHelper>(uri, versionMajor, versionMinor, "KeyHelper", SingletonRegisterHelper<QmlKeyHelper>::callback); + qmlRegisterSingletonType<EffectsImageProvider>(uri, versionMajor, versionMinor, "Effects", SingletonRegisterHelper<EffectsImageProvider>::callback); + qmlRegisterUncreatableType<SVGColorImageBuilder>(uri, versionMajor, versionMinor, "SVGColorImageBuilder", ""); + qmlRegisterSingletonType<SVGColorImage>(uri, versionMajor, versionMinor, "SVGColorImage", SingletonRegisterHelper<SVGColorImage>::callback); + qmlRegisterSingletonType<VLCAccessImage>(uri, versionMajor, versionMinor, "VLCAccessImage", SingletonRegisterHelper<VLCAccessImage>::callback); + qmlRegisterType<DelayEstimator>( uri, versionMajor, versionMinor, "DelayEstimator" ); + + qmlRegisterType<ImageLuminanceExtractor>( uri, versionMajor, versionMinor, "ImageLuminanceExtractor"); + + qmlRegisterType<ItemKeyEventFilter>( uri, versionMajor, versionMinor, "KeyEventFilter" ); + qmlRegisterType<FlickableScrollHandler>( uri, versionMajor, versionMinor, "FlickableScrollHandler" ); + qmlRegisterType<ListSelectionModel>( uri, versionMajor, versionMinor, "ListSelectionModel" ); qmlRegisterType<DoubleClickIgnoringItem>( uri, versionMajor, versionMinor, "DoubleClickIgnoringItem" ); + qmlRegisterModule(uri, versionMajor, versionMinor); qmlProtectModule(uri, versionMajor); } { - // Custom controls - - const char* uri = "org.videolan.controls"; - const int versionMajor = 0; - const int versionMinor = 1; + const char* uri = "VLC.Widgets"; + const int versionMajor = 1; + const int versionMinor = 0; + // @uri VLC.Widgets qmlRegisterType<RoundImage>( uri, versionMajor, versionMinor, "RoundImage" ); + qmlRegisterType<CSDThemeImage>(uri, versionMajor, versionMinor, "CSDThemeImage"); + qmlRegisterType<ViewBlockingRectangle>( uri, versionMajor, versionMinor, "ViewBlockingRectangle" ); - + qmlRegisterModule(uri, versionMajor, versionMinor); qmlProtectModule(uri, versionMajor); } if (m_mainCtx->hasMediaLibrary()) { - const char* uri = "org.videolan.medialib"; - const int versionMajor = 0; - const int versionMinor = 1; + const char* uri = "VLC.MediaLibrary"; + const int versionMajor = 1; + const int versionMinor = 0; + // @uri VLC.MediaLibrary qmlRegisterSingletonType<MediaLib>(uri, versionMajor, versionMinor, "MediaLib", SingletonRegisterHelper<MediaLib>::callback); qmlRegisterUncreatableType<MLItemId>( uri, versionMajor, versionMinor, "MLItemId", ""); @@ -365,7 +445,7 @@ qmlRegisterType<PlaylistListContextMenu>( uri, versionMajor, versionMinor, "PlaylistListContextMenu" ); qmlRegisterType<PlaylistMediaContextMenu>( uri, versionMajor, versionMinor, "PlaylistMediaContextMenu" ); - + qmlRegisterModule(uri, versionMajor, versionMinor); qmlProtectModule(uri, versionMajor); } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/BannerSources.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/BannerSources.qml
Changed
@@ -24,13 +24,13 @@ import QtQml.Models import QtQuick.Window -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///playlist/" as PL -import "qrc:///widgets/" as Widgets -import "qrc:///menus/" as Menus -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Style +import VLC.Playlist +import VLC.Widgets as Widgets +import VLC.Menus as Menus +import VLC.Util T.ToolBar { id: root @@ -43,7 +43,7 @@ // For now, used for d&d functionality // Not strictly necessary to set - property PL.PlaylistListView plListView: null + property PlaylistListView plListView: null property bool _showCSD: MainCtx.clientSideDecoration && !(MainCtx.intfMainWindow.visibility === Window.FullScreen) @@ -110,7 +110,7 @@ Loader { anchors.fill: parent active: root._showCSD - source: "qrc:///widgets/CSDTitlebarTapNDrapHandler.qml" + source: "qrc:///qt/qml/VLC/Widgets/CSDTitlebarTapNDrapHandler.qml" } Column { @@ -205,8 +205,8 @@ height: VLCStyle.globalToolbar_height active: root._showCSD source: VLCStyle.palette.hasCSDImage - ? "qrc:///widgets/CSDThemeButtonSet.qml" - : "qrc:///widgets/CSDWindowButtonSet.qml" + ? "qrc:///qt/qml/VLC/Widgets/CSDThemeButtonSet.qml" + : "qrc:///qt/qml/VLC/Widgets/CSDWindowButtonSet.qml" } } @@ -472,7 +472,7 @@ onClicked: contextMenu.popup(this.mapToGlobal(0, height)) - QmlGlobalMenu { + Menus.QmlGlobalMenu { id: contextMenu ctx: MainCtx }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/MainDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/MainDisplay.qml
Changed
@@ -20,17 +20,15 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///main/" as Main -import "qrc:///widgets/" as Widgets -import "qrc:///playlist/" as PL -import "qrc:///player/" as P +import VLC.Style +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Playlist +import VLC.Player -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///dialogs/" as DG +import VLC.Util +import VLC.Dialogs FocusScope { id: g_mainDisplay @@ -107,35 +105,35 @@ displayText: qsTr("Video"), icon: VLCIcons.topbar_video, name: "video", - url: "qrc:///medialibrary/VideoDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/VideoDisplay.qml" }, { listed: MainCtx.mediaLibraryAvailable, displayText: qsTr("Music"), icon: VLCIcons.topbar_music, name: "music", - url: "qrc:///medialibrary/MusicDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MusicDisplay.qml" }, { listed: !MainCtx.mediaLibraryAvailable, displayText: qsTr("Home"), icon: VLCIcons.home, name: "home", - url: "qrc:///main/NoMedialibHome.qml" + url: "qrc:///qt/qml/VLC/MainInterface/NoMedialibHome.qml" }, { listed: true, displayText: qsTr("Browse"), icon: VLCIcons.topbar_network, name: "network", - url: "qrc:///network/BrowseDisplay.qml" + url: "qrc:///qt/qml/VLC/Network/BrowseDisplay.qml" }, { listed: true, displayText: qsTr("Discover"), icon: VLCIcons.topbar_discover, name: "discover", - url: "qrc:///network/DiscoverDisplay.qml" + url: "qrc:///qt/qml/VLC/Network/DiscoverDisplay.qml" }, { listed: false, name: "mlsettings", - url: "qrc:///medialibrary/MLFoldersSettings.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MLFoldersSettings.qml" } @@ -171,7 +169,7 @@ Navigation.parentItem: g_mainDisplay /* Source selection*/ - Main.BannerSources { + BannerSources { id: sourcesBanner z: 2 Layout.preferredHeight: height @@ -352,7 +350,7 @@ } } - sourceComponent: PL.PlaylistListView { + sourceComponent: PlaylistListView { id: playlist implicitWidth: VLCStyle.isScreenSmall @@ -456,7 +454,7 @@ height: active ? implicitHeight : 0 - source: "qrc:///widgets/ScanProgressBar.qml" + source: "qrc:///qt/qml/VLC/Widgets/ScanProgressBar.qml" onLoaded: { item.background.visible = Qt.binding(function() { return !stackViewParent.layer.enabled }) @@ -467,7 +465,7 @@ } } - P.PIPPlayer { + PIPPlayer { id: playerPip anchors { bottom: miniPlayer.top @@ -501,7 +499,7 @@ } } - DG.Dialogs { + Dialogs { z: 10 bgContent: g_mainDisplay @@ -512,7 +510,7 @@ } } - P.MiniPlayer { + MiniPlayer { id: miniPlayer anchors.left: parent.left
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/MainGridView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/MainGridView.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick -import "qrc:///widgets/" as Widgets +import VLC.Widgets as Widgets Widgets.ExpandGridView { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/MainInterface.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/MainInterface.qml
Changed
@@ -27,12 +27,13 @@ import QtQuick.Window import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/" as Util -import "qrc:///playlist/" as PL +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util +import VLC.Playlist +import VLC.Player Item { id: root @@ -44,8 +45,8 @@ && (MainCtx.intfMainWindow.visibility === Window.Windowed) readonly property var _pageModel: - { name: "mc", url: "qrc:///main/MainDisplay.qml" }, - { name: "player", url:"qrc:///player/Player.qml" }, + { name: "mc", url: "qrc:///qt/qml/VLC/MainInterface/MainDisplay.qml" }, + { name: "player", url:"qrc:///qt/qml/VLC/Player/Player.qml" }, property var _oldHistoryPath: () @@ -82,7 +83,7 @@ _oldHistoryPath = History.viewPath } - Util.ModelSortSettingHandler { + ModelSortSettingHandler { id: contextSaver } @@ -142,7 +143,7 @@ id: playlistWindowLoader asynchronous: true active: !MainCtx.playlistDocked - source: "qrc:///playlist/PlaylistDetachedWindow.qml" + source: "qrc:///qt/qml/VLC/Playlist/PlaylistDetachedWindow.qml" } Connections { @@ -200,15 +201,15 @@ setInitialView() } - DropArea { anchors.fill: parent + z: -1 onEntered: (drag) => { // Do not handle internal drag here: if (!drag.source) { // Foreign drag, check if valid: - if (drop.hasUrls || drop.hasText) { + if (drag.hasUrls || drag.hasText) { drag.accepted = true return } @@ -239,7 +240,7 @@ if (urls.length > 0) { /* D&D of a subtitles file, add it on the fly */ - if (Player.isPlaying && urls.length == 1) { + if (Player.isStarted && urls.length == 1) { if (Player.associateSubtitleFile(urls0)) { drop.accept() return @@ -250,25 +251,25 @@ drop.accept() } } + } - Widgets.PageLoader { - id: stackView - anchors.fill: parent - focus: true - clip: _extendedFrameVisible - - pageModel: _pageModel - - Connections { - target: Player - function onPlayingStateChanged() { - if (Player.playingState === Player.PLAYING_STATE_STOPPED - && History.match(History.viewPath, "player") ) { - if (History.previousEmpty) - _pushHome() - else - History.previous() - } + Widgets.PageLoader { + id: stackView + anchors.fill: parent + focus: true + clip: _extendedFrameVisible + + pageModel: _pageModel + + Connections { + target: Player + function onPlayingStateChanged() { + if (Player.playingState === Player.PLAYING_STATE_STOPPED + && History.match(History.viewPath, "player") ) { + if (History.previousEmpty) + _pushHome() + else + History.previous() } } } @@ -276,7 +277,7 @@ Loader { asynchronous: true - source: "qrc:///menus/GlobalShortcuts.qml" + source: "qrc:///qt/qml/VLC/Menus/GlobalShortcuts.qml" } MouseArea { @@ -297,7 +298,7 @@ } Component.onCompleted: { setSource( - "qrc:///widgets/CSDMouseStealer.qml", { + "qrc:///qt/qml/VLC/Widgets/CSDMouseStealer.qml", { target: g_mainInterface, anchorInside: Qt.binding(() => !_extendedFrameVisible) })
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/MainTableView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/MainTableView.qml
Changed
@@ -18,8 +18,8 @@ import QtQuick -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.KeyNavigableTableView { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/MainViewLoader.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/MainViewLoader.qml
Changed
@@ -21,12 +21,11 @@ import QtQuick import QtQml.Models -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style Widgets.StackViewExt { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/maininterface/qml/NoMedialibHome.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/maininterface/qml/NoMedialibHome.qml
Changed
@@ -17,10 +17,11 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Dialogs FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/ArtistTopBanner.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/ArtistTopBanner.qml
Changed
@@ -21,13 +21,12 @@ import QtQml.Models import Qt5Compat.GraphicalEffects -import org.videolan.medialib 0.1 -import org.videolan.controls 0.1 -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util FocusScope { id: root @@ -102,7 +101,7 @@ implicitHeight: VLCStyle.cover_normal implicitWidth: VLCStyle.cover_normal - RoundImage { + Widgets.RoundImage { source: artist.cover || VLCStyle.noArtArtist sourceSize.width: width sourceSize.height: height
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/AudioGridItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/AudioGridItem.qml
Changed
@@ -17,12 +17,11 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util Widgets.GridItem { property var model: ({})
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MediaGroupDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MediaGroupDisplay.qml
Changed
@@ -20,12 +20,12 @@ import QtQuick -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style VideoAll { id: root @@ -52,7 +52,7 @@ ml: MediaLib } - contextMenu: Util.MLContextMenu { model: modelVideo; showPlayAsAudioAction: true } + contextMenu: MLContextMenu { model: modelVideo; showPlayAsAudioAction: true } header: Widgets.ViewHeader { view: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicAlbums.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicAlbums.qml
Changed
@@ -17,16 +17,14 @@ *****************************************************************************/ import QtQuick -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style -MainInterface.MainViewLoader { +MainViewLoader { id: root // Properties @@ -84,7 +82,7 @@ defaultCover: VLCStyle.noArtAlbumCover } - Util.MLContextMenu { + MLContextMenu { id: contextMenu model: albumModelId @@ -180,7 +178,7 @@ Component { id: tableComponent - MainInterface.MainTableView { + MainTableView { id: tableView_id property var _modelSmall: {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicAlbumsDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicAlbumsDisplay.qml
Changed
@@ -18,10 +18,10 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets MusicAlbums { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicAlbumsGridExpandDelegate.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicAlbumsGridExpandDelegate.qml
Changed
@@ -20,13 +20,12 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.medialib 0.1 -import org.videolan.controls 0.1 -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style FocusScope { id: root @@ -114,7 +113,7 @@ Component { id: cover - RoundImage { + Widgets.RoundImage { id: expand_cover_id property int cover_height: parent.cover_height @@ -134,7 +133,7 @@ sourceItem: parent - visible: (parent.status === RoundImage.Ready) + visible: (parent.status === Widgets.RoundImage.Ready) } } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicAllArtists.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicAllArtists.qml
Changed
@@ -18,16 +18,14 @@ import QtQuick -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style -MainInterface.MainViewLoader { +MainViewLoader { id: root // Properties @@ -35,7 +33,7 @@ readonly property int currentIndex: currentItem?.currentIndex ?? - 1 property Component header: null - + readonly property int contentLeftMargin: currentItem?.contentLeftMargin ?? 0 readonly property int contentRightMargin: currentItem?.contentRightMargin ?? 0 @@ -62,7 +60,7 @@ list: tableComponent emptyLabel: emptyLabelComponent - Util.MLContextMenu { + MLContextMenu { id: contextMenu model: artistModel @@ -87,7 +85,7 @@ basePictureWidth: VLCStyle.gridCover_music_width basePictureHeight: VLCStyle.gridCover_music_height titleTopMargin: VLCStyle.gridItemTitle_topMargin + VLCStyle.margin_xxsmall - + selectionModel: root.selectionModel model: artistModel focus: true @@ -143,7 +141,7 @@ Component { id: tableComponent - MainInterface.MainTableView { + MainTableView { id: artistTable property var _modelSmall: {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicArtist.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicArtist.qml
Changed
@@ -20,14 +20,12 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style FocusScope { id: root @@ -177,7 +175,7 @@ root.setCurrentItemFocus(Qt.TabFocusReason); } - Util.GridSizeHelper { + GridSizeHelper { id: gridHelper availableWidth: albumsList.width @@ -333,13 +331,13 @@ parentId: albumModel.parentId } - Util.MLContextMenu { + MLContextMenu { id: contextMenu model: albumModel } - Util.MLContextMenu { + MLContextMenu { id: trackContextMenu model: trackModel @@ -450,7 +448,7 @@ Component { id: tableComponent - MainInterface.MainTableView { + MainTableView { id: tableView_id model: trackModel
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicArtistDelegate.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicArtistDelegate.qml
Changed
@@ -23,12 +23,11 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.medialib 0.1 -import org.videolan.controls 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util T.ItemDelegate { id: root @@ -156,7 +155,7 @@ contentItem: RowLayout { spacing: VLCStyle.margin_xsmall - RoundImage { + Widgets.RoundImage { implicitWidth: VLCStyle.play_cover_small implicitHeight: VLCStyle.play_cover_small Layout.fillHeight: true
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicArtistsAlbums.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicArtistsAlbums.qml
Changed
@@ -20,15 +20,12 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.medialib 0.1 -import org.videolan.controls 0.1 -import org.videolan.vlc 0.1 - -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///style/" +import VLC.MainInterface +import VLC.MediaLibrary + +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicArtistsDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicArtistsDisplay.qml
Changed
@@ -20,13 +20,12 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style Widgets.PageLoader {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicDisplay.qml
Changed
@@ -19,11 +19,11 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.PageLoader { @@ -36,23 +36,23 @@ displayText: qsTr("Artists"), name: "artists", default: true, - url: "qrc:///medialibrary/MusicArtistsDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MusicArtistsDisplay.qml" }, { displayText: qsTr("Albums"), name: "albums", - url: "qrc:///medialibrary/MusicAlbumsDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MusicAlbumsDisplay.qml" }, { displayText: qsTr("Tracks"), name: "tracks" , - url: "qrc:///medialibrary/MusicTracksDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MusicTracksDisplay.qml" }, { displayText: qsTr("Genres"), name: "genres" , - url: "qrc:///medialibrary/MusicGenresDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MusicGenresDisplay.qml" }, { displayText: qsTr("Playlists"), name: "playlists" , - url: "qrc:///medialibrary/MusicPlaylistsDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/MusicPlaylistsDisplay.qml" }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicGenres.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicGenres.qml
Changed
@@ -20,16 +20,14 @@ import QtQuick.Templates as T import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style -MainInterface.MainViewLoader { +MainViewLoader { id: root // Properties @@ -109,7 +107,7 @@ } } - Util.MLContextMenu { + MLContextMenu { id: contextMenu model: genreModel @@ -120,7 +118,7 @@ id: gridComponent Widgets.ExpandGridItemView { id: gridView_id - + basePictureWidth: VLCStyle.gridCover_video_width basePictureHeight: VLCStyle.gridCover_video_width / 2 titleHeight: 0 @@ -213,7 +211,7 @@ Component { id: tableComponent /* Table View */ - MainInterface.MainTableView { + MainTableView { id: tableView_id property var _modelSmall: {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicGenresDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicGenresDisplay.qml
Changed
@@ -18,12 +18,12 @@ import QtQuick import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style Widgets.PageLoader { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicPlaylistsDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicPlaylistsDisplay.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.PageLoader { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicTrackListDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicTrackListDisplay.qml
Changed
@@ -20,12 +20,11 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style Widgets.KeyNavigableTableView { id: root @@ -223,7 +222,7 @@ } } - Util.MLContextMenu { + MLContextMenu { id: contextMenu model: rootmodel
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/MusicTracksDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/MusicTracksDisplay.qml
Changed
@@ -17,12 +17,11 @@ *****************************************************************************/ import QtQuick import QtQuick.Controls -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface +import VLC.Style +import VLC.Widgets as Widgets FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/PlaylistMedia.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/PlaylistMedia.qml
Changed
@@ -20,15 +20,14 @@ import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Util +import VLC.Style -MainInterface.MainTableView { +MainTableView { id: root //---------------------------------------------------------------------------------------------
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/PlaylistMediaDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/PlaylistMediaDisplay.qml
Changed
@@ -23,13 +23,12 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/" as Util -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/PlaylistMediaList.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/PlaylistMediaList.qml
Changed
@@ -23,16 +23,15 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Util +import VLC.Style +import VLC.Dialogs -MainInterface.MainViewLoader { +MainViewLoader { id: root //--------------------------------------------------------------------------------------------- @@ -44,7 +43,7 @@ readonly property int currentIndex: currentItem?.currentIndex ?? -1 property Component header: null - + readonly property int contentLeftMargin: currentItem?.contentLeftMargin ?? 0 readonly property int contentRightMargin: currentItem?.contentRightMargin ?? 0 @@ -340,7 +339,7 @@ Component { id: table - MainInterface.MainTableView { + MainTableView { id: tableView //-------------------------------------------------------------------------------------
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/UrlListDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/UrlListDisplay.qml
Changed
@@ -20,12 +20,11 @@ import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///util" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style Widgets.KeyNavigableTableView { @@ -98,7 +97,7 @@ ml: MediaLib } - Util.MLContextMenu { + MLContextMenu { id: contextMenu model: urlModel
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoAll.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoAll.qml
Changed
@@ -21,16 +21,14 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Util +import VLC.Style -MainInterface.MainViewLoader { +MainViewLoader { id: root // Properties @@ -53,7 +51,7 @@ required property string sectionProperty // NOTE: The ContextMenu depends on the model so we have to provide it too. - required property Util.MLContextMenu contextMenu + required property MLContextMenu contextMenu // function(model) -> strings.... // used to get grid labels per model item
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoAllDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoAllDisplay.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.PageLoader { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoAllSubDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoAllSubDisplay.qml
Changed
@@ -20,13 +20,13 @@ import QtQuick -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style +import VLC.Menus VideoAll { id: root @@ -52,7 +52,7 @@ model: _meta?.model ?? null - contextMenu: Util.MLContextMenu { model: _meta ? _meta.model : null; showPlayAsAudioAction: true } + contextMenu: MLContextMenu { model: _meta ? _meta.model : null; showPlayAsAudioAction: true } gridLabels: _meta?.gridLabels ?? root.getLabel
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoDisplay.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.PageLoader { id: root @@ -67,11 +67,11 @@ name: "all", default: true, displayText: qsTr("All"), - url: "qrc:///medialibrary/VideoAllDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/VideoAllDisplay.qml" },{ name: "playlists", displayText: qsTr("Playlists"), - url: "qrc:///medialibrary/VideoPlaylistsDisplay.qml" + url: "qrc:///qt/qml/VLC/MediaLibrary/VideoPlaylistsDisplay.qml" }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoGridDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoGridDisplay.qml
Changed
@@ -21,12 +21,12 @@ import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///util" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style Widgets.ExpandGridItemView { id: gridView @@ -34,7 +34,7 @@ // Properties property Widgets.MLDragItem dragItem - property Util.MLContextMenu contextMenu + property MLContextMenu contextMenu property var labels // Signals
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoGridItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoGridItem.qml
Changed
@@ -17,12 +17,12 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style Widgets.GridItem { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoInfoExpandPanel.qml
Changed
@@ -20,14 +20,12 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.medialib 0.1 -import org.videolan.controls 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style FocusScope { id: root @@ -110,7 +108,7 @@ width: VLCStyle.gridCover_video_width /* A bigger cover for the album */ - RoundImage { + Widgets.RoundImage { id: expand_cover_id anchors.fill: parent @@ -124,7 +122,7 @@ sourceItem: parent - visible: (parent.status === RoundImage.Ready) + visible: (parent.status === Widgets.RoundImage.Ready) } } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoListDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoListDisplay.qml
Changed
@@ -19,15 +19,14 @@ import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///util" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style -MainInterface.MainTableView { +MainTableView { id: listView_id //---------------------------------------------------------------------------------------------
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoPlaylistsDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoPlaylistsDisplay.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.PageLoader { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoRecentVideos.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoRecentVideos.qml
Changed
@@ -20,13 +20,12 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.medialib 0.1 -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style FocusScope { id: root @@ -134,7 +133,7 @@ sortModel: - contextMenu: Util.MLContextMenu { + contextMenu: MLContextMenu { model: recentModel showPlayAsAudioAction: true
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/medialibrary/qml/VideoRecentVideosDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/medialibrary/qml/VideoRecentVideosDisplay.qml
Changed
@@ -20,13 +20,12 @@ import QtQuick -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/" as Util -import "qrc:///main/" as MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util +import VLC.MainInterface VideoAll { id: root @@ -45,7 +44,7 @@ ml: MediaLib } - contextMenu: Util.MLContextMenu { model: recentModel; showPlayAsAudioAction: true } + contextMenu: MLContextMenu { model: recentModel; showPlayAsAudioAction: true } header: Widgets.ViewHeader { view: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/menus/menus.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/menus/menus.cpp
Changed
@@ -470,6 +470,7 @@ current->addMenu( new CheckableListMenu(qtr( "&Zoom" ), THEMIM->getZoom(), CheckableListMenu::GROUPED_EXLUSIVE, current) ); current->addMenu( new CheckableListMenu(qtr( "&Aspect Ratio" ), THEMIM->getAspectRatio(), CheckableListMenu::GROUPED_EXLUSIVE, current) ); current->addMenu( new CheckableListMenu(qtr( "&Crop" ), THEMIM->getCrop(), CheckableListMenu::GROUPED_EXLUSIVE, current) ); + current->addMenu( new CheckableListMenu(qtr( "&Fit" ), THEMIM->getFit(), CheckableListMenu::GROUPED_EXLUSIVE, current) ); current->addSeparator(); /* Rendering modifiers */
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/menus/qml/GlobalShortcuts.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/menus/qml/GlobalShortcuts.qml
Changed
@@ -17,7 +17,8 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.Dialogs Item { @@ -49,6 +50,6 @@ Loader { active: MainCtx.mediaLibraryAvailable - source: "qrc:///menus/GlobalShortcutsMedialib.qml" + source: "qrc:///qt/qml/VLC/Menus/GlobalShortcutsMedialib.qml" } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/menus/qml/GlobalShortcutsMedialib.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/menus/qml/GlobalShortcutsMedialib.qml
Changed
@@ -17,8 +17,8 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary +import VLC.Dialogs Item { ShortcutExt{ sequence:"Ctrl+B"; onActivated: DialogsProvider.bookmarksDialog() }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/menus/qml/Menubar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/menus/qml/Menubar.qml
Changed
@@ -19,11 +19,11 @@ import QtQuick.Controls import QtQuick.Controls.impl import QtQuick.Templates as T -import org.videolan.vlc 0.1 import QtQuick.Layouts -import "qrc:///style/" - +import VLC.MainInterface +import VLC.Style +import VLC.Menus Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/menus/qml/ShortcutExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/menus/qml/ShortcutExt.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 +import VLC.MainInterface Shortcut { context: Qt.ApplicationShortcut
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/meson.build -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/meson.build
Changed
@@ -530,6 +530,11 @@ ) endif +qrc_files = files('assets.qrc') +if host_system == 'windows' + qrc_files += files('windows.qrc') +endif + ui_sources = files( 'dialogs/extended/equalizer.ui', 'dialogs/extended/video_effects.ui', @@ -555,16 +560,385 @@ 'dialogs/vlm/vlm.ui', ) -qrc_files = files('assets.qrc', 'qml.qrc') -if host_system == 'windows' - qrc_files += files('windows.qrc') -endif +qml_modules = + +qml_modules += { + 'name' : 'VLC.Dialogs', + 'target' : 'dialogs', + 'outdir' : 'VLC/Dialogs', + 'sources': files( + 'dialogs/dialogs/qml/CustomDialog.qml', + 'dialogs/dialogs/qml/Dialogs.qml', + 'dialogs/dialogs/qml/ModalDialog.qml', + 'dialogs/dialogs/qml/WindowDialog.qml', + 'dialogs/toolbar/qml/EditorDNDDelegate.qml', + 'dialogs/toolbar/qml/EditorDNDView.qml', + 'dialogs/toolbar/qml/EditorDummyButton.qml', + 'dialogs/toolbar/qml/EditorTabButton.qml', + 'dialogs/toolbar/qml/ToolbarEditor.qml', + 'dialogs/toolbar/qml/ToolbarEditorDialog.qml', + 'dialogs/toolbar/qml/ToolbarEditorButtonList.qml' + ), +} + +qml_modules += { + 'name' : 'VLC.MainInterface', + 'target' : 'maininterface', + 'outdir' : 'VLC/MainInterface', + 'sources': files( + 'maininterface/qml/BannerSources.qml', + 'maininterface/qml/MainInterface.qml', + 'maininterface/qml/MainViewLoader.qml', + 'maininterface/qml/MainDisplay.qml', + 'maininterface/qml/MainGridView.qml', + 'maininterface/qml/MainTableView.qml', + 'maininterface/qml/NoMedialibHome.qml' + ), +} +qml_modules += { + 'name' : 'VLC.MediaLibrary', + 'target' : 'medialibrary', + 'outdir' : 'VLC/MediaLibrary', + 'sources': files( + 'medialibrary/qml/ArtistTopBanner.qml', + 'medialibrary/qml/AudioGridItem.qml', + 'medialibrary/qml/MediaGroupDisplay.qml', + 'medialibrary/qml/MusicAlbums.qml', + 'medialibrary/qml/MusicAlbumsDisplay.qml', + 'medialibrary/qml/MusicAlbumsGridExpandDelegate.qml', + 'medialibrary/qml/MusicArtist.qml', + 'medialibrary/qml/MusicArtistDelegate.qml', + 'medialibrary/qml/MusicArtistsAlbums.qml', + 'medialibrary/qml/MusicAllArtists.qml', + 'medialibrary/qml/MusicArtistsDisplay.qml', + 'medialibrary/qml/MusicDisplay.qml', + 'medialibrary/qml/MusicGenres.qml', + 'medialibrary/qml/MusicGenresDisplay.qml', + 'medialibrary/qml/MusicPlaylistsDisplay.qml', + 'medialibrary/qml/MusicTrackListDisplay.qml', + 'medialibrary/qml/MusicTracksDisplay.qml', + 'medialibrary/qml/UrlListDisplay.qml', + 'medialibrary/qml/VideoDisplay.qml', + 'medialibrary/qml/VideoAll.qml', + 'medialibrary/qml/VideoAllDisplay.qml', + 'medialibrary/qml/VideoAllSubDisplay.qml', + 'medialibrary/qml/PlaylistMediaList.qml', + 'medialibrary/qml/PlaylistMedia.qml', + 'medialibrary/qml/PlaylistMediaDisplay.qml', + 'medialibrary/qml/VideoPlaylistsDisplay.qml', + 'medialibrary/qml/VideoRecentVideos.qml', + 'medialibrary/qml/VideoRecentVideosDisplay.qml', + 'medialibrary/qml/VideoGridItem.qml', + 'medialibrary/qml/VideoInfoExpandPanel.qml', + 'medialibrary/qml/VideoListDisplay.qml', + 'medialibrary/qml/VideoGridDisplay.qml' + ), +} + +qml_modules += { + 'name' : 'VLC.Menus', + 'target' : 'menus', + 'outdir' : 'VLC/Menus', + 'sources': files( + 'menus/qml/GlobalShortcuts.qml', + 'menus/qml/GlobalShortcutsMedialib.qml', + 'menus/qml/Menubar.qml', + 'menus/qml/ShortcutExt.qml' + ), +} + +qml_modules += { + 'name' : 'VLC.Network', + 'target' : 'network', + 'outdir' : 'VLC/Network', + 'sources': files( + 'network/qml/AddressbarButton.qml', + 'network/qml/BrowseDeviceView.qml', + 'network/qml/BrowseDisplay.qml', + 'network/qml/BrowseHomeDisplay.qml', + 'network/qml/BrowseTreeDisplay.qml', + 'network/qml/BrowseTreeHeader.qml', + 'network/qml/DiscoverDisplay.qml', + 'network/qml/DiscoverUrlDisplay.qml', + 'network/qml/NetworkAddressbar.qml', + 'network/qml/NetworkCustomCover.qml', + 'network/qml/NetworkGridItem.qml', + 'network/qml/NetworkThumbnailItem.qml', + 'network/qml/ServicesHomeDisplay.qml', + 'network/qml/ServicesManage.qml', + 'network/qml/ServicesSources.qml' + ), +} + +qml_modules += { + 'name' : 'VLC.Player', + 'target' : 'player', + 'outdir' : 'VLC/Player', + 'sources': files( + 'player/qml/Bookmarks.qml', + 'player/qml/ControlBar.qml', + 'player/qml/PlaybackSpeed.qml', + 'player/qml/MiniPlayer.qml', + 'player/qml/PIPPlayer.qml', + 'player/qml/Player.qml', + 'player/qml/PlayerBlurredBackground.qml', + 'player/qml/PlayerControlLayout.qml', + 'player/qml/PlayerPlaylistVisibilityFSM.qml', + 'player/qml/ResumeDialog.qml', + 'player/qml/SliderBar.qml', + 'player/qml/TopBar.qml', + 'player/qml/TracksMenu.qml', + 'player/qml/TracksPage.qml', + 'player/qml/TracksPageAudio.qml', + 'player/qml/TracksPageSpeed.qml', + 'player/qml/TracksPageSubtitle.qml', + 'player/qml/TracksListPage.qml', + 'player/qml/ControlLayout.qml', + 'player/qml/ControlRepeater.qml', + 'player/qml/NavigationBox.qml', + ), + 'singletons' : files( + 'player/qml/PlayerControlbarControls.qml', + ) +} + +qml_modules += { + 'name' : 'VLC.PlayerControls', + 'target' : 'playercontrols', + 'outdir' : 'VLC/PlayerControls', + 'sources': files( + 'player/qml/controlbarcontrols/HighResolutionTimeWidget.qml', + 'player/qml/controlbarcontrols/ArtworkInfoWidget.qml', + 'player/qml/controlbarcontrols/AspectRatioWidget.qml', + 'player/qml/controlbarcontrols/AtoBButton.qml', + 'player/qml/controlbarcontrols/BackButton.qml', + 'player/qml/controlbarcontrols/BookmarkButton.qml', + 'player/qml/controlbarcontrols/ChapterNextButton.qml', + 'player/qml/controlbarcontrols/ChapterPreviousButton.qml', + 'player/qml/controlbarcontrols/DvdMenuButton.qml', + 'player/qml/controlbarcontrols/ExpandingSpacerWidget.qml', + 'player/qml/controlbarcontrols/ExtendedSettingsButton.qml', + 'player/qml/controlbarcontrols/FasterButton.qml', + 'player/qml/controlbarcontrols/FrameButton.qml', + 'player/qml/controlbarcontrols/FullscreenButton.qml', + 'player/qml/controlbarcontrols/InfoButton.qml', + 'player/qml/controlbarcontrols/LangButton.qml', + 'player/qml/controlbarcontrols/LoopButton.qml', + 'player/qml/controlbarcontrols/MenuButton.qml', + 'player/qml/controlbarcontrols/NavigationBoxButton.qml', + 'player/qml/controlbarcontrols/NavigationWidget.qml', + 'player/qml/controlbarcontrols/NextButton.qml', + 'player/qml/controlbarcontrols/OpenButton.qml', + 'player/qml/controlbarcontrols/PlaybackSpeedButton.qml', + 'player/qml/controlbarcontrols/PlayButton.qml', + 'player/qml/controlbarcontrols/PlayerSwitchButton.qml', + 'player/qml/controlbarcontrols/PlaylistButton.qml', + 'player/qml/controlbarcontrols/PreviousButton.qml', + 'player/qml/controlbarcontrols/ProgramButton.qml', + 'player/qml/controlbarcontrols/QuitButton.qml', + 'player/qml/controlbarcontrols/RandomButton.qml', + 'player/qml/controlbarcontrols/RendererButton.qml', + 'player/qml/controlbarcontrols/RecordButton.qml', + 'player/qml/controlbarcontrols/ReverseButton.qml', + 'player/qml/controlbarcontrols/SkipBackButton.qml', + 'player/qml/controlbarcontrols/SkipForwardButton.qml', + 'player/qml/controlbarcontrols/SlowerButton.qml', + 'player/qml/controlbarcontrols/SnapshotButton.qml', + 'player/qml/controlbarcontrols/SpacerWidget.qml', + 'player/qml/controlbarcontrols/StopButton.qml', + 'player/qml/controlbarcontrols/TeletextButton.qml', + 'player/qml/controlbarcontrols/TeletextColorButton.qml', + 'player/qml/controlbarcontrols/TeletextWidget.qml', + 'player/qml/controlbarcontrols/VolumeWidget.qml', + 'player/qml/controlbarcontrols/Fallback.qml', + ), +} + +qml_modules += { + 'name' : 'VLC.Playlist', + 'target' : 'playlist', + 'outdir' : 'VLC/Playlist', + 'sources': files( + 'playlist/qml/PlaylistDelegate.qml', + 'playlist/qml/PlaylistListView.qml', + 'playlist/qml/PlaylistToolbar.qml', + 'playlist/qml/PlaylistDetachedWindow.qml', + ), +} + +qml_modules += { + 'name' : 'VLC.Style', + 'target' : 'style', + 'outdir' : 'VLC/Style', + 'singletons': files( + 'style/AcrylicController.qml', + 'style/VLCIcons.qml', + 'style/VLCStyle.qml', + ), +} + +qml_modules += { + 'name' : 'VLC.Util', + 'target' : 'util', + 'outdir' : 'VLC/Util', + 'sources': files( + 'util/qml/ModelSortSettingHandler.qml', + 'util/qml/FlickableScrollHandler.qml', + 'util/qml/ViewDragAutoScrollHandler.qml', + 'util/qml/FSM.qml', + 'util/qml/FSMState.qml', + 'util/qml/GridSizeHelper.qml', + 'util/qml/NativeMenu.qml', + 'util/qml/MLContextMenu.qml', + 'util/qml/FadeControllerStateGroup.qml' + ), + 'singletons': files( + 'util/qml/Helpers.qml', + ), +} + +qml_modules += { + 'name' : 'VLC.Widgets', + 'target' : 'widgets', + 'outdir' : 'VLC/Widgets', + 'sources': files( + 'widgets/qml/LabelExt.qml', + 'widgets/qml/ActionButtonOverlay.qml', + 'widgets/qml/ActionButtonPrimary.qml', + 'widgets/qml/BannerTabButton.qml', + 'widgets/qml/BannerCone.qml', + 'widgets/qml/BusyIndicatorExt.qml', + 'widgets/qml/CaptionLabel.qml', + 'widgets/qml/CheckButton.qml', + 'widgets/qml/CheckedDelegate.qml', + 'widgets/qml/ComboBoxExt.qml', + 'widgets/qml/AcrylicBackground.qml', + 'widgets/qml/AnimatedBackground.qml', + 'widgets/qml/CSDThemeButton.qml', + 'widgets/qml/CSDThemeButtonSet.qml', + 'widgets/qml/CSDWindowButton.qml', + 'widgets/qml/CSDWindowButtonSet.qml', + 'widgets/qml/CSDTitlebarTapNDrapHandler.qml', + 'widgets/qml/CSDMouseStealer.qml', + 'widgets/qml/CurrentIndicator.qml', + 'widgets/qml/DragItem.qml', + 'widgets/qml/DrawerExt.qml', + 'widgets/qml/ExpandGridView.qml', + 'widgets/qml/ExpandGridItemView.qml', + 'widgets/qml/EmptyLabel.qml', + 'widgets/qml/EmptyLabelButton.qml', + 'widgets/qml/EmptyLabelHint.qml', + 'widgets/qml/GridItem.qml', + 'widgets/qml/HorizontalResizeHandle.qml', + 'widgets/qml/IconLabel.qml', + 'widgets/qml/IconButton.qml', + 'widgets/qml/IconToolButton.qml', + 'widgets/qml/IconTrackButton.qml', + 'widgets/qml/ImageToolButton.qml', + 'widgets/qml/KeyNavigableListView.qml', + 'widgets/qml/KeyNavigableTableView.qml', + 'widgets/qml/TableViewDelegate.qml', + 'widgets/qml/TableRowDelegate.qml', + 'widgets/qml/TableHeaderDelegate.qml', + 'widgets/qml/DefaultShadow.qml', + 'widgets/qml/ListLabel.qml', + 'widgets/qml/LocalTabBar.qml', + 'widgets/qml/MediaCover.qml', + 'widgets/qml/SubtitleLabel.qml', + 'widgets/qml/MenuCaption.qml', + 'widgets/qml/MenuLabel.qml', + 'widgets/qml/MLDragItem.qml', + 'widgets/qml/NavigableCol.qml', + 'widgets/qml/NavigableRow.qml', + 'widgets/qml/PlayCover.qml', + 'widgets/qml/RoundButton.qml', + 'widgets/qml/ScaledImage.qml', + 'widgets/qml/ScanProgressBar.qml', + 'widgets/qml/TextAutoScroller.qml', + 'widgets/qml/SearchBox.qml', + 'widgets/qml/SliderExt.qml', + 'widgets/qml/SortControl.qml', + 'widgets/qml/SpinBoxExt.qml', + 'widgets/qml/StackViewExt.qml', + 'widgets/qml/PageLoader.qml', + 'widgets/qml/ButtonExt.qml', + 'widgets/qml/TableColumns.qml', + 'widgets/qml/TextFieldExt.qml', + 'widgets/qml/TextToolButton.qml', + 'widgets/qml/TrackDelayButton.qml', + 'widgets/qml/VideoProgressBar.qml', + 'widgets/qml/VideoQualityLabels.qml', + 'widgets/qml/ListSubtitleLabel.qml', + 'widgets/qml/PointingTooltip.qml', + 'widgets/qml/FrostedGlassEffect.qml', + 'widgets/qml/OverlayMenu.qml', + 'widgets/qml/ToolTipExt.qml', + 'widgets/qml/DropShadowImage.qml', + 'widgets/qml/DoubleShadow.qml', + 'widgets/qml/FadingEdge.qml', + 'widgets/qml/FadingEdgeForListView.qml', + 'widgets/qml/PopupIconToolButton.qml', + 'widgets/qml/PartialEffect.qml', + 'widgets/qml/ViewHeader.qml', + 'widgets/qml/ProgressIndicator.qml' + ), +} qml_tests = { 'tst_FSM': files('tests/tst_FSM.qml'), } +qmllibs = + if qt6_dep.found() + prog_python = find_program('python3') + modules_qrc = + foreach module : qml_modules + #generates 'res.qrc', 'qmldir.qrc', 'qmldir', + run_command( + prog_python, + meson.current_source_dir() / 'scripts/genqrc.py', + '-o', meson.current_build_dir() / module'outdir' / 'res.qrc', + '--prefix', 'qt/qml' / module'outdir', + '--sources', module.get('sources', ) + module.get('singletons', ), + check: true, + ) + run_command( + prog_python, + meson.current_source_dir() / 'scripts/genqmldir.py', + '-o', meson.current_build_dir() / module'outdir' / 'qmldir', + '--module', module'name', + '--prefix', 'qt/qml', + '--sources', module.get('sources', ), + '--singletons', module.get('singletons', ), + check: true, + ) + run_command( + prog_python, + meson.current_source_dir() / 'scripts/genqrc.py', + '-o', meson.current_build_dir() / module'outdir' / 'qmldir.qrc', + '--prefix', 'qt/qml' / module'outdir', + '--sources', meson.current_build_dir() / module'outdir' / 'qmldir', + check: true, + ) + module_qrc = qt6.preprocess( + module'target' + '_assets', + qresources: files( + meson.current_build_dir() / module'outdir' / 'res.qrc', + meson.current_build_dir() / module'outdir' / 'qmldir.qrc', + ), + include_directories: qt_include_dir, + dependencies: qt6_dep + ) + + #FIXME copy every files to the outdir module so they can be used by qt tooling + + qmllibs += static_library( + 'qml_module' + module'target', + module_qrc, + dependencies: qt6_dep) + endforeach + qt6pre_qrc = qt6.preprocess( qresources: qrc_files, include_directories: qt_include_dir, @@ -575,8 +949,6 @@ include_directories: qt_include_dir, dependencies: qt6_dep) - qt_bin_directory = qt6_dep.get_variable(pkgconfig: 'bindir') - qt_sources = files('qt.cpp') subdir('shaders') @@ -683,17 +1055,23 @@ 'include_directories' : qt_include_dir, 'c_args' : qt_extra_flags, 'cpp_args' : qt_extra_flags, qt_cppargs, - 'link_args' : qt_link_args + 'link_args' : qt_link_args, + 'link_with' : qmllibs, } - test_qt6_dep = dependency('qt6', modules: 'QuickTest', required: false) + test_qt6_dep = dependency('qt6', version: '=' + qt6_dep.version(), modules: 'QuickTest', required: false) if test_qt6_dep.found() + qml_test_moc = qt6.compile_moc( + sources : files('tests/qml_test.cpp'), + dependencies : test_qt6_dep, qt6_dep + ) qml_test = executable( 'qml_test', - files('tests/qml_test.cpp'), + files('tests/qml_test.cpp'), qml_test_moc, qt6pre_qrc, build_by_default: false, - dependencies: test_qt6_dep, + dependencies: test_qt6_dep, qt6_dep, + link_with: qmllibs, cpp_args: '-DQUICK_TEST_SOURCE_DIR="' + meson.current_source_dir() + '/tests"' ) foreach test_name, test_file : qml_tests
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/AddressbarButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/AddressbarButton.qml
Changed
@@ -19,9 +19,9 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Network T.AbstractButton { id: button
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/BrowseDeviceView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/BrowseDeviceView.qml
Changed
@@ -20,11 +20,12 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util +import VLC.Style +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Network FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/BrowseDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/BrowseDisplay.qml
Changed
@@ -20,11 +20,12 @@ import QtQml.Models import QtQml -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style +import VLC.Network Widgets.PageLoader { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/BrowseHomeDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/BrowseHomeDisplay.qml
Changed
@@ -21,12 +21,12 @@ import QtQml.Models import QtQml -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///util/" as Util -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Util +import VLC.Style +import VLC.Network FocusScope { id: root @@ -145,7 +145,7 @@ contentWidth: column.width contentHeight: column.height - Util.FlickableScrollHandler { } + FlickableScrollHandler { } Navigation.parentItem: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/BrowseTreeDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/BrowseTreeDisplay.qml
Changed
@@ -18,15 +18,14 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///widgets/" as Widgets -import "qrc:///main/" as MainInterface -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Network -MainInterface.MainViewLoader { +MainViewLoader { id: root // Properties @@ -144,7 +143,7 @@ subtitleHeight: 0 maxNbItemPerRow: 12 - + selectionModel: root.selectionModel model: root.model @@ -203,7 +202,7 @@ Component{ id: tableComponent - MainInterface.MainTableView { + MainTableView { id: tableView property Component thumbnailHeader: Widgets.TableHeaderDelegate {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/BrowseTreeHeader.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/BrowseTreeHeader.qml
Changed
@@ -21,12 +21,12 @@ import QtQuick.Layouts import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Network +import VLC.MainInterface T.Pane { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/DiscoverDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/DiscoverDisplay.qml
Changed
@@ -20,11 +20,12 @@ import QtQml.Models import QtQml -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style +import VLC.Network Widgets.PageLoader { id: root @@ -33,11 +34,11 @@ displayText: qsTr("Services"), default: true, name: "services", - url: "qrc:///network/ServicesHomeDisplay.qml" + url: "qrc:///qt/qml/VLC/Network/ServicesHomeDisplay.qml" }, { displayText: qsTr("URL"), name: "url", - url: "qrc:///network/DiscoverUrlDisplay.qml" + url: "qrc:///qt/qml/VLC/Network/DiscoverUrlDisplay.qml" }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/DiscoverUrlDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/DiscoverUrlDisplay.qml
Changed
@@ -19,11 +19,13 @@ import QtQuick.Controls import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///util" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist +import VLC.Network FocusScope { id: root @@ -104,7 +106,7 @@ height: parent.height - searchFieldContainer.height active: MainCtx.mediaLibraryAvailable - source: "qrc:///medialibrary/UrlListDisplay.qml" + source: "qrc:///qt/qml/VLC/MediaLibrary/UrlListDisplay.qml" onLoaded: { item.leftPadding = Qt.binding(function() {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/NetworkAddressbar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/NetworkAddressbar.qml
Changed
@@ -19,10 +19,12 @@ import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Network +import VLC.Menus T.Control { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/NetworkCustomCover.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/NetworkCustomCover.qml
Changed
@@ -19,10 +19,11 @@ import QtQuick.Controls import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Network +import VLC.Util Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/NetworkGridItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/NetworkGridItem.qml
Changed
@@ -20,11 +20,11 @@ import QtQml.Models import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Network +import VLC.Style +import VLC.Util Widgets.GridItem { id: root @@ -74,13 +74,17 @@ title: model.name || qsTr("Unknown share") subtitle: { - if (!model.mrl) { - return "" - } else if ((model.type === NetworkMediaModel.TYPE_NODE || model.type === NetworkMediaModel.TYPE_DIRECTORY) && model.mrl.toString() === "vlc://nop") { - return "" - } else { - return model.mrl - } + // make sure subtitle is never empty otherwise it causes alignment issues + const defaultTxt = "--" + + const mrl = model.mrl?.toString() || "" + const type = model.type + + if ((type === NetworkMediaModel.TYPE_NODE || type === NetworkMediaModel.TYPE_DIRECTORY) + && (mrl === "vlc://nop")) + return defaultTxt + + return mrl || defaultTxt } pictureOverlay: Item {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/NetworkThumbnailItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/NetworkThumbnailItem.qml
Changed
@@ -21,10 +21,11 @@ import QtQml.Models import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Network +import VLC.Util Widgets.TableRowDelegate { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/ServicesHomeDisplay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/ServicesHomeDisplay.qml
Changed
@@ -20,12 +20,12 @@ import QtQml.Models import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///main/" as MainInterface -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.MainInterface +import VLC.Style +import VLC.Network Widgets.PageLoader { id: root @@ -36,7 +36,7 @@ component: serviceSourceComponent }, { name: "services_manage", - url: "qrc:///network/ServicesManage.qml" + url: "qrc:///qt/qml/VLC/Network/ServicesManage.qml" }, { name: "source_root", component: sourceRootComponent
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/ServicesManage.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/ServicesManage.qml
Changed
@@ -18,10 +18,11 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Network Widgets.KeyNavigableListView { id: servicesView
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/network/qml/ServicesSources.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/network/qml/ServicesSources.qml
Changed
@@ -19,11 +19,12 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.MainInterface +import VLC.Style +import VLC.Network Widgets.ExpandGridItemView { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/player_controller.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/player_controller.cpp
Changed
@@ -218,6 +218,7 @@ m_zoom.resetObject( main_vout ); m_aspectRatio.resetObject( main_vout ); m_crop.resetObject( main_vout ); + m_fit.resetObject( main_vout ); m_deinterlace.resetObject( main_vout ); m_deinterlaceMode.resetObject( main_vout ); m_autoscale.resetObject( main_vout ); @@ -1089,6 +1090,7 @@ , m_zoom((vout_thread_t*)nullptr, "zoom") , m_aspectRatio((vout_thread_t*)nullptr, "aspect-ratio") , m_crop((vout_thread_t*)nullptr, "crop") + , m_fit((vout_thread_t*)nullptr, "fit") , m_deinterlace((vout_thread_t*)nullptr, "deinterlace") , m_deinterlaceMode((vout_thread_t*)nullptr, "deinterlace-mode") , m_autoscale((vout_thread_t*)nullptr, "autoscale") @@ -1162,20 +1164,25 @@ return d->m_player; } -input_item_t *PlayerController::getInput() +input_item_t *PlayerController::getInput() const { - Q_D(PlayerController); + Q_D(const PlayerController); vlc_player_locker locker{ d->m_player }; return vlc_player_GetCurrentMedia( d->m_player ); } -bool PlayerController::hasInput() const +bool PlayerController::isStarted() const { Q_D(const PlayerController); vlc_player_locker locker{ d->m_player }; return vlc_player_IsStarted( d->m_player ); } +bool PlayerController::hasInput() const +{ + return getInput(); +} + void PlayerController::reverse() { Q_D(PlayerController); @@ -2043,6 +2050,7 @@ QABSTRACTLIST_GETTER( VLCVarChoiceModel, getZoom, m_zoom) QABSTRACTLIST_GETTER( VLCVarChoiceModel, getAspectRatio, m_aspectRatio) QABSTRACTLIST_GETTER( VLCVarChoiceModel, getCrop, m_crop) +QABSTRACTLIST_GETTER( VLCVarChoiceModel, getFit, m_fit) QABSTRACTLIST_GETTER( VLCVarChoiceModel, getDeinterlace, m_deinterlace) QABSTRACTLIST_GETTER( VLCVarChoiceModel, getDeinterlaceMode, m_deinterlaceMode) QABSTRACTLIST_GETTER( VLCVarChoiceModel, getAudioStereoMode, m_audioStereoMode)
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/player_controller.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/player_controller.hpp
Changed
@@ -106,7 +106,7 @@ //playback Q_PROPERTY(PlayingState playingState READ getPlayingState NOTIFY playingStateChanged FINAL) - Q_PROPERTY(bool isPlaying READ hasInput NOTIFY inputChanged FINAL) + Q_PROPERTY(bool isStarted READ isStarted NOTIFY playingStateChanged FINAL) Q_PROPERTY(QString name READ getName NOTIFY nameChanged FINAL) Q_PROPERTY(float buffering READ getBuffering NOTIFY bufferingChanged FINAL) Q_PROPERTY(float rate READ getRate WRITE setRate NOTIFY rateChanged FINAL) @@ -169,6 +169,7 @@ Q_PROPERTY(VLCVarChoiceModel* zoom READ getZoom CONSTANT FINAL) Q_PROPERTY(VLCVarChoiceModel* aspectRatio READ getAspectRatio CONSTANT FINAL) Q_PROPERTY(VLCVarChoiceModel* crop READ getCrop CONSTANT FINAL) + Q_PROPERTY(VLCVarChoiceModel* fit READ getFit CONSTANT FINAL) Q_PROPERTY(VLCVarChoiceModel* deinterlace READ getDeinterlace CONSTANT FINAL) Q_PROPERTY(VLCVarChoiceModel* deinterlaceMode READ getDeinterlaceMode CONSTANT FINAL) Q_PROPERTY(bool fullscreen READ isFullscreen WRITE setFullscreen NOTIFY fullscreenChanged FINAL) @@ -257,7 +258,7 @@ public: vlc_player_t * getPlayer() const; - input_item_t *getInput(); + input_item_t *getInput() const; SharedVOutThread getVout(); VOutThreadList getVouts() const; @@ -274,6 +275,7 @@ public slots: //playback PlayingState getPlayingState() const; + bool isStarted() const; bool hasInput() const; QString getName() const; float getBuffering() const; @@ -347,6 +349,7 @@ VLCVarChoiceModel* getZoom(); VLCVarChoiceModel* getAspectRatio(); VLCVarChoiceModel* getCrop(); + VLCVarChoiceModel* getFit(); VLCVarChoiceModel* getDeinterlace(); VLCVarChoiceModel* getDeinterlaceMode(); bool isFullscreen() const;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/player_controller_p.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/player_controller_p.hpp
Changed
@@ -138,6 +138,7 @@ VLCVarChoiceModel m_zoom; VLCVarChoiceModel m_aspectRatio; VLCVarChoiceModel m_crop; + VLCVarChoiceModel m_fit; VLCVarChoiceModel m_deinterlace; VLCVarChoiceModel m_deinterlaceMode; QVLCBool m_autoscale;
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/Bookmarks.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/Bookmarks.qml
Changed
@@ -18,11 +18,10 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Item { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/ControlBar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/ControlBar.qml
Changed
@@ -22,12 +22,11 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 - -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///playlist/" as PL +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Player T.Pane { id: root @@ -165,7 +164,7 @@ parent: root active: MainCtx.mediaLibraryAvailable - source: "qrc:/player/Bookmarks.qml" + source: "qrc:///qt/qml/VLC/Player/Bookmarks.qml" x: root.leftPadding + trackPositionSlider.x + row2.Layout.leftMargin y: row2.y + row2.height + VLCStyle.margin_xxsmall
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/ControlLayout.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/ControlLayout.qml
Changed
@@ -21,10 +21,10 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets FocusScope { id: controlLayout
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/ControlRepeater.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/ControlRepeater.qml
Changed
@@ -19,7 +19,7 @@ import QtQuick.Layouts import QtQuick.Controls -import org.videolan.vlc 0.1 +import VLC.MainInterface Repeater { id: repeater @@ -65,8 +65,22 @@ Binding on visible { delayed: true // this is important - when: (loader.status === Loader.Ready) - value: (loader.x + loader.Layout.minimumWidth <= repeater.availableWidth) + when: condition + value: { + if (condition) + return (loader.x + loader.Layout.minimumWidth <= repeater.availableWidth) + else + return true; + } + + property bool condition: false + + Binding on condition { + delayed: true + value: (loader.status === Loader.Ready) && + (loader.Layout.minimumWidth > 0) && + (repeater.availableWidth < Number.MAX_VALUE) + } } // Events
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/MiniPlayer.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/MiniPlayer.qml
Changed
@@ -17,9 +17,11 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Player +import VLC.PlayerControls +import VLC.Style ControlBar { id: root @@ -28,8 +30,8 @@ anchors.bottomMargin: (state === "outViewport") ? -_delayedImplicitHeight : 0 - state: (Player.playingState === Player.PLAYING_STATE_STOPPED) ? "outViewport" - : "inViewport" + state: Player.isStarted ? "inViewport" + : "outViewport" textPosition: (MainCtx.pinVideoControls) ? ControlBar.TimeTextPosition.LeftRightSlider : ControlBar.TimeTextPosition.Hide
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/NavigationBox.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/NavigationBox.qml
Changed
@@ -20,10 +20,11 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Player Control { id: navigationBox
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/PIPPlayer.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/PIPPlayer.qml
Changed
@@ -18,9 +18,11 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Playlist +import VLC.Player Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/PlaybackSpeed.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/PlaybackSpeed.qml
Changed
@@ -20,11 +20,12 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Player +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util ColumnLayout { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/Player.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/Player.qml
Changed
@@ -22,14 +22,15 @@ import Qt5Compat.GraphicalEffects import QtQuick.Window -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///playlist/" as PL -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///dialogs/" as DG -import "qrc:///util/" as Util +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Playlist +import VLC.Player +import VLC.PlayerControls +import VLC.Dialogs +import VLC.Util FocusScope { id: rootPlayer @@ -328,7 +329,7 @@ History.previous() } - Util.FadeControllerStateGroup { + FadeControllerStateGroup { target: topBar } @@ -597,7 +598,7 @@ value: playlistVisibility.isPlaylistVisible ? "visible" : "hidden" } - component: PL.PlaylistListView { + component: PlaylistListView { id: playlistView width: Helpers.clamp(rootPlayer.width / resizeHandle.widthFactor @@ -686,7 +687,7 @@ } } - DG.Dialogs { + Dialogs { z: 10 bgContent: rootPlayer @@ -834,7 +835,7 @@ color: windowTheme.bg.primary } - Util.FadeControllerStateGroup { + FadeControllerStateGroup { target: controlBar } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/PlayerBlurredBackground.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/PlayerBlurredBackground.qml
Changed
@@ -20,6 +20,7 @@ import QtQuick import Qt5Compat.GraphicalEffects +import VLC.Util Item { id: rootItem
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/PlayerControlLayout.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/PlayerControlLayout.qml
Changed
@@ -19,11 +19,11 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 - -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.PlayerControls FocusScope { id: playerControlLayout
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/PlayerControlbarControls.qml
Added
@@ -0,0 +1,86 @@ +/***************************************************************************** + * Copyright (C) 2019 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. + *****************************************************************************/ + +pragma Singleton + +import QtQml + + +import VLC.MainInterface +import VLC.PlayerControls +import VLC.Widgets as Widgets +import VLC.Style + +QtObject { + readonly property string controlPath : "qrc:///qt/qml/VLC/PlayerControls/" + + readonly property var controlList: + { id: ControlListModel.PLAY_BUTTON, file: "PlayButton.qml", label: VLCIcons.play_filled, text: qsTr("Play") }, + { id: ControlListModel.STOP_BUTTON, file: "StopButton.qml", label: VLCIcons.stop, text: qsTr("Stop") }, + { id: ControlListModel.OPEN_BUTTON, file: "OpenButton.qml", label: VLCIcons.eject, text: qsTr("Open") }, + { id: ControlListModel.PREVIOUS_BUTTON, file: "PreviousButton.qml", label: VLCIcons.previous, text: qsTr("Previous") }, + { id: ControlListModel.NEXT_BUTTON, file: "NextButton.qml", label: VLCIcons.next, text: qsTr("Next") }, + { id: ControlListModel.SLOWER_BUTTON, file: "SlowerButton.qml", label: VLCIcons.slower, text: qsTr("Slower") }, + { id: ControlListModel.FASTER_BUTTON, file: "FasterButton.qml", label: VLCIcons.faster, text: qsTr("Faster") }, + { id: ControlListModel.FULLSCREEN_BUTTON, file: "FullscreenButton.qml", label: VLCIcons.fullscreen, text: qsTr("Fullscreen") }, + { id: ControlListModel.EXTENDED_BUTTON, file: "ExtendedSettingsButton.qml", label: VLCIcons.effect_filter, text: qsTr("Extended panel") }, + { id: ControlListModel.PLAYLIST_BUTTON, file: "PlaylistButton.qml", label: VLCIcons.playlist, text: qsTr("Playlist") }, + { id: ControlListModel.SNAPSHOT_BUTTON, file: "SnapshotButton.qml", label: VLCIcons.snapshot, text: qsTr("Snapshot") }, + { id: ControlListModel.RECORD_BUTTON, file: "RecordButton.qml", label: VLCIcons.record, text: qsTr("Record") }, + { id: ControlListModel.ATOB_BUTTON, file: "AtoBButton.qml", label: VLCIcons.atob, text: qsTr("A-B Loop") }, + { id: ControlListModel.FRAME_BUTTON, file: "FrameButton.qml", label: VLCIcons.frame_by_frame, text: qsTr("Frame By Frame") }, + { id: ControlListModel.REVERSE_BUTTON, file: "ReverseButton.qml", label: VLCIcons.play_reverse, text: qsTr("Trickplay Reverse") }, + { id: ControlListModel.SKIP_BACK_BUTTON, file: "SkipBackButton.qml", label: VLCIcons.skip_back, text: qsTr("Step backward") }, + { id: ControlListModel.SKIP_FW_BUTTON, file: "SkipForwardButton.qml", label: VLCIcons.skip_for, text: qsTr("Step forward") }, + { id: ControlListModel.QUIT_BUTTON, file: "QuitButton.qml", label: VLCIcons.clear, text: qsTr("Quit") }, + { id: ControlListModel.RANDOM_BUTTON, file: "RandomButton.qml", label: VLCIcons.shuffle, text: qsTr("Random") }, + { id: ControlListModel.LOOP_BUTTON, file: "LoopButton.qml", label: VLCIcons.repeat_all, text: qsTr("Loop") }, + { id: ControlListModel.INFO_BUTTON, file: "InfoButton.qml", label: VLCIcons.info, text: qsTr("Information") }, + { id: ControlListModel.LANG_BUTTON, file: "LangButton.qml", label: VLCIcons.audiosub, text: qsTr("Open subtitles") }, + { id: ControlListModel.BOOKMARK_BUTTON, file: "BookmarkButton.qml", label: VLCIcons.bookmark, text: qsTr("Bookmark Button") }, + { id: ControlListModel.CHAPTER_PREVIOUS_BUTTON, file: "ChapterPreviousButton.qml", label: VLCIcons.dvd_prev, text: qsTr("Previous chapter") }, + { id: ControlListModel.CHAPTER_NEXT_BUTTON, file: "ChapterNextButton.qml", label: VLCIcons.dvd_next, text: qsTr("Next chapter") }, + { id: ControlListModel.VOLUME, file: "VolumeWidget.qml", label: VLCIcons.volume_high, text: qsTr("Volume Widget") }, + { id: ControlListModel.NAVIGATION_BOX, file: "NavigationBoxButton.qml", label: VLCIcons.ic_fluent_arrow_move, text: qsTr("Navigation Box") }, + { id: ControlListModel.NAVIGATION_BUTTONS, file: "NavigationWidget.qml", label: VLCIcons.dvd_menu, text: qsTr("Navigation") }, + { id: ControlListModel.DVD_MENUS_BUTTON, file: "DvdMenuButton.qml", label: VLCIcons.dvd_menu, text: qsTr("DVD menus") }, + { id: ControlListModel.PROGRAM_BUTTON, file: "ProgramButton.qml", label: VLCIcons.tv, text: qsTr("Program Button") }, + { id: ControlListModel.TELETEXT_BUTTONS, file: "TeletextButton.qml", label: VLCIcons.tvtelx, text: qsTr("Teletext") }, + { id: ControlListModel.RENDERER_BUTTON, file: "RendererButton.qml", label: VLCIcons.renderer, text: qsTr("Renderer Button") }, + { id: ControlListModel.ASPECT_RATIO_COMBOBOX, file: "AspectRatioWidget.qml", label: VLCIcons.aspect_ratio, text: qsTr("Aspect Ratio") }, + { id: ControlListModel.WIDGET_SPACER, file: "SpacerWidget.qml", label: VLCIcons.space, text: qsTr("Spacer") }, + { id: ControlListModel.WIDGET_SPACER_EXTEND, file: "ExpandingSpacerWidget.qml", label: VLCIcons.space, text: qsTr("Expanding Spacer") }, + { id: ControlListModel.PLAYER_SWITCH_BUTTON, file: "PlayerSwitchButton.qml", label: VLCIcons.fullscreen, text: qsTr("Switch Player") }, + { id: ControlListModel.ARTWORK_INFO, file: "ArtworkInfoWidget.qml", label: VLCIcons.info, text: qsTr("Artwork Info") }, + { id: ControlListModel.PLAYBACK_SPEED_BUTTON, file: "PlaybackSpeedButton.qml", label: "1x", text: qsTr("Playback Speed") }, + { id: ControlListModel.HIGH_RESOLUTION_TIME_WIDGET, file: "HighResolutionTimeWidget.qml", label: VLCIcons.info, text: qsTr("High Resolution Time") } + + + function control(id) { + const entry = controlList.find( function(e) { return ( e.id === id ) } ) + + if (entry === undefined) { + console.log("control delegate id " + id + " doesn't exist") + return { source: controlPath + "Fallback.qml" } + } + + entry.source = controlPath + entry.file + + return entry + } +}
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/PlayerPlaylistVisibilityFSM.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/PlayerPlaylistVisibilityFSM.qml
Changed
@@ -16,9 +16,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///util/" as Util +import VLC.MainInterface +import VLC.Util /** * playlist visibility state machine @@ -39,7 +39,7 @@ * @enduml * */ -Util.FSM { +FSM { id: fsm //incoming signals @@ -64,7 +64,7 @@ updateVideoEmbed: fsm.updateVideoEmbed }) - Util.FSMState { + FSMState { id: fsmFloating transitions: ({ @@ -78,12 +78,12 @@ }) } - Util.FSMState { + FSMState { id: fsmDocked initialState: MainCtx.hasEmbededVideo ? fsmForceHidden : fsmFollowVisible - Util.FSMState { + FSMState { id: fsmFollowVisible initialState: MainCtx.playlistVisible ? fsmVisible : fsmHidden @@ -99,7 +99,7 @@ } }) - Util.FSMState { + FSMState { id: fsmVisible transitions: ({ @@ -114,7 +114,7 @@ }) } - Util.FSMState { + FSMState { id: fsmHidden transitions: ({ @@ -130,7 +130,7 @@ } } - Util.FSMState { + FSMState { id: fsmForceHidden transitions: ({
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/ResumeDialog.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/ResumeDialog.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick.Controls import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///menus/" as Menus +import VLC.MainInterface +import VLC.Player +import VLC.Style +import VLC.Widgets as Widgets FocusScope { id: resumePanel
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/SliderBar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/SliderBar.qml
Changed
@@ -21,12 +21,11 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///util/" as Util +import VLC.Player +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util T.ProgressBar { id: control @@ -99,7 +98,7 @@ : (control.visualPosition * control.width), 0) } - Util.FSM { + FSM { id: fsm signal playerUpdatePosition(real position) signal pressControl(real position, bool forcePrecise) @@ -136,7 +135,7 @@ Player.position = position } - Util.FSMState { + FSMState { id: fsmReleased transitions: ({ @@ -155,7 +154,7 @@ }) } - Util.FSMState { + FSMState { id: fsmHeld transitions: ({ @@ -173,7 +172,7 @@ }) } - Util.FSMState { + FSMState { id: fsmHeldWrongInput function enter() { @@ -229,14 +228,15 @@ TapHandler { acceptedButtons: Qt.LeftButton - grabPermissions: TapHandler.CanTakeOverFromAnything - gesturePolicy: TapHandler.WithinBounds - //clicked but not dragged - onTapped: (point, button) => { - fsm.pressControl(point.position.x / control.width, point.modifiers === Qt.ShiftModifier) - fsm.releaseControl(point.position.x / control.width, point.modifiers === Qt.ShiftModifier) + onPressedChanged: { + if (pressed) { + fsm.pressControl(point.position.x / control.width, point.modifiers === Qt.ShiftModifier) + } else { + // NOTE: Point is still valid at this point. + fsm.releaseControl(point.position.x / control.width, point.modifiers === Qt.ShiftModifier) + } } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TopBar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TopBar.qml
Changed
@@ -22,11 +22,12 @@ import QtQuick.Layouts import QtQuick.Window -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///menus/" as Menus +import VLC.MainInterface +import VLC.Style +import VLC.PlayerControls +import VLC.Widgets as Widgets +import VLC.Menus as Menus FocusScope{ id: root @@ -193,7 +194,7 @@ anchors.fill: parent active: root.showCSD - source: "qrc:///widgets/CSDTitlebarTapNDrapHandler.qml" + source: "qrc:///qt/qml/VLC/Widgets/CSDTitlebarTapNDrapHandler.qml" } // Components - @@ -387,8 +388,8 @@ enabled: root.showCSD visible: root.showCSD source: VLCStyle.palette.hasCSDImage - ? "qrc:///widgets/CSDThemeButtonSet.qml" - : "qrc:///widgets/CSDWindowButtonSet.qml" + ? "qrc:///qt/qml/VLC/Widgets/CSDThemeButtonSet.qml" + : "qrc:///qt/qml/VLC/Widgets/CSDWindowButtonSet.qml" Connections { target: csdDecorations.item @@ -435,7 +436,7 @@ onHoveredChanged: root.requestLockUnlockAutoHide(hovered) - QmlGlobalMenu { + Menus.QmlGlobalMenu { id: contextMenu ctx: MainCtx
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TracksListPage.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TracksListPage.qml
Changed
@@ -22,12 +22,13 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 - -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util +import VLC.MainInterface +import VLC.Style +import VLC.Player +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Dialogs RowLayout { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TracksMenu.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TracksMenu.qml
Changed
@@ -22,11 +22,10 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/" as Util +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util // FIXME: Keyboard navigation needs to be fixed for this Popup. T.Popup { @@ -142,15 +141,15 @@ } onRequestAudioPage: { - stackView.push("qrc:///player/TracksPageAudio.qml", {"trackMenuController": trackMenuController}) + stackView.push("qrc:///qt/qml/VLC/Player/TracksPageAudio.qml", {"trackMenuController": trackMenuController}) } onRequestSubtitlePage: { - stackView.push("qrc:///player/TracksPageSubtitle.qml", {"trackMenuController": trackMenuController}) + stackView.push("qrc:///qt/qml/VLC/Player/TracksPageSubtitle.qml", {"trackMenuController": trackMenuController}) } onRequestPlaybackSpeedPage: { - stackView.push("qrc:///player/TracksPageSpeed.qml", {"trackMenuController": trackMenuController}) + stackView.push("qrc:///qt/qml/VLC/Player/TracksPageSpeed.qml", {"trackMenuController": trackMenuController}) } } }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TracksPage.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TracksPage.qml
Changed
@@ -21,10 +21,10 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets RowLayout { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TracksPageAudio.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TracksPageAudio.qml
Changed
@@ -21,10 +21,12 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Player TracksPage { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TracksPageSpeed.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TracksPageSpeed.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick -import org.videolan.vlc 0.1 +import VLC.MainInterface TracksPage { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/TracksPageSubtitle.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/TracksPageSubtitle.qml
Changed
@@ -21,10 +21,12 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Player +import VLC.Util +import VLC.Widgets as Widgets TracksPage { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ArtworkInfoWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ArtworkInfoWidget.qml
Changed
@@ -20,10 +20,13 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist +import VLC.Player +import VLC.Util AbstractButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/AspectRatioWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/AspectRatioWidget.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.ComboBoxExt { id: combo
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/AtoBButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/AtoBButton.qml
Changed
@@ -17,10 +17,11 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Player +import VLC.Style +import VLC.Util Widgets.ImageToolButton { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/BackButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/BackButton.qml
Changed
@@ -17,10 +17,10 @@ *****************************************************************************/ import QtQuick -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style -import org.videolan.vlc 0.1 Widgets.IconToolButton { id: backBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/BookmarkButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/BookmarkButton.qml
Changed
@@ -20,10 +20,11 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Player +import VLC.Widgets as Widgets +import VLC.Style Widgets.IconToolButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ChapterNextButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ChapterNextButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: chapterNextBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ChapterPreviousButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ChapterPreviousButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: chapterPreviousBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/DvdMenuButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/DvdMenuButton.qml
Changed
@@ -20,10 +20,10 @@ import QtQuick -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player -import org.videolan.vlc 0.1 Widgets.IconToolButton {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ExpandingSpacerWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ExpandingSpacerWidget.qml
Changed
@@ -19,10 +19,9 @@ import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Item {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ExtendedSettingsButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ExtendedSettingsButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Dialogs Widgets.IconToolButton { id: extdSettingsBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/Fallback.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/Fallback.qml
Changed
@@ -21,12 +21,11 @@ import QtQuick.Controls import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style Control { padding: VLCStyle.focus_border
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/FasterButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/FasterButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: fasterBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/FrameButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/FrameButton.qml
Changed
@@ -17,10 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Player +import VLC.Style Widgets.IconToolButton {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/FullscreenButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/FullscreenButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: fullScreenBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/HighResolutionTimeWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/HighResolutionTimeWidget.qml
Changed
@@ -19,11 +19,11 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///player/" -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Player +import VLC.Widgets as Widgets +import VLC.Style Control {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/InfoButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/InfoButton.qml
Changed
@@ -17,15 +17,15 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player +import VLC.Dialogs Widgets.IconToolButton { id: infoBtn - enabled: Player.isPlaying + enabled: Player.isStarted text: VLCIcons.info onClicked: DialogsProvider.mediaInfoDialog() description: qsTr("Information")
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/LangButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/LangButton.qml
Changed
@@ -18,11 +18,10 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///player/" as Player +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: root @@ -59,7 +58,7 @@ Loader { id: menuLoader - sourceComponent: Player.TracksMenu { + sourceComponent: TracksMenu { id: menu parent: root._parentItem
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/LoopButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/LoopButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist Widgets.IconToolButton { id: repeatBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/MenuButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/MenuButton.qml
Changed
@@ -17,11 +17,11 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Menus Widgets.IconToolButton { id: menuBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/NavigationBoxButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/NavigationBoxButton.qml
Changed
@@ -18,10 +18,11 @@ import QtQuick -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Player +import VLC.Style -import org.videolan.vlc 0.1 Widgets.IconToolButton { visible: Player.isInteractive
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/NavigationWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/NavigationWidget.qml
Changed
@@ -21,10 +21,11 @@ import QtQuick import QtQuick.Templates as Templates -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Templates.Pane { id: root @@ -37,7 +38,7 @@ // Private - readonly property string _controlPath : "qrc:///player/controlbarcontrols/" + readonly property string _controlPath : "qrc:///qt/qml/VLC/PlayerControls/" // Signals
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/NextButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/NextButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist Widgets.IconToolButton { id: nextBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/OpenButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/OpenButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Dialogs Widgets.IconToolButton { id: openMediaBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlayButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlayButton.qml
Changed
@@ -19,11 +19,13 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player +import VLC.Playlist +import VLC.Util T.Control { id: root @@ -157,6 +159,15 @@ } } + onCursorInsideChanged: { + if (pressed && !cursorInside) { + // Press and hold action can no longer be done, + // so reset the state in order to reset the + // animation: + innerRectangle.state = "" + } + } + onPressed: (mouse) => { if (!cursorInside) { mouse.accepted = false @@ -177,6 +188,11 @@ } onPressAndHold: (mouse) => { + if (!cursorInside) { + mouse.accepted = false + return + } + _pressAndHoldAction() mouse.accepted = true }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlaybackSpeedButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlaybackSpeedButton.qml
Changed
@@ -19,11 +19,12 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///player/" as P -import "qrc:///widgets/" +import VLC.MainInterface +import VLC.Style +import VLC.Player +import VLC.Widgets +import VLC.Util PopupIconToolButton { id: root @@ -34,7 +35,7 @@ description: qsTr("change playback speed") - popup.contentItem: P.PlaybackSpeed { + popup.contentItem: PlaybackSpeed { colorContext.palette: root.colorContext.palette Navigation.parentItem: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlayerSwitchButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlayerSwitchButton.qml
Changed
@@ -17,10 +17,10 @@ *****************************************************************************/ import QtQuick -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style -import org.videolan.vlc 0.1 Widgets.IconToolButton { text: VLCIcons.fullscreen
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlaylistButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PlaylistButton.qml
Changed
@@ -17,10 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style Widgets.IconToolButton {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PreviousButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/PreviousButton.qml
Changed
@@ -17,10 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist Widgets.IconToolButton { id: prevBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ProgramButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ProgramButton.qml
Changed
@@ -20,10 +20,10 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Player +import VLC.Widgets as Widgets +import VLC.Style Widgets.IconToolButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/QuitButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/QuitButton.qml
Changed
@@ -17,10 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style Widgets.IconToolButton {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/RandomButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/RandomButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist Widgets.IconToolButton { id: randomBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/RecordButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/RecordButton.qml
Changed
@@ -18,16 +18,15 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: control - enabled: !paintOnly && Player.isPlaying + enabled: !paintOnly && Player.isStarted color: "#FFFF0000" //red means recording text: VLCIcons.record
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/RendererButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/RendererButton.qml
Changed
@@ -20,10 +20,11 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ReverseButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/ReverseButton.qml
Changed
@@ -20,10 +20,10 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Player +import VLC.Style Widgets.IconToolButton { enabled: Player.rewindable
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SkipBackButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SkipBackButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: stepBackBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SkipForwardButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SkipForwardButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: stepfwdBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SlowerButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SlowerButton.qml
Changed
@@ -17,11 +17,10 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: slowerBtn
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SnapshotButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SnapshotButton.qml
Changed
@@ -17,15 +17,14 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player Widgets.IconToolButton { id: snapshotBtn - enabled: Player.isPlaying + enabled: Player.isStarted text: VLCIcons.snapshot onClicked: Player.snapshot() description: qsTr("Snapshot")
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SpacerWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/SpacerWidget.qml
Changed
@@ -18,10 +18,9 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Item {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/StopButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/StopButton.qml
Changed
@@ -17,15 +17,16 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Player +import VLC.Playlist Widgets.IconToolButton { id: stopBtn - enabled: Player.isPlaying + enabled: Player.isStarted text: VLCIcons.stop onClicked: MainPlaylistController.stop() description: qsTr("Stop")
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/TeletextButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/TeletextButton.qml
Changed
@@ -21,10 +21,11 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" +import VLC.MainInterface +import VLC.Style +import VLC.Player +import VLC.Widgets PopupIconToolButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/TeletextColorButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/TeletextColorButton.qml
Changed
@@ -21,8 +21,8 @@ import QtQuick import QtQuick.Templates as T -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Widgets.IconToolButton { // Settings
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml
Changed
@@ -20,10 +20,11 @@ import QtQuick.Layouts import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Player +import VLC.Style T.Pane { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/player/qml/controlbarcontrols/VolumeWidget.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/player/qml/controlbarcontrols/VolumeWidget.qml
Changed
@@ -20,11 +20,12 @@ import QtQuick.Templates as T import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style +import VLC.Player T.Pane { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/playlist/qml/PlaylistDelegate.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/playlist/qml/PlaylistDelegate.qml
Changed
@@ -22,10 +22,12 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist +import VLC.Player +import VLC.Util T.Control { id: delegate
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/playlist/qml/PlaylistDetachedWindow.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/playlist/qml/PlaylistDetachedWindow.qml
Changed
@@ -19,9 +19,9 @@ import QtQuick import QtQuick.Window -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Style Window {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/playlist/qml/PlaylistListView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/playlist/qml/PlaylistListView.qml
Changed
@@ -21,12 +21,12 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util" as Util -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Playlist +import VLC.Style T.Pane { id: root @@ -254,12 +254,12 @@ model: root.model Binding on fadingEdge.enableBeginningFade { - when: (autoScroller.scrollingDirection === Util.ViewDragAutoScrollHandler.Direction.Backward) + when: (autoScroller.scrollingDirection === ViewDragAutoScrollHandler.Direction.Backward) value: false } Binding on fadingEdge.enableEndFade { - when: (autoScroller.scrollingDirection === Util.ViewDragAutoScrollHandler.Direction.Forward) + when: (autoScroller.scrollingDirection === ViewDragAutoScrollHandler.Direction.Forward) value: false } @@ -289,7 +289,7 @@ } } - Util.ViewDragAutoScrollHandler { + ViewDragAutoScrollHandler { id: autoScroller view: listView
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/playlist/qml/PlaylistToolbar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/playlist/qml/PlaylistToolbar.qml
Changed
@@ -19,11 +19,10 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 - -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Playlist RowLayout { id: rowLayout
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/qt.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/qt.cpp
Changed
@@ -259,6 +259,10 @@ #define HIDE_WINDOW_ON_CLOSE_TEXT N_( "Hide the window on close" ) #define HIDE_WINDOW_ON_CLOSE_LONGTEXT N_( "Instead of closing the application, hide the window. This setting is only applicable when system tray icon is enabled." ) +#define BACKDROP_BLUR_FILTER_TEXT N_( "Enable backdrop blur filter for the main window if possible" ) +#define BACKDROP_BLUR_FILTER_LONGTEXT N_( "If backdrop blur filter is available, use translucency in the backgrounds of certain parts of the user interface " \ + "instead of a solid color. This setting impairs readibility of text." ) + static const int initial_prefs_view_list = { 0, 1, 2 }; static const char *const initial_prefs_view_list_texts = { N_("Simple"), N_("Advanced"), N_("Expert") }; @@ -435,6 +439,8 @@ add_bool( "qt-close-to-system-tray", false, HIDE_WINDOW_ON_CLOSE_TEXT, HIDE_WINDOW_ON_CLOSE_LONGTEXT ) + add_bool( "qt-backdrop-blur", true, BACKDROP_BLUR_FILTER_TEXT, BACKDROP_BLUR_FILTER_LONGTEXT ) + add_float_with_range( "qt-safe-area", 0, 0, 100.0, SAFE_AREA_TEXT, SAFE_AREA_LONGTEXT ) cannot_unload_broken_library() @@ -808,9 +814,37 @@ #endif argvargc = NULL; + //qml modules are always statically linked + Q_INIT_RESOURCE( dialogs_assets ); + Q_INIT_RESOURCE( maininterface_assets ); + Q_INIT_RESOURCE( menus_assets ); + Q_INIT_RESOURCE( maininterface_assets ); + Q_INIT_RESOURCE( medialibrary_assets ); + Q_INIT_RESOURCE( network_assets ); + Q_INIT_RESOURCE( player_assets ); + Q_INIT_RESOURCE( playercontrols_assets ); + Q_INIT_RESOURCE( playlist_assets ); + Q_INIT_RESOURCE( style_assets ); + Q_INIT_RESOURCE( util_assets ); + Q_INIT_RESOURCE( widgets_assets ); + +#ifdef QT_USE_QMLCACHEGEN + Q_INIT_RESOURCE( dialogs_cachegen ); + Q_INIT_RESOURCE( maininterface_cachegen ); + Q_INIT_RESOURCE( menus_cachegen ); + Q_INIT_RESOURCE( maininterface_cachegen ); + Q_INIT_RESOURCE( medialibrary_cachegen ); + Q_INIT_RESOURCE( network_cachegen ); + Q_INIT_RESOURCE( player_cachegen ); + Q_INIT_RESOURCE( playercontrols_cachegen ); + Q_INIT_RESOURCE( playlist_cachegen ); + Q_INIT_RESOURCE( style_cachegen ); + Q_INIT_RESOURCE( util_cachegen ); + Q_INIT_RESOURCE( widgets_cachegen ); +#endif + #ifdef QT_STATIC Q_INIT_RESOURCE( assets ); - Q_INIT_RESOURCE( qml ); #ifdef _WIN32 Q_INIT_RESOURCE( windows ); #endif @@ -861,15 +895,15 @@ QApplication app( argc, argv ); app.setProperty("initialStyle", app.style()->objectName()); -#if defined(_WIN32) && (_WIN32_WINNT < _WIN32_WINNT_WIN8) +#if defined(_WIN32) && (_WIN32_WINNT < _WIN32_WINNT_WINBLUE) // TODO: Qt Quick RHI Fallback does not work (Qt 6.7.1). // We have to manually pick a graphics api here for - // Windows 7, since it may not support the default - // graphics api (D3D11). + // Windows 7 and Windows 8, since it may not support + // the default graphics api (Direct3D 11.2). if (qEnvironmentVariableIsEmpty("QSG_RHI_BACKEND")) { - if (QOperatingSystemVersion::current() < QOperatingSystemVersion::Windows8) + if (QOperatingSystemVersion::current() < QOperatingSystemVersion::Windows8_1) { // TODO: Probe D3D12 when it becomes the default. { @@ -937,22 +971,6 @@ p_intf->p_mainPlayerController = new PlayerController(p_intf); p_intf->p_mainPlaylistController = new vlc::playlist::PlaylistController(p_intf->p_playlist); -#ifdef UPDATE_CHECK - /* Checking for VLC updates */ - if( var_InheritBool( p_intf, "qt-updates-notif" ) && - !var_InheritBool( p_intf, "qt-privacy-ask" ) ) - { - int interval = var_InheritInteger( p_intf, "qt-updates-days" ); - if( QDate::currentDate() > - getSettings()->value( "updatedate" ).toDate().addDays( interval ) ) - { - /* The constructor of the update Dialog will do the 1st request */ - UpdateDialog::getInstance( p_intf ); - getSettings()->setValue( "updatedate", QDate::currentDate() ); - } - } -#endif - /* Create the normal interface in non-DP mode */ #ifdef _WIN32 p_intf->p_mi = new MainCtxWin32(p_intf); @@ -1011,6 +1029,22 @@ /* Explain how to show a dialog :D */ p_intf->pf_show_dialog = ShowDialog; +#ifdef UPDATE_CHECK + /* Checking for VLC updates */ + if( var_InheritBool( p_intf, "qt-updates-notif" ) && + !var_InheritBool( p_intf, "qt-privacy-ask" ) ) + { + int interval = var_InheritInteger( p_intf, "qt-updates-days" ); + if( QDate::currentDate() > + getSettings()->value( "updatedate" ).toDate().addDays( interval ) ) + { + /* The constructor of the update Dialog will do the 1st request */ + UpdateDialog::getInstance( p_intf ); + getSettings()->setValue( "updatedate", QDate::currentDate() ); + } + } +#endif + /* Tell the main LibVLC thread we are ready */ { vlc::threads::mutex_locker locker (lock);
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/scripts
Added
+(directory)
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/scripts/genqmldir.py
Added
@@ -0,0 +1,40 @@ +import os +from pathlib import Path +import sys +import argparse + +def genQmldir(out, files, singletons, module, prefix, version): + out.write(f"module {module}\n") + out.write(f"prefer :{prefix}/\n") + for f in files: + basename = Path(f).stem + filename = os.path.basename(f) + out.write(f"{basename} {version} {filename}\n") + + for f in singletons: + basename = Path(f).stem + filename = os.path.basename(f) + out.write(f"singleton {basename} {version} {filename}\n") + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='This program generates qmldir files to build Qml modules' + ) + parser.add_argument("-o", "--output", required=True, help="genereated file") + parser.add_argument("-s", "--srcdir", required=False, default="", help="path to the source directory") + parser.add_argument("--prefix", default="", help="module prefix path") + parser.add_argument("--version", default="1.0", help="version of the module") + parser.add_argument("--module", required=True, help="module name") + parser.add_argument("--singletons", action='append', default=, nargs='*', metavar=("CLASS"), help="mark CLASS as a singleton") + parser.add_argument("--sources", action='append', default=, nargs='*', metavar=("CLASS"), help="mark CLASS as a singleton") + + args = parser.parse_args() + prefix = os.path.join("/", args.prefix, *args.module.split(".")) + singletons = os.path.join(args.srcdir, s) for s in args.singletons0 + files = os.path.join(args.srcdir, relpath) for relpath in args.sources0 + + #ensure outdir exists + os.makedirs(os.path.dirname(args.output), exist_ok=True) + + with open(args.output, "w+") as fd: + genQmldir(fd, files, singletons, args.module, prefix, args.version)
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/scripts/genqrc.py
Added
@@ -0,0 +1,35 @@ +import os +from pathlib import Path +import sys +import argparse + +def genQrc(out, files, prefix): + out.write(f'''<RCC> + <qresource prefix="{prefix}"> +''') + for f in files: + alias = os.path.basename(f) + abspath = os.path.abspath(f) + out.write(f' <file alias="{alias}">{abspath}</file>\n') + out.write(''' </qresource> +</RCC> +''') + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='This program generates qrc from a list of resources' + ) + parser.add_argument("-o", "--output", required=True, help="genereated file") + parser.add_argument("-s", "--srcdir", required=False, default="", help="path to the source directory") + parser.add_argument("-p", "--prefix", required=False, default="", help="resource prefix") + parser.add_argument("--sources", action='append', default=, nargs='*', metavar=("FILE"), help="file to embed") + + args = parser.parse_args() + files = os.path.join(args.srcdir, relpath) for relpath in args.sources0 + prefix = os.path.join("/", args.prefix) + + #ensure outdir exists + os.makedirs(os.path.dirname(args.output), exist_ok=True) + + with open(args.output, "w+") as fd: + genQrc(fd, files, prefix)
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/scripts/qrc2rsp.py
Added
@@ -0,0 +1,32 @@ +import xml.etree.ElementTree as ET +import os +import sys +import argparse + +def parseQrc(fdin, fdout): + tree = ET.parse(fdin) + root = tree.getroot() + for qresources in root: + if qresources.tag != "qresource": + raise RuntimeError("unexpected qrc format") + prefix = qresources.get("prefix") + for file in qresources: + if file.tag != "file": + raise RuntimeError("unexpected qrc format") + alias = file.get("alias") + fdout.write(os.path.join(prefix, alias)) + fdout.write("\n") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="This program generates a list of files from Qt qrc file, this file may be used as an input for QmlCachegen" + ) + parser.add_argument("-o", "--output", type=argparse.FileType('w'), + default=sys.stdout) + parser.add_argument("FILES", nargs="*") + + args = parser.parse_args() + for f in args.FILES: + with open(f) as fdin: + parseQrc(fdin, args.output)
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/style/AcrylicController.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/style/AcrylicController.qml
Changed
@@ -20,7 +20,7 @@ pragma Singleton import QtQuick -import org.videolan.vlc 0.1 +import VLC.MainInterface Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/style/VLCStyle.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/style/VLCStyle.qml
Changed
@@ -18,7 +18,8 @@ pragma Singleton import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.Style QtObject { id: vlc_style
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/tests/qml_test.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/tests/qml_test.cpp
Changed
@@ -17,14 +17,40 @@ *****************************************************************************/ #include <QtQuickTest> +#include <QQmlEngine> // not much right now, type registration & initialisation may be required later on // https://doc.qt.io/qt-5/qtquicktest-index.html#executing-c-before-qml-tests +class Setup : public QObject +{ + Q_OBJECT + +public: + Setup() {} + +public slots: + void qmlEngineAvailable(QQmlEngine *engine) + { +#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0) + engine->addImportPath(":/qt/qml"); +#endif + } +}; + int main(int argc, char **argv) { QTEST_SET_MAIN_SOURCE_PATH + + Q_INIT_RESOURCE( util_assets ); +#ifdef QT_USE_QMLCACHEGEN + Q_INIT_RESOURCE( util_cachegen ); +#endif + //run tests offscreen as the CI doesn't have a desktop environment qputenv("QT_QPA_PLATFORM", "offscreen"); - return quick_test_main(argc, argv, "qml_test", QUICK_TEST_SOURCE_DIR); + Setup setup; + return quick_test_main_with_setup(argc, argv, "qml_test", QUICK_TEST_SOURCE_DIR, &setup); } + +#include "qml_test.moc"
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/tests/tst_FSM.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/tests/tst_FSM.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick import QtTest -import "qrc:///util/" as Util +import VLC.Util TestCase { id: root @@ -29,7 +29,7 @@ events.push(e) } - Util.FSM { + FSM { id: fsm initialState: fsmA @@ -53,7 +53,7 @@ property bool selfTransitionDone: false - Util.FSMState { + FSMState { id: fsmA objectName: "fsmA" @@ -67,7 +67,7 @@ recEvent("-A") } - Util.FSMState { + FSMState { id: fsmAA objectName: "fsmAA" @@ -85,7 +85,7 @@ signalInParent: fsmC, }) - Util.FSMState { + FSMState { id: fsmAAA objectName: "fsmAAA" @@ -115,7 +115,7 @@ }) } - Util.FSMState { + FSMState { id: fsmAAB objectName: "fsmAAB" @@ -137,7 +137,7 @@ } } } - Util.FSMState { + FSMState { id: fsmB objectName: "fsmB" @@ -145,7 +145,7 @@ function enter() { recEvent("+B") } function exit() { recEvent("-B") } - Util.FSMState { + FSMState { id: fsmBA objectName: "fsmBA" @@ -153,7 +153,7 @@ function exit() { recEvent("-BA") } } } - Util.FSMState { + FSMState { id: fsmC objectName: "fsmC" @@ -257,7 +257,7 @@ check_active_inactive(fsmA, fsmAA, fsmAAA, fsmAAB) } - Util.FSM { + FSM { id: fsmSeq signal atob() @@ -271,7 +271,7 @@ }) initialState: seqA - Util.FSMState { + FSMState { id: seqA objectName: "seqA" function enter() { recEvent("+A") } @@ -282,7 +282,7 @@ }) } - Util.FSMState { + FSMState { id: seqB objectName: "seqB" function enter() { recEvent("+B") } @@ -291,7 +291,7 @@ atob: seqA, }) } - Util.FSMState { + FSMState { id: seqC objectName: "seqC" function enter() { @@ -303,7 +303,7 @@ ctod: seqD, }) } - Util.FSMState { + FSMState { id: seqD objectName: "seqD" function enter() { recEvent("+D") } @@ -328,7 +328,7 @@ check_active_inactive(data.active, data.inactive) } - Util.FSM { + FSM { id: fsmGuard signal success() @@ -350,7 +350,7 @@ }) initialState: guardInit - Util.FSMState { + FSMState { id: guardInit objectName: "guardInit" transitions: ({ @@ -399,11 +399,11 @@ }) } - Util.FSMState { + FSMState { id: guardOK objectName: "guardOK" } - Util.FSMState { + FSMState { id: guardFail objectName: "guardFail" } @@ -439,7 +439,7 @@ } - Util.FSM { + FSM { id: fsmAction signal simple() @@ -464,7 +464,7 @@ initialState: actionA - Util.FSMState { + FSMState { id: actionA objectName: "actionA" initialState: actionAA @@ -480,7 +480,7 @@ } }) - Util.FSMState { + FSMState { id: actionAA objectName: "actionAA" function enter() { recEvent("+AA") } @@ -538,20 +538,20 @@ }) } } - Util.FSMState { + FSMState { id: actionOK objectName: "actionOK" function enter() { recEvent("+OK") } function exit() { recEvent("-OK") } } - Util.FSMState { + FSMState { id: actionKO objectName: "actionKO" function enter() { recEvent("+KO") } function exit() { recEvent("-KO") } } - Util.FSMState { + FSMState { id: actionTransient objectName: "actionTransient" function enter() { recEvent("+T") } @@ -590,7 +590,7 @@ //check that the FSM hierarchy may contain other object than FSMState nodes - Util.FSM { + FSM { id: fsmMixed initialState: mixedA @@ -602,7 +602,7 @@ btoc: btoc, }) - Util.FSMState { + FSMState { id: mixedA objectName: "mixedA" @@ -614,7 +614,7 @@ }) } - Util.FSMState { + FSMState { id: mixedB objectName: "mixedB" @@ -629,7 +629,7 @@ }) } - Util.FSMState { + FSMState { id: mixedC objectName: "mixedC" }
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/FSM.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/FSM.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick -import "qrc:///util/Helpers.js" as Helpers +import VLC.Util /** * @brief a pure QML hierarchical Finite State Machine implementation
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/FadeControllerStateGroup.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/FadeControllerStateGroup.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick -import "qrc:///style/" +import VLC.Style StateGroup { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/FlickableScrollHandler.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/FlickableScrollHandler.qml
Changed
@@ -18,9 +18,10 @@ import QtQml -import org.videolan.vlc 0.1 as VLC +import VLC.MainInterface +import VLC.Util -VLC.FlickableScrollHandler { +FlickableScrollHandler { id: handler scaleFactor: VLC.MainCtx.intfScaleFactor
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/GridSizeHelper.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/GridSizeHelper.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick -import "qrc:///style/" +import VLC.Style QtObject{ // NOTE: Base picture sizing
View file
_service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/Helpers.qml
Added
@@ -0,0 +1,132 @@ +/***************************************************************************** + * Copyright (C) 2021 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. + *****************************************************************************/ + +pragma Singleton + +import QtQuick + +QtObject { + + function clamp(num, min, max) { + return num <= min ? min : num >= max ? max : num; + } + + function isValidInstanceOf(object, type) { + return (!!object && (object instanceof type)) + } + + // NOTE: This allows us to force another 'reason' even when the item has activeFocus. + function enforceFocus(item, reason) { + if (item.activeFocus && item.focusReason === reason) + return + + item.focus = false; + + item.forceActiveFocus(reason); + } + + function applyVolume(player, delta) { + // Degrees to steps for standard mouse + delta = delta / 8 / 15 + + const steps = Math.ceil(Math.abs(delta)) + + player.muted = false + + if (delta > 0) + player.setVolumeUp(steps) + else + player.setVolumeDown(steps) + } + + function pointInRadius(x, y, radius) { + return (x * x + y * y < radius * radius) + } + + // checks if point `pos` lies in rect `rect` + function contains(rect, pos) { + return (clamp(pos.x, rect.x, rect.x + rect.width) === pos.x) + && (clamp(pos.y, rect.y, rect.y + rect.height) === pos.y) + } + + function isInteger(data) { + return (typeof data === 'number' && (data % 1) === 0) + } + + function compareFloat(a, b) { + return (Math.abs(a - b) < Number.EPSILON) + } + + function alignUp(a, b) { + return Math.ceil(a / b) * b + } + + function alignDown(a, b) { + return Math.floor(a / b) * b + } + + function isSortedIntegerArrayConsecutive(array) { + for (let i = 1; i < array.length; ++i) { + if ((arrayi - arrayi - 1) !== 1) + return false + } + + return true + } + + function itemsMovable(sortedItemIndexes, targetIndex) { + return !isSortedIntegerArrayConsecutive(sortedItemIndexes) || + (targetIndex > (sortedItemIndexessortedItemIndexes.length - 1 + 1) || + targetIndex < sortedItemIndexes0) + } + + /** + * calculate content y for flickable such that item with given param will be fully visible + * @param type:Flickable flickable + * @param type:real y + * @param type:real height + * @param type:real topMargin + * @param type:real bottomMargin + * @return type:real appropriate contentY for flickable + */ + function flickablePositionContaining(flickable, y, height, topMargin, bottomMargin) { + const itemTopY = flickable.originY + y + const itemBottomY = itemTopY + height + + const viewTopY = flickable.contentY + const viewBottomY = viewTopY + flickable.height + + let newContentY + + if (itemTopY < viewTopY) + //item above view + newContentY = itemTopY - topMargin + else if (itemBottomY > viewBottomY) + //item below view + newContentY = itemBottomY + bottomMargin - flickable.height + else + newContentY = flickable.contentY + + return newContentY + } + + function isArray(obj) { + return (obj?.length !== undefined) ?? false + } + +}
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/MLContextMenu.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/MLContextMenu.qml
Changed
@@ -18,11 +18,11 @@ *****************************************************************************/ import QtQml -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary +import VLC.Dialogs - -import "qrc:///util/Helpers.js" as Helpers +import VLC.Util // @brief - a generic ML context menu NativeMenu {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/ModelSortSettingHandler.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/ModelSortSettingHandler.qml
Changed
@@ -18,7 +18,7 @@ *****************************************************************************/ import QtQml -import org.videolan.vlc 0.1 +import VLC.MainInterface /** * save and restore global context properties when view is changing
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/NativeMenu.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/NativeMenu.qml
Changed
@@ -18,8 +18,8 @@ *****************************************************************************/ import QtQml -import org.videolan.vlc 0.1 - +import VLC.MainInterface +import VLC.Menus // @brief - a class that can be used to create native menus with support // to asyncronously retreive data from MLBaseModel like model
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/util/qml/ViewDragAutoScrollHandler.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/util/qml/ViewDragAutoScrollHandler.qml
Changed
@@ -18,7 +18,7 @@ import QtQuick import QtQuick.Controls -import "qrc:///style/" +import VLC.Style QtObject { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/native/qvlcframe.cpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/native/qvlcframe.cpp
Changed
@@ -196,6 +196,17 @@ return defaultUsed; } +QVLCFrame::QVLCFrame(qt_intf_t *_p_intf) : QWidget( NULL ), p_intf( _p_intf ) +{ + assert(_p_intf); + + if (windowFlags().testFlag(Qt::Window)) + { + // If window, set the transient parent: + QVLCDialog::setWindowTransientParent(this, nullptr, p_intf); + } +} + void QVLCFrame::keyPressEvent(QKeyEvent *keyEvent) { if (keyEvent->key() == Qt::Key_Escape)
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/native/qvlcframe.hpp -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/native/qvlcframe.hpp
Changed
@@ -72,8 +72,7 @@ class QVLCFrame : public QWidget { public: - QVLCFrame( qt_intf_t *_p_intf ) : QWidget( NULL ), p_intf( _p_intf ) - {} + QVLCFrame( qt_intf_t *_p_intf ); virtual ~QVLCFrame() {} void toggleVisible() @@ -134,50 +133,4 @@ void keyPressEvent( QKeyEvent *keyEvent ) override; }; -class QVLCMW : public QMainWindow -{ -public: - QVLCMW( qt_intf_t *_p_intf,QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags() ) - : QMainWindow( parent, flags ) - , p_intf( _p_intf ) - {} - - void toggleVisible() - { - if( isVisible() ) hide(); - else show(); - } -protected: - qt_intf_t *p_intf; - QSize mainSize; - - void readSettings( const QString& name, QSize defSize ) - { - QVLCTools::restoreWidgetPosition( p_intf, name, this, defSize); - } - - void readSettings( const QString& name ) - { - QVLCTools::restoreWidgetPosition( p_intf, name, this); - } - void readSettings( QSettings *settings ) - { - QVLCTools::restoreWidgetPosition(settings, this); - } - - void readSettings( QSettings *settings, QSize defSize) - { - QVLCTools::restoreWidgetPosition(settings, this, defSize); - } - - void writeSettings( const QString& name ) - { - QVLCTools::saveWidgetPosition( p_intf, name, this); - } - void writeSettings(QSettings *settings ) - { - QVLCTools::saveWidgetPosition(settings, this); - } -}; - #endif
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/AcrylicBackground.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/AcrylicBackground.qml
Changed
@@ -20,9 +20,9 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Widgets +import VLC.Style ViewBlockingRectangle {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ActionButtonOverlay.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ActionButtonOverlay.qml
Changed
@@ -20,8 +20,7 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style ButtonExt { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ActionButtonPrimary.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ActionButtonPrimary.qml
Changed
@@ -20,8 +20,7 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style ButtonExt { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/AnimatedBackground.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/AnimatedBackground.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick -import "qrc:///style/" +import VLC.Style Rectangle { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/BannerCone.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/BannerCone.qml
Changed
@@ -18,10 +18,11 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util Image { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/BannerTabButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/BannerTabButton.qml
Changed
@@ -20,10 +20,10 @@ import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style T.TabButton { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/BusyIndicatorExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/BusyIndicatorExt.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick import QtQuick.Controls -import "qrc:///style/" +import VLC.Style BusyIndicator { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ButtonExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ButtonExt.qml
Changed
@@ -21,10 +21,10 @@ import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style T.Button { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CSDMouseStealer.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CSDMouseStealer.qml
Changed
@@ -19,7 +19,7 @@ import QtQuick import QtQuick.Window -import org.videolan.vlc 0.1 +import VLC.MainInterface Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CSDThemeButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CSDThemeButton.qml
Changed
@@ -21,9 +21,10 @@ import QtQuick.Layouts import QtQuick.Window -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Widgets +import VLC.Style T.AbstractButton { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CSDThemeButtonSet.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CSDThemeButtonSet.qml
Changed
@@ -19,9 +19,10 @@ import QtQuick.Window import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Style +import VLC.Widgets Rectangle { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CSDTitlebarTapNDrapHandler.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CSDTitlebarTapNDrapHandler.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick import QtQuick.Window -import org.videolan.vlc 0.1 +import VLC.MainInterface Item { TapHandler {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CSDWindowButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CSDWindowButton.qml
Changed
@@ -20,10 +20,9 @@ import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 - -import "." -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.MainInterface +import VLC.Style T.Button { @@ -63,7 +62,7 @@ } contentItem: Item { - IconLabel { + Widgets.IconLabel { id: icon anchors.centerIn: parent text: control.iconTxt
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CSDWindowButtonSet.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CSDWindowButtonSet.qml
Changed
@@ -18,9 +18,9 @@ import QtQuick import QtQuick.Window -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Style Row { id: windowButtonGroup
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CaptionLabel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CaptionLabel.qml
Changed
@@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import "qrc:///style/" +import VLC.Style LabelExt { elide: Text.ElideRight
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CheckButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CheckButton.qml
Changed
@@ -21,9 +21,9 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Style T.Switch { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CheckedDelegate.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CheckedDelegate.qml
Changed
@@ -19,10 +19,9 @@ import QtQuick import QtQuick.Controls import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "." -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style T.ItemDelegate { id: control @@ -48,14 +47,14 @@ enabled: control.enabled } - background: AnimatedBackground { + background: Widgets.AnimatedBackground { enabled: theme.initialized color: control.checked ? theme.bg.highlight : theme.bg.primary border.color: visualFocus ? theme.visualFocus : "transparent" } contentItem: Item { // don't use a row, it will move text when control is unchecked - IconLabel { + Widgets.IconLabel { id: checkIcon height: parent.height @@ -71,7 +70,7 @@ font.pixelSize: VLCStyle.icon_track } - MenuLabel { + Widgets.MenuLabel { id: text anchors.left: checkIcon.right
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ComboBoxExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ComboBoxExt.qml
Changed
@@ -19,11 +19,11 @@ import QtQuick.Templates as T import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util T.ComboBox { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/CurrentIndicator.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/CurrentIndicator.qml
Changed
@@ -19,8 +19,7 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style Rectangle { readonly property ColorContext colorContext: ColorContext {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/DefaultShadow.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/DefaultShadow.qml
Changed
@@ -19,7 +19,8 @@ import QtQuick import Qt5Compat.GraphicalEffects -import "qrc:///style/" +import VLC.Style +import VLC.Util DoubleShadow { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/DoubleShadow.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/DoubleShadow.qml
Changed
@@ -18,9 +18,9 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style +import VLC.Util // A convenience file to encapsulate two drop shadow images stacked on top // of each other
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/DragItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/DragItem.qml
Changed
@@ -23,13 +23,12 @@ import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import org.videolan.controls 0.1 -import "qrc:///style/" -import "qrc:///playlist/" as Playlist -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///util/" as Util +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Playlist as Playlist +import VLC.Util Item { id: dragItem @@ -239,7 +238,7 @@ } } - Util.FSM { + FSM { id: fsm signal startDrag() @@ -260,7 +259,7 @@ initialState: fsmDragInactive - Util.FSMState { + FSMState { id: fsmDragInactive function enter() { @@ -275,7 +274,7 @@ }) } - Util.FSMState { + FSMState { id: fsmDragActive initialState: fsmRequestData @@ -301,7 +300,7 @@ stopDrag: fsmDragInactive }) - Util.FSMState { + FSMState { id: fsmRequestData function enter() { @@ -324,7 +323,7 @@ }) } - Util.FSMState { + FSMState { id: fsmRequestInputItem function enter() { @@ -347,7 +346,7 @@ }) } - Util.FSMState { + FSMState { id: fsmLoadingDone function enter() { @@ -362,7 +361,7 @@ } } - Util.FSMState { + FSMState { id: fsmLoadingFailed function enter() { _pendingNativeDragStart = false @@ -415,7 +414,7 @@ } } - RoundImage { + Widgets.RoundImage { id: fallbackCover anchors.centerIn: parent @@ -480,7 +479,7 @@ border.width: VLCStyle.dp(1, VLCStyle.scale) border.color: theme.border - MenuLabel { + Widgets.MenuLabel { anchors.fill: parent verticalAlignment: Text.AlignVCenter
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/DrawerExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/DrawerExt.qml
Changed
@@ -18,7 +18,7 @@ import QtQuick import QtQuick.Controls -import "qrc:///style/" +import VLC.Style FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/DropShadowImage.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/DropShadowImage.qml
Changed
@@ -18,7 +18,7 @@ import QtQuick -import org.videolan.vlc 0.1 +import VLC.Util ScaledImage {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/EmptyLabel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/EmptyLabel.qml
Changed
@@ -18,10 +18,9 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.Style +import VLC.Widgets as Widgets T.Control { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/EmptyLabelButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/EmptyLabelButton.qml
Changed
@@ -19,10 +19,11 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util EmptyLabel { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/EmptyLabelHint.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/EmptyLabelHint.qml
Changed
@@ -19,10 +19,9 @@ *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.Style +import VLC.Widgets as Widgets EmptyLabel { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ExpandGridItemView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ExpandGridItemView.qml
Changed
@@ -20,9 +20,9 @@ import QtQuick -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Util as Util +import VLC.Widgets as Widgets +import VLC.Style Widgets.ExpandGridView { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ExpandGridView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ExpandGridView.qml
Changed
@@ -22,11 +22,10 @@ import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///util/" as Util +import VLC.MainInterface +import VLC.Style +import VLC.Util FocusScope { id: root @@ -763,7 +762,7 @@ } } - Util.FlickableScrollHandler { } + FlickableScrollHandler { } Loader { id: headerItemLoader
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/FadingEdge.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/FadingEdge.qml
Changed
@@ -17,8 +17,8 @@ *****************************************************************************/ import QtQuick -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.Style +import VLC.Util Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/FadingEdgeForListView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/FadingEdgeForListView.qml
Changed
@@ -17,8 +17,8 @@ *****************************************************************************/ import QtQuick -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.Style +import VLC.Util FadingEdge { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/FrostedGlassEffect.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/FrostedGlassEffect.qml
Changed
@@ -19,7 +19,8 @@ import QtQuick import Qt5Compat.GraphicalEffects -import "qrc:///style/" +import VLC.Style +import VLC.Util // This item can be used as a layer effect. // Make sure that the sampler name is set to "source" (default).
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/GridItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/GridItem.qml
Changed
@@ -21,11 +21,10 @@ import QtQuick.Layouts import QtQml.Models -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style T.ItemDelegate { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/HorizontalResizeHandle.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/HorizontalResizeHandle.qml
Changed
@@ -17,8 +17,8 @@ *****************************************************************************/ import QtQuick import QtQuick.Controls -import "qrc:///style/" -import org.videolan.vlc 0.1 +import VLC.MainInterface +import VLC.Style // targetWidth: concerned widget's current width // sourceWidth: target's width is bounded by this value (parent's width?) @@ -52,6 +52,10 @@ MainCtx.restoreCursor() } + onCanceled: { + MainCtx.restoreCursor() + } + onPositionChanged: { const f = atRight ? -1 : 1 const delta = mouseX - _previousX
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/IconButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/IconButton.qml
Changed
@@ -19,10 +19,10 @@ import QtQuick.Controls import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "." +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets T.Button { id: control @@ -49,7 +49,7 @@ T.ToolTip.delay: VLCStyle.delayToolTipAppear T.ToolTip.text: description - contentItem: IconLabel { + contentItem: Widgets.IconLabel { font: control.font color: control.color text: control.text
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/IconLabel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/IconLabel.qml
Changed
@@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import "qrc:///style/" +import VLC.Style Text { elide: Text.ElideNone
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/IconToolButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/IconToolButton.qml
Changed
@@ -19,11 +19,10 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" -import "." +import VLC.MainInterface +import VLC.Widgets as Widgets +import VLC.Style T.ToolButton { id: control @@ -90,7 +89,7 @@ pressed: control.down } - background: AnimatedBackground { + background: Widgets.AnimatedBackground { implicitWidth: control.font.pixelSize implicitHeight: control.font.pixelSize @@ -101,7 +100,7 @@ border.color: visualFocus ? theme.visualFocus : "transparent" } - contentItem: IconLabel { + contentItem: Widgets.IconLabel { text: control.text color: control.color
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/IconTrackButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/IconTrackButton.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick -import "qrc:///style/" +import VLC.Style IconToolButton { // Style
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ImageToolButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ImageToolButton.qml
Changed
@@ -18,11 +18,11 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Widgets as Widgets -import "qrc:///style/" +import VLC.Style T.ToolButton { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/KeyNavigableListView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/KeyNavigableListView.qml
Changed
@@ -20,11 +20,10 @@ import QtQuick.Window import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///util/" as Util -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Style +import VLC.Util ListView { id: root @@ -286,7 +285,7 @@ } } - Util.FlickableScrollHandler { } + FlickableScrollHandler { } // FIXME: This is probably not useful anymore. Connections {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/KeyNavigableTableView.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/KeyNavigableTableView.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects -import org.videolan.vlc 0.1 -import "qrc:///util/" as Util -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.MainInterface +import VLC.Util +import VLC.Widgets as Widgets +import VLC.Style // FIXME: Maybe we could inherit from KeyNavigableListView directly. FocusScope {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/LabelExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/LabelExt.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick 2.12 import QtQuick.Templates 2.12 as T -import "qrc:///style/" +import VLC.Style T.Label { T.ToolTip.visible: (elide !== Text.ElideNone) && (width < implicitWidth) && hoverHandler.hovered
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ListLabel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ListLabel.qml
Changed
@@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import "qrc:///style/" +import VLC.Style LabelExt { elide: Text.ElideRight
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/LocalTabBar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/LocalTabBar.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick -import "qrc:///style/" +import VLC.Style NavigableRow { id: row
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/MLDragItem.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/MLDragItem.qml
Changed
@@ -21,7 +21,8 @@ import QtQuick -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary DragItem { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/MLTableColumns.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/MLTableColumns.qml
Changed
@@ -17,7 +17,8 @@ *****************************************************************************/ -import org.videolan.medialib 0.1 +import VLC.MainInterface +import VLC.MediaLibrary TableColumns {
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/MediaCover.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/MediaCover.qml
Changed
@@ -19,11 +19,9 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import org.videolan.controls 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style // NOTE: This rectangle is useful to discern the item against a similar background. @@ -43,7 +41,7 @@ property alias cacheImage: image.cache - property bool isImageReady: image.status == RoundImage.Ready + property bool isImageReady: image.status == Widgets.RoundImage.Ready property string fallbackImageSource @@ -70,7 +68,7 @@ // Children - RoundImage { + Widgets.RoundImage { id: image anchors.fill: parent @@ -83,7 +81,7 @@ cache: false } - RoundImage { + Widgets.RoundImage { id: fallbackImage anchors.fill: parent
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/MenuCaption.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/MenuCaption.qml
Changed
@@ -17,7 +17,7 @@ *****************************************************************************/ import QtQuick import QtQuick.Templates as T -import "qrc:///style/" +import VLC.Style T.Label { elide: Text.ElideRight
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/MenuLabel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/MenuLabel.qml
Changed
@@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import "qrc:///style/" +import VLC.Style LabelExt { elide: Text.ElideRight
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/NavigableCol.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/NavigableCol.qml
Changed
@@ -19,8 +19,7 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 - +import VLC.MainInterface T.Control { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/NavigableRow.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/NavigableRow.qml
Changed
@@ -19,7 +19,7 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 +import VLC.MainInterface T.Control { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/OverlayMenu.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/OverlayMenu.qml
Changed
@@ -19,10 +19,11 @@ import QtQuick.Controls import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "." -import "qrc:///style/" +import VLC.Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Util FocusScope { id: root @@ -185,7 +186,7 @@ } } - header: MenuLabel { + header: Widgets.MenuLabel { font.pixelSize: VLCStyle.fontSize_xlarge text: listView.currentModel.title @@ -272,7 +273,7 @@ Component { id: fontIcon - IconLabel { + Widgets.IconLabel { horizontalAlignment: Text.AlignHCenter text: modelData.fontIcon color: theme.fg.primary @@ -281,7 +282,7 @@ Component { id: tickMark - ListLabel { + Widgets.ListLabel { horizontalAlignment: Text.AlignHCenter text: "✓" color: theme.fg.primary @@ -299,7 +300,7 @@ } } - ListLabel { + Widgets.ListLabel { id: textLabel Layout.fillWidth: true @@ -313,7 +314,7 @@ Accessible.ignored: true } - ListLabel { + Widgets.ListLabel { Layout.alignment: Qt.AlignHCenter horizontalAlignment: Text.AlignHCenter
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/PageLoader.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/PageLoader.qml
Changed
@@ -16,9 +16,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Util StackViewExt { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/PlayCover.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/PlayCover.qml
Changed
@@ -20,9 +20,8 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.Style +import VLC.Widgets as Widgets Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/PointingTooltip.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/PointingTooltip.qml
Changed
@@ -18,7 +18,7 @@ import QtQuick import QtQuick.Controls -import "qrc:///style/" +import VLC.Style ToolTipExt { id: pointingTooltip
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/PopupIconToolButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/PopupIconToolButton.qml
Changed
@@ -21,11 +21,11 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets +import VLC.Util Widgets.IconToolButton { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ProgressIndicator.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ProgressIndicator.qml
Changed
@@ -18,9 +18,8 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style Control { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/RoundButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/RoundButton.qml
Changed
@@ -18,9 +18,8 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style Button{ id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ScaledImage.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ScaledImage.qml
Changed
@@ -20,7 +20,7 @@ import QtQuick -import org.videolan.vlc 0.1 +import VLC.MainInterface Image { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ScanProgressBar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ScanProgressBar.qml
Changed
@@ -20,10 +20,9 @@ import QtQuick.Controls import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import org.videolan.medialib 0.1 +import VLC.MediaLibrary -import "qrc:///style/" +import VLC.Style T.ProgressBar { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/SearchBox.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/SearchBox.qml
Changed
@@ -19,10 +19,10 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets FocusScope { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/SliderExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/SliderExt.qml
Changed
@@ -21,10 +21,9 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.Style +import VLC.Util T.Slider { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/SortControl.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/SortControl.qml
Changed
@@ -18,10 +18,11 @@ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Menus +import VLC.Widgets as Widgets Widgets.IconToolButton { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/SpinBoxExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/SpinBoxExt.qml
Changed
@@ -20,10 +20,10 @@ import QtQuick.Controls import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///widgets/" as Widgets +import VLC.MainInterface +import VLC.Style +import VLC.Widgets as Widgets T.SpinBox { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/StackViewExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/StackViewExt.qml
Changed
@@ -18,7 +18,7 @@ import QtQuick import QtQuick.Controls -import "qrc:///style/" +import VLC.Style /* * Custom StackView with brief transitions and helper to load view from the history
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/SubtitleLabel.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/SubtitleLabel.qml
Changed
@@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import "qrc:///style/" +import VLC.Style LabelExt { elide: Text.ElideRight
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/TableColumns.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/TableColumns.qml
Changed
@@ -19,11 +19,10 @@ import QtQuick.Controls import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///util/Helpers.js" as Helpers -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Util +import VLC.Style Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/TableViewDelegate.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/TableViewDelegate.qml
Changed
@@ -20,10 +20,10 @@ import QtQuick.Templates as T import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style +import VLC.Util T.Control { id: delegate @@ -112,6 +112,10 @@ onActiveChanged: { if (dragItem) { if (active) { + if (!selected) { + delegate.ListView.view.selectionModel.select(index, ItemSelectionModel.ClearAndSelect) + } + dragItem.Drag.active = true } else { dragItem.Drag.drop() @@ -129,11 +133,17 @@ grabPermissions: TapHandler.CanTakeOverFromHandlersOfDifferentType | TapHandler.ApprovesTakeOverByAnything - onSingleTapped: (point, button) => { + onSingleTapped: (eventPoint, button) => { initialAction() + if (!(delegate.selected && button === Qt.RightButton)) { + const view = delegate.ListView.view + view.selectionModel.updateSelection(point.modifiers, view.currentIndex, index) + view.currentIndex = index + } + if (button === Qt.RightButton) - delegate.rightClick(delegate, delegate.rowModel, parent.mapToGlobal(point.position.x, point.position.y)) + delegate.rightClick(delegate, delegate.rowModel, parent.mapToGlobal(eventPoint.position.x, eventPoint.position.y)) } onDoubleTapped: (point, button) => { @@ -146,9 +156,7 @@ } function initialAction() { - if ((point.pressedButtons === Qt.LeftButton) || !delegate.selected) { - delegate.selectAndFocus(point.modifiers, Qt.MouseFocusReason) - } + delegate.forceActiveFocus(Qt.MouseFocusReason) } } @@ -244,6 +252,21 @@ visible: delegate.hovered + // NOTE: QTBUG-100543 + // Hover handling in controls is blocking in Qt 6.2, meaning if this + // control handles the hover, delegate itself won't have its `hovered` + // set. Since this control is visible when delegate is hovered, there + // becomes an infinite loop of visibility when this control is hovered. + + // 1) When delegate is hovered, delegate's hovered property becomes set. + // 2) This control becomes visible. + // 3) When this control is hovered, delegate's hovered property becomes unset. + // 4) This control becomes invisible. Delegate's hovered property becomes set. + // * Infinite loop * + + // Disable hovering in this control to prevent twitching due to infinite loop: + hoverEnabled: MainCtx.qtQuickControlRejectsHoverEvents() + onClicked: { if (!delegate.selected) delegate.selectAndFocus(Qt.NoModifier, Qt.MouseFocusReason)
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/TextAutoScroller.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/TextAutoScroller.qml
Changed
@@ -18,7 +18,7 @@ import QtQuick import QtQuick.Controls -import "qrc:///style/" +import VLC.Style Item { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/TextFieldExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/TextFieldExt.qml
Changed
@@ -19,9 +19,8 @@ import QtQuick import QtQuick.Controls -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style TextField { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/TextToolButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/TextToolButton.qml
Changed
@@ -18,9 +18,9 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.MainInterface +import VLC.Style T.ToolButton { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ToolTipExt.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ToolTipExt.qml
Changed
@@ -19,8 +19,7 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style T.ToolTip { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/TrackDelayButton.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/TrackDelayButton.qml
Changed
@@ -19,10 +19,9 @@ import QtQuick import QtQuick.Layouts -import org.videolan.vlc 0.1 -import "qrc:///widgets/" as Widgets -import "qrc:///style/" +import VLC.Widgets as Widgets +import VLC.Style ButtonExt { id: control
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/VideoProgressBar.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/VideoProgressBar.qml
Changed
@@ -16,8 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ import QtQuick -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style //we want the progress bar to match the radius of the of the video thumbnail //so we generarte two rectangles with the right radius and we clip the part we
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/VideoQualityLabels.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/VideoQualityLabels.qml
Changed
@@ -18,8 +18,7 @@ import QtQuick import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" +import VLC.Style Row { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/modules/gui/qt/widgets/qml/ViewHeader.qml -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/modules/gui/qt/widgets/qml/ViewHeader.qml
Changed
@@ -22,10 +22,10 @@ import QtQuick.Layouts import QtQuick.Templates as T -import org.videolan.vlc 0.1 -import "qrc:///style/" -import "qrc:///util/Helpers.js" as Helpers +import VLC.MainInterface +import VLC.Style +import VLC.Util T.Pane { id: root
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/po/POTFILES.in -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/po/POTFILES.in
Changed
@@ -835,7 +835,7 @@ modules/gui/qt/player/control_list_filter.hpp modules/gui/qt/player/player_controlbar_model.cpp modules/gui/qt/player/player_controlbar_model.hpp -modules/gui/qt/player/qml/ControlbarControls.qml +modules/gui/qt/player/qml/PlayerControlbarControls.qml modules/gui/qt/player/qml/NavigationBox.qml modules/gui/qt/player/qml/PlaybackSpeed.qml modules/gui/qt/player/qml/Player.qml
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/src/audio_output/dec.c -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/src/audio_output/dec.c
Changed
@@ -825,6 +825,25 @@ vlc_mutex_unlock(&stream->timing.lock); } +static vlc_tick_t stream_ClockConvert(vlc_aout_stream *stream, + vlc_tick_t system_now, vlc_tick_t pts) +{ + uint32_t clock_id; + + vlc_clock_Lock(stream->sync.clock); + vlc_tick_t play_date = + vlc_clock_ConvertToSystem(stream->sync.clock, system_now, pts, + stream->sync.rate, &clock_id); + vlc_clock_Unlock(stream->sync.clock); + + if (clock_id != stream->sync.clock_id && stream->sync.played) + { + stream->sync.clock_id = clock_id; + return VLC_TICK_INVALID; + } + return play_date; +} + /***************************************************************************** * vlc_aout_stream_Play : filter & mix the decoded buffer *****************************************************************************/ @@ -848,8 +867,18 @@ if (unlikely(ret == AOUT_DEC_FAILED)) goto drop; /* Pipeline is unrecoverably broken :-( */ + vlc_tick_t play_date = VLC_TICK_INVALID; + vlc_tick_t system_now; + if (stream->filters && (block->i_flags & BLOCK_FLAG_CORE_PRIVATE_FILTERED) == 0) { + system_now = vlc_tick_now(); + vlc_tick_t prefilter_pts = block->i_pts; + + play_date = stream_ClockConvert(stream, system_now, block->i_pts); + if (play_date == VLC_TICK_INVALID) + return stream_StartDiscontinuity(stream, block); + if (atomic_load_explicit(&owner->vp.update, memory_order_relaxed)) { vlc_mutex_lock (&owner->vp.lock); @@ -861,6 +890,11 @@ block = aout_FiltersPlay(stream->filters, block, stream->sync.rate); if (block == NULL) return ret; + assert (block->i_pts != VLC_TICK_INVALID); + + /* Re-trigger a clock convert if the filtered ts is different */ + if (prefilter_pts != block->i_pts) + play_date = VLC_TICK_INVALID; } /* Software volume */ @@ -880,23 +914,19 @@ stream_Silence(stream, delta, block->i_pts); } - /* Drift correction */ - vlc_tick_t system_now = vlc_tick_now(); - - uint32_t clock_id; - vlc_clock_Lock(stream->sync.clock); - vlc_tick_t play_date = - vlc_clock_ConvertToSystem(stream->sync.clock, system_now, block->i_pts, - stream->sync.rate, &clock_id); - vlc_clock_Unlock(stream->sync.clock); - - if (clock_id != stream->sync.clock_id) + /* Convert the pts if not previously done by filters */ + if (play_date == VLC_TICK_INVALID) { - stream->sync.clock_id = clock_id; - block->i_flags |= BLOCK_FLAG_CORE_PRIVATE_FILTERED; - return stream_StartDiscontinuity(stream, block); + system_now = vlc_tick_now(); + play_date = stream_ClockConvert(stream, system_now, block->i_pts); + if (play_date == VLC_TICK_INVALID) + { + block->i_flags |= BLOCK_FLAG_CORE_PRIVATE_FILTERED; + return stream_StartDiscontinuity(stream, block); + } } + /* Drift correction */ stream_Synchronize(stream, system_now, play_date, block->i_pts); vlc_audio_meter_Process(&owner->meter, block, play_date); @@ -1046,7 +1076,10 @@ { block_t *block = aout_FiltersDrain (stream->filters); if (block) + { + assert (block->i_pts != VLC_TICK_INVALID); aout->play(aout, block, vlc_tick_now()); + } } if (aout->drain)
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/src/clock/input_clock.c -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/src/clock/input_clock.c
Changed
@@ -339,15 +339,18 @@ *****************************************************************************/ void input_clock_ChangeRate( input_clock_t *cl, float rate ) { + float oldrate = cl->rate; + cl->rate = rate; + if( cl->b_has_reference ) { /* Move the reference point (as if we were playing at the new rate * from the start */ - cl->ref.system = cl->last.system - (vlc_tick_t) ((cl->last.system - cl->ref.system) / rate * cl->rate); - } - cl->rate = rate; + cl->ref.system = cl->last.system + - (vlc_tick_t) ((cl->last.system - cl->ref.system) / rate * oldrate); - UpdateListener( cl, false ); + UpdateListener( cl, false ); + } } /*****************************************************************************
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/src/rust/Makefile.am -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/src/rust/Makefile.am
Changed
@@ -7,9 +7,8 @@ vlcrs-messages.cargo: vlcrs-plugin.cargo: vlcrs-utils.cargo: - cd $(top_srcdir)/src/rust/$(@:.cargo=) && env \ - top_builddir="${abs_top_builddir}" \ - cargo build + env top_builddir="${abs_top_builddir}" \ + $(RUST_ENV) $(CARGO) -C $(top_srcdir)/src/rust/$(@:.cargo=) --target=$(RUST_TARGET) build if HAVE_RUST TESTS += \
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/src/video_output/display.c -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/src/video_output/display.c
Changed
@@ -264,7 +264,7 @@ struct vout_display_placement place_cfg = osys->cfg.display; vout_display_place_t prev_place = osys->src_place; vout_display_PlacePicture(&osys->src_place, &osys->source, &place_cfg); - return vout_display_PlaceEquals(&prev_place, &osys->src_place); + return !vout_display_PlaceEquals(&prev_place, &osys->src_place); } /*****************************************************************************
View file
_service:obs_scm:vlc-beta-20240720.e23f2dbdee.obscpio/src/video_output/vout_intf.c -> _service:obs_scm:vlc-beta-20240726.7f41329811.obscpio/src/video_output/vout_intf.c
Changed
@@ -131,6 +131,18 @@ { "5:4", "5:4" }, }; +static const struct +{ + enum vlc_video_fitting fit; + char psz_label15; +} p_fit_values = { + { VLC_VIDEO_FIT_NONE, N_("None") }, + { VLC_VIDEO_FIT_SMALLER, N_("Inside Window") }, + { VLC_VIDEO_FIT_LARGER, N_("Outside Window") }, + { VLC_VIDEO_FIT_WIDTH, N_("Window Width") }, + { VLC_VIDEO_FIT_HEIGHT, N_("Window Height") }, +}; + static void AddCustomRatios( vout_thread_t *p_vout, const char *psz_var, char *psz_list ) { @@ -248,6 +260,18 @@ free( psz_buf ); } + /* display fit */ + var_Create( p_vout, "fit", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | + VLC_VAR_DOINHERIT ); + var_Change( p_vout, "fit", VLC_VAR_SETTEXT, _("Fit Mode") ); + + for( size_t i = 0; i < ARRAY_SIZE(p_fit_values); i++ ) + { + val.i_int = p_fit_valuesi.fit; + var_Change( p_vout, "fit", VLC_VAR_ADDCHOICE, val, + p_fit_valuesi.psz_label ); + } + /* Add a variable to indicate if the window should be on top of others */ var_Create( p_vout, "video-on-top", VLC_VAR_BOOL | VLC_VAR_DOINHERIT | VLC_VAR_ISCOMMAND );
View file
_service:obs_scm:vlc-beta.obsinfo
Changed
@@ -1,4 +1,4 @@ name: vlc-beta -version: 20240720.e23f2dbdee -mtime: 1721471895 -commit: e23f2dbdee195a87b267c25ba917c1622260c7d7 +version: 20240726.7f41329811 +mtime: 1721972800 +commit: 7f41329811c2173f53d9152aa0032d92779ee575
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.