Changes of Revision 381

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