From 58ff3e099d1f45906f94a697f28a15f078e11d1f Mon Sep 17 00:00:00 2001 From: Duncan McNamara <dcn.mcnamara@gmail.com> Date: Wed, 26 Jun 2019 18:30:50 +0200 Subject: [PATCH] Medialibrary: rename AClasses into AbstractClasses --- medialibrary/jni/medialibrary.cpp | 192 ++++++------ .../medialibrary/MLServiceLocator.java | 74 ++--- .../videolan/medialibrary/Medialibrary.java | 241 ++++++++------- .../src/org/videolan/medialibrary/Tools.java | 12 +- ...library.java => AbstractMedialibrary.java} | 126 ++++---- .../medialibrary/interfaces/media/AGenre.java | 54 ---- .../media/{AAlbum.java => AbstractAlbum.java} | 38 +-- .../{AArtist.java => AbstractArtist.java} | 44 +-- .../{AFolder.java => AbstractFolder.java} | 26 +- .../interfaces/media/AbstractGenre.java | 54 ++++ ...Wrapper.java => AbstractMediaWrapper.java} | 46 +-- .../{APlaylist.java => AbstractPlaylist.java} | 24 +- .../videolan/medialibrary/media/Album.java | 44 +-- .../videolan/medialibrary/media/Artist.java | 74 ++--- .../medialibrary/media/DummyItem.java | 8 +- .../videolan/medialibrary/media/Folder.java | 44 +-- .../videolan/medialibrary/media/Genre.java | 90 +++--- .../medialibrary/media/HistoryItem.java | 12 +- .../medialibrary/media/MediaLibraryItem.java | 6 +- .../medialibrary/media/MediaWrapper.java | 36 ++- .../videolan/medialibrary/media/Playlist.java | 66 ++-- .../medialibrary/media/SearchAggregate.java | 48 +-- .../videolan/medialibrary/media/Storage.java | 8 +- .../medialibrary/stubs/StubAlbum.java | 34 +-- .../medialibrary/stubs/StubArtist.java | 52 ++-- .../medialibrary/stubs/StubDataSource.java | 148 ++++----- .../medialibrary/stubs/StubFolder.java | 44 +-- .../medialibrary/stubs/StubGenre.java | 70 ++--- .../medialibrary/stubs/StubMediaWrapper.java | 4 +- .../medialibrary/stubs/StubMedialibrary.java | 286 +++++++++--------- .../medialibrary/stubs/StubPlaylist.java | 32 +- vlc-android/res/layout/folder_item.xml | 2 +- vlc-android/res/layout/history_item.xml | 4 +- vlc-android/res/layout/playlist_item.xml | 2 +- .../res/layout/tv_simple_list_item.xml | 2 +- vlc-android/res/layout/video_grid_card.xml | 2 +- vlc-android/res/layout/video_list_card.xml | 2 +- .../org/videolan/vlc/MediaParsingService.kt | 24 +- .../org/videolan/vlc/MediaSessionCallback.kt | 4 +- .../src/org/videolan/vlc/PlaybackService.kt | 37 ++- .../videolan/vlc/RecommendationsService.kt | 6 +- .../src/org/videolan/vlc/StoragesMonitor.kt | 4 +- .../src/org/videolan/vlc/VLCApplication.kt | 6 +- .../extensions/ExtensionManagerService.java | 4 +- .../org/videolan/vlc/extensions/Utils.java | 6 +- .../vlc/gui/AudioPlayerContainerActivity.kt | 8 +- .../org/videolan/vlc/gui/DialogActivity.kt | 4 +- .../org/videolan/vlc/gui/HistoryAdapter.kt | 6 +- .../org/videolan/vlc/gui/HistoryFragment.kt | 10 +- .../src/org/videolan/vlc/gui/InfoActivity.kt | 22 +- .../src/org/videolan/vlc/gui/MainActivity.kt | 4 +- .../org/videolan/vlc/gui/PlaylistActivity.kt | 27 +- .../org/videolan/vlc/gui/PlaylistFragment.kt | 4 +- .../org/videolan/vlc/gui/SearchActivity.kt | 4 +- .../vlc/gui/audio/AudioAlbumsSongsFragment.kt | 8 +- .../vlc/gui/audio/AudioBrowserFragment.kt | 6 +- .../org/videolan/vlc/gui/audio/AudioPlayer.kt | 10 +- .../vlc/gui/audio/BaseAudioBrowser.kt | 8 +- .../videolan/vlc/gui/audio/PlaylistAdapter.kt | 14 +- .../vlc/gui/browser/BaseBrowserAdapter.kt | 22 +- .../vlc/gui/browser/BaseBrowserFragment.kt | 61 ++-- .../vlc/gui/browser/ExtensionAdapter.kt | 16 +- .../vlc/gui/browser/ExtensionBrowser.kt | 6 +- .../vlc/gui/browser/FileBrowserFragment.kt | 10 +- .../vlc/gui/browser/FilePickerAdapter.kt | 4 +- .../vlc/gui/browser/FilePickerFragment.kt | 10 +- .../vlc/gui/browser/MediaBrowserFragment.kt | 34 +-- .../vlc/gui/browser/NetworkBrowserFragment.kt | 6 +- .../videolan/vlc/gui/browser/PathAdapter.kt | 4 +- .../vlc/gui/browser/StorageBrowserAdapter.kt | 4 +- .../vlc/gui/browser/StorageBrowserFragment.kt | 8 +- .../vlc/gui/dialogs/NetworkServerDialog.kt | 4 +- .../vlc/gui/dialogs/SavePlaylistDialog.kt | 20 +- .../vlc/gui/folders/FoldersAdapter.kt | 16 +- .../vlc/gui/folders/FoldersFragment.kt | 8 +- .../org/videolan/vlc/gui/helpers/AudioUtil.kt | 20 +- .../videolan/vlc/gui/helpers/BitmapUtil.kt | 8 +- .../videolan/vlc/gui/helpers/ImageLoader.kt | 14 +- .../vlc/gui/helpers/MediaComparators.kt | 4 +- .../vlc/gui/helpers/PlayerOptionsDelegate.kt | 2 +- .../org/videolan/vlc/gui/helpers/UiTools.kt | 48 +-- .../videolan/vlc/gui/helpers/hf/OtgAccess.kt | 14 +- .../videolan/vlc/gui/network/MRLAdapter.kt | 10 +- .../vlc/gui/network/MRLPanelFragment.kt | 10 +- .../gui/preferences/PreferencesAdvanced.kt | 6 +- .../org/videolan/vlc/gui/tv/CardPresenter.kt | 24 +- .../videolan/vlc/gui/tv/FileTvItemAdapter.kt | 14 +- .../org/videolan/vlc/gui/tv/MainTvActivity.kt | 6 +- .../org/videolan/vlc/gui/tv/MainTvFragment.kt | 13 +- .../videolan/vlc/gui/tv/MediaHeaderAdapter.kt | 10 +- .../vlc/gui/tv/MediaItemDetailsFragment.kt | 14 +- .../videolan/vlc/gui/tv/MediaTvItemAdapter.kt | 6 +- .../org/videolan/vlc/gui/tv/SearchFragment.kt | 16 +- .../src/org/videolan/vlc/gui/tv/TvUtil.kt | 68 ++--- .../gui/tv/audioplayer/AudioPlayerActivity.kt | 10 +- .../vlc/gui/tv/audioplayer/PlaylistAdapter.kt | 4 +- .../gui/tv/browser/BaseBrowserTvFragment.kt | 24 +- .../vlc/gui/tv/browser/BaseTvActivity.kt | 6 +- .../vlc/gui/tv/browser/CategoriesFragment.kt | 8 +- .../tv/browser/DirectoryBrowserFragment.kt | 4 +- .../gui/tv/browser/FileBrowserTvFragment.kt | 16 +- .../gui/tv/browser/MediaBrowserTvFragment.kt | 8 +- .../gui/tv/browser/NetworkBrowserFragment.kt | 4 +- .../gui/tv/browser/VerticalGridActivity.kt | 4 +- .../videolan/vlc/gui/video/PopupManager.kt | 4 +- .../vlc/gui/video/VideoGridFragment.kt | 38 +-- .../vlc/gui/video/VideoListAdapter.kt | 30 +- .../vlc/gui/video/VideoPlayerActivity.kt | 50 +-- .../org/videolan/vlc/interfaces/Sortable.kt | 12 +- .../vlc/media/MediaSessionBrowser.java | 26 +- .../src/org/videolan/vlc/media/MediaUtils.kt | 74 ++--- .../videolan/vlc/media/MediaWrapperList.kt | 30 +- .../videolan/vlc/media/PlayerController.kt | 7 +- .../org/videolan/vlc/media/PlaylistManager.kt | 90 +++--- .../videolan/vlc/providers/BrowserProvider.kt | 30 +- .../vlc/providers/FileBrowserProvider.kt | 14 +- .../vlc/providers/FilePickerProvider.kt | 4 +- .../videolan/vlc/providers/NetworkProvider.kt | 8 +- .../videolan/vlc/providers/StorageProvider.kt | 4 +- .../providers/medialibrary/AlbumsProvider.kt | 36 +-- .../providers/medialibrary/ArtistsProvider.kt | 8 +- .../providers/medialibrary/FoldersProvider.kt | 8 +- .../providers/medialibrary/GenresProvider.kt | 8 +- .../medialibrary/MedialibraryProvider.kt | 8 +- .../medialibrary/PlaylistsProvider.kt | 8 +- .../providers/medialibrary/TracksProvider.kt | 52 ++-- .../providers/medialibrary/VideosProvider.kt | 20 +- .../vlc/repository/BrowserFavRepository.kt | 8 +- .../vlc/repository/DirectoryRepository.kt | 8 +- .../vlc/repository/SlaveRepository.kt | 4 +- .../src/org/videolan/vlc/util/Browserutils.kt | 6 +- .../src/org/videolan/vlc/util/FileUtils.kt | 4 +- .../org/videolan/vlc/util/FilterDelegate.kt | 8 +- .../src/org/videolan/vlc/util/Kextensions.kt | 26 +- .../src/org/videolan/vlc/util/ModelsHelper.kt | 116 +++---- .../videolan/vlc/util/ThumbnailsProvider.kt | 37 ++- .../src/org/videolan/vlc/util/TvChannels.kt | 6 +- vlc-android/src/org/videolan/vlc/util/Util.kt | 4 +- .../src/org/videolan/vlc/util/VLCOptions.kt | 10 +- .../videolan/vlc/viewmodels/HistoryModel.kt | 6 +- .../vlc/viewmodels/MedialibraryModel.kt | 6 +- .../vlc/viewmodels/MedialibraryViewModel.kt | 6 +- .../videolan/vlc/viewmodels/PlaylistModel.kt | 20 +- .../videolan/vlc/viewmodels/SortableModel.kt | 6 +- .../videolan/vlc/viewmodels/StreamsModel.kt | 4 +- .../vlc/viewmodels/browser/BrowserModel.kt | 22 +- .../viewmodels/mobile/AlbumSongsViewModel.kt | 20 +- .../mobile/AudioBrowserViewModel.kt | 10 +- .../vlc/viewmodels/mobile/FoldersViewModel.kt | 8 +- .../viewmodels/mobile/PlaylistViewModel.kt | 20 +- .../vlc/viewmodels/mobile/VideosViewModel.kt | 8 +- .../videolan/vlc/viewmodels/tv/MainTvModel.kt | 24 +- .../org/videolan/vlc/util/TestUtil.kt | 2 +- 153 files changed, 1933 insertions(+), 1940 deletions(-) rename medialibrary/src/org/videolan/medialibrary/interfaces/{AMedialibrary.java => AbstractMedialibrary.java} (81%) delete mode 100644 medialibrary/src/org/videolan/medialibrary/interfaces/media/AGenre.java rename medialibrary/src/org/videolan/medialibrary/interfaces/media/{AAlbum.java => AbstractAlbum.java} (63%) rename medialibrary/src/org/videolan/medialibrary/interfaces/media/{AArtist.java => AbstractArtist.java} (56%) rename medialibrary/src/org/videolan/medialibrary/interfaces/media/{AFolder.java => AbstractFolder.java} (55%) create mode 100644 medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractGenre.java rename medialibrary/src/org/videolan/medialibrary/interfaces/media/{AMediaWrapper.java => AbstractMediaWrapper.java} (92%) rename medialibrary/src/org/videolan/medialibrary/interfaces/media/{APlaylist.java => AbstractPlaylist.java} (62%) diff --git a/medialibrary/jni/medialibrary.cpp b/medialibrary/jni/medialibrary.cpp index 8a81f85e32..a1305d7aba 100644 --- a/medialibrary/jni/medialibrary.cpp +++ b/medialibrary/jni/medialibrary.cpp @@ -1736,62 +1736,62 @@ static JNINativeMethod methods[] = { {"nativeRemoveDevice", "(Ljava/lang/String;Ljava/lang/String;)Z", (void*)removeDevice }, {"nativeBanFolder", "(Ljava/lang/String;)V", (void*)banFolder }, {"nativeUnbanFolder", "(Ljava/lang/String;)V", (void*)unbanFolder }, - {"nativeLastMediaPlayed", "()[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)lastMediaPLayed }, - {"nativeLastStreamsPlayed", "()[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)lastStreamsPlayed }, + {"nativeLastMediaPlayed", "()[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)lastMediaPLayed }, + {"nativeLastStreamsPlayed", "()[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)lastStreamsPlayed }, {"nativeAddToHistory", "(Ljava/lang/String;Ljava/lang/String;)Z", (void*)addToHistory }, {"nativeClearHistory", "()Z", (void*)clearHistory }, - {"nativeGetVideos", "()[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getVideos }, - {"nativeGetSortedVideos", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getSortedVideos }, - {"nativeGetSortedPagedVideos", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getPagedVideos }, - {"nativeGetRecentVideos", "()[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getRecentVideos }, - {"nativeGetAudio", "()[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getAudio }, - {"nativeGetSortedAudio", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getSortedAudio }, - {"nativeGetSortedPagedAudio", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getPagedAudio }, - {"nativeGetRecentAudio", "()[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getRecentAudio }, + {"nativeGetVideos", "()[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getVideos }, + {"nativeGetSortedVideos", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getSortedVideos }, + {"nativeGetSortedPagedVideos", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getPagedVideos }, + {"nativeGetRecentVideos", "()[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getRecentVideos }, + {"nativeGetAudio", "()[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getAudio }, + {"nativeGetSortedAudio", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getSortedAudio }, + {"nativeGetSortedPagedAudio", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getPagedAudio }, + {"nativeGetRecentAudio", "()[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getRecentAudio }, {"nativeSearch", "(Ljava/lang/String;)Lorg/videolan/medialibrary/media/SearchAggregate;", (void*)search}, - {"nativeSearchMedia", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchMedia}, - {"nativeSearchPagedMedia", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchPagedMedia}, - {"nativeSearchPagedAudio", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchPagedAudio}, - {"nativeSearchPagedVideo", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchPagedVideo}, + {"nativeSearchMedia", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchMedia}, + {"nativeSearchPagedMedia", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchPagedMedia}, + {"nativeSearchPagedAudio", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchPagedAudio}, + {"nativeSearchPagedVideo", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchPagedVideo}, {"nativeGetSearchVideoCount", "(Ljava/lang/String;)I", (void*)getSearchVideoCount }, {"nativeGetSearchAudioCount", "(Ljava/lang/String;)I", (void*)getSearchAudioCount }, {"nativeGetSearchMediaCount", "(Ljava/lang/String;)I", (void*)getSearchMediaCount }, - {"nativeSearchAlbum", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)searchAlbum }, - {"nativeSearchPagedAlbum", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)searchPagedAlbum }, + {"nativeSearchAlbum", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)searchAlbum }, + {"nativeSearchPagedAlbum", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)searchPagedAlbum }, {"nativeGetAlbumSearchCount", "(Ljava/lang/String;)I", (void*)getAlbumSearchCount }, - {"nativeSearchArtist", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)searchArtist }, - {"nativeSearchPagedArtist", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)searchPagedArtist }, + {"nativeSearchArtist", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)searchArtist }, + {"nativeSearchPagedArtist", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)searchPagedArtist }, {"nativeGetArtistsSearchCount", "(Ljava/lang/String;)I", (void*)getArtistsSearchCount }, - {"nativeSearchGenre", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AGenre;", (void*)searchGenre }, - {"nativeSearchPagedGenre", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AGenre;", (void*)searchPagedGenre }, + {"nativeSearchGenre", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AbstractGenre;", (void*)searchGenre }, + {"nativeSearchPagedGenre", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractGenre;", (void*)searchPagedGenre }, {"nativeGetGenreSearchCount", "(Ljava/lang/String;)I", (void*)getGenreSearchCount }, - {"nativeSearchPlaylist", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/APlaylist;", (void*)searchPlaylist }, - {"nativeSearchPagedPlaylist", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/APlaylist;", (void*)searchPagedPlaylist }, + {"nativeSearchPlaylist", "(Ljava/lang/String;)[Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;", (void*)searchPlaylist }, + {"nativeSearchPagedPlaylist", "(Ljava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;", (void*)searchPagedPlaylist }, {"nativeGetPlaylistSearchCount", "(Ljava/lang/String;)I", (void*)getPlaylistSearchCount }, - {"nativeGetMedia", "(J)Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getMedia }, - {"nativeGetMediaFromMrl", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getMediaFromMrl }, - {"nativeAddMedia", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)addMedia }, + {"nativeGetMedia", "(J)Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getMedia }, + {"nativeGetMediaFromMrl", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getMediaFromMrl }, + {"nativeAddMedia", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)addMedia }, {"nativeRemoveExternalMedia", "(J)Z", (void*)removeExternalMedia }, - {"nativeAddStream", "(Ljava/lang/String;Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)addStream }, + {"nativeAddStream", "(Ljava/lang/String;Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)addStream }, {"nativeGetVideoCount", "()I", (void*)getVideoCount }, {"nativeGetAudioCount", "()I", (void*)getAudioCount }, - {"nativeGetAlbums", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getAlbums }, - {"nativeGetPagedAlbums", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getPagedAlbums }, + {"nativeGetAlbums", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getAlbums }, + {"nativeGetPagedAlbums", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getPagedAlbums }, {"nativeGetAlbumsCount", "()I", (void*)getAlbumsCount }, - {"nativeGetAlbum", "(J)Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getAlbum }, - {"nativeGetArtists", "(ZIZ)[Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)getArtists }, - {"nativeGetPagedArtists", "(ZIZII)[Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)getPagedArtists }, + {"nativeGetAlbum", "(J)Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getAlbum }, + {"nativeGetArtists", "(ZIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)getArtists }, + {"nativeGetPagedArtists", "(ZIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)getPagedArtists }, {"nativeGetArtistsCount", "(Z)I", (void*)getArtistsCount }, - {"nativeGetArtist", "(J)Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)getArtist }, - {"nativeGetGenres", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AGenre;", (void*)getGenres }, - {"nativeGetPagedGenres", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AGenre;", (void*)getPagedGenres }, + {"nativeGetArtist", "(J)Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)getArtist }, + {"nativeGetGenres", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractGenre;", (void*)getGenres }, + {"nativeGetPagedGenres", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractGenre;", (void*)getPagedGenres }, {"nativeGetGenresCount", "()I", (void*)getGenresCount }, - {"nativeGetGenre", "(J)Lorg/videolan/medialibrary/interfaces/media/AGenre;", (void*)getGenre }, - {"nativeGetPlaylists", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/APlaylist;", (void*)getPlaylists }, - {"nativeGetPagedPlaylists", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/APlaylist;", (void*)getPagedPlaylists }, + {"nativeGetGenre", "(J)Lorg/videolan/medialibrary/interfaces/media/AbstractGenre;", (void*)getGenre }, + {"nativeGetPlaylists", "(IZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;", (void*)getPlaylists }, + {"nativeGetPagedPlaylists", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;", (void*)getPagedPlaylists }, {"nativeGetPlaylistsCount", "()I", (void*)getPlaylistsCount }, - {"nativeGetPlaylist", "(J)Lorg/videolan/medialibrary/interfaces/media/APlaylist;", (void*)getPlaylist }, - {"nativeGetFolders", "(IIZII)[Lorg/videolan/medialibrary/interfaces/media/AFolder;", (void*)folders }, + {"nativeGetPlaylist", "(J)Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;", (void*)getPlaylist }, + {"nativeGetFolders", "(IIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractFolder;", (void*)folders }, {"nativeGetFoldersCount", "(I)I", (void*)foldersCount }, {"nativePauseBackgroundOperations", "()V", (void*)pauseBackgroundOperations }, {"nativeResumeBackgroundOperations", "()V", (void*)resumeBackgroundOperations }, @@ -1802,78 +1802,78 @@ static JNINativeMethod methods[] = { {"nativeIncreasePlayCount", "(J)Z", (void*)increasePlayCount }, {"nativeSetMediaUpdatedCbFlag", "(I)V", (void*)setMediaUpdatedCbFlag }, {"nativeSetMediaAddedCbFlag", "(I)V", (void*)setMediaAddedCbFlag }, - {"nativePlaylistCreate", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/APlaylist;", (void*)playlistCreate }, + {"nativePlaylistCreate", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;", (void*)playlistCreate }, {"nativeRequestThumbnail", "(J)V", (void*)requestThumbnail }, }; static JNINativeMethod media_methods[] = { - {"nativeGetMediaLongMetadata", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JI)J", (void*)getMediaLongMetadata }, - {"nativeGetMediaStringMetadata", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JI)Ljava/lang/String;", (void*)getMediaStringMetadata }, - {"nativeSetMediaStringMetadata", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JILjava/lang/String;)V", (void*)setMediaStringMetadata }, - {"nativeSetMediaLongMetadata", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIJ)V", (void*)setMediaLongMetadata }, - {"nativeSetMediaThumbnail", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)V", (void*)setMediaThumbnail }, - {"nativeSetMediaTitle", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)V", (void*)setMediaTitle }, - {"nativeRemoveFromHistory", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)V", (void*)removeMediaFromHistory }, + {"nativeGetMediaLongMetadata", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JI)J", (void*)getMediaLongMetadata }, + {"nativeGetMediaStringMetadata", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JI)Ljava/lang/String;", (void*)getMediaStringMetadata }, + {"nativeSetMediaStringMetadata", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JILjava/lang/String;)V", (void*)setMediaStringMetadata }, + {"nativeSetMediaLongMetadata", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIJ)V", (void*)setMediaLongMetadata }, + {"nativeSetMediaThumbnail", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)V", (void*)setMediaThumbnail }, + {"nativeSetMediaTitle", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)V", (void*)setMediaTitle }, + {"nativeRemoveFromHistory", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)V", (void*)removeMediaFromHistory }, }; static JNINativeMethod album_methods[] = { - {"nativeGetTracks", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getTracksFromAlbum }, - {"nativeGetPagedTracks", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getPagedTracksFromAlbum }, - {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchFromAlbum }, - {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)I", (void*)getSearchFromAlbumCount }, - {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getTracksFromAlbumCount }, + {"nativeGetTracks", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getTracksFromAlbum }, + {"nativeGetPagedTracks", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getPagedTracksFromAlbum }, + {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchFromAlbum }, + {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)I", (void*)getSearchFromAlbumCount }, + {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getTracksFromAlbumCount }, }; static JNINativeMethod artist_methods[] = { - {"nativeGetMedia", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getMediaFromArtist }, - {"nativeGetAlbums", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getAlbumsFromArtist }, - {"nativeGetPagedMedia", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getPagedMediaFromArtist }, - {"nativeGetPagedAlbums", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getPagedAlbumsFromArtist }, - {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchFromArtist }, - {"nativeSearchAlbums", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)searchAlbumsFromArtist }, - {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getArtistTracksCount }, - {"nativeGetAlbumsCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getArtistAlbumsCount }, - {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)I", (void*)getSearchFromArtistCount }, - {"nativeGetSearchAlbumCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)I", (void*)getSearchAlbumFromArtistCount }, + {"nativeGetMedia", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getMediaFromArtist }, + {"nativeGetAlbums", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getAlbumsFromArtist }, + {"nativeGetPagedMedia", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getPagedMediaFromArtist }, + {"nativeGetPagedAlbums", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getPagedAlbumsFromArtist }, + {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchFromArtist }, + {"nativeSearchAlbums", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)searchAlbumsFromArtist }, + {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getArtistTracksCount }, + {"nativeGetAlbumsCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getArtistAlbumsCount }, + {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)I", (void*)getSearchFromArtistCount }, + {"nativeGetSearchAlbumCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)I", (void*)getSearchAlbumFromArtistCount }, }; static JNINativeMethod genre_methods[] = { - {"nativeGetTracks", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getMediaFromGenre }, - {"nativeGetAlbums", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getAlbumsFromGenre }, - {"nativeGetArtists", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)getArtistsFromGenre }, - {"nativeGetPagedTracks", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getPagedMediaFromGenre }, - {"nativeGetPagedAlbums", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)getPagedAlbumsFromGenre }, - {"nativeGetPagedArtists", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AArtist;", (void*)getPagedArtistsFromGenre }, - {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchMediaFromGenre }, - {"nativeSearchAlbums", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AAlbum;", (void*)searchAlbumsFromGenre }, - {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getGenreTracksCount }, - {"nativeGetAlbumsCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getGenreAlbumsCount }, - {"nativeGetArtistsCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getGenreArtistsCount }, - {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)I", (void*)getSearchMediaFromGenreCount }, - {"nativeGetSearchAlbumCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)I", (void*)getSearchAlbumsFromGenreCount }, + {"nativeGetTracks", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getMediaFromGenre }, + {"nativeGetAlbums", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getAlbumsFromGenre }, + {"nativeGetArtists", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZ)[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)getArtistsFromGenre }, + {"nativeGetPagedTracks", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getPagedMediaFromGenre }, + {"nativeGetPagedAlbums", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)getPagedAlbumsFromGenre }, + {"nativeGetPagedArtists", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;", (void*)getPagedArtistsFromGenre }, + {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchMediaFromGenre }, + {"nativeSearchAlbums", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;", (void*)searchAlbumsFromGenre }, + {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getGenreTracksCount }, + {"nativeGetAlbumsCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getGenreAlbumsCount }, + {"nativeGetArtistsCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getGenreArtistsCount }, + {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)I", (void*)getSearchMediaFromGenreCount }, + {"nativeGetSearchAlbumCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)I", (void*)getSearchAlbumsFromGenreCount }, }; static JNINativeMethod folder_methods[] = { - {"nativeMedia", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIIZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)mediaFromFolder }, - {"nativeSubfolders", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AFolder;", (void*)subFolders }, - {"nativeMediaCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JI)I", (void*)mediaFromFolderCount }, - {"nativeSubfoldersCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JI)I", (void*)subFoldersCount }, - {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IIZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchMediaFromFolder }, - {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;I)I", (void*)getSearchMediaFromFolderCount }, + {"nativeMedia", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)mediaFromFolder }, + {"nativeSubfolders", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractFolder;", (void*)subFolders }, + {"nativeMediaCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JI)I", (void*)mediaFromFolderCount }, + {"nativeSubfoldersCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JI)I", (void*)subFoldersCount }, + {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IIZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchMediaFromFolder }, + {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;I)I", (void*)getSearchMediaFromFolderCount }, }; static JNINativeMethod playlist_methods[] = { - {"nativeGetTracks", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getMediaFromPlaylist }, - {"nativeGetPagedTracks", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)getPagedMediaFromPlaylist }, - {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)I", (void*)getPlaylistTracksCount }, - {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;", (void*)searchFromPlaylist }, - {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JLjava/lang/String;)I", (void*)getSearchFromPlaylistCount }, - {"nativePlaylistAppend", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JJ)Z", (void*)playlistAppend }, - {"nativePlaylistAppendGroup", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J[J)Z", (void*)playlistAppendGroup }, - {"nativePlaylistAdd", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JJI)Z", (void*)playlistAdd }, - {"nativePlaylistMove", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JII)Z", (void*)playlistMove }, - {"nativePlaylistRemove", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;JI)Z", (void*)playlistRemove }, - {"nativePlaylistDelete", "(Lorg/videolan/medialibrary/interfaces/AMedialibrary;J)Z", (void*)playlistDelete }, + {"nativeGetTracks", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getMediaFromPlaylist }, + {"nativeGetPagedTracks", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)getPagedMediaFromPlaylist }, + {"nativeGetTracksCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)I", (void*)getPlaylistTracksCount }, + {"nativeSearch", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;IZII)[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;", (void*)searchFromPlaylist }, + {"nativeGetSearchCount", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JLjava/lang/String;)I", (void*)getSearchFromPlaylistCount }, + {"nativePlaylistAppend", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JJ)Z", (void*)playlistAppend }, + {"nativePlaylistAppendGroup", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J[J)Z", (void*)playlistAppendGroup }, + {"nativePlaylistAdd", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JJI)Z", (void*)playlistAdd }, + {"nativePlaylistMove", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JII)Z", (void*)playlistMove }, + {"nativePlaylistRemove", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;JI)Z", (void*)playlistRemove }, + {"nativePlaylistDelete", "(Lorg/videolan/medialibrary/interfaces/AbstractMedialibrary;J)Z", (void*)playlistDelete }, }; /* This function is called when a thread attached to the Java VM is canceled or @@ -2008,7 +2008,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) GET_ID(GetMethodID, ml_fields.SearchAggregate.initID, ml_fields.SearchAggregate.clazz, - "<init>", "([Lorg/videolan/medialibrary/interfaces/media/AAlbum;[Lorg/videolan/medialibrary/interfaces/media/AArtist;[Lorg/videolan/medialibrary/interfaces/media/AGenre;[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;[Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;[Lorg/videolan/medialibrary/interfaces/media/APlaylist;)V"); + "<init>", "([Lorg/videolan/medialibrary/interfaces/media/AbstractAlbum;[Lorg/videolan/medialibrary/interfaces/media/AbstractArtist;[Lorg/videolan/medialibrary/interfaces/media/AbstractGenre;[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;[Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;[Lorg/videolan/medialibrary/interfaces/media/AbstractPlaylist;)V"); GET_CLASS(ml_fields.Folder.clazz, "org/videolan/medialibrary/media/Folder", true); @@ -2025,11 +2025,11 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) GET_ID(GetMethodID, ml_fields.MediaLibrary.onMediaAddedId, ml_fields.MediaLibrary.clazz, - "onMediaAdded", "([Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;)V"); + "onMediaAdded", "([Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;)V"); GET_ID(GetMethodID, ml_fields.MediaLibrary.onMediaUpdatedId, ml_fields.MediaLibrary.clazz, - "onMediaUpdated", "([Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;)V"); + "onMediaUpdated", "([Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;)V"); GET_ID(GetMethodID, ml_fields.MediaLibrary.onMediaDeletedId, ml_fields.MediaLibrary.clazz, @@ -2129,7 +2129,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) GET_ID(GetMethodID, ml_fields.MediaLibrary.onMediaThumbnailReadyId, ml_fields.MediaLibrary.clazz, - "onMediaThumbnailReady", "(Lorg/videolan/medialibrary/interfaces/media/AMediaWrapper;Z)V"); + "onMediaThumbnailReady", "(Lorg/videolan/medialibrary/interfaces/media/AbstractMediaWrapper;Z)V"); #undef GET_CLASS #undef GET_ID diff --git a/medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java b/medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java index 8e40ba7a47..414c282d15 100644 --- a/medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java +++ b/medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java @@ -5,13 +5,13 @@ import android.net.Uri; import android.os.Parcel; import org.videolan.libvlc.Media; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import org.videolan.medialibrary.media.Album; import org.videolan.medialibrary.media.Artist; import org.videolan.medialibrary.media.Folder; @@ -40,7 +40,7 @@ public class MLServiceLocator { TESTS, } - public static AMedialibrary getAMedialibrary() { + public static AbstractMedialibrary getAbstractMedialibrary() { if (mMode == LocatorMode.VLC_ANDROID) { return new Medialibrary(); } else { @@ -48,14 +48,14 @@ public class MLServiceLocator { } } - // AMediaWrapper - public static AMediaWrapper getAMediaWrapper(long id, String mrl, long time, long length, - int type, String title, String filename, - String artist, String genre, String album, - String albumArtist, int width, int height, - String artworkURL, int audio, int spu, - int trackNumber, int discNumber, long lastModified, - long seen, boolean isThumbnailGenerated) { + // AbstractMediaWrapper + public static AbstractMediaWrapper getAbstractMediaWrapper(long id, String mrl, long time, long length, + int type, String title, String filename, + String artist, String genre, String album, + String albumArtist, int width, int height, + String artworkURL, int audio, int spu, + int trackNumber, int discNumber, long lastModified, + long seen, boolean isThumbnailGenerated) { if (mMode == LocatorMode.VLC_ANDROID) { return new MediaWrapper(id, mrl, time, length, type, title, filename, artist, genre, album, albumArtist, width, height, artworkURL, @@ -67,12 +67,12 @@ public class MLServiceLocator { } } - public static AMediaWrapper getAMediaWrapper(Uri uri, long time, long length, int type, - Bitmap picture, String title, String artist, - String genre, String album, String albumArtist, - int width, int height, String artworkURL, - int audio, int spu, int trackNumber, - int discNumber, long lastModified, long seen) { + public static AbstractMediaWrapper getAbstractMediaWrapper(Uri uri, long time, long length, int type, + Bitmap picture, String title, String artist, + String genre, String album, String albumArtist, + int width, int height, String artworkURL, + int audio, int spu, int trackNumber, + int discNumber, long lastModified, long seen) { if (mMode == LocatorMode.VLC_ANDROID) { return new MediaWrapper(uri, time, length, type, picture, title, artist, genre, album, albumArtist, width, height, artworkURL, audio, spu, trackNumber, @@ -84,7 +84,7 @@ public class MLServiceLocator { } } - public static AMediaWrapper getAMediaWrapper(Uri uri) { + public static AbstractMediaWrapper getAbstractMediaWrapper(Uri uri) { if (mMode == LocatorMode.VLC_ANDROID) { return new MediaWrapper(uri); } else { @@ -92,7 +92,7 @@ public class MLServiceLocator { } } - public static AMediaWrapper getAMediaWrapper(Media media) { + public static AbstractMediaWrapper getAbstractMediaWrapper(Media media) { if (mMode == LocatorMode.VLC_ANDROID) { return new MediaWrapper(media); } else { @@ -100,7 +100,7 @@ public class MLServiceLocator { } } - public static AMediaWrapper getAMediaWrapper(Parcel in) { + public static AbstractMediaWrapper getAbstractMediaWrapper(Parcel in) { if (mMode == LocatorMode.VLC_ANDROID) { return new MediaWrapper(in); } else { @@ -109,7 +109,7 @@ public class MLServiceLocator { } //Artist - public static AArtist getAArtist(long id, String name, String shortBio, String artworkMrl, String musicBrainzId) { + public static AbstractArtist getAbstractArtist(long id, String name, String shortBio, String artworkMrl, String musicBrainzId) { if (mMode == LocatorMode.VLC_ANDROID) { return new Artist(id, name, shortBio, artworkMrl, musicBrainzId); } else { @@ -117,7 +117,7 @@ public class MLServiceLocator { } } - public static AArtist getAArtist(Parcel in) { + public static AbstractArtist getAbstractArtist(Parcel in) { if (mMode == LocatorMode.VLC_ANDROID) { return new Artist(in); } else { @@ -126,7 +126,7 @@ public class MLServiceLocator { } //Genre - public static AGenre getAGenre(long id, String title) { + public static AbstractGenre getAbstractGenre(long id, String title) { if (mMode == LocatorMode.VLC_ANDROID) { return new Genre(id, title); } else { @@ -134,7 +134,7 @@ public class MLServiceLocator { } } - public static AGenre getAGenre(Parcel in) { + public static AbstractGenre getAbstractGenre(Parcel in) { if (mMode == LocatorMode.VLC_ANDROID) { return new Genre(in); } else { @@ -143,9 +143,9 @@ public class MLServiceLocator { } //Album - public static AAlbum getAAlbum(long id, String title, int releaseYear, String artworkMrl, - String albumArtist, long albumArtistId, int nbTracks, - int duration) { + public static AbstractAlbum getAbstractAlbum(long id, String title, int releaseYear, String artworkMrl, + String albumArtist, long albumArtistId, int nbTracks, + int duration) { if (mMode == LocatorMode.VLC_ANDROID) { return new Album(id, title, releaseYear, artworkMrl, albumArtist, albumArtistId, nbTracks, duration); @@ -155,7 +155,7 @@ public class MLServiceLocator { } } - public static AAlbum getAAlbum(Parcel in) { + public static AbstractAlbum getAbstractAlbum(Parcel in) { if (mMode == LocatorMode.VLC_ANDROID) { return new Album(in); } else { @@ -164,7 +164,7 @@ public class MLServiceLocator { } //Folder - public static AFolder getAFolder(long id, String name, String mrl) { + public static AbstractFolder getAbstractFolder(long id, String name, String mrl) { if (mMode == LocatorMode.VLC_ANDROID) { return new Folder(id, name, mrl); } else { @@ -172,7 +172,7 @@ public class MLServiceLocator { } } - public static AFolder getAFolder(Parcel in) { + public static AbstractFolder getAbstractFolder(Parcel in) { if (mMode == LocatorMode.VLC_ANDROID) { return new Folder(in); } else { @@ -181,7 +181,7 @@ public class MLServiceLocator { } //Playlist - public static APlaylist getAPlaylist(long id, String name, int trackCount) { + public static AbstractPlaylist getAbstractPlaylist(long id, String name, int trackCount) { if (mMode == LocatorMode.VLC_ANDROID) { return new Playlist(id, name, trackCount); } else { @@ -189,7 +189,7 @@ public class MLServiceLocator { } } - public static APlaylist getAPlaylist(Parcel in) { + public static AbstractPlaylist getAbstractPlaylist(Parcel in) { if (mMode == LocatorMode.VLC_ANDROID) { return new Playlist(in); } else { diff --git a/medialibrary/src/org/videolan/medialibrary/Medialibrary.java b/medialibrary/src/org/videolan/medialibrary/Medialibrary.java index 8e5986a47e..e0868d0b23 100644 --- a/medialibrary/src/org/videolan/medialibrary/Medialibrary.java +++ b/medialibrary/src/org/videolan/medialibrary/Medialibrary.java @@ -22,21 +22,18 @@ package org.videolan.medialibrary; import android.content.Context; -import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.util.Log; import org.videolan.libvlc.LibVLC; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.DevicesDiscoveryCb; -import org.videolan.medialibrary.interfaces.EntryPointsEventsCb; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import org.videolan.medialibrary.media.SearchAggregate; import java.io.File; @@ -44,11 +41,9 @@ import java.io.File; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; -import androidx.lifecycle.MutableLiveData; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; @SuppressWarnings("JniMissingFunction") -public class Medialibrary extends AMedialibrary { +public class Medialibrary extends AbstractMedialibrary { private static final String TAG = "VLC/JMedialibrary"; public int init(Context context) { @@ -141,43 +136,43 @@ public class Medialibrary extends AMedialibrary { } @WorkerThread - public AMediaWrapper[] getVideos() { - return mIsInitiated ? nativeGetVideos() : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getVideos() { + return mIsInitiated ? nativeGetVideos() : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getPagedVideos(int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetSortedPagedVideos(sort, desc, nbItems, offset) : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getPagedVideos(int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetSortedPagedVideos(sort, desc, nbItems, offset) : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getVideos(int sort, boolean desc) { - return mIsInitiated ? nativeGetSortedVideos(sort, desc) : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getVideos(int sort, boolean desc) { + return mIsInitiated ? nativeGetSortedVideos(sort, desc) : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getRecentVideos() { - return mIsInitiated ? nativeGetRecentVideos() : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getRecentVideos() { + return mIsInitiated ? nativeGetRecentVideos() : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getAudio() { - return mIsInitiated ? nativeGetAudio() : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getAudio() { + return mIsInitiated ? nativeGetAudio() : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getAudio(int sort, boolean desc) { - return mIsInitiated ? nativeGetSortedAudio(sort, desc) : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getAudio(int sort, boolean desc) { + return mIsInitiated ? nativeGetSortedAudio(sort, desc) : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getPagedAudio(int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetSortedPagedAudio(sort, desc, nbItems, offset) : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getPagedAudio(int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetSortedPagedAudio(sort, desc, nbItems, offset) : new AbstractMediaWrapper[0]; } @WorkerThread - public AMediaWrapper[] getRecentAudio() { - return mIsInitiated ? nativeGetRecentAudio() : new AMediaWrapper[0]; + public AbstractMediaWrapper[] getRecentAudio() { + return mIsInitiated ? nativeGetRecentAudio() : new AbstractMediaWrapper[0]; } public int getVideoCount() { @@ -190,19 +185,19 @@ public class Medialibrary extends AMedialibrary { @WorkerThread - public AAlbum[] getAlbums() { - return getAlbums(AMedialibrary.SORT_DEFAULT, false); + public AbstractAlbum[] getAlbums() { + return getAlbums(AbstractMedialibrary.SORT_DEFAULT, false); } @WorkerThread - public AAlbum[] getAlbums(int sort, boolean desc) { - return mIsInitiated ? nativeGetAlbums(sort, desc) : new AAlbum[0]; + public AbstractAlbum[] getAlbums(int sort, boolean desc) { + return mIsInitiated ? nativeGetAlbums(sort, desc) : new AbstractAlbum[0]; } @NonNull @WorkerThread - public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetPagedAlbums(sort, desc, nbItems, offset) : new AAlbum[0]; + public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetPagedAlbums(sort, desc, nbItems, offset) : new AbstractAlbum[0]; } public int getAlbumsCount() { @@ -214,23 +209,23 @@ public class Medialibrary extends AMedialibrary { } @WorkerThread - public AAlbum getAlbum(long albumId) { + public AbstractAlbum getAlbum(long albumId) { return mIsInitiated ? nativeGetAlbum(albumId) : null; } @WorkerThread - public AArtist[] getArtists(boolean all) { - return getArtists(all, AMedialibrary.SORT_DEFAULT, false); + public AbstractArtist[] getArtists(boolean all) { + return getArtists(all, AbstractMedialibrary.SORT_DEFAULT, false); } @WorkerThread - public AArtist[] getArtists(boolean all, int sort, boolean desc) { - return mIsInitiated ? nativeGetArtists(all, sort, desc) : new AArtist[0]; + public AbstractArtist[] getArtists(boolean all, int sort, boolean desc) { + return mIsInitiated ? nativeGetArtists(all, sort, desc) : new AbstractArtist[0]; } @WorkerThread - public AArtist[] getPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetPagedArtists(all, sort, desc, nbItems, offset) : new AArtist[0]; + public AbstractArtist[] getPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetPagedArtists(all, sort, desc, nbItems, offset) : new AbstractArtist[0]; } public int getArtistsCount(boolean all) { @@ -241,24 +236,24 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated ? nativeGetArtistsSearchCount(query) : 0; } - public AArtist getArtist(long artistId) { + public AbstractArtist getArtist(long artistId) { return mIsInitiated ? nativeGetArtist(artistId) : null; } @WorkerThread - public AGenre[] getGenres() { - return getGenres(AMedialibrary.SORT_DEFAULT, false); + public AbstractGenre[] getGenres() { + return getGenres(AbstractMedialibrary.SORT_DEFAULT, false); } @WorkerThread - public AGenre[] getGenres(int sort, boolean desc) { - return mIsInitiated ? nativeGetGenres(sort, desc) : new AGenre[0]; + public AbstractGenre[] getGenres(int sort, boolean desc) { + return mIsInitiated ? nativeGetGenres(sort, desc) : new AbstractGenre[0]; } @NonNull @WorkerThread - public AGenre[] getPagedGenres(int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetPagedGenres(sort, desc, nbItems, offset) : new AGenre[0]; + public AbstractGenre[] getPagedGenres(int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetPagedGenres(sort, desc, nbItems, offset) : new AbstractGenre[0]; } public int getGenresCount() { @@ -269,23 +264,23 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated ? nativeGetGenreSearchCount(query) : 0; } - public AGenre getGenre(long genreId) { + public AbstractGenre getGenre(long genreId) { return mIsInitiated ? nativeGetGenre(genreId) : null; } @WorkerThread - public APlaylist[] getPlaylists() { - return getPlaylists(AMedialibrary.SORT_DEFAULT, false); + public AbstractPlaylist[] getPlaylists() { + return getPlaylists(AbstractMedialibrary.SORT_DEFAULT, false); } @WorkerThread - public APlaylist[] getPlaylists(int sort, boolean desc) { - return mIsInitiated ? nativeGetPlaylists(sort, desc) : new APlaylist[0]; + public AbstractPlaylist[] getPlaylists(int sort, boolean desc) { + return mIsInitiated ? nativeGetPlaylists(sort, desc) : new AbstractPlaylist[0]; } @WorkerThread - public APlaylist[] getPagedPlaylists(int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetPagedPlaylists(sort, desc, nbItems, offset) : new APlaylist[0]; + public AbstractPlaylist[] getPagedPlaylists(int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetPagedPlaylists(sort, desc, nbItems, offset) : new AbstractPlaylist[0]; } public int getPlaylistsCount() { @@ -296,11 +291,11 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated ? nativeGetPlaylistSearchCount(query) : 0; } - public APlaylist getPlaylist(long playlistId) { + public AbstractPlaylist getPlaylist(long playlistId) { return mIsInitiated ? nativeGetPlaylist(playlistId) : null; } - public APlaylist createPlaylist(String name) { + public AbstractPlaylist createPlaylist(String name) { return mIsInitiated && !TextUtils.isEmpty(name) ? nativePlaylistCreate(name) : null; } @@ -330,12 +325,12 @@ public class Medialibrary extends AMedialibrary { } @WorkerThread - public AMediaWrapper[] lastMediaPlayed() { + public AbstractMediaWrapper[] lastMediaPlayed() { return mIsInitiated ? nativeLastMediaPlayed() : EMPTY_COLLECTION; } @WorkerThread - public AMediaWrapper[] lastStreamsPlayed() { + public AbstractMediaWrapper[] lastStreamsPlayed() { return mIsInitiated ? nativeLastStreamsPlayed() : EMPTY_COLLECTION; } @@ -348,26 +343,26 @@ public class Medialibrary extends AMedialibrary { } @Nullable - public AMediaWrapper getMedia(long id) { + public AbstractMediaWrapper getMedia(long id) { return mIsInitiated ? nativeGetMedia(id) : null; } @Nullable - public AMediaWrapper getMedia(Uri uri) { + public AbstractMediaWrapper getMedia(Uri uri) { if ("content".equals(uri.getScheme())) return null; final String vlcMrl = Tools.encodeVLCMrl(uri.toString()); return mIsInitiated && !TextUtils.isEmpty(vlcMrl) ? nativeGetMediaFromMrl(vlcMrl) : null; } @Nullable - public AMediaWrapper getMedia(String mrl) { + public AbstractMediaWrapper getMedia(String mrl) { if (mrl != null && mrl.startsWith("content:")) return null; final String vlcMrl = Tools.encodeVLCMrl(mrl); return mIsInitiated && !TextUtils.isEmpty(vlcMrl) ? nativeGetMediaFromMrl(vlcMrl) : null; } @Nullable - public AMediaWrapper addMedia(String mrl) { + public AbstractMediaWrapper addMedia(String mrl) { final String vlcMrl = Tools.encodeVLCMrl(mrl); return mIsInitiated && !TextUtils.isEmpty(vlcMrl) ? nativeAddMedia(vlcMrl) : null; } @@ -377,7 +372,7 @@ public class Medialibrary extends AMedialibrary { } @Nullable - public AMediaWrapper addStream(String mrl, String title) { + public AbstractMediaWrapper addStream(String mrl, String title) { final String vlcMrl = Tools.encodeVLCMrl(mrl); final String vlcTitle = Tools.encodeVLCMrl(title); return mIsInitiated && !TextUtils.isEmpty(vlcMrl) ? nativeAddStream(vlcMrl, vlcTitle) : null; @@ -385,8 +380,8 @@ public class Medialibrary extends AMedialibrary { @NonNull @WorkerThread - public AFolder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated ? nativeGetFolders(type, sort, desc, nbItems, offset) : new AFolder[0]; + public AbstractFolder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated ? nativeGetFolders(type, sort, desc, nbItems, offset) : new AbstractFolder[0]; } @NonNull @@ -404,17 +399,17 @@ public class Medialibrary extends AMedialibrary { } // If media is not in ML, find it with its path - public AMediaWrapper findMedia(AMediaWrapper mw) { + public AbstractMediaWrapper findMedia(AbstractMediaWrapper mw) { if (mIsInitiated && mw != null && mw.getId() == 0L) { final Uri uri = mw.getUri(); - final AMediaWrapper libraryMedia = getMedia(uri); + final AbstractMediaWrapper libraryMedia = getMedia(uri); if (libraryMedia != null) { libraryMedia.addFlags(mw.getFlags()); return libraryMedia; } if (TextUtils.equals("file", uri.getScheme()) && uri.getPath() != null && uri.getPath().startsWith("/sdcard")) { - final AMediaWrapper alternateMedia = getMedia(Tools.convertLocalUri(uri)); + final AbstractMediaWrapper alternateMedia = getMedia(Tools.convertLocalUri(uri)); if (alternateMedia != null) { alternateMedia.addFlags(mw.getFlags()); return alternateMedia; @@ -428,11 +423,11 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearch(query) : null; } - public AMediaWrapper[] searchMedia(String query) { + public AbstractMediaWrapper[] searchMedia(String query) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchMedia(query) : null; } - public AMediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset) { + public AbstractMediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedMedia(query, sort, desc, nbItems, offset) : null; } @@ -440,7 +435,7 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated ? nativeGetSearchMediaCount(query) : 0; } - public AMediaWrapper[] searchAudio(String query, int sort, boolean desc, int nbItems, int offset) { + public AbstractMediaWrapper[] searchAudio(String query, int sort, boolean desc, int nbItems, int offset) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedAudio(query, sort, desc, nbItems, offset) : null; } @@ -448,7 +443,7 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated ? nativeGetSearchAudioCount(query) : 0; } - public AMediaWrapper[] searchVideo(String query, int sort, boolean desc, int nbItems, int offset) { + public AbstractMediaWrapper[] searchVideo(String query, int sort, boolean desc, int nbItems, int offset) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedVideo(query, sort, desc, nbItems, offset) : null; } @@ -456,35 +451,35 @@ public class Medialibrary extends AMedialibrary { return mIsInitiated ? nativeGetSearchVideoCount(query) : 0; } - public AArtist[] searchArtist(String query) { + public AbstractArtist[] searchArtist(String query) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchArtist(query) : null; } - public AArtist[] searchArtist(String query, int sort, boolean desc, int nbItems, int offset) { - return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedArtist(query, sort, desc, nbItems, offset) : new AArtist[0]; + public AbstractArtist[] searchArtist(String query, int sort, boolean desc, int nbItems, int offset) { + return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedArtist(query, sort, desc, nbItems, offset) : new AbstractArtist[0]; } - public AAlbum[] searchAlbum(String query, int sort, boolean desc, int nbItems, int offset) { + public AbstractAlbum[] searchAlbum(String query, int sort, boolean desc, int nbItems, int offset) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedAlbum(query, sort, desc, nbItems, offset) : null; } - public AAlbum[] searchAlbum(String query) { + public AbstractAlbum[] searchAlbum(String query) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchAlbum(query) : null; } - public AGenre[] searchGenre(String query) { + public AbstractGenre[] searchGenre(String query) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchGenre(query) : null; } - public AGenre[] searchGenre(String query, int sort, boolean desc, int nbItems, int offset) { + public AbstractGenre[] searchGenre(String query, int sort, boolean desc, int nbItems, int offset) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedGenre(query, sort, desc, nbItems, offset) : null; } - public APlaylist[] searchPlaylist(String query) { + public AbstractPlaylist[] searchPlaylist(String query) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPlaylist(query) : null; } - public APlaylist[] searchPlaylist(String query, int sort, boolean desc, int nbItems, int offset) { + public AbstractPlaylist[] searchPlaylist(String query, int sort, boolean desc, int nbItems, int offset) { return mIsInitiated && !TextUtils.isEmpty(query) ? nativeSearchPagedPlaylist(query, sort, desc, nbItems, offset) : null; } @@ -500,43 +495,43 @@ public class Medialibrary extends AMedialibrary { private native void nativeRemoveEntryPoint(String path); private native String[] nativeEntryPoints(); private native boolean nativeRemoveDevice(String uuid, String path); - private native AMediaWrapper[] nativeLastMediaPlayed(); - private native AMediaWrapper[] nativeLastStreamsPlayed(); + private native AbstractMediaWrapper[] nativeLastMediaPlayed(); + private native AbstractMediaWrapper[] nativeLastStreamsPlayed(); private native boolean nativeAddToHistory(String mrl, String title); private native boolean nativeClearHistory(); - private native AMediaWrapper nativeGetMedia(long id); - private native AMediaWrapper nativeGetMediaFromMrl(String mrl); - private native AMediaWrapper nativeAddMedia(String mrl); + private native AbstractMediaWrapper nativeGetMedia(long id); + private native AbstractMediaWrapper nativeGetMediaFromMrl(String mrl); + private native AbstractMediaWrapper nativeAddMedia(String mrl); private native boolean nativeRemoveExternalMedia(long id); - private native AMediaWrapper nativeAddStream(String mrl, String title); - private native AMediaWrapper[] nativeGetVideos(); - private native AMediaWrapper[] nativeGetSortedVideos(int sort, boolean desc); - private native AMediaWrapper[] nativeGetRecentVideos(); - private native AMediaWrapper[] nativeGetAudio(); - private native AMediaWrapper[] nativeGetSortedAudio(int sort, boolean desc); - private native AMediaWrapper[] nativeGetSortedPagedAudio(int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeGetSortedPagedVideos(int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeGetRecentAudio(); + private native AbstractMediaWrapper nativeAddStream(String mrl, String title); + private native AbstractMediaWrapper[] nativeGetVideos(); + private native AbstractMediaWrapper[] nativeGetSortedVideos(int sort, boolean desc); + private native AbstractMediaWrapper[] nativeGetRecentVideos(); + private native AbstractMediaWrapper[] nativeGetAudio(); + private native AbstractMediaWrapper[] nativeGetSortedAudio(int sort, boolean desc); + private native AbstractMediaWrapper[] nativeGetSortedPagedAudio(int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeGetSortedPagedVideos(int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeGetRecentAudio(); private native int nativeGetVideoCount(); private native int nativeGetAudioCount(); - private native AAlbum[] nativeGetAlbums(int sort, boolean desc); - private native AAlbum[] nativeGetPagedAlbums(int sort, boolean desc, int nbItems, int offset); + private native AbstractAlbum[] nativeGetAlbums(int sort, boolean desc); + private native AbstractAlbum[] nativeGetPagedAlbums(int sort, boolean desc, int nbItems, int offset); private native int nativeGetAlbumsCount(); - private native AAlbum nativeGetAlbum(long albumtId); - private native AArtist[] nativeGetArtists(boolean all, int sort, boolean desc); - private native AArtist[] nativeGetPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset); + private native AbstractAlbum nativeGetAlbum(long albumtId); + private native AbstractArtist[] nativeGetArtists(boolean all, int sort, boolean desc); + private native AbstractArtist[] nativeGetPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset); private native int nativeGetArtistsCount(boolean all); - private native AArtist nativeGetArtist(long artistId); - private native AGenre[] nativeGetGenres(int sort, boolean desc); - private native AGenre[] nativeGetPagedGenres(int sort, boolean desc, int nbItems, int offset); + private native AbstractArtist nativeGetArtist(long artistId); + private native AbstractGenre[] nativeGetGenres(int sort, boolean desc); + private native AbstractGenre[] nativeGetPagedGenres(int sort, boolean desc, int nbItems, int offset); private native int nativeGetGenresCount(); - private native AGenre nativeGetGenre(long genreId); - private native APlaylist[] nativeGetPlaylists(int sort, boolean desc); - private native APlaylist[] nativeGetPagedPlaylists(int sort, boolean desc, int nbItems, int offset); + private native AbstractGenre nativeGetGenre(long genreId); + private native AbstractPlaylist[] nativeGetPlaylists(int sort, boolean desc); + private native AbstractPlaylist[] nativeGetPagedPlaylists(int sort, boolean desc, int nbItems, int offset); private native int nativeGetPlaylistsCount(); - private native APlaylist nativeGetPlaylist(long playlistId); - private native APlaylist nativePlaylistCreate(String name); - private native AFolder[] nativeGetFolders(int type, int sort, boolean desc, int nbItems, int offset); + private native AbstractPlaylist nativeGetPlaylist(long playlistId); + private native AbstractPlaylist nativePlaylistCreate(String name); + private native AbstractFolder[] nativeGetFolders(int type, int sort, boolean desc, int nbItems, int offset); private native int nativeGetFoldersCount(int type); private native void nativePauseBackgroundOperations(); private native void nativeResumeBackgroundOperations(); @@ -548,24 +543,24 @@ public class Medialibrary extends AMedialibrary { private native void nativeSetMediaUpdatedCbFlag(int flags); private native void nativeSetMediaAddedCbFlag(int flags); private native SearchAggregate nativeSearch(String query); - private native AMediaWrapper[] nativeSearchMedia(String query); - private native AMediaWrapper[] nativeSearchPagedMedia(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeSearchMedia(String query); + private native AbstractMediaWrapper[] nativeSearchPagedMedia(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetSearchMediaCount(String query); - private native AMediaWrapper[] nativeSearchPagedAudio(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeSearchPagedAudio(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetSearchAudioCount(String query); - private native AMediaWrapper[] nativeSearchPagedVideo(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeSearchPagedVideo(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetSearchVideoCount(String query); - private native AArtist[] nativeSearchArtist(String query); - private native AArtist[] nativeSearchPagedArtist(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractArtist[] nativeSearchArtist(String query); + private native AbstractArtist[] nativeSearchPagedArtist(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetArtistsSearchCount(String query); - private native AAlbum[] nativeSearchAlbum(String query); - private native AAlbum[] nativeSearchPagedAlbum(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractAlbum[] nativeSearchAlbum(String query); + private native AbstractAlbum[] nativeSearchPagedAlbum(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetAlbumSearchCount(String query); - private native AGenre[] nativeSearchGenre(String query); - private native AGenre[] nativeSearchPagedGenre(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractGenre[] nativeSearchGenre(String query); + private native AbstractGenre[] nativeSearchPagedGenre(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetGenreSearchCount(String query); - private native APlaylist[] nativeSearchPlaylist(String query); - private native APlaylist[] nativeSearchPagedPlaylist(String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractPlaylist[] nativeSearchPlaylist(String query); + private native AbstractPlaylist[] nativeSearchPagedPlaylist(String query, int sort, boolean desc, int nbItems, int offset); private native int nativeGetPlaylistSearchCount(String query); private native void nativeRequestThumbnail(long mediaId); } diff --git a/medialibrary/src/org/videolan/medialibrary/Tools.java b/medialibrary/src/org/videolan/medialibrary/Tools.java index a3ae35a328..39c10f065f 100644 --- a/medialibrary/src/org/videolan/medialibrary/Tools.java +++ b/medialibrary/src/org/videolan/medialibrary/Tools.java @@ -5,7 +5,7 @@ import android.net.Uri; import android.os.Environment; import android.text.TextUtils; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import org.videolan.medialibrary.media.MediaLibraryItem; import java.text.DecimalFormat; @@ -36,7 +36,7 @@ public class Tools { public static boolean isArrayEmpty(@Nullable Object[] array) { return array == null || array.length == 0; } - public static String getProgressText(AMediaWrapper media) { + public static String getProgressText(AbstractMediaWrapper media) { long lastTime = media.getTime(); if (lastTime == 0L) return ""; return String.format("%s / %s", @@ -62,7 +62,7 @@ public class Tools { return millisToString(millis, true, true); } - public static String getResolution(AMediaWrapper media) { + public static String getResolution(AbstractMediaWrapper media) { if (media.getWidth() > 0 && media.getHeight() > 0) return String.format(Locale.US, "%dx%d", media.getWidth(), media.getHeight()); return ""; @@ -70,8 +70,8 @@ public class Tools { public static void setMediaDescription (MediaLibraryItem item) { if (item.getItemType() == MediaLibraryItem.TYPE_MEDIA) { - final AMediaWrapper mw = (AMediaWrapper) item; - if (mw.getType() == AMediaWrapper.TYPE_VIDEO) { + final AbstractMediaWrapper mw = (AbstractMediaWrapper) item; + if (mw.getType() == AbstractMediaWrapper.TYPE_VIDEO) { final String progress = mw.getLength() == 0L ? null : mw.getTime() == 0L ? Tools.millisToString(mw.getLength()) : getProgressText(mw); final String resolution = getResolution(mw); boolean hasprogress = !TextUtils.isEmpty(progress), hasResolution = !TextUtils.isEmpty(resolution); @@ -80,7 +80,7 @@ public class Tools { else if (hasprogress) sb.append(progress); else sb.append(resolution); item.setDescription(sb.toString()); - } else if (mw.getType() == AMediaWrapper.TYPE_AUDIO) { + } else if (mw.getType() == AbstractMediaWrapper.TYPE_AUDIO) { final String artist = mw.getReferenceArtist(), album = mw.getAlbum(); final StringBuilder sb = new StringBuilder(); boolean hasArtist = !TextUtils.isEmpty(artist), hasAlbum = !TextUtils.isEmpty(album); diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/AMedialibrary.java b/medialibrary/src/org/videolan/medialibrary/interfaces/AbstractMedialibrary.java similarity index 81% rename from medialibrary/src/org/videolan/medialibrary/interfaces/AMedialibrary.java rename to medialibrary/src/org/videolan/medialibrary/interfaces/AbstractMedialibrary.java index a524ff3a32..8531ef9a72 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/AMedialibrary.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/AbstractMedialibrary.java @@ -18,12 +18,12 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager; import org.videolan.medialibrary.MLServiceLocator; import org.videolan.medialibrary.SingleEvent; import org.videolan.medialibrary.Tools; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import org.videolan.medialibrary.media.SearchAggregate; import java.io.File; @@ -31,7 +31,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; -abstract public class AMedialibrary { +abstract public class AbstractMedialibrary { // Sorting public final static int SORT_DEFAULT = 0; @@ -64,7 +64,7 @@ abstract public class AMedialibrary { public static final String ACTION_IDLE = "action_idle"; public static final String STATE_IDLE = "state_idle"; - public static final AMediaWrapper[] EMPTY_COLLECTION = {}; + public static final AbstractMediaWrapper[] EMPTY_COLLECTION = {}; public static final String VLC_MEDIA_DB_NAME = "/vlc_media.db"; public static final String THUMBS_FOLDER_NAME = "/thumbs"; @@ -83,9 +83,9 @@ abstract public class AMedialibrary { protected final List<DevicesDiscoveryCb> devicesDiscoveryCbList = new ArrayList<>(); protected final List<EntryPointsEventsCb> entryPointsEventsCbList = new ArrayList<>(); protected static Context sContext; - public static LiveData<AMediaWrapper> lastThumb = new SingleEvent<>(); + public static LiveData<AbstractMediaWrapper> lastThumb = new SingleEvent<>(); - protected static final AMedialibrary instance = MLServiceLocator.getAMedialibrary(); + protected static final AbstractMedialibrary instance = MLServiceLocator.getAbstractMedialibrary(); public static Context getContext() { return sContext; @@ -104,7 +104,7 @@ abstract public class AMedialibrary { } @NonNull - public static AMedialibrary getInstance() { + public static AbstractMedialibrary getInstance() { return instance; } @@ -201,17 +201,17 @@ abstract public class AMedialibrary { } // If media is not in ML, find it with its path - public AMediaWrapper findMedia(AMediaWrapper mw) { + public AbstractMediaWrapper findMedia(AbstractMediaWrapper mw) { if (mIsInitiated && mw != null && mw.getId() == 0L) { final Uri uri = mw.getUri(); - final AMediaWrapper libraryMedia = getMedia(uri); + final AbstractMediaWrapper libraryMedia = getMedia(uri); if (libraryMedia != null) { libraryMedia.addFlags(mw.getFlags()); return libraryMedia; } if (TextUtils.equals("file", uri.getScheme()) && uri.getPath() != null && uri.getPath().startsWith("/sdcard")) { - final AMediaWrapper alternateMedia = getMedia(Tools.convertLocalUri(uri)); + final AbstractMediaWrapper alternateMedia = getMedia(Tools.convertLocalUri(uri)); if (alternateMedia != null) { alternateMedia.addFlags(mw.getFlags()); return alternateMedia; @@ -222,14 +222,14 @@ abstract public class AMedialibrary { } @SuppressWarnings("unused") - public void onMediaAdded(AMediaWrapper[] mediaList) { + public void onMediaAdded(AbstractMediaWrapper[] mediaList) { synchronized (mMediaCbs) { for (MediaCb cb : mMediaCbs) cb.onMediaAdded(); } } @SuppressWarnings("unused") - public void onMediaUpdated(AMediaWrapper[] mediaList) { + public void onMediaUpdated(AbstractMediaWrapper[] mediaList) { synchronized (mMediaCbs) { for (MediaCb cb : mMediaCbs) cb.onMediaModified(); } @@ -440,9 +440,9 @@ abstract public class AMedialibrary { } } - // public static LiveData<AMediaWrapper> lastThumb = new SingleEvent<>(); + // public static LiveData<AbstractMediaWrapper> lastThumb = new SingleEvent<>(); @SuppressWarnings({"unused", "unchecked"}) - public void onMediaThumbnailReady(AMediaWrapper media, boolean success) { + public void onMediaThumbnailReady(AbstractMediaWrapper media, boolean success) { if (success) ((MutableLiveData)lastThumb).postValue(media); } @@ -586,75 +586,75 @@ abstract public class AMedialibrary { abstract public void removeFolder(@NonNull String mrl); abstract public String[] getFoldersList(); abstract public boolean removeDevice(String uuid, String path); - abstract public AMediaWrapper[] getVideos(); - abstract public AMediaWrapper[] getPagedVideos(int sort, boolean desc, int nbItems, int offset); - abstract public AMediaWrapper[] getVideos(int sort, boolean desc); - abstract public AMediaWrapper[] getRecentVideos(); - abstract public AMediaWrapper[] getAudio(); - abstract public AMediaWrapper[] getAudio(int sort, boolean desc); - abstract public AMediaWrapper[] getPagedAudio(int sort, boolean desc, int nbitems, int offset); - abstract public AMediaWrapper[] getRecentAudio(); + abstract public AbstractMediaWrapper[] getVideos(); + abstract public AbstractMediaWrapper[] getPagedVideos(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] getVideos(int sort, boolean desc); + abstract public AbstractMediaWrapper[] getRecentVideos(); + abstract public AbstractMediaWrapper[] getAudio(); + abstract public AbstractMediaWrapper[] getAudio(int sort, boolean desc); + abstract public AbstractMediaWrapper[] getPagedAudio(int sort, boolean desc, int nbitems, int offset); + abstract public AbstractMediaWrapper[] getRecentAudio(); abstract public int getVideoCount(); abstract public int getAudioCount(); - abstract public AAlbum[] getAlbums(); - abstract public AAlbum[] getAlbums(int sort, boolean desc); - abstract public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractAlbum[] getAlbums(); + abstract public AbstractAlbum[] getAlbums(int sort, boolean desc); + abstract public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset); abstract public int getAlbumsCount(); abstract public int getAlbumsCount(String query); - abstract public AAlbum getAlbum(long albumId); - abstract public AArtist[] getArtists(boolean all); - abstract public AArtist[] getArtists(boolean all, int sort, boolean desc); - abstract public AArtist[] getPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractAlbum getAlbum(long albumId); + abstract public AbstractArtist[] getArtists(boolean all); + abstract public AbstractArtist[] getArtists(boolean all, int sort, boolean desc); + abstract public AbstractArtist[] getPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset); abstract public int getArtistsCount(boolean all); abstract public int getArtistsCount(String query); - abstract public AArtist getArtist(long artistId); - abstract public AGenre[] getGenres(); - abstract public AGenre[] getGenres(int sort, boolean desc); - abstract public AGenre[] getPagedGenres(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractArtist getArtist(long artistId); + abstract public AbstractGenre[] getGenres(); + abstract public AbstractGenre[] getGenres(int sort, boolean desc); + abstract public AbstractGenre[] getPagedGenres(int sort, boolean desc, int nbItems, int offset); abstract public int getGenresCount(); abstract public int getGenresCount(String query); - abstract public AGenre getGenre(long genreId); - abstract public APlaylist[] getPlaylists(int sort, boolean desc); - abstract public APlaylist[] getPlaylists(); - abstract public APlaylist[] getPagedPlaylists(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractGenre getGenre(long genreId); + abstract public AbstractPlaylist[] getPlaylists(int sort, boolean desc); + abstract public AbstractPlaylist[] getPlaylists(); + abstract public AbstractPlaylist[] getPagedPlaylists(int sort, boolean desc, int nbItems, int offset); abstract public int getPlaylistsCount(); abstract public int getPlaylistsCount(String query); - abstract public APlaylist getPlaylist(long playlistId); - abstract public APlaylist createPlaylist(String name); + abstract public AbstractPlaylist getPlaylist(long playlistId); + abstract public AbstractPlaylist createPlaylist(String name); abstract public void pauseBackgroundOperations(); abstract public void resumeBackgroundOperations(); abstract public void reload(); abstract public void reload(String entrypoint); abstract public void forceParserRetry(); abstract public void forceRescan(); - abstract public AMediaWrapper[] lastMediaPlayed(); - abstract public AMediaWrapper[] lastStreamsPlayed(); + abstract public AbstractMediaWrapper[] lastMediaPlayed(); + abstract public AbstractMediaWrapper[] lastStreamsPlayed(); abstract public boolean clearHistory(); abstract public boolean addToHistory(String mrl, String title); - abstract public AMediaWrapper getMedia(long id); - abstract public AMediaWrapper getMedia(Uri uri); - abstract public AMediaWrapper getMedia(String mrl); - abstract public AMediaWrapper addMedia(String mrl); + abstract public AbstractMediaWrapper getMedia(long id); + abstract public AbstractMediaWrapper getMedia(Uri uri); + abstract public AbstractMediaWrapper getMedia(String mrl); + abstract public AbstractMediaWrapper addMedia(String mrl); abstract public boolean removeExternalMedia(long id); - abstract public AMediaWrapper addStream(String mrl, String title); - abstract public AFolder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper addStream(String mrl, String title); + abstract public AbstractFolder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset); abstract public int getFoldersCount(int type); abstract public void requestThumbnail(long id); abstract public boolean increasePlayCount(long mediaId); abstract public SearchAggregate search(String query); - abstract public AMediaWrapper[] searchMedia(String query); - abstract public AMediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchMedia(String query); + abstract public AbstractMediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset); abstract public int getMediaCount(String query); - abstract public AMediaWrapper[] searchAudio(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchAudio(String query, int sort, boolean desc, int nbItems, int offset); abstract public int getAudioCount(String query); - abstract public AMediaWrapper[] searchVideo(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchVideo(String query, int sort, boolean desc, int nbItems, int offset); abstract public int getVideoCount(String query); - abstract public AArtist[] searchArtist(String query); - abstract public AArtist[] searchArtist(String query, int sort, boolean desc, int nbItems, int offset); - abstract public AAlbum[] searchAlbum(String query); - abstract public AAlbum[] searchAlbum(String query, int sort, boolean desc, int nbItems, int offset); - abstract public AGenre[] searchGenre(String query); - abstract public AGenre[] searchGenre(String query, int sort, boolean desc, int nbItems, int offset); - abstract public APlaylist[] searchPlaylist(String query); - abstract public APlaylist[] searchPlaylist(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractArtist[] searchArtist(String query); + abstract public AbstractArtist[] searchArtist(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractAlbum[] searchAlbum(String query); + abstract public AbstractAlbum[] searchAlbum(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractGenre[] searchGenre(String query); + abstract public AbstractGenre[] searchGenre(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractPlaylist[] searchPlaylist(String query); + abstract public AbstractPlaylist[] searchPlaylist(String query, int sort, boolean desc, int nbItems, int offset); } diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AGenre.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AGenre.java deleted file mode 100644 index 9cb3a970b5..0000000000 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AGenre.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.videolan.medialibrary.interfaces.media; - -import android.os.Parcel; -import android.os.Parcelable; - -import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.media.MediaLibraryItem; - -public abstract class AGenre extends MediaLibraryItem { - - public AGenre(long id, String title) { super(id, title); } - public AGenre(Parcel in) { super(in); } - - abstract public AAlbum[] getAlbums(int sort, boolean desc); - abstract public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset); - abstract public AArtist[] getArtists(int sort, boolean desc); - abstract public AMediaWrapper[] getTracks(int sort, boolean desc); - abstract public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset); - abstract public int getTracksCount(); - abstract public int getAlbumsCount(); - abstract public AAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset); - abstract public int searchAlbumsCount(String query); - abstract public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); - abstract public int searchTracksCount(String query); - - public AAlbum[] getAlbums() { - return getAlbums(AMedialibrary.SORT_DEFAULT, false); - } - public AArtist[] getArtists() { - return getArtists(AMedialibrary.SORT_DEFAULT, false); - } - public AMediaWrapper[] getTracks() { - return getTracks(AMedialibrary.SORT_ALBUM, false); - } - @Override - public int getItemType() { - return TYPE_GENRE; - } - - public static Parcelable.Creator<AGenre> CREATOR - = new Parcelable.Creator<AGenre>() { - @Override - public AGenre createFromParcel(Parcel in) { - return MLServiceLocator.getAGenre(in); - } - - @Override - public AGenre[] newArray(int size) { - return new AGenre[size]; - } - }; - -} diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AAlbum.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractAlbum.java similarity index 63% rename from medialibrary/src/org/videolan/medialibrary/interfaces/media/AAlbum.java rename to medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractAlbum.java index a61efff6d9..747b47f1d7 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AAlbum.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractAlbum.java @@ -7,12 +7,12 @@ import android.text.TextUtils; import org.videolan.libvlc.util.VLCUtil; import org.videolan.medialibrary.R; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.AMedialibrary; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; import org.videolan.medialibrary.media.MediaLibraryItem; -public abstract class AAlbum extends MediaLibraryItem { +public abstract class AbstractAlbum extends MediaLibraryItem { public static class SpecialRes { - public static String UNKNOWN_ALBUM = AMedialibrary.getContext().getString(R.string.unknown_album); + public static String UNKNOWN_ALBUM = AbstractMedialibrary.getContext().getString(R.string.unknown_album); } protected int releaseYear; @@ -22,7 +22,7 @@ public abstract class AAlbum extends MediaLibraryItem { protected int mTracksCount; protected int duration; - public AAlbum(long id, String title, int releaseYear, String artworkMrl, String albumArtist, long albumArtistId, int nbTracks, int duration) { + public AbstractAlbum(long id, String title, int releaseYear, String artworkMrl, String albumArtist, long albumArtistId, int nbTracks, int duration) { super(id, title); this.releaseYear = releaseYear; this.artworkMrl = artworkMrl != null ? VLCUtil.UriFromMrl(artworkMrl).getPath() : null; @@ -32,13 +32,13 @@ public abstract class AAlbum extends MediaLibraryItem { this.duration = duration; if (TextUtils.isEmpty(title)) mTitle = SpecialRes.UNKNOWN_ALBUM; if (albumArtistId == 1L) { - this.albumArtist = AArtist.SpecialRes.UNKNOWN_ARTIST; + this.albumArtist = AbstractArtist.SpecialRes.UNKNOWN_ARTIST; } else if (albumArtistId == 2L) { - this.albumArtist = AArtist.SpecialRes.VARIOUS_ARTISTS; + this.albumArtist = AbstractArtist.SpecialRes.VARIOUS_ARTISTS; } } - protected AAlbum(Parcel in) { + protected AbstractAlbum(Parcel in) { super(in); this.releaseYear = in.readInt(); this.artworkMrl = in.readString(); @@ -49,11 +49,11 @@ public abstract class AAlbum extends MediaLibraryItem { } abstract public int getRealTracksCount(); - abstract public AMediaWrapper[] getTracks(int sort, boolean desc); - abstract public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset); - abstract public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] getTracks(int sort, boolean desc); + abstract public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); abstract public int searchTracksCount(String query); - abstract public AArtist getAlbumArtist(); + abstract public AbstractArtist getAlbumArtist(); @Override public long getId() { @@ -84,8 +84,8 @@ public abstract class AAlbum extends MediaLibraryItem { } @Override - public AMediaWrapper[] getTracks() { - return getTracks(AMedialibrary.SORT_ALBUM, false); + public AbstractMediaWrapper[] getTracks() { + return getTracks(AbstractMedialibrary.SORT_ALBUM, false); } @Override @@ -93,16 +93,16 @@ public abstract class AAlbum extends MediaLibraryItem { return TYPE_ALBUM; } - public static Parcelable.Creator<AAlbum> CREATOR - = new Parcelable.Creator<AAlbum>() { + public static Parcelable.Creator<AbstractAlbum> CREATOR + = new Parcelable.Creator<AbstractAlbum>() { @Override - public AAlbum createFromParcel(Parcel in) { - return MLServiceLocator.getAAlbum(in); + public AbstractAlbum createFromParcel(Parcel in) { + return MLServiceLocator.getAbstractAlbum(in); } @Override - public AAlbum[] newArray(int size) { - return new AAlbum[size]; + public AbstractAlbum[] newArray(int size) { + return new AbstractAlbum[size]; } }; diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AArtist.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractArtist.java similarity index 56% rename from medialibrary/src/org/videolan/medialibrary/interfaces/media/AArtist.java rename to medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractArtist.java index 9ff83b510a..4f0c34b05b 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AArtist.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractArtist.java @@ -6,21 +6,21 @@ import android.os.Parcelable; import org.videolan.libvlc.util.VLCUtil; import org.videolan.medialibrary.R; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.AMedialibrary; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; import org.videolan.medialibrary.media.MediaLibraryItem; -abstract public class AArtist extends MediaLibraryItem { +abstract public class AbstractArtist extends MediaLibraryItem { private String shortBio; private String artworkMrl; private String musicBrainzId; public static class SpecialRes { - public static String UNKNOWN_ARTIST = AMedialibrary.getContext().getString(R.string.unknown_artist); - public static String VARIOUS_ARTISTS = AMedialibrary.getContext().getString(R.string.various_artists); + public static String UNKNOWN_ARTIST = AbstractMedialibrary.getContext().getString(R.string.unknown_artist); + public static String VARIOUS_ARTISTS = AbstractMedialibrary.getContext().getString(R.string.various_artists); } - public AArtist(long id, String name, String shortBio, String artworkMrl, String musicBrainzId) { + public AbstractArtist(long id, String name, String shortBio, String artworkMrl, String musicBrainzId) { super(id, name); this.shortBio = shortBio; this.artworkMrl = artworkMrl != null ? VLCUtil.UriFromMrl(artworkMrl).getPath() : null; @@ -32,15 +32,15 @@ abstract public class AArtist extends MediaLibraryItem { } } - abstract public AAlbum[] getAlbums(int sort, boolean desc); - abstract public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset); - abstract public AAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractAlbum[] getAlbums(int sort, boolean desc); + abstract public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset); abstract public int searchAlbumsCount(String query); - abstract public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); abstract public int searchTracksCount(String query); abstract public int getAlbumsCount(); - abstract public AMediaWrapper[] getTracks(int sort, boolean desc); - abstract public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] getTracks(int sort, boolean desc); + abstract public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset); abstract public int getTracksCount(); public String getShortBio() { @@ -64,13 +64,13 @@ abstract public class AArtist extends MediaLibraryItem { this.artworkMrl = artworkMrl; } - public AAlbum[] getAlbums() { - return getAlbums(AMedialibrary.SORT_DEFAULT, false); + public AbstractAlbum[] getAlbums() { + return getAlbums(AbstractMedialibrary.SORT_DEFAULT, false); } @Override - public AMediaWrapper[] getTracks() { - return getTracks(AMedialibrary.SORT_ALBUM, true); + public AbstractMediaWrapper[] getTracks() { + return getTracks(AbstractMedialibrary.SORT_ALBUM, true); } @Override @@ -86,20 +86,20 @@ abstract public class AArtist extends MediaLibraryItem { parcel.writeString(musicBrainzId); } - public static Parcelable.Creator<AArtist> CREATOR - = new Parcelable.Creator<AArtist>() { + public static Parcelable.Creator<AbstractArtist> CREATOR + = new Parcelable.Creator<AbstractArtist>() { @Override - public AArtist createFromParcel(Parcel in) { - return MLServiceLocator.getAArtist(in); + public AbstractArtist createFromParcel(Parcel in) { + return MLServiceLocator.getAbstractArtist(in); } @Override - public AArtist[] newArray(int size) { - return new AArtist[size]; + public AbstractArtist[] newArray(int size) { + return new AbstractArtist[size]; } }; - public AArtist(Parcel in) { + public AbstractArtist(Parcel in) { super(in); this.shortBio = in.readString(); this.artworkMrl = in.readString(); diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AFolder.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractFolder.java similarity index 55% rename from medialibrary/src/org/videolan/medialibrary/interfaces/media/AFolder.java rename to medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractFolder.java index 8a9a244fc7..c578141b02 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AFolder.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractFolder.java @@ -6,7 +6,7 @@ import android.os.Parcelable; import org.videolan.medialibrary.MLServiceLocator; import org.videolan.medialibrary.media.MediaLibraryItem; -public abstract class AFolder extends MediaLibraryItem { +public abstract class AbstractFolder extends MediaLibraryItem { public static int TYPE_FOLDER_UNKNOWN = 0; public static int TYPE_FOLDER_VIDEO = 1; public static int TYPE_FOLDER_AUDIO = 2; @@ -15,21 +15,21 @@ public abstract class AFolder extends MediaLibraryItem { public String mMrl; - public AFolder(long id, String name, String mrl) { + public AbstractFolder(long id, String name, String mrl) { super(id, name); mMrl = mrl; } - abstract public AMediaWrapper[] media(int type, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] media(int type, int sort, boolean desc, int nbItems, int offset); abstract public int mediaCount(int type); - abstract public AFolder[] subfolders(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractFolder[] subfolders(int sort, boolean desc, int nbItems, int offset); abstract public int subfoldersCount(int type); - abstract public AMediaWrapper[] searchTracks(String query, int mediaType, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchTracks(String query, int mediaType, int sort, boolean desc, int nbItems, int offset); abstract public int searchTracksCount(String query, int mediaType); @Override - public AMediaWrapper[] getTracks() { - return new AMediaWrapper[0]; + public AbstractMediaWrapper[] getTracks() { + return new AbstractMediaWrapper[0]; } @Override @@ -48,19 +48,19 @@ public abstract class AFolder extends MediaLibraryItem { parcel.writeString(mMrl); } - public static Parcelable.Creator<AFolder> CREATOR = new Parcelable.Creator<AFolder>() { + public static Parcelable.Creator<AbstractFolder> CREATOR = new Parcelable.Creator<AbstractFolder>() { @Override - public AFolder createFromParcel(Parcel in) { - return MLServiceLocator.getAFolder(in); + public AbstractFolder createFromParcel(Parcel in) { + return MLServiceLocator.getAbstractFolder(in); } @Override - public AFolder[] newArray(int size) { - return new AFolder[size]; + public AbstractFolder[] newArray(int size) { + return new AbstractFolder[size]; } }; - public AFolder(Parcel in) { + public AbstractFolder(Parcel in) { super(in); this.mMrl = in.readString(); } diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractGenre.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractGenre.java new file mode 100644 index 0000000000..97df92b862 --- /dev/null +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractGenre.java @@ -0,0 +1,54 @@ +package org.videolan.medialibrary.interfaces.media; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.videolan.medialibrary.MLServiceLocator; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.media.MediaLibraryItem; + +public abstract class AbstractGenre extends MediaLibraryItem { + + public AbstractGenre(long id, String title) { super(id, title); } + public AbstractGenre(Parcel in) { super(in); } + + abstract public AbstractAlbum[] getAlbums(int sort, boolean desc); + abstract public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset); + abstract public AbstractArtist[] getArtists(int sort, boolean desc); + abstract public AbstractMediaWrapper[] getTracks(int sort, boolean desc); + abstract public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset); + abstract public int getTracksCount(); + abstract public int getAlbumsCount(); + abstract public AbstractAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset); + abstract public int searchAlbumsCount(String query); + abstract public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); + abstract public int searchTracksCount(String query); + + public AbstractAlbum[] getAlbums() { + return getAlbums(AbstractMedialibrary.SORT_DEFAULT, false); + } + public AbstractArtist[] getArtists() { + return getArtists(AbstractMedialibrary.SORT_DEFAULT, false); + } + public AbstractMediaWrapper[] getTracks() { + return getTracks(AbstractMedialibrary.SORT_ALBUM, false); + } + @Override + public int getItemType() { + return TYPE_GENRE; + } + + public static Parcelable.Creator<AbstractGenre> CREATOR + = new Parcelable.Creator<AbstractGenre>() { + @Override + public AbstractGenre createFromParcel(Parcel in) { + return MLServiceLocator.getAbstractGenre(in); + } + + @Override + public AbstractGenre[] newArray(int size) { + return new AbstractGenre[size]; + } + }; + +} diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AMediaWrapper.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractMediaWrapper.java similarity index 92% rename from medialibrary/src/org/videolan/medialibrary/interfaces/media/AMediaWrapper.java rename to medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractMediaWrapper.java index 55d0772a76..f2a68b9edf 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/media/AMediaWrapper.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractMediaWrapper.java @@ -18,7 +18,7 @@ import org.videolan.medialibrary.media.MediaLibraryItem; import java.util.Locale; -public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelable { +public abstract class AbstractMediaWrapper extends MediaLibraryItem implements Parcelable { public final static int TYPE_ALL = -1; public final static int TYPE_VIDEO = 0; public final static int TYPE_AUDIO = 1; @@ -110,14 +110,14 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab public abstract void setThumbnail(String mrl); /** - * Create a new AMediaWrapper + * Create a new AbstractMediaWrapper * * @param mrl Should not be null. */ - public AMediaWrapper(long id, String mrl, long time, long length, int type, String title, - String filename, String artist, String genre, String album, String albumArtist, - int width, int height, String artworkURL, int audio, int spu, int trackNumber, - int discNumber, long lastModified, long seen, boolean isThumbnailGenerated) { + public AbstractMediaWrapper(long id, String mrl, long time, long length, int type, String title, + String filename, String artist, String genre, String album, String albumArtist, + int width, int height, String artworkURL, int audio, int spu, int trackNumber, + int discNumber, long lastModified, long seen, boolean isThumbnailGenerated) { super(); if (TextUtils.isEmpty(mrl)) throw new IllegalArgumentException("uri was empty"); @@ -161,11 +161,11 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab } /** - * Create a new AMediaWrapper + * Create a new AbstractMediaWrapper * * @param uri Should not be null. */ - public AMediaWrapper(Uri uri) { + public AbstractMediaWrapper(Uri uri) { super(); if (uri == null) throw new NullPointerException("uri was null"); @@ -175,11 +175,11 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab } /** - * Create a new AMediaWrapper + * Create a new AbstractMediaWrapper * * @param media should be parsed and not NULL */ - public AMediaWrapper(Media media) { + public AbstractMediaWrapper(Media media) { super(); if (media == null) throw new NullPointerException("media was null"); @@ -193,10 +193,10 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab if (this == obj) return true; if (!(obj instanceof MediaLibraryItem) || ((MediaLibraryItem) obj).getItemType() != TYPE_MEDIA) return false; - return equals((AMediaWrapper) obj); + return equals((AbstractMediaWrapper) obj); } - public boolean equals(AMediaWrapper obj) { + public boolean equals(AbstractMediaWrapper obj) { long otherId = obj.getId(); if (otherId != 0L && getId() != 0L && otherId == getId()) return true; final Uri otherUri = obj.getUri(); @@ -298,17 +298,17 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab mSlaves = slaves; } - public AMediaWrapper(Uri uri, long time, long length, int type, - Bitmap picture, String title, String artist, String genre, String album, String albumArtist, - int width, int height, String artworkURL, int audio, int spu, int trackNumber, int discNumber, long lastModified, long seen) { + public AbstractMediaWrapper(Uri uri, long time, long length, int type, + Bitmap picture, String title, String artist, String genre, String album, String albumArtist, + int width, int height, String artworkURL, int audio, int spu, int trackNumber, int discNumber, long lastModified, long seen) { mUri = uri; init(time, length, type, picture, title, artist, genre, album, albumArtist, width, height, artworkURL, audio, spu, trackNumber, discNumber, lastModified, seen, null); } @Override - public AMediaWrapper[] getTracks() { - return new AMediaWrapper[]{this}; + public AbstractMediaWrapper[] getTracks() { + return new AbstractMediaWrapper[]{this}; } @Override @@ -636,7 +636,7 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab return 0; } - public AMediaWrapper(Parcel in) { + public AbstractMediaWrapper(Parcel in) { super(in); mUri = in.readParcelable(Uri.class.getClassLoader()); init(in.readLong(), @@ -693,15 +693,15 @@ public abstract class AMediaWrapper extends MediaLibraryItem implements Parcelab dest.writeTypedArray(null, flags); } - public static final Parcelable.Creator<AMediaWrapper> CREATOR = new Parcelable.Creator<AMediaWrapper>() { + public static final Parcelable.Creator<AbstractMediaWrapper> CREATOR = new Parcelable.Creator<AbstractMediaWrapper>() { @Override - public AMediaWrapper createFromParcel(Parcel in) { - return MLServiceLocator.getAMediaWrapper(in); + public AbstractMediaWrapper createFromParcel(Parcel in) { + return MLServiceLocator.getAbstractMediaWrapper(in); } @Override - public AMediaWrapper[] newArray(int size) { - return new AMediaWrapper[size]; + public AbstractMediaWrapper[] newArray(int size) { + return new AbstractMediaWrapper[size]; } }; diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/media/APlaylist.java b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractPlaylist.java similarity index 62% rename from medialibrary/src/org/videolan/medialibrary/interfaces/media/APlaylist.java rename to medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractPlaylist.java index 722c7a8bdf..9b57bbd83f 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/media/APlaylist.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/media/AbstractPlaylist.java @@ -8,17 +8,17 @@ import org.videolan.medialibrary.media.MediaLibraryItem; import java.util.List; -public abstract class APlaylist extends MediaLibraryItem { +public abstract class AbstractPlaylist extends MediaLibraryItem { protected int mTracksCount; - protected APlaylist(long id, String name, int trackCount) { + protected AbstractPlaylist(long id, String name, int trackCount) { super(id, name); mTracksCount = trackCount; } - abstract public AMediaWrapper[] getTracks(); - abstract public AMediaWrapper[] getPagedTracks(int nbItems, int offset); + abstract public AbstractMediaWrapper[] getTracks(); + abstract public AbstractMediaWrapper[] getPagedTracks(int nbItems, int offset); abstract public int getRealTracksCount(); abstract public boolean append(long mediaId); abstract public boolean append(long[] mediaIds); @@ -27,7 +27,7 @@ public abstract class APlaylist extends MediaLibraryItem { abstract public boolean move(int oldPosition, int newPosition); abstract public boolean remove(int position); abstract public boolean delete(); - abstract public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); + abstract public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset); abstract public int searchTracksCount(String query); @Override @@ -41,16 +41,16 @@ public abstract class APlaylist extends MediaLibraryItem { } - public static Parcelable.Creator<APlaylist> CREATOR - = new Parcelable.Creator<APlaylist>() { + public static Parcelable.Creator<AbstractPlaylist> CREATOR + = new Parcelable.Creator<AbstractPlaylist>() { @Override - public APlaylist createFromParcel(Parcel in) { - return MLServiceLocator.getAPlaylist(in); + public AbstractPlaylist createFromParcel(Parcel in) { + return MLServiceLocator.getAbstractPlaylist(in); } @Override - public APlaylist[] newArray(int size) { - return new APlaylist[size]; + public AbstractPlaylist[] newArray(int size) { + return new AbstractPlaylist[size]; } }; @@ -60,7 +60,7 @@ public abstract class APlaylist extends MediaLibraryItem { parcel.writeInt(mTracksCount); } - public APlaylist(Parcel in) { + public AbstractPlaylist(Parcel in) { super(in); this.mTracksCount = in.readInt(); } diff --git a/medialibrary/src/org/videolan/medialibrary/media/Album.java b/medialibrary/src/org/videolan/medialibrary/media/Album.java index f5f344639f..dd546908a4 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/Album.java +++ b/medialibrary/src/org/videolan/medialibrary/media/Album.java @@ -2,13 +2,13 @@ package org.videolan.medialibrary.media; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; @SuppressWarnings("JniMissingFunction") -public class Album extends AAlbum { +public class Album extends AbstractAlbum { public static final String TAG = "VLC/Album"; public Album(long id, String title, int releaseYear, String artworkMrl, String albumArtist, long albumArtistId, int nbTracks, int duration) { @@ -20,38 +20,38 @@ public class Album extends AAlbum { } public int getRealTracksCount() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetTracksCount(ml, mId) : 0; } - public AMediaWrapper[] getTracks(int sort, boolean desc) { - AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetTracks(ml, mId, sort, desc) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getTracks(int sort, boolean desc) { + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetTracks(ml, mId, sort, desc) : AbstractMedialibrary.EMPTY_COLLECTION; } - public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetPagedTracks(ml, mId, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetPagedTracks(ml, mId, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int searchTracksCount(String query) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchCount(ml, mId, query) : 0; } - public AArtist getAlbumArtist() { + public AbstractArtist getAlbumArtist() { //TODO return null; } - private native AMediaWrapper[] nativeGetTracks(AMedialibrary ml, long mId, int sort, boolean desc); - private native AMediaWrapper[] nativeGetPagedTracks(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeSearch(AMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); - private native int nativeGetTracksCount(AMedialibrary ml, long id); - private native int nativeGetSearchCount(AMedialibrary ml, long mId, String query); + private native AbstractMediaWrapper[] nativeGetTracks(AbstractMedialibrary ml, long mId, int sort, boolean desc); + private native AbstractMediaWrapper[] nativeGetPagedTracks(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeSearch(AbstractMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); + private native int nativeGetTracksCount(AbstractMedialibrary ml, long id); + private native int nativeGetSearchCount(AbstractMedialibrary ml, long mId, String query); } diff --git a/medialibrary/src/org/videolan/medialibrary/media/Artist.java b/medialibrary/src/org/videolan/medialibrary/media/Artist.java index c227aedb8e..08c5d1ab74 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/Artist.java +++ b/medialibrary/src/org/videolan/medialibrary/media/Artist.java @@ -2,15 +2,15 @@ package org.videolan.medialibrary.media; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import androidx.annotation.NonNull; @SuppressWarnings("JniMissingFunction") -public class Artist extends AArtist { +public class Artist extends AbstractArtist { public Artist(long id, String name, String shortBio, String artworkMrl, String musicBrainzId) { super(id, name, shortBio, artworkMrl, musicBrainzId); @@ -20,66 +20,66 @@ public class Artist extends AArtist { super(in); } - public AAlbum[] getAlbums(int sort, boolean desc) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetAlbums(ml, mId, sort, desc) : new AAlbum[0]; + public AbstractAlbum[] getAlbums(int sort, boolean desc) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetAlbums(ml, mId, sort, desc) : new AbstractAlbum[0]; } @NonNull - public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetPagedAlbums(ml, mId, sort, desc, nbItems, offset) : new AAlbum[0]; + public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetPagedAlbums(ml, mId, sort, desc, nbItems, offset) : new AbstractAlbum[0]; } - public AAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearchAlbums(ml, mId, query, sort, desc, nbItems, offset) : new AAlbum[0]; + public AbstractAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearchAlbums(ml, mId, query, sort, desc, nbItems, offset) : new AbstractAlbum[0]; } public int searchAlbumsCount(String query) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchAlbumCount(ml, mId, query) : 0; } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int searchTracksCount(String query) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchCount(ml, mId, query) : 0; } public int getAlbumsCount() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetAlbumsCount(ml, mId) : 0; } - public AMediaWrapper[] getTracks(int sort, boolean desc) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetMedia(ml, mId, sort, desc) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getTracks(int sort, boolean desc) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetMedia(ml, mId, sort, desc) : AbstractMedialibrary.EMPTY_COLLECTION; } - public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetPagedMedia(ml, mId, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetPagedMedia(ml, mId, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } @Override public int getTracksCount() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetTracksCount(ml, mId) : 0; } - private native AAlbum[] nativeGetAlbums(AMedialibrary ml, long mId, int sort, boolean desc); - private native AMediaWrapper[] nativeGetMedia(AMedialibrary ml, long mId, int sort, boolean desc); - private native AAlbum[] nativeGetPagedAlbums(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeGetPagedMedia(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native AAlbum[] nativeSearchAlbums(AMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeSearch(AMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); - private native int nativeGetTracksCount(AMedialibrary ml, long mId); - private native int nativeGetAlbumsCount(AMedialibrary ml, long mId); - private native int nativeGetSearchCount(AMedialibrary ml, long mId, String query); - private native int nativeGetSearchAlbumCount(AMedialibrary ml, long mId, String query); + private native AbstractAlbum[] nativeGetAlbums(AbstractMedialibrary ml, long mId, int sort, boolean desc); + private native AbstractMediaWrapper[] nativeGetMedia(AbstractMedialibrary ml, long mId, int sort, boolean desc); + private native AbstractAlbum[] nativeGetPagedAlbums(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeGetPagedMedia(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native AbstractAlbum[] nativeSearchAlbums(AbstractMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeSearch(AbstractMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); + private native int nativeGetTracksCount(AbstractMedialibrary ml, long mId); + private native int nativeGetAlbumsCount(AbstractMedialibrary ml, long mId); + private native int nativeGetSearchCount(AbstractMedialibrary ml, long mId, String query); + private native int nativeGetSearchAlbumCount(AbstractMedialibrary ml, long mId, String query); } diff --git a/medialibrary/src/org/videolan/medialibrary/media/DummyItem.java b/medialibrary/src/org/videolan/medialibrary/media/DummyItem.java index 61dd6acc1a..0d8ed79cc2 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/DummyItem.java +++ b/medialibrary/src/org/videolan/medialibrary/media/DummyItem.java @@ -4,8 +4,8 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; public class DummyItem extends MediaLibraryItem { @@ -21,8 +21,8 @@ public class DummyItem extends MediaLibraryItem { } @Override - public AMediaWrapper[] getTracks() { - return AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getTracks() { + return AbstractMedialibrary.EMPTY_COLLECTION; } @Override diff --git a/medialibrary/src/org/videolan/medialibrary/media/Folder.java b/medialibrary/src/org/videolan/medialibrary/media/Folder.java index 3494911446..89b22bd848 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/Folder.java +++ b/medialibrary/src/org/videolan/medialibrary/media/Folder.java @@ -2,12 +2,12 @@ package org.videolan.medialibrary.media; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; @SuppressWarnings("JniMissingFunction") -public class Folder extends AFolder { +public class Folder extends AbstractFolder { public Folder(long id, String name, String mrl) { super(id, name, mrl); @@ -17,42 +17,42 @@ public class Folder extends AFolder { super(in); } - public AMediaWrapper[] media(int type, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeMedia(ml, mId, type, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] media(int type, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeMedia(ml, mId, type, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int mediaCount(int type) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeMediaCount(ml, mId, type) : 0; } - public AFolder[] subfolders(int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); + public AbstractFolder[] subfolders(int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeSubfolders(ml, mId, sort, desc, nbItems, offset) : new Folder[0]; } public int subfoldersCount(int type) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeSubfoldersCount(ml, mId, type) : 0; } - public AMediaWrapper[] searchTracks(String query, int mediaType, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearch(ml, mId, query, mediaType, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] searchTracks(String query, int mediaType, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearch(ml, mId, query, mediaType, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int searchTracksCount(String query, int mediaType) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchCount(ml, mId, query, mediaType) : 0; } - // private native AMediaWrapper[] nativeGetTracks(); + // private native AbstractMediaWrapper[] nativeGetTracks(); // private native int nativeGetTracksCount(); - private native AMediaWrapper[] nativeMedia(AMedialibrary ml, long mId, int type, int sort, boolean desc, int nbItems, int offset); - private native int nativeMediaCount(AMedialibrary ml, long mId, int type); - private native AFolder[] nativeSubfolders(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native int nativeSubfoldersCount(AMedialibrary ml, long mId, int type); - private native AMediaWrapper[] nativeSearch(AMedialibrary ml, long mId, String query, int mediaType, int sort, boolean desc, int nbItems, int offset); - private native int nativeGetSearchCount(AMedialibrary ml, long mId, String query, int mediaType); + private native AbstractMediaWrapper[] nativeMedia(AbstractMedialibrary ml, long mId, int type, int sort, boolean desc, int nbItems, int offset); + private native int nativeMediaCount(AbstractMedialibrary ml, long mId, int type); + private native AbstractFolder[] nativeSubfolders(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native int nativeSubfoldersCount(AbstractMedialibrary ml, long mId, int type); + private native AbstractMediaWrapper[] nativeSearch(AbstractMedialibrary ml, long mId, String query, int mediaType, int sort, boolean desc, int nbItems, int offset); + private native int nativeGetSearchCount(AbstractMedialibrary ml, long mId, String query, int mediaType); } diff --git a/medialibrary/src/org/videolan/medialibrary/media/Genre.java b/medialibrary/src/org/videolan/medialibrary/media/Genre.java index 09e4a8a1f9..2ee356f8d5 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/Genre.java +++ b/medialibrary/src/org/videolan/medialibrary/media/Genre.java @@ -2,93 +2,93 @@ package org.videolan.medialibrary.media; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import androidx.annotation.NonNull; @SuppressWarnings("JniMissingFunction") -public class Genre extends AGenre { +public class Genre extends AbstractGenre { public Genre(long id, String title) { super(id, title); } - public AAlbum[] getAlbums(int sort, boolean desc) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetAlbums(ml, mId, sort, desc) : new AAlbum[0]; + public AbstractAlbum[] getAlbums(int sort, boolean desc) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetAlbums(ml, mId, sort, desc) : new AbstractAlbum[0]; } @NonNull - public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetPagedAlbums(ml, mId, sort, desc, nbItems, offset) : new AAlbum[0]; + public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetPagedAlbums(ml, mId, sort, desc, nbItems, offset) : new AbstractAlbum[0]; } - public AArtist[] getArtists(int sort, boolean desc) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetArtists(ml, mId, sort, desc) : new AArtist[0]; + public AbstractArtist[] getArtists(int sort, boolean desc) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetArtists(ml, mId, sort, desc) : new AbstractArtist[0]; } - public AMediaWrapper[] getTracks(int sort, boolean desc) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetTracks(ml, mId, sort, desc) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getTracks(int sort, boolean desc) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetTracks(ml, mId, sort, desc) : AbstractMedialibrary.EMPTY_COLLECTION; } - public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetPagedTracks(ml, mId, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetPagedTracks(ml, mId, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } @Override public int getTracksCount() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetTracksCount(ml, mId) : 0; } public int getAlbumsCount() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetAlbumsCount(ml, mId) : 0; } - public AAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearchAlbums(ml, mId, query, sort, desc, nbItems, offset) : new AAlbum[0]; + public AbstractAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearchAlbums(ml, mId, query, sort, desc, nbItems, offset) : new AbstractAlbum[0]; } public int searchAlbumsCount(String query) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchAlbumCount(ml, mId, query) : 0; } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int searchTracksCount(String query) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchCount(ml, mId, query) : 0; } - private native AAlbum[] nativeGetAlbums(AMedialibrary ml, long mId, int sort, boolean desc); - private native AArtist[] nativeGetArtists(AMedialibrary ml, long mId, int sort, boolean desc); - private native AMediaWrapper[] nativeGetTracks(AMedialibrary ml, long mId, int sort, boolean desc); - - private native AAlbum[] nativeGetPagedAlbums(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native AArtist[] nativeGetPagedArtists(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeGetPagedTracks(AMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); - private native int nativeGetTracksCount(AMedialibrary ml, long id); - private native int nativeGetAlbumsCount(AMedialibrary ml, long mId); - private native int nativeGetArtistsCount(AMedialibrary ml, long mId); - private native AAlbum[] nativeSearchAlbums(AMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); - private native AMediaWrapper[] nativeSearch(AMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); - private native int nativeGetSearchCount(AMedialibrary ml, long mId, String query); - private native int nativeGetSearchAlbumCount(AMedialibrary ml, long mId, String query); + private native AbstractAlbum[] nativeGetAlbums(AbstractMedialibrary ml, long mId, int sort, boolean desc); + private native AbstractArtist[] nativeGetArtists(AbstractMedialibrary ml, long mId, int sort, boolean desc); + private native AbstractMediaWrapper[] nativeGetTracks(AbstractMedialibrary ml, long mId, int sort, boolean desc); + + private native AbstractAlbum[] nativeGetPagedAlbums(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native AbstractArtist[] nativeGetPagedArtists(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeGetPagedTracks(AbstractMedialibrary ml, long mId, int sort, boolean desc, int nbItems, int offset); + private native int nativeGetTracksCount(AbstractMedialibrary ml, long id); + private native int nativeGetAlbumsCount(AbstractMedialibrary ml, long mId); + private native int nativeGetArtistsCount(AbstractMedialibrary ml, long mId); + private native AbstractAlbum[] nativeSearchAlbums(AbstractMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); + private native AbstractMediaWrapper[] nativeSearch(AbstractMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); + private native int nativeGetSearchCount(AbstractMedialibrary ml, long mId, String query); + private native int nativeGetSearchAlbumCount(AbstractMedialibrary ml, long mId, String query); public Genre(Parcel in) { super(in); diff --git a/medialibrary/src/org/videolan/medialibrary/media/HistoryItem.java b/medialibrary/src/org/videolan/medialibrary/media/HistoryItem.java index 252066a783..048c3ca716 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/HistoryItem.java +++ b/medialibrary/src/org/videolan/medialibrary/media/HistoryItem.java @@ -6,7 +6,7 @@ import android.os.Parcel; import android.os.Parcelable; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import java.util.Date; @@ -22,15 +22,15 @@ public class HistoryItem extends MediaLibraryItem { this.insertionDate = insertionDate; } - public AMediaWrapper getMedia() { - AMediaWrapper mw = MLServiceLocator.getAMediaWrapper(Uri.parse(mrl)); + public AbstractMediaWrapper getMedia() { + AbstractMediaWrapper mw = MLServiceLocator.getAbstractMediaWrapper(Uri.parse(mrl)); mw.setTitle(title); - mw.setType(AMediaWrapper.TYPE_STREAM); + mw.setType(AbstractMediaWrapper.TYPE_STREAM); return mw; } @Override - public AMediaWrapper[] getTracks() { - return new AMediaWrapper[]{getMedia()}; + public AbstractMediaWrapper[] getTracks() { + return new AbstractMediaWrapper[]{getMedia()}; } @Override diff --git a/medialibrary/src/org/videolan/medialibrary/media/MediaLibraryItem.java b/medialibrary/src/org/videolan/medialibrary/media/MediaLibraryItem.java index 7c4b976951..8e215d622b 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/MediaLibraryItem.java +++ b/medialibrary/src/org/videolan/medialibrary/media/MediaLibraryItem.java @@ -4,7 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; public abstract class MediaLibraryItem implements Parcelable { @@ -31,7 +31,7 @@ public abstract class MediaLibraryItem implements Parcelable { Stream, } - public abstract AMediaWrapper[] getTracks(); + public abstract AbstractMediaWrapper[] getTracks(); public abstract int getTracksCount(); public abstract int getItemType(); @@ -123,7 +123,7 @@ public abstract class MediaLibraryItem implements Parcelable { if (getItemType() == TYPE_DUMMY) return TextUtils.equals(getTitle(), other.getTitle()); if (mId != 0) return mId == other.getId(); if (getItemType() == TYPE_MEDIA) - return TextUtils.equals(((AMediaWrapper)this).getLocation(), ((AMediaWrapper)other).getLocation()); + return TextUtils.equals(((AbstractMediaWrapper)this).getLocation(), ((AbstractMediaWrapper)other).getLocation()); if (getItemType() == TYPE_STORAGE) return TextUtils.equals(((Storage)this).getName(), ((Storage)other).getName()); return false; diff --git a/medialibrary/src/org/videolan/medialibrary/media/MediaWrapper.java b/medialibrary/src/org/videolan/medialibrary/media/MediaWrapper.java index 8e514fbc28..f320c40e42 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/MediaWrapper.java +++ b/medialibrary/src/org/videolan/medialibrary/media/MediaWrapper.java @@ -27,17 +27,15 @@ import android.net.Uri; import android.os.Parcel; import android.text.TextUtils; -import androidx.annotation.Nullable; - import org.videolan.libvlc.Media; import org.videolan.medialibrary.Tools; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import java.util.Locale; @SuppressWarnings("JniMissingFunction") -public class MediaWrapper extends AMediaWrapper { +public class MediaWrapper extends AbstractMediaWrapper { public final static String TAG = "VLC/MediaWrapper"; public MediaWrapper(long id, String mrl, long time, long length, int type, String title, @@ -63,13 +61,13 @@ public class MediaWrapper extends AMediaWrapper { public MediaWrapper(Parcel in) { super(in); } public void rename(String name) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); if (mId != 0 && ml.isInitiated()) nativeSetMediaTitle(ml, mId, name); } public void removeFromHistory() { if (mId != 0L) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); if (ml.isInitiated()) nativeRemoveFromHistory(ml, mId); } } @@ -220,24 +218,24 @@ public class MediaWrapper extends AMediaWrapper { } public long getMetaLong(int metaDataType) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return mId == 0 || !ml.isInitiated() ? 0L : nativeGetMediaLongMetadata(ml, mId, metaDataType); } public String getMetaString(int metaDataType) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return mId == 0 || !ml.isInitiated() ? null : nativeGetMediaStringMetadata(ml, mId, metaDataType); } public boolean setLongMeta(int metaDataType, long metadataValue) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); if (mId != 0 && ml.isInitiated()) nativeSetMediaLongMetadata(ml, mId, metaDataType, metadataValue); return mId != 0; } public boolean setStringMeta(int metaDataType, String metadataValue) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); if (mId != 0 && ml.isInitiated()) nativeSetMediaStringMetadata(ml, mId, metaDataType, metadataValue); return mId != 0; @@ -245,15 +243,15 @@ public class MediaWrapper extends AMediaWrapper { public void setThumbnail(String mrl) { mArtworkURL = mrl; - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); if (mId != 0 && ml.isInitiated()) nativeSetMediaThumbnail(ml, mId, Tools.encodeVLCMrl(mrl)); } - private native long nativeGetMediaLongMetadata(AMedialibrary ml, long id, int metaDataType); - private native String nativeGetMediaStringMetadata(AMedialibrary ml, long id, int metaDataType); - private native void nativeSetMediaStringMetadata(AMedialibrary ml, long id, int metaDataType, String metadataValue); - private native void nativeSetMediaLongMetadata(AMedialibrary ml, long id, int metaDataType, long metadataValue); - private native void nativeSetMediaThumbnail(AMedialibrary ml, long id, String mrl); - private native void nativeSetMediaTitle(AMedialibrary ml, long id, String name); - private native void nativeRemoveFromHistory(AMedialibrary ml, long id); + private native long nativeGetMediaLongMetadata(AbstractMedialibrary ml, long id, int metaDataType); + private native String nativeGetMediaStringMetadata(AbstractMedialibrary ml, long id, int metaDataType); + private native void nativeSetMediaStringMetadata(AbstractMedialibrary ml, long id, int metaDataType, String metadataValue); + private native void nativeSetMediaLongMetadata(AbstractMedialibrary ml, long id, int metaDataType, long metadataValue); + private native void nativeSetMediaThumbnail(AbstractMedialibrary ml, long id, String mrl); + private native void nativeSetMediaTitle(AbstractMedialibrary ml, long id, String name); + private native void nativeRemoveFromHistory(AbstractMedialibrary ml, long id); } diff --git a/medialibrary/src/org/videolan/medialibrary/media/Playlist.java b/medialibrary/src/org/videolan/medialibrary/media/Playlist.java index 088249709e..a5003a8f37 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/Playlist.java +++ b/medialibrary/src/org/videolan/medialibrary/media/Playlist.java @@ -2,14 +2,14 @@ package org.videolan.medialibrary.media; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import java.util.List; @SuppressWarnings("JniMissingFunction") -public class Playlist extends APlaylist { +public class Playlist extends AbstractPlaylist { public Playlist(long id, String name, int trackCount) { super(id, name, trackCount); @@ -20,34 +20,34 @@ public class Playlist extends APlaylist { } @Override - public AMediaWrapper[] getTracks() { - AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetTracks(ml, mId) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getTracks() { + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetTracks(ml, mId) : AbstractMedialibrary.EMPTY_COLLECTION; } - public AMediaWrapper[] getPagedTracks(int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeGetPagedTracks(ml, mId, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getPagedTracks(int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeGetPagedTracks(ml, mId, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int getRealTracksCount() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetTracksCount(ml, mId) : 0; } public boolean append(long mediaId) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() && nativePlaylistAppend(ml, mId, mediaId); } public boolean append(long[] mediaIds) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() && nativePlaylistAppendGroup(ml, mId, mediaIds); } public boolean append(List<Long> mediaIds) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); if (ml == null || !ml.isInitiated()) return false; long[] ids = new long[mediaIds.size()]; @@ -57,46 +57,46 @@ public class Playlist extends APlaylist { } public boolean add(long mediaId, int position) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() && nativePlaylistAdd(ml, mId, mediaId, position); } public boolean move(int oldPosition, int newPosition) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() && nativePlaylistMove(ml, mId, oldPosition, newPosition); } public boolean remove(int position) { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() && nativePlaylistRemove(ml, mId, position); } public boolean delete() { - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() && nativePlaylistDelete(ml, mId); } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - final AMedialibrary ml = AMedialibrary.getInstance(); - return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); + return ml.isInitiated() ? nativeSearch(ml, mId, query, sort, desc, nbItems, offset) : AbstractMedialibrary.EMPTY_COLLECTION; } public int searchTracksCount(String query) { - final AMedialibrary ml = AMedialibrary.getInstance(); + final AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.isInitiated() ? nativeGetSearchCount(ml, mId, query) : 0; } - private native AMediaWrapper[] nativeGetTracks(AMedialibrary ml, long id); - private native AMediaWrapper[] nativeGetPagedTracks(AMedialibrary ml, long id, int nbItems, int offset); - private native int nativeGetTracksCount(AMedialibrary ml, long id); - private native AMediaWrapper[] nativeSearch(AMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); - private native int nativeGetSearchCount(AMedialibrary ml, long mId, String query); - private native boolean nativePlaylistAppend(AMedialibrary ml, long id, long mediaId); - private native boolean nativePlaylistAppendGroup(AMedialibrary ml, long id, long[] mediaIds); - private native boolean nativePlaylistAdd(AMedialibrary ml, long id, long mediaId, int position); + private native AbstractMediaWrapper[] nativeGetTracks(AbstractMedialibrary ml, long id); + private native AbstractMediaWrapper[] nativeGetPagedTracks(AbstractMedialibrary ml, long id, int nbItems, int offset); + private native int nativeGetTracksCount(AbstractMedialibrary ml, long id); + private native AbstractMediaWrapper[] nativeSearch(AbstractMedialibrary ml, long mId, String query, int sort, boolean desc, int nbItems, int offset); + private native int nativeGetSearchCount(AbstractMedialibrary ml, long mId, String query); + private native boolean nativePlaylistAppend(AbstractMedialibrary ml, long id, long mediaId); + private native boolean nativePlaylistAppendGroup(AbstractMedialibrary ml, long id, long[] mediaIds); + private native boolean nativePlaylistAdd(AbstractMedialibrary ml, long id, long mediaId, int position); - private native boolean nativePlaylistMove(AMedialibrary ml, long id, int oldPosition, int position); + private native boolean nativePlaylistMove(AbstractMedialibrary ml, long id, int oldPosition, int position); - private native boolean nativePlaylistRemove(AMedialibrary ml, long id, int position); - private native boolean nativePlaylistDelete(AMedialibrary ml, long id); + private native boolean nativePlaylistRemove(AbstractMedialibrary ml, long id, int position); + private native boolean nativePlaylistDelete(AbstractMedialibrary ml, long id); } diff --git a/medialibrary/src/org/videolan/medialibrary/media/SearchAggregate.java b/medialibrary/src/org/videolan/medialibrary/media/SearchAggregate.java index 4384ec7e2d..ee64c9783a 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/SearchAggregate.java +++ b/medialibrary/src/org/videolan/medialibrary/media/SearchAggregate.java @@ -1,21 +1,21 @@ package org.videolan.medialibrary.media; import org.videolan.medialibrary.Tools; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; public class SearchAggregate { private static final String TAG = "VLC/SearchAggregate"; - private final AAlbum[] albums; - private final AArtist[] artists; - private final AGenre[] genres; - private final AMediaWrapper[] videos; - private final AMediaWrapper[] tracks; - private final APlaylist[] playlists; + private final AbstractAlbum[] albums; + private final AbstractArtist[] artists; + private final AbstractGenre[] genres; + private final AbstractMediaWrapper[] videos; + private final AbstractMediaWrapper[] tracks; + private final AbstractPlaylist[] playlists; public SearchAggregate() { this.albums = null; @@ -26,7 +26,7 @@ public class SearchAggregate { this.playlists = null; } - public SearchAggregate(AAlbum[] albums, AArtist[] artists, AGenre[] genres, AMediaWrapper[] videos, AMediaWrapper[] tracks, APlaylist[] playlists) { + public SearchAggregate(AbstractAlbum[] albums, AbstractArtist[] artists, AbstractGenre[] genres, AbstractMediaWrapper[] videos, AbstractMediaWrapper[] tracks, AbstractPlaylist[] playlists) { this.albums = albums; this.artists = artists; this.genres = genres; @@ -35,27 +35,27 @@ public class SearchAggregate { this.playlists = playlists; } - public AAlbum[] getAlbums() { + public AbstractAlbum[] getAlbums() { return albums; } - public AArtist[] getArtists() { + public AbstractArtist[] getArtists() { return artists; } - public AGenre[] getGenres() { + public AbstractGenre[] getGenres() { return genres; } - public AMediaWrapper[] getVideos() { + public AbstractMediaWrapper[] getVideos() { return videos; } - public AMediaWrapper[] getTracks() { + public AbstractMediaWrapper[] getTracks() { return tracks; } - public APlaylist[] getPlaylists() { + public AbstractPlaylist[] getPlaylists() { return playlists; } @@ -68,32 +68,32 @@ public class SearchAggregate { StringBuilder sb = new StringBuilder(); if (albums.length > 0) { sb.append("Albums:\n"); - for (AAlbum album : albums) + for (AbstractAlbum album : albums) sb.append(album.getTitle()).append("\n"); } if (artists.length > 0) { sb.append("Artists:\n"); - for (AArtist artist : artists) + for (AbstractArtist artist : artists) sb.append(artist.getTitle()).append("\n"); } if (genres.length > 0) { sb.append("Genres:\n"); - for (AGenre genre : genres) + for (AbstractGenre genre : genres) sb.append(genre.getTitle()).append("\n"); } if (tracks.length > 0) { sb.append("Tracks:\n"); - for (AMediaWrapper m : tracks) + for (AbstractMediaWrapper m : tracks) sb.append(m.getTitle()).append("\n"); } if (videos.length > 0) { sb.append("Videos:\n"); - for (AMediaWrapper m : videos) + for (AbstractMediaWrapper m : videos) sb.append(m.getTitle()).append("\n"); } if (playlists.length > 0) { sb.append("Playlists:\n"); - for (APlaylist playlist : playlists) + for (AbstractPlaylist playlist : playlists) sb.append(playlist.getTitle()).append("\n"); } return sb.toString(); diff --git a/medialibrary/src/org/videolan/medialibrary/media/Storage.java b/medialibrary/src/org/videolan/medialibrary/media/Storage.java index d78ba38f1d..0799cead8f 100644 --- a/medialibrary/src/org/videolan/medialibrary/media/Storage.java +++ b/medialibrary/src/org/videolan/medialibrary/media/Storage.java @@ -6,8 +6,8 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; public class Storage extends MediaLibraryItem { @@ -15,8 +15,8 @@ public class Storage extends MediaLibraryItem { String description; @Override - public AMediaWrapper[] getTracks() { - return AMedialibrary.EMPTY_COLLECTION; + public AbstractMediaWrapper[] getTracks() { + return AbstractMedialibrary.EMPTY_COLLECTION; } @Override diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubAlbum.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubAlbum.java index 7f753d4d4e..a9c67d411b 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubAlbum.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubAlbum.java @@ -2,14 +2,14 @@ package org.videolan.medialibrary.stubs; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import java.util.ArrayList; -public class StubAlbum extends AAlbum { +public class StubAlbum extends AbstractAlbum { private StubDataSource dt = StubDataSource.getInstance(); @@ -23,36 +23,36 @@ public class StubAlbum extends AAlbum { public int getRealTracksCount() { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getAlbum().equals(this.getTitle())) count++; } return count; } - public AArtist getAlbumArtist() { - AMedialibrary ml = AMedialibrary.getInstance(); + public AbstractArtist getAlbumArtist() { + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); return ml.getArtist(this.albumArtistId); } - private ArrayList<AMediaWrapper> getAlbumTracks() { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + private ArrayList<AbstractMediaWrapper> getAlbumTracks() { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getAlbum().equals(this.getTitle())) results.add(media); } return results; } - public AMediaWrapper[] getTracks(int sort, boolean desc) { + public AbstractMediaWrapper[] getTracks(int sort, boolean desc) { return dt.sortMedia(getAlbumTracks(), sort, desc); } - public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { + public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { return dt.sortMedia(dt.secureSublist(getAlbumTracks(), offset, offset + nbItems), sort, desc); } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getAlbum().equals(this.getTitle()) || media.getTitle().contains(query)) { results.add(media); @@ -63,7 +63,7 @@ public class StubAlbum extends AAlbum { public int searchTracksCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getAlbum().equals(this.getTitle()) || media.getTitle().contains(query)) { count++; diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubArtist.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubArtist.java index 834fe452ec..46f7cbb6d4 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubArtist.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubArtist.java @@ -2,14 +2,14 @@ package org.videolan.medialibrary.stubs; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import java.util.ArrayList; import java.util.Arrays; -public class StubArtist extends AArtist { +public class StubArtist extends AbstractArtist { private StubDataSource dt = StubDataSource.getInstance(); @@ -21,9 +21,9 @@ public class StubArtist extends AArtist { super(in); } - public AAlbum[] getAlbums(int sort, boolean desc) { - ArrayList<AAlbum> results = new ArrayList<>(); - for (AAlbum album : dt.mAlbums) { + public AbstractAlbum[] getAlbums(int sort, boolean desc) { + ArrayList<AbstractAlbum> results = new ArrayList<>(); + for (AbstractAlbum album : dt.mAlbums) { if (album.getDescription().equals(this.getTitle())) results.add(album); } return dt.sortAlbum(results, sort, desc); @@ -31,20 +31,20 @@ public class StubArtist extends AArtist { public int getAlbumsCount() { int count = 0; - for (AAlbum album : dt.mAlbums) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getDescription().equals(this.getTitle())) count++; } return count; } - public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { - ArrayList<AAlbum> results = new ArrayList<>(Arrays.asList(getAlbums(sort, desc))); - return results.toArray(new AAlbum[0]); + public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractAlbum> results = new ArrayList<>(Arrays.asList(getAlbums(sort, desc))); + return results.toArray(new AbstractAlbum[0]); } - public AAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AAlbum> results = new ArrayList<>(); - for (AAlbum album : dt.mAlbums) { + public AbstractAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractAlbum> results = new ArrayList<>(); + for (AbstractAlbum album : dt.mAlbums) { if (album.getDescription().equals(this.getTitle()) || album.getTitle().equals(query)) { results.add(album); @@ -55,7 +55,7 @@ public class StubArtist extends AArtist { public int searchAlbumsCount(String query) { int count = 0; - for (AAlbum album : dt.mAlbums) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getDescription().equals(this.getTitle()) || album.getTitle().equals(query)) { count++; @@ -67,7 +67,7 @@ public class StubArtist extends AArtist { //TODO checkout if query is on artist or albumArtist or both public int searchTracksCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getArtist().equals(this.getTitle()) || media.getAlbumArtist().equals(this.getTitle()) || media.getTitle().contains(query)) { @@ -78,9 +78,9 @@ public class StubArtist extends AArtist { } //TODO checkout if query is on artist or albumArtist or both (same as above) - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getArtist().equals(this.getTitle()) || media.getAlbumArtist().equals(this.getTitle()) || media.getTitle().contains(query)) { @@ -90,9 +90,9 @@ public class StubArtist extends AArtist { return dt.sortMedia(dt.secureSublist(results, offset, offset + nbItems), sort, desc); } - public AMediaWrapper[] getTracks(int sort, boolean desc) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] getTracks(int sort, boolean desc) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getArtist().equals(this.getTitle()) || media.getAlbumArtist().equals(this.getTitle())) { results.add(media); @@ -101,9 +101,9 @@ public class StubArtist extends AArtist { return dt.sortMedia(results, sort, desc); } - public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getArtist().equals(this.getTitle()) || media.getAlbumArtist().equals(this.getTitle())) { results.add(media); @@ -114,7 +114,7 @@ public class StubArtist extends AArtist { public int getTracksCount() { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getArtist().equals(this.getTitle()) || media.getAlbumArtist().equals(this.getTitle())) { count++; diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java index 38ba041b03..a7d50eb3e3 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java @@ -3,12 +3,12 @@ package org.videolan.medialibrary.stubs; import android.text.TextUtils; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import org.videolan.medialibrary.media.MediaLibraryItem; import java.util.ArrayList; @@ -17,28 +17,28 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_ALBUM; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_ALPHA; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_ARTIST; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_DEFAULT; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_DURATION; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_FILENAME; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_INSERTIONDATE; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_LASTMODIFICATIONDATE; -import static org.videolan.medialibrary.interfaces.AMedialibrary.SORT_RELEASEDATE; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_ALBUM; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_ALPHA; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_ARTIST; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_DEFAULT; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_DURATION; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_FILENAME; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_INSERTIONDATE; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_LASTMODIFICATIONDATE; +import static org.videolan.medialibrary.interfaces.AbstractMedialibrary.SORT_RELEASEDATE; public class StubDataSource { - ArrayList<AMediaWrapper> mVideoMediaWrappers = new ArrayList<>(); - ArrayList<AMediaWrapper> mAudioMediaWrappers = new ArrayList<>(); - ArrayList<AMediaWrapper> mStreamMediaWrappers = new ArrayList<>(); - ArrayList<AMediaWrapper> mHistory = new ArrayList<>(); - ArrayList<AAlbum> mAlbums = new ArrayList<>(); - ArrayList<AArtist> mArtists = new ArrayList<>(); - ArrayList<AGenre> mGenres = new ArrayList<>(); - ArrayList<APlaylist> mPlaylists = new ArrayList<>(); + ArrayList<AbstractMediaWrapper> mVideoMediaWrappers = new ArrayList<>(); + ArrayList<AbstractMediaWrapper> mAudioMediaWrappers = new ArrayList<>(); + ArrayList<AbstractMediaWrapper> mStreamMediaWrappers = new ArrayList<>(); + ArrayList<AbstractMediaWrapper> mHistory = new ArrayList<>(); + ArrayList<AbstractAlbum> mAlbums = new ArrayList<>(); + ArrayList<AbstractArtist> mArtists = new ArrayList<>(); + ArrayList<AbstractGenre> mGenres = new ArrayList<>(); + ArrayList<AbstractPlaylist> mPlaylists = new ArrayList<>(); ArrayList<String> mBannedFolders = new ArrayList<>(); - ArrayList<AFolder> mFolders = new ArrayList<>(); + ArrayList<AbstractFolder> mFolders = new ArrayList<>(); ArrayList<String> mDevices = new ArrayList<>(); private static long uuid = 2; @@ -56,25 +56,25 @@ public class StubDataSource { public void init() { String baseMrl = "/storage/emulated/0/Movies/"; - AMediaWrapper media; + AbstractMediaWrapper media; // Video String fileName = "058_foar_everywun_frum_boxxy.flv"; - media = MLServiceLocator.getAMediaWrapper(getUUID(), baseMrl + fileName, 0L, 18820L, 0, + media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), baseMrl + fileName, 0L, 18820L, 0, fileName, fileName, "", "", "", "", 416, 304, "", 0, -2, 0, 0, 1509466228L, 0L, true); addVideo(media); fileName = "FMA - MultiChapter.mkv"; - media = MLServiceLocator.getAMediaWrapper(getUUID(), baseMrl + fileName, 0L, 1467383L, 0, + media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), baseMrl + fileName, 0L, 1467383L, 0, "Encoded with MiniCoder", fileName, "", "", "", "", 1280, 720, "", 0, -2, 0, 0, 1512396147L, 0L, true); addVideo(media); fileName = "114_My_Heart_Will_Go_On.avi"; - media = MLServiceLocator.getAMediaWrapper(getUUID(), baseMrl + fileName, 0L, 20000L, 0, + media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), baseMrl + fileName, 0L, 20000L, 0, "My Heart Will Go On - Celine Dion", fileName, "", "", "", "", 352, 220, "", 0, -2, 0, 0, 1509465852L, 0L, true); @@ -84,7 +84,7 @@ public class StubDataSource { fileName = "01-Show Me The Way.mp3"; baseMrl = "/storage/emulated/0/Music/Peter Frampton/Shine On - CD2/"; - media = MLServiceLocator.getAMediaWrapper(getUUID(), baseMrl + fileName, 0L, 280244L, 1, + media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), baseMrl + fileName, 0L, 280244L, 1, "01-Show Me The Way", fileName, "Peter Frampton", "Rock", "Shine On CD2", "Peter Frampton", 0, 0, "/storage/emulated/0/Music/Peter Frampton/Shine On - CD2/Folder.jpg", @@ -94,7 +94,7 @@ public class StubDataSource { fileName = "01-Wind Of Change.mp3"; baseMrl = "/storage/emulated/0/Music/Peter Frampton/Shine On - CD1/"; - media = MLServiceLocator.getAMediaWrapper(getUUID(), baseMrl + fileName, 0L, 184271L, 1, + media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), baseMrl + fileName, 0L, 184271L, 1, "01-Wind Of Change", fileName, "Peter Frampton", "Rock", "Shine On CD1", "Peter Frampton", 0, 0, "/storage/emulated/0/Music/Peter Frampton/Shine On - CD1/Folder.jpg", @@ -104,7 +104,7 @@ public class StubDataSource { fileName = "03 Bloody Well Right.wma"; baseMrl = "/storage/emulated/0/Music/Supertramp/Best of/"; - media = MLServiceLocator.getAMediaWrapper(getUUID(), baseMrl + fileName, 0L, 257199L, 1, + media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), baseMrl + fileName, 0L, 257199L, 1, "Bloody Well Right", fileName, "Supertramp", "Rock", "The Autobiography of Supertramp", "Supertramp", 0, 0, "/storage/emulated/0/Music/Supertramp/Best of/Folder.jpg", 0, @@ -121,12 +121,12 @@ public class StubDataSource { return list.subList(secureOffset, secureEnd); } - class MediaComparator implements Comparator<AMediaWrapper> { + class MediaComparator implements Comparator<AbstractMediaWrapper> { private int sort; MediaComparator(int sort) { this.sort = sort; } @Override //TODO checkout if types of sort are verified before being used in native - public int compare(AMediaWrapper o1, AMediaWrapper o2) { + public int compare(AbstractMediaWrapper o1, AbstractMediaWrapper o2) { switch(sort) { case SORT_DEFAULT: case SORT_ALPHA: return o1.getTitle().compareTo(o2.getTitle()); @@ -140,12 +140,12 @@ public class StubDataSource { } } - class ArtistComparator implements Comparator<AArtist> { + class ArtistComparator implements Comparator<AbstractArtist> { private int sort; ArtistComparator(int sort) { this.sort = sort; } @Override - public int compare(AArtist o1, AArtist o2) { + public int compare(AbstractArtist o1, AbstractArtist o2) { switch(sort) { case SORT_DEFAULT: case SORT_ARTIST: return o1.getTitle().compareTo(o2.getTitle()); @@ -154,12 +154,12 @@ public class StubDataSource { } } - class AlbumComparator implements Comparator<AAlbum> { + class AlbumComparator implements Comparator<AbstractAlbum> { private int sort; AlbumComparator(int sort) { this.sort = sort; } @Override - public int compare(AAlbum o1, AAlbum o2) { + public int compare(AbstractAlbum o1, AbstractAlbum o2) { switch (sort) { case SORT_DEFAULT: case SORT_ALBUM: return o1.getTitle().compareTo(o2.getTitle()); @@ -170,12 +170,12 @@ public class StubDataSource { } } - class GenreComparator implements Comparator<AGenre> { + class GenreComparator implements Comparator<AbstractGenre> { private int sort; GenreComparator(int sort) { this.sort = sort; } @Override - public int compare(AGenre o1, AGenre o2) { + public int compare(AbstractGenre o1, AbstractGenre o2) { switch(sort) { case SORT_DEFAULT: case SORT_ALPHA: return o1.getTitle().compareTo(o2.getTitle()); @@ -184,12 +184,12 @@ public class StubDataSource { } } - class PlaylistComparator implements Comparator<APlaylist> { + class PlaylistComparator implements Comparator<AbstractPlaylist> { private int sort; PlaylistComparator(int sort) { this.sort = sort; } @Override - public int compare(APlaylist o1, APlaylist o2) { + public int compare(AbstractPlaylist o1, AbstractPlaylist o2) { switch (sort) { case SORT_DEFAULT: case SORT_ALPHA: return o1.getTitle().compareTo(o2.getTitle()); @@ -199,12 +199,12 @@ public class StubDataSource { } } - class FolderComparator implements Comparator<AFolder> { + class FolderComparator implements Comparator<AbstractFolder> { private int sort; FolderComparator(int sort) { this.sort = sort; } @Override - public int compare(AFolder o1, AFolder o2) { + public int compare(AbstractFolder o1, AbstractFolder o2) { switch (sort) { case SORT_DEFAULT: case SORT_ALPHA: return o1.getTitle().compareTo(o2.getTitle()); @@ -213,52 +213,52 @@ public class StubDataSource { } } - AMediaWrapper[] sortMedia(List<AMediaWrapper> arrayList, int sort, boolean desc) { - List<AMediaWrapper> array = new ArrayList<>(arrayList); + AbstractMediaWrapper[] sortMedia(List<AbstractMediaWrapper> arrayList, int sort, boolean desc) { + List<AbstractMediaWrapper> array = new ArrayList<>(arrayList); Collections.sort(array, new MediaComparator(sort)); if (desc) Collections.reverse(array); - return array.toArray(new AMediaWrapper[0]); + return array.toArray(new AbstractMediaWrapper[0]); } - AAlbum[] sortAlbum(List<AAlbum> arrayList, int sort, boolean desc) { - List<AAlbum> array = new ArrayList<>(arrayList); + AbstractAlbum[] sortAlbum(List<AbstractAlbum> arrayList, int sort, boolean desc) { + List<AbstractAlbum> array = new ArrayList<>(arrayList); Collections.sort(array, new AlbumComparator(sort)); if (desc) Collections.reverse(array); - return array.toArray(new AAlbum[0]); + return array.toArray(new AbstractAlbum[0]); } - AArtist[] sortArtist(List<AArtist> arrayList, int sort, boolean desc) { - List<AArtist> array = new ArrayList<>(arrayList); + AbstractArtist[] sortArtist(List<AbstractArtist> arrayList, int sort, boolean desc) { + List<AbstractArtist> array = new ArrayList<>(arrayList); Collections.sort(array, new ArtistComparator(sort)); if (desc) Collections.reverse(array); - return array.toArray(new AArtist[0]); + return array.toArray(new AbstractArtist[0]); } - AGenre[] sortGenre(List<AGenre> arrayList, int sort, boolean desc) { - List<AGenre> array = new ArrayList<>(arrayList); + AbstractGenre[] sortGenre(List<AbstractGenre> arrayList, int sort, boolean desc) { + List<AbstractGenre> array = new ArrayList<>(arrayList); Collections.sort(array, new GenreComparator(sort)); if (desc) Collections.reverse(array); - return array.toArray(new AGenre[0]); + return array.toArray(new AbstractGenre[0]); } - APlaylist[] sortPlaylist(List<APlaylist> arrayList, int sort, boolean desc) { - List<APlaylist> array = new ArrayList<>(arrayList); + AbstractPlaylist[] sortPlaylist(List<AbstractPlaylist> arrayList, int sort, boolean desc) { + List<AbstractPlaylist> array = new ArrayList<>(arrayList); Collections.sort(array, new PlaylistComparator(sort)); if (desc) Collections.reverse(array); - return array.toArray(new APlaylist[0]); + return array.toArray(new AbstractPlaylist[0]); } - AFolder[] sortFolder(List<AFolder> arrayList, int sort, boolean desc) { - List<AFolder> array = new ArrayList<>(arrayList); + AbstractFolder[] sortFolder(List<AbstractFolder> arrayList, int sort, boolean desc) { + List<AbstractFolder> array = new ArrayList<>(arrayList); Collections.sort(array, new FolderComparator(sort)); if (desc) Collections.reverse(array); - return array.toArray(new AFolder[0]); + return array.toArray(new AbstractFolder[0]); } private boolean checkUuidForMatches(long id) { @@ -296,49 +296,49 @@ public class StubDataSource { return uuid; } - private void addAudio(AMediaWrapper media, String shortBio, int releaseYear, int albumDuration) { + private void addAudio(AbstractMediaWrapper media, String shortBio, int releaseYear, int albumDuration) { addFolders(media); mAudioMediaWrappers.add(media); - AArtist artist = MLServiceLocator.getAArtist(getUUID(), media.getArtist(), shortBio, media.getArtworkMrl(), ""); + AbstractArtist artist = MLServiceLocator.getAbstractArtist(getUUID(), media.getArtist(), shortBio, media.getArtworkMrl(), ""); mArtists.add(artist); - AArtist albumArtist = null; + AbstractArtist albumArtist = null; if (!media.getArtist().equals(media.getAlbumArtist())) { - albumArtist = MLServiceLocator.getAArtist(getUUID(), media.getAlbumArtist(), "", media.getArtworkMrl(), ""); + albumArtist = MLServiceLocator.getAbstractArtist(getUUID(), media.getAlbumArtist(), "", media.getArtworkMrl(), ""); mArtists.add(albumArtist); } - AAlbum album; + AbstractAlbum album; if (albumArtist == null) - album = MLServiceLocator.getAAlbum(getUUID(), media.getAlbum(), releaseYear, + album = MLServiceLocator.getAbstractAlbum(getUUID(), media.getAlbum(), releaseYear, media.getArtworkMrl(), artist.getTitle(), artist.getId(), media.getTracks().length, albumDuration); else - album = MLServiceLocator.getAAlbum(getUUID(), media.getAlbum(), releaseYear, + album = MLServiceLocator.getAbstractAlbum(getUUID(), media.getAlbum(), releaseYear, media.getArtworkMrl(), albumArtist.getTitle(), albumArtist.getId(), media.getTracks().length, albumDuration); mAlbums.add(album); ArrayList genreStrings = new ArrayList<>(); // if (!getGenresString()) - mGenres.add(MLServiceLocator.getAGenre(getUUID(), media.getGenre())); + mGenres.add(MLServiceLocator.getAbstractGenre(getUUID(), media.getGenre())); } - private void addVideo(AMediaWrapper media) { + private void addVideo(AbstractMediaWrapper media) { addFolders(media); mVideoMediaWrappers.add(media); } private String[] getGenresString() { ArrayList<String> results = new ArrayList<>(); - for (AGenre genre : mGenres) { results.add(genre.getTitle()); } + for (AbstractGenre genre : mGenres) { results.add(genre.getTitle()); } return results.toArray(new String[0]); } private String[] getFoldersString() { ArrayList<String> results = new ArrayList<>(); - for (AFolder folder : mFolders) { results.add(folder.getTitle()); } + for (AbstractFolder folder : mFolders) { results.add(folder.getTitle()); } return results.toArray(new String[0]); } - private void addFolders(AMediaWrapper media) { + private void addFolders(AbstractMediaWrapper media) { String path = media.getUri().getPath(); if (path == null) return; @@ -349,7 +349,7 @@ public class StubDataSource { ArrayList<String> mlFolders = new ArrayList<>(Arrays.asList(getFoldersString())); if (!mlFolders.contains(mrl)) { final String name = folderArray[folderArray.length - 1]; - mFolders.add(MLServiceLocator.getAFolder(getUUID(), name, mrl)); + mFolders.add(MLServiceLocator.getAbstractFolder(getUUID(), name, mrl)); } } } diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubFolder.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubFolder.java index 004512a72e..13471c3aff 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubFolder.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubFolder.java @@ -2,14 +2,14 @@ package org.videolan.medialibrary.stubs; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import java.io.File; import java.util.ArrayList; import java.util.Arrays; -public class StubFolder extends AFolder { +public class StubFolder extends AbstractFolder { private StubDataSource dt = StubDataSource.getInstance(); @@ -29,71 +29,71 @@ public class StubFolder extends AFolder { } //TODO WTF would media be null ?? - public AMediaWrapper[] media(int type, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - ArrayList<AMediaWrapper> source; + public AbstractMediaWrapper[] media(int type, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + ArrayList<AbstractMediaWrapper> source; if (type == TYPE_FOLDER_VIDEO) source = dt.mVideoMediaWrappers; else if (type == TYPE_FOLDER_AUDIO) source = dt.mAudioMediaWrappers; else return null; - for (AMediaWrapper media : source) { + for (AbstractMediaWrapper media : source) { if (isParentFolder(this.mMrl, media.getUri().getPath())) results.add(media); } results = new ArrayList<>(Arrays.asList(dt.sortMedia(results, sort, desc))); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AMediaWrapper[0]); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractMediaWrapper[0]); } public int mediaCount(int type) { int count = 0; - ArrayList<AMediaWrapper> source; + ArrayList<AbstractMediaWrapper> source; if (type == TYPE_FOLDER_VIDEO) source = dt.mVideoMediaWrappers; else if (type == TYPE_FOLDER_AUDIO) source = dt.mAudioMediaWrappers; else return 0; - for (AMediaWrapper media : source) { + for (AbstractMediaWrapper media : source) { if (isParentFolder(this.mMrl, media.getUri().getPath())) count++; } return count; } - public AFolder[] subfolders(int sort, boolean desc, int nbItems, int offset) { - ArrayList<AFolder> results = new ArrayList<>(); - for (AFolder folder : dt.mFolders) { + public AbstractFolder[] subfolders(int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractFolder> results = new ArrayList<>(); + for (AbstractFolder folder : dt.mFolders) { if (isParentFolder(this.mMrl, folder.mMrl)) results.add(folder); } results = new ArrayList<>(Arrays.asList(dt.sortFolder(results, sort, desc))); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AFolder[0]); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractFolder[0]); } public int subfoldersCount(int type) { int count = 0; - for (AFolder folder : dt.mFolders) { + for (AbstractFolder folder : dt.mFolders) { if (isParentFolder(this.mMrl, folder.mMrl)) count++; } return count; } - public AMediaWrapper[] searchTracks(String query, int mediaType, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - ArrayList<AMediaWrapper> source; + public AbstractMediaWrapper[] searchTracks(String query, int mediaType, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + ArrayList<AbstractMediaWrapper> source; if (mediaType == TYPE_FOLDER_VIDEO) source = dt.mVideoMediaWrappers; else if (mediaType == TYPE_FOLDER_AUDIO) source = dt.mAudioMediaWrappers; else return null; - for (AMediaWrapper media : source) { + for (AbstractMediaWrapper media : source) { if (media.getTitle().contains(query) && isParentFolder(this.mMrl, media.getUri().getPath())) { results.add(media); } } results = new ArrayList<>(Arrays.asList(dt.sortMedia(results, sort, desc))); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AMediaWrapper[0]); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractMediaWrapper[0]); } public int searchTracksCount(String query, int mediaType) { int count = 0; - ArrayList<AMediaWrapper> source; + ArrayList<AbstractMediaWrapper> source; if (mediaType == TYPE_FOLDER_VIDEO) source = dt.mVideoMediaWrappers; else if (mediaType == TYPE_FOLDER_AUDIO) source = dt.mAudioMediaWrappers; else return 0; - for (AMediaWrapper media : source) { + for (AbstractMediaWrapper media : source) { if (media.getTitle().contains(query) && isParentFolder(this.mMrl, media.getUri().getPath())) count++; } diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubGenre.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubGenre.java index 3bd862e5ad..f89d11c9eb 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubGenre.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubGenre.java @@ -2,26 +2,26 @@ package org.videolan.medialibrary.stubs; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import java.util.ArrayList; import java.util.Arrays; -public class StubGenre extends AGenre { +public class StubGenre extends AbstractGenre { private StubDataSource dt = StubDataSource.getInstance(); public StubGenre(long id, String title) { super(id, title); } public StubGenre(Parcel in) { super(in); } - public AAlbum[] getAlbums(int sort, boolean desc) { - ArrayList<AAlbum> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractAlbum[] getAlbums(int sort, boolean desc) { + ArrayList<AbstractAlbum> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle())) { - for (AAlbum album : dt.mAlbums) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getTitle().equals(media.getAlbum()) && !results.contains(album)) { results.add(album); @@ -32,9 +32,9 @@ public class StubGenre extends AGenre { return dt.sortAlbum(results, sort, desc); } - public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { - ArrayList<AAlbum> results = new ArrayList<>(Arrays.asList(getAlbums(sort, desc))); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AAlbum[0]); + public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractAlbum> results = new ArrayList<>(Arrays.asList(getAlbums(sort, desc))); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractAlbum[0]); } @Override @@ -42,12 +42,12 @@ public class StubGenre extends AGenre { return getAlbums().length; } - public AAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AAlbum> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractAlbum[] searchAlbums(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractAlbum> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle()) && media.getTitle().contains(query)) { - for (AAlbum album : dt.mAlbums) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getTitle().equals(media.getAlbum()) && !results.contains(album)) { results.add(album); @@ -56,15 +56,15 @@ public class StubGenre extends AGenre { } } results = new ArrayList<>(Arrays.asList(dt.sortAlbum(results, sort, desc))); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AAlbum[0]); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractAlbum[0]); } public int searchAlbumsCount(String query) { - ArrayList<AAlbum> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + ArrayList<AbstractAlbum> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle()) && media.getTitle().contains(query)) { - for (AAlbum album : dt.mAlbums) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getTitle().equals(media.getAlbum()) && !results.contains(album)) { results.add(album); @@ -75,11 +75,11 @@ public class StubGenre extends AGenre { return results.size(); } - public AArtist[] getArtists(int sort, boolean desc) { - ArrayList<AArtist> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractArtist[] getArtists(int sort, boolean desc) { + ArrayList<AbstractArtist> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle())) { - for (AArtist artist : dt.mArtists) { + for (AbstractArtist artist : dt.mArtists) { if ((artist.getTitle().equals(media.getArtist()) || artist.getTitle().equals(media.getAlbumArtist())) && !results.contains(artist)) { @@ -92,17 +92,17 @@ public class StubGenre extends AGenre { return dt.sortArtist(results, sort, desc); } - public AMediaWrapper[] getTracks(int sort, boolean desc) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] getTracks(int sort, boolean desc) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle())) results.add(media); } return dt.sortMedia(results, sort, desc); } - public AMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] getPagedTracks(int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle())) results.add(media); } return dt.sortMedia(dt.secureSublist(results, offset, offset + nbItems), sort, desc); @@ -110,16 +110,16 @@ public class StubGenre extends AGenre { public int getTracksCount() { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle())) count++; } return count; } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle()) && media.getTitle().contains(query)) { results.add(media); @@ -130,7 +130,7 @@ public class StubGenre extends AGenre { public int searchTracksCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getGenre().equals(this.getTitle()) && media.getTitle().contains(query)) { count++; diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java index 3478136717..6c35c93b63 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java @@ -6,9 +6,9 @@ import android.os.Parcel; import android.util.SparseArray; import org.videolan.libvlc.Media; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; -public class StubMediaWrapper extends AMediaWrapper { +public class StubMediaWrapper extends AbstractMediaWrapper { public StubMediaWrapper(long id, String mrl, long time, long length, int type, String title, String filename, String artist, String genre, String album, String albumArtist, int width, int height, String artworkURL, int audio, int spu, int trackNumber, diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java index 113e7008be..c095083e23 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java @@ -7,19 +7,19 @@ import android.util.Log; import androidx.annotation.NonNull; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AAlbum; -import org.videolan.medialibrary.interfaces.media.AArtist; -import org.videolan.medialibrary.interfaces.media.AFolder; -import org.videolan.medialibrary.interfaces.media.AGenre; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractAlbum; +import org.videolan.medialibrary.interfaces.media.AbstractArtist; +import org.videolan.medialibrary.interfaces.media.AbstractFolder; +import org.videolan.medialibrary.interfaces.media.AbstractGenre; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import org.videolan.medialibrary.media.SearchAggregate; import java.util.ArrayList; import java.util.Arrays; -public class StubMedialibrary extends AMedialibrary { +public class StubMedialibrary extends AbstractMedialibrary { private StubDataSource dt = StubDataSource.getInstance(); private String TAG = this.getClass().getName(); @@ -72,50 +72,50 @@ public class StubMedialibrary extends AMedialibrary { public String[] getFoldersList() { ArrayList<String> results = new ArrayList<>(); - for (AFolder folder : dt.mFolders) { + for (AbstractFolder folder : dt.mFolders) { results.add(folder.getTitle()); } return results.toArray(new String[0]); } - public AMediaWrapper[] getVideos() { + public AbstractMediaWrapper[] getVideos() { return getVideos(SORT_DEFAULT, false); } //TODO sublist of sorted result ... - public AMediaWrapper[] getPagedVideos(int sort, boolean desc, int nbItems, int offset) { + public AbstractMediaWrapper[] getPagedVideos(int sort, boolean desc, int nbItems, int offset) { return dt.sortMedia(dt.secureSublist(dt.mVideoMediaWrappers, offset, offset + nbItems), sort, desc); } - public AMediaWrapper[] getVideos(int sort, boolean desc) { + public AbstractMediaWrapper[] getVideos(int sort, boolean desc) { return dt.sortMedia(dt.mVideoMediaWrappers, sort, desc); } - public AMediaWrapper[] getRecentVideos() { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mVideoMediaWrappers) { - if (media.getItemType() == AMediaWrapper.TYPE_VIDEO) results.add(media); + public AbstractMediaWrapper[] getRecentVideos() { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { + if (media.getItemType() == AbstractMediaWrapper.TYPE_VIDEO) results.add(media); } - return results.toArray(new AMediaWrapper[0]); + return results.toArray(new AbstractMediaWrapper[0]); } - public AMediaWrapper[] getAudio() { + public AbstractMediaWrapper[] getAudio() { return getAudio(SORT_DEFAULT, false); } - public AMediaWrapper[] getAudio(int sort, boolean desc) { + public AbstractMediaWrapper[] getAudio(int sort, boolean desc) { return dt.sortMedia(dt.mAudioMediaWrappers, sort, desc); } - public AMediaWrapper[] getPagedAudio(int sort, boolean desc, int nbitems, int offset) { + public AbstractMediaWrapper[] getPagedAudio(int sort, boolean desc, int nbitems, int offset) { return dt.sortMedia(dt.secureSublist(dt.mAudioMediaWrappers, offset, offset + nbitems), sort, desc); } - public AMediaWrapper[] getRecentAudio() { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mVideoMediaWrappers) { - if (media.getItemType() == AMediaWrapper.TYPE_AUDIO) results.add(media); + public AbstractMediaWrapper[] getRecentAudio() { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { + if (media.getItemType() == AbstractMediaWrapper.TYPE_AUDIO) results.add(media); } - return results.toArray(new AMediaWrapper[0]); + return results.toArray(new AbstractMediaWrapper[0]); } public int getVideoCount() { @@ -126,15 +126,15 @@ public class StubMedialibrary extends AMedialibrary { return dt.mAudioMediaWrappers.size(); } - public AAlbum[] getAlbums() { + public AbstractAlbum[] getAlbums() { return getAlbums(SORT_DEFAULT, false); } - public AAlbum[] getAlbums(int sort, boolean desc) { + public AbstractAlbum[] getAlbums(int sort, boolean desc) { return dt.sortAlbum(dt.mAlbums, sort, desc); } - public AAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { + public AbstractAlbum[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset) { return dt.sortAlbum(dt.secureSublist(dt.mAlbums, offset, offset + nbItems), sort, desc); } @@ -144,40 +144,40 @@ public class StubMedialibrary extends AMedialibrary { public int getAlbumsCount(String query) { int count = 0; - for (AAlbum album : dt.mAlbums) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getTitle().contains(query)) count++; } return count; } - public AAlbum getAlbum(long albumId) { - for (AAlbum album : dt.mAlbums) { + public AbstractAlbum getAlbum(long albumId) { + for (AbstractAlbum album : dt.mAlbums) { if (album.getId() == albumId) return album; } return null; } - public AArtist[] getArtists(boolean all) { + public AbstractArtist[] getArtists(boolean all) { return getArtists(all, SORT_DEFAULT, false); } - private AArtist[] getAlbumArtists() { - ArrayList<AArtist> results = new ArrayList<>(); - for (AAlbum album : dt.mAlbums) { + private AbstractArtist[] getAlbumArtists() { + ArrayList<AbstractArtist> results = new ArrayList<>(); + for (AbstractAlbum album : dt.mAlbums) { results.add(album.getAlbumArtist()); } - return results.toArray(new AArtist[0]); + return results.toArray(new AbstractArtist[0]); } - public AArtist[] getArtists(boolean all, int sort, boolean desc) { - ArrayList<AArtist> results; + public AbstractArtist[] getArtists(boolean all, int sort, boolean desc) { + ArrayList<AbstractArtist> results; if (all) results = dt.mArtists; else results = new ArrayList<>(Arrays.asList(getAlbumArtists())); return dt.sortArtist(results, sort, desc); } - public AArtist[] getPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AArtist> results; + public AbstractArtist[] getPagedArtists(boolean all, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractArtist> results; if (all) results = dt.mArtists; else results = new ArrayList<>(Arrays.asList(getAlbumArtists())); return dt.sortArtist(dt.secureSublist(results, offset, offset + nbItems), sort, desc); @@ -192,28 +192,28 @@ public class StubMedialibrary extends AMedialibrary { public int getArtistsCount(String query) { int count = 0; - for (AArtist artist : dt.mArtists) { + for (AbstractArtist artist : dt.mArtists) { if (artist.getTitle().contains(query)) count++; } return count; } - public AArtist getArtist(long artistId) { - for (AArtist artist : dt.mArtists) { + public AbstractArtist getArtist(long artistId) { + for (AbstractArtist artist : dt.mArtists) { if (artist.getId() == artistId) return artist; } return null; } - public AGenre[] getGenres() { - return dt.mGenres.toArray(new AGenre[0]); + public AbstractGenre[] getGenres() { + return dt.mGenres.toArray(new AbstractGenre[0]); } - public AGenre[] getGenres(int sort, boolean desc) { + public AbstractGenre[] getGenres(int sort, boolean desc) { return dt.sortGenre(dt.mGenres, sort, desc); } - public AGenre[] getPagedGenres(int sort, boolean desc, int nbItems, int offset) { + public AbstractGenre[] getPagedGenres(int sort, boolean desc, int nbItems, int offset) { return dt.sortGenre(dt.secureSublist(dt.mGenres, offset, offset + nbItems), sort, desc); } @@ -223,28 +223,28 @@ public class StubMedialibrary extends AMedialibrary { public int getGenresCount(String query) { int count = 0; - for (AGenre genre : dt.mGenres) { + for (AbstractGenre genre : dt.mGenres) { if (genre.getTitle().contains(query)) count++; } return count; } - public AGenre getGenre(long genreId) { - for (AGenre genre : dt.mGenres) { + public AbstractGenre getGenre(long genreId) { + for (AbstractGenre genre : dt.mGenres) { if (genre.getId() == genreId) return genre; } return null; } - public APlaylist[] getPlaylists() { - return dt.mPlaylists.toArray(new APlaylist[0]); + public AbstractPlaylist[] getPlaylists() { + return dt.mPlaylists.toArray(new AbstractPlaylist[0]); } - public APlaylist[] getPlaylists(int sort, boolean desc) { + public AbstractPlaylist[] getPlaylists(int sort, boolean desc) { return dt.sortPlaylist(dt.mPlaylists, sort, desc); } - public APlaylist[] getPagedPlaylists(int sort, boolean desc, int nbItems, int offset) { + public AbstractPlaylist[] getPagedPlaylists(int sort, boolean desc, int nbItems, int offset) { return dt.sortPlaylist(dt.secureSublist(dt.mPlaylists, offset, offset + nbItems), sort, desc); } @@ -254,21 +254,21 @@ public class StubMedialibrary extends AMedialibrary { public int getPlaylistsCount(String query) { int count = 0; - for (APlaylist playlist : dt.mPlaylists) { + for (AbstractPlaylist playlist : dt.mPlaylists) { if (playlist.getTitle().contains(query)) count ++; } return count; } - public APlaylist getPlaylist(long playlistId) { - for (APlaylist playlist : dt.mPlaylists) { + public AbstractPlaylist getPlaylist(long playlistId) { + for (AbstractPlaylist playlist : dt.mPlaylists) { if (playlist.getId() == playlistId) return playlist; } return null; } - public APlaylist createPlaylist(String name) { - APlaylist playlist = MLServiceLocator.getAPlaylist(dt.getUUID(), name, 0); + public AbstractPlaylist createPlaylist(String name) { + AbstractPlaylist playlist = MLServiceLocator.getAbstractPlaylist(dt.getUUID(), name, 0); dt.mPlaylists.add(playlist); onPlaylistsAdded(); return playlist; @@ -289,25 +289,25 @@ public class StubMedialibrary extends AMedialibrary { public void forceParserRetry() {} public void forceRescan() {} - public AMediaWrapper[] lastMediaPlayed() { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mHistory) { - if (media.getItemType() == AMediaWrapper.TYPE_VIDEO || - media.getItemType() == AMediaWrapper.TYPE_AUDIO) results.add(media); + public AbstractMediaWrapper[] lastMediaPlayed() { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mHistory) { + if (media.getItemType() == AbstractMediaWrapper.TYPE_VIDEO || + media.getItemType() == AbstractMediaWrapper.TYPE_AUDIO) results.add(media); // the native method specifies an nbItems of 100, offset 0 if (results.size() >= 100) break; } - return results.toArray(new AMediaWrapper[0]); + return results.toArray(new AbstractMediaWrapper[0]); } - public AMediaWrapper[] lastStreamsPlayed() { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mHistory) { - if (media.getItemType() == AMediaWrapper.TYPE_STREAM) results.add(media); + public AbstractMediaWrapper[] lastStreamsPlayed() { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mHistory) { + if (media.getItemType() == AbstractMediaWrapper.TYPE_STREAM) results.add(media); // the native method specifies an nbItems of 100, offset 0 if (results.size() >= 100) break; } - return results.toArray(new AMediaWrapper[0]); + return results.toArray(new AbstractMediaWrapper[0]); } //TODO see when it would return false @@ -319,7 +319,7 @@ public class StubMedialibrary extends AMedialibrary { //TODO what if two files have the same name ?? // TODO what happens in case of false return public boolean addToHistory(String mrl, String title) { - AMediaWrapper media = getMedia(mrl, title); + AbstractMediaWrapper media = getMedia(mrl, title); if (media == null) { media = addStream(mrl, title); } @@ -329,52 +329,52 @@ public class StubMedialibrary extends AMedialibrary { } // TODO Handle uri to mrl - private AMediaWrapper getMedia(String mrl, String title) { - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + private AbstractMediaWrapper getMedia(String mrl, String title) { + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getTitle().equals(title)) return media; } - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getTitle().equals(title)) return media; } - for (AMediaWrapper media : dt.mStreamMediaWrappers) { + for (AbstractMediaWrapper media : dt.mStreamMediaWrappers) { if (media.getTitle().equals(title)) return media; } return null; } - public AMediaWrapper getMedia(long id) { - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + public AbstractMediaWrapper getMedia(long id) { + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getId() == id) return media; } - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getId() == id) return media; } - for (AMediaWrapper media : dt.mStreamMediaWrappers) { + for (AbstractMediaWrapper media : dt.mStreamMediaWrappers) { if (media.getId() == id) return media; } return null; } - public AMediaWrapper getMedia(Uri uri) { - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + public AbstractMediaWrapper getMedia(Uri uri) { + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getUri().equals(uri)) return media; } - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getUri().equals(uri)) return media; } - for (AMediaWrapper media : dt.mStreamMediaWrappers) { + for (AbstractMediaWrapper media : dt.mStreamMediaWrappers) { if (media.getUri().equals(uri)) return media; } return null; } - public AMediaWrapper getMedia(String mrl) { + public AbstractMediaWrapper getMedia(String mrl) { return null; } /* TODO maybe add a list of medias not in the medialibrary which can be retrieved with mrl to * simulate adding a media from system */ - public AMediaWrapper addMedia(String mrl) { + public AbstractMediaWrapper addMedia(String mrl) { return null; } @@ -382,11 +382,11 @@ public class StubMedialibrary extends AMedialibrary { return true; } - public AMediaWrapper addStream(String mrl, String title) { + public AbstractMediaWrapper addStream(String mrl, String title) { return null; } - public AFolder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset) { + public AbstractFolder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset) { return null; } @@ -398,7 +398,7 @@ public class StubMedialibrary extends AMedialibrary { public boolean increasePlayCount(long mediaId) { for (int i = 0 ; i < dt.mVideoMediaWrappers.size() ; i++) { - AMediaWrapper media = dt.mVideoMediaWrappers.get(i); + AbstractMediaWrapper media = dt.mVideoMediaWrappers.get(i); if (media.getId() == mediaId) { media.setSeen(media.getSeen() + 1); dt.mVideoMediaWrappers.set(i, media); @@ -408,59 +408,59 @@ public class StubMedialibrary extends AMedialibrary { } public SearchAggregate search(String query) { - AMediaWrapper[] videos = searchVideo(query); - AMediaWrapper[] tracks = searchAudio(query); - AAlbum[] albums = searchAlbum(query); - AArtist[] artists = searchArtist(query); - AGenre[] genres = searchGenre(query); - APlaylist[] playlists = searchPlaylist(query); + AbstractMediaWrapper[] videos = searchVideo(query); + AbstractMediaWrapper[] tracks = searchAudio(query); + AbstractAlbum[] albums = searchAlbum(query); + AbstractArtist[] artists = searchArtist(query); + AbstractGenre[] genres = searchGenre(query); + AbstractPlaylist[] playlists = searchPlaylist(query); return new SearchAggregate(albums, artists, genres, videos, tracks, playlists); } - public AMediaWrapper[] searchMedia(String query) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + public AbstractMediaWrapper[] searchMedia(String query) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } - for (AMediaWrapper media : dt.mStreamMediaWrappers) { + for (AbstractMediaWrapper media : dt.mStreamMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } - return results.toArray(new AMediaWrapper[0]); + return results.toArray(new AbstractMediaWrapper[0]); } - public AMediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(Arrays.asList(searchMedia(query))); + public AbstractMediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(Arrays.asList(searchMedia(query))); return dt.sortMedia(dt.secureSublist(results, offset, offset + nbItems), sort, desc); } public int getMediaCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getTitle().contains(query)) count++; } - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getTitle().contains(query)) count++; } - for (AMediaWrapper media : dt.mStreamMediaWrappers) { + for (AbstractMediaWrapper media : dt.mStreamMediaWrappers) { if (media.getTitle().contains(query)) count++; } return count; } - private AMediaWrapper[] searchAudio(String query) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + private AbstractMediaWrapper[] searchAudio(String query) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } return dt.sortMedia(results, SORT_DEFAULT, false); } - public AMediaWrapper[] searchAudio(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] searchAudio(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } return dt.sortMedia(dt.secureSublist(results, offset, offset + nbItems), sort, desc); @@ -468,23 +468,23 @@ public class StubMedialibrary extends AMedialibrary { public int getAudioCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (media.getTitle().contains(query)) count++; } return count; } - private AMediaWrapper[] searchVideo(String query) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + private AbstractMediaWrapper[] searchVideo(String query) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } return dt.sortMedia(results, SORT_DEFAULT, false); } - public AMediaWrapper[] searchVideo(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + public AbstractMediaWrapper[] searchVideo(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getTitle().contains(query)) results.add(media); } return dt.sortMedia(dt.secureSublist(results, offset, offset + nbItems), sort, desc); @@ -492,60 +492,60 @@ public class StubMedialibrary extends AMedialibrary { public int getVideoCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mVideoMediaWrappers) { + for (AbstractMediaWrapper media : dt.mVideoMediaWrappers) { if (media.getTitle().contains(query)) count++; } return count; } - public AArtist[] searchArtist(String query) { - ArrayList<AArtist> results = new ArrayList<>(); - for (AArtist artist: dt.mArtists) { + public AbstractArtist[] searchArtist(String query) { + ArrayList<AbstractArtist> results = new ArrayList<>(); + for (AbstractArtist artist: dt.mArtists) { if (artist.getTitle().contains(query)) results.add(artist); } - return results.toArray(new AArtist[0]); + return results.toArray(new AbstractArtist[0]); } - public AArtist[] searchArtist(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AArtist> results = new ArrayList<>(Arrays.asList(searchArtist(query))); + public AbstractArtist[] searchArtist(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractArtist> results = new ArrayList<>(Arrays.asList(searchArtist(query))); return dt.sortArtist(dt.secureSublist(results, offset, offset + nbItems), sort, desc); } - public AAlbum[] searchAlbum(String query) { - ArrayList<AAlbum> results = new ArrayList<>(); - for (AAlbum album: dt.mAlbums) { + public AbstractAlbum[] searchAlbum(String query) { + ArrayList<AbstractAlbum> results = new ArrayList<>(); + for (AbstractAlbum album: dt.mAlbums) { if (album.getTitle().contains(query)) results.add(album); } - return results.toArray(new AAlbum[0]); + return results.toArray(new AbstractAlbum[0]); } - public AAlbum[] searchAlbum(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AAlbum> results = new ArrayList<>(Arrays.asList(searchAlbum(query))); + public AbstractAlbum[] searchAlbum(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractAlbum> results = new ArrayList<>(Arrays.asList(searchAlbum(query))); return dt.sortAlbum(dt.secureSublist(results, offset, offset + nbItems), sort, desc); } - public AGenre[] searchGenre(String query) { - ArrayList<AGenre> results = new ArrayList<>(); - for (AGenre genre: dt.mGenres) { + public AbstractGenre[] searchGenre(String query) { + ArrayList<AbstractGenre> results = new ArrayList<>(); + for (AbstractGenre genre: dt.mGenres) { if (genre.getTitle().contains(query)) results.add(genre); } - return results.toArray(new AGenre[0]); + return results.toArray(new AbstractGenre[0]); } - public AGenre[] searchGenre(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AGenre> results = new ArrayList<>(Arrays.asList(searchGenre(query))); + public AbstractGenre[] searchGenre(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractGenre> results = new ArrayList<>(Arrays.asList(searchGenre(query))); return dt.sortGenre(dt.secureSublist(results, offset, offset + nbItems), sort, desc); } - public APlaylist[] searchPlaylist(String query) { - ArrayList<APlaylist> results = new ArrayList<>(); - for (APlaylist playlist: dt.mPlaylists) { + public AbstractPlaylist[] searchPlaylist(String query) { + ArrayList<AbstractPlaylist> results = new ArrayList<>(); + for (AbstractPlaylist playlist: dt.mPlaylists) { if (playlist.getTitle().contains(query)) results.add(playlist); } - return results.toArray(new APlaylist[0]); + return results.toArray(new AbstractPlaylist[0]); } - public APlaylist[] searchPlaylist(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<APlaylist> results = new ArrayList<>(Arrays.asList(searchPlaylist(query))); + public AbstractPlaylist[] searchPlaylist(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractPlaylist> results = new ArrayList<>(Arrays.asList(searchPlaylist(query))); return dt.sortPlaylist(dt.secureSublist(results, offset, offset + nbItems), sort, desc); } } diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubPlaylist.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubPlaylist.java index 3863c5b12a..ebd375aacd 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubPlaylist.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubPlaylist.java @@ -2,14 +2,14 @@ package org.videolan.medialibrary.stubs; import android.os.Parcel; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; -import org.videolan.medialibrary.interfaces.media.APlaylist; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public class StubPlaylist extends APlaylist { +public class StubPlaylist extends AbstractPlaylist { private ArrayList<Long> mTracksId = new ArrayList<>(); private StubDataSource dt = StubDataSource.getInstance(); @@ -22,22 +22,22 @@ public class StubPlaylist extends APlaylist { super(in); } - public AMediaWrapper[] getTracks() { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] getTracks() { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (mTracksId.contains(media.getId())) results.add(media); } - return results.toArray(new AMediaWrapper[0]); + return results.toArray(new AbstractMediaWrapper[0]); } - public AMediaWrapper[] getPagedTracks(int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(Arrays.asList(getTracks())); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AMediaWrapper[0]); + public AbstractMediaWrapper[] getPagedTracks(int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(Arrays.asList(getTracks())); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractMediaWrapper[0]); } public int getRealTracksCount() { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (mTracksId.contains(media.getId())) count++; } return count; @@ -91,20 +91,20 @@ public class StubPlaylist extends APlaylist { return false; } - public AMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { - ArrayList<AMediaWrapper> results = new ArrayList<>(); - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + public AbstractMediaWrapper[] searchTracks(String query, int sort, boolean desc, int nbItems, int offset) { + ArrayList<AbstractMediaWrapper> results = new ArrayList<>(); + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (mTracksId.contains(media.getId()) && media.getTitle().contains(query)) results.add(media); } results = new ArrayList<>(Arrays.asList(dt.sortMedia(results, sort, desc))); - return dt.secureSublist(results, offset, offset + nbItems).toArray(new AMediaWrapper[0]); + return dt.secureSublist(results, offset, offset + nbItems).toArray(new AbstractMediaWrapper[0]); } public int searchTracksCount(String query) { int count = 0; - for (AMediaWrapper media : dt.mAudioMediaWrappers) { + for (AbstractMediaWrapper media : dt.mAudioMediaWrappers) { if (mTracksId.contains(media.getId()) && media.getTitle().contains(query)) count++; } diff --git a/vlc-android/res/layout/folder_item.xml b/vlc-android/res/layout/folder_item.xml index e5894db5ab..5187ae9e5a 100644 --- a/vlc-android/res/layout/folder_item.xml +++ b/vlc-android/res/layout/folder_item.xml @@ -5,7 +5,7 @@ <data> <variable name="folder" - type="org.videolan.medialibrary.interfaces.media.AFolder" /> + type="org.videolan.medialibrary.interfaces.media.AbstractFolder" /> <variable name="bgColor" diff --git a/vlc-android/res/layout/history_item.xml b/vlc-android/res/layout/history_item.xml index f90f9c613e..1308eaf73b 100644 --- a/vlc-android/res/layout/history_item.xml +++ b/vlc-android/res/layout/history_item.xml @@ -4,7 +4,7 @@ <data> - <import type="org.videolan.medialibrary.interfaces.media.AMediaWrapper" /> + <import type="org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper" /> <import type="android.text.TextUtils" /> @@ -16,7 +16,7 @@ <variable name="media" - type="AMediaWrapper" /> + type="org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper" /> <variable name="cover" diff --git a/vlc-android/res/layout/playlist_item.xml b/vlc-android/res/layout/playlist_item.xml index b7a3f9fc41..f9e2231c0e 100644 --- a/vlc-android/res/layout/playlist_item.xml +++ b/vlc-android/res/layout/playlist_item.xml @@ -10,7 +10,7 @@ type="org.videolan.vlc.gui.audio.PlaylistAdapter.ViewHolder"/> <variable name="media" - type="org.videolan.medialibrary.interfaces.media.AMediaWrapper"/> + type="org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper"/> <variable name="subTitle" type="String"/> diff --git a/vlc-android/res/layout/tv_simple_list_item.xml b/vlc-android/res/layout/tv_simple_list_item.xml index d728a7c852..a05cb63e72 100644 --- a/vlc-android/res/layout/tv_simple_list_item.xml +++ b/vlc-android/res/layout/tv_simple_list_item.xml @@ -7,7 +7,7 @@ type="int" /> <variable name="media" - type="org.videolan.medialibrary.interfaces.media.AMediaWrapper" /> + type="org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper" /> </data> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:padding="@dimen/half_default_margin" diff --git a/vlc-android/res/layout/video_grid_card.xml b/vlc-android/res/layout/video_grid_card.xml index 5a8e45b40c..3dccadf089 100644 --- a/vlc-android/res/layout/video_grid_card.xml +++ b/vlc-android/res/layout/video_grid_card.xml @@ -11,7 +11,7 @@ <variable name="media" - type="org.videolan.medialibrary.interfaces.media.AMediaWrapper" /> + type="org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper" /> <variable name="seen" diff --git a/vlc-android/res/layout/video_list_card.xml b/vlc-android/res/layout/video_list_card.xml index 64f9c07f7e..a4da8f2a02 100644 --- a/vlc-android/res/layout/video_list_card.xml +++ b/vlc-android/res/layout/video_list_card.xml @@ -8,7 +8,7 @@ <variable name="media" - type="org.videolan.medialibrary.interfaces.media.AMediaWrapper" /> + type="org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper" /> <variable name="seen" diff --git a/vlc-android/src/org/videolan/vlc/MediaParsingService.kt b/vlc-android/src/org/videolan/vlc/MediaParsingService.kt index a73459da59..125cbcd746 100644 --- a/vlc-android/src/org/videolan/vlc/MediaParsingService.kt +++ b/vlc-android/src/org/videolan/vlc/MediaParsingService.kt @@ -44,7 +44,7 @@ import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.interfaces.DevicesDiscoveryCb import org.videolan.vlc.gui.helpers.NotificationHelper import org.videolan.vlc.repository.DirectoryRepository @@ -62,7 +62,7 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { private lateinit var localBroadcastManager: LocalBroadcastManager private val binder = LocalBinder() - private lateinit var medialibrary: AMedialibrary + private lateinit var medialibrary: AbstractMedialibrary private var parsing = 0 private var reload = 0 private var currentDiscovery: String? = null @@ -91,13 +91,13 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { override fun onCreate() { super.onCreate() localBroadcastManager = LocalBroadcastManager.getInstance(this) - medialibrary = AMedialibrary.getInstance() + medialibrary = AbstractMedialibrary.getInstance() medialibrary.addDeviceDiscoveryCb(this@MediaParsingService) val filter = IntentFilter() filter.addAction(ACTION_PAUSE_SCAN) filter.addAction(ACTION_RESUME_SCAN) registerReceiver(receiver, filter) - localBroadcastManager.registerReceiver(receiver, IntentFilter(AMedialibrary.ACTION_IDLE)) + localBroadcastManager.registerReceiver(receiver, IntentFilter(AbstractMedialibrary.ACTION_IDLE)) val pm = applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VLC:MediaParsigService") wakeLock.acquire() @@ -176,7 +176,7 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { return } medialibrary.addDevice(uuid, path, true) - for (folder in AMedialibrary.getBlackList()) + for (folder in AbstractMedialibrary.getBlackList()) medialibrary.banFolder(path + folder) } } @@ -222,7 +222,7 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { scanActivated = true when { shouldInit -> { - for (folder in AMedialibrary.getBlackList()) + for (folder in AbstractMedialibrary.getBlackList()) medialibrary.banFolder(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY + folder) if (preselectedStorages.isEmpty()) medialibrary.discover(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY) else { @@ -362,7 +362,7 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { private val actions = actor<MLAction>(context = Dispatchers.IO, capacity = Channel.UNLIMITED) { for (action in channel) when (action) { is DiscoverStorage -> { - for (folder in AMedialibrary.getBlackList()) medialibrary.banFolder(action.path + folder) + for (folder in AbstractMedialibrary.getBlackList()) medialibrary.banFolder(action.path + folder) medialibrary.discover(action.path) } is DiscoverFolder -> { @@ -373,8 +373,8 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { val context = this@MediaParsingService var shouldInit = !dbExists() val initCode = medialibrary.init(context) - shouldInit = shouldInit or (initCode == AMedialibrary.ML_INIT_DB_RESET) - if (initCode != AMedialibrary.ML_INIT_FAILED) initMedialib(action.parse, context, shouldInit, action.upgrade) + shouldInit = shouldInit or (initCode == AbstractMedialibrary.ML_INIT_DB_RESET) + if (initCode != AbstractMedialibrary.ML_INIT_FAILED) initMedialib(action.parse, context, shouldInit, action.upgrade) else exitCommand() } is StartScan -> { @@ -402,7 +402,7 @@ class MediaParsingService : Service(), DevicesDiscoveryCb, CoroutineScope { medialibrary.resumeBackgroundOperations() scanPaused = false } - AMedialibrary.ACTION_IDLE -> if (intent.getBooleanExtra(AMedialibrary.STATE_IDLE, true)) { + AbstractMedialibrary.ACTION_IDLE -> if (intent.getBooleanExtra(AbstractMedialibrary.STATE_IDLE, true)) { if (!scanPaused) { exitCommand() return @@ -438,7 +438,7 @@ fun Context.rescan() { } fun Context.startMedialibrary(firstRun: Boolean = false, upgrade: Boolean = false, parse: Boolean = true) = AppScope.launch { - if (AMedialibrary.getInstance().isStarted || !Permissions.canReadStorage(this@startMedialibrary)) return@launch + if (AbstractMedialibrary.getInstance().isStarted || !Permissions.canReadStorage(this@startMedialibrary)) return@launch val prefs = withContext(Dispatchers.IO) { Settings.getInstance(this@startMedialibrary) } val scanOpt = if (Settings.showTvUi) ML_SCAN_ON else prefs.getInt(KEY_MEDIALIBRARY_SCAN, -1) if (parse && scanOpt == -1) { @@ -452,7 +452,7 @@ fun Context.startMedialibrary(firstRun: Boolean = false, upgrade: Boolean = fals } private suspend fun Context.dbExists() = withContext(Dispatchers.IO) { - File(getDir("db", Context.MODE_PRIVATE).toString() + AMedialibrary.VLC_MEDIA_DB_NAME).exists() + File(getDir("db", Context.MODE_PRIVATE).toString() + AbstractMedialibrary.VLC_MEDIA_DB_NAME).exists() } private sealed class MLAction diff --git a/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt b/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt index af94e5f5f9..c2f331c400 100644 --- a/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt +++ b/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt @@ -7,7 +7,7 @@ import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.PlaybackStateCompat import android.view.KeyEvent import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.extensions.ExtensionsManager import org.videolan.vlc.media.MediaSessionBrowser @@ -94,7 +94,7 @@ internal class MediaSessionCallback(private val playbackService: PlaybackService playbackService.getFromMl { isStarted } val vsp = VoiceSearchParams(query ?: "", extras) var items: Array<out MediaLibraryItem>? = null - var tracks: Array<AMediaWrapper>? = null + var tracks: Array<AbstractMediaWrapper>? = null when { vsp.isAny -> { items = playbackService.medialibrary.audio.also { if (!playbackService.isShuffling) playbackService.shuffle() } diff --git a/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/vlc-android/src/org/videolan/vlc/PlaybackService.kt index 54369ec3a5..ad181276b5 100644 --- a/vlc-android/src/org/videolan/vlc/PlaybackService.kt +++ b/vlc-android/src/org/videolan/vlc/PlaybackService.kt @@ -28,7 +28,6 @@ import android.media.AudioManager import android.media.audiofx.AudioEffect import android.net.Uri import android.os.* -import android.provider.SyncStateContract import android.support.v4.media.MediaBrowserCompat import android.support.v4.media.MediaDescriptionCompat import android.support.v4.media.MediaMetadataCompat @@ -57,8 +56,8 @@ import org.videolan.libvlc.Media import org.videolan.libvlc.MediaPlayer import org.videolan.libvlc.RendererItem import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.gui.helpers.AudioUtil import org.videolan.vlc.gui.helpers.BitmapUtil import org.videolan.vlc.gui.helpers.NotificationHelper @@ -89,7 +88,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw private lateinit var keyguardManager: KeyguardManager internal lateinit var settings: SharedPreferences private val mBinder = LocalBinder() - internal lateinit var medialibrary: AMedialibrary + internal lateinit var medialibrary: AbstractMedialibrary private val callbacks = mutableListOf<Callback>() private var detectHeadset = true @@ -201,7 +200,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw val notificationIntent = Intent(this, VideoPlayerActivity::class.java) PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT) } - playlistManager.videoBackground || canSwitchToVideo() && !currentMediaHasFlag(AMediaWrapper.MEDIA_FORCE_AUDIO) -> {//resume video playback + playlistManager.videoBackground || canSwitchToVideo() && !currentMediaHasFlag(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) -> {//resume video playback /* Resume VideoPlayerActivity from ACTION_REMOTE_SWITCH_VIDEO intent */ val notificationIntent = Intent(ACTION_REMOTE_SWITCH_VIDEO) PendingIntent.getBroadcast(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT) @@ -342,7 +341,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw val mediaListSize: Int get() = playlistManager.getMediaListSize() - val medias: List<AMediaWrapper> + val media: List<AbstractMediaWrapper> @MainThread get() = playlistManager.getMediaList() @@ -360,7 +359,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw @MainThread get() = playlistManager.currentIndex - val currentMediaWrapper: AMediaWrapper? + val currentMediaWrapper: AbstractMediaWrapper? @MainThread get() = this@PlaybackService.playlistManager.getCurrentMedia() @@ -523,7 +522,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw ACTION_REMOTE_SWITCH_VIDEO -> { removePopup() if (hasMedia()) { - currentMediaWrapper!!.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + currentMediaWrapper!!.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) playlistManager.switchToVideo() } } @@ -677,7 +676,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw cover = BitmapFactory.decodeResource(ctx.resources, R.drawable.ic_no_media) notification = NotificationHelper.createPlaybackNotification(ctx, - mw.hasFlag(AMediaWrapper.MEDIA_FORCE_AUDIO), title, artist, album, + mw.hasFlag(AbstractMediaWrapper.MEDIA_FORCE_AUDIO), title, artist, album, cover, playing, pausable, sessionToken, sessionPendingIntent) if (isPlayingPopup) return@launch if (!AndroidUtil.isLolliPopOrLater || playing || audioFocusHelper.lossTransient) { @@ -1007,12 +1006,12 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw fun loadLocation(mediaPath: String) = loadLocations(listOf(mediaPath), 0) @MainThread - fun load(mediaList: Array<AMediaWrapper>?, position: Int) { + fun load(mediaList: Array<AbstractMediaWrapper>?, position: Int) { mediaList?.let { load(it.toList(), position) } } @MainThread - fun load(mediaList: List<AMediaWrapper>, position: Int) = playlistManager.load(mediaList, position) + fun load(mediaList: List<AbstractMediaWrapper>, position: Int) = playlistManager.load(mediaList, position) private fun updateMediaQueue() = launch { val ctx = this@PlaybackService @@ -1035,7 +1034,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw } @MainThread - fun load(media: AMediaWrapper) = load(listOf(media), 0) + fun load(media: AbstractMediaWrapper) = load(listOf(media), 0) /** * Play a media from the media list (playlist) @@ -1106,32 +1105,32 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw */ @MainThread - fun append(mediaList: Array<AMediaWrapper>) = append(mediaList.toList()) + fun append(mediaList: Array<AbstractMediaWrapper>) = append(mediaList.toList()) @MainThread - fun append(mediaList: List<AMediaWrapper>) = launch { + fun append(mediaList: List<AbstractMediaWrapper>) = launch { playlistManager.append(mediaList) onMediaListChanged() } @MainThread - fun append(media: AMediaWrapper) = append(listOf(media)) + fun append(media: AbstractMediaWrapper) = append(listOf(media)) /** * Insert into the current existing playlist */ @MainThread - fun insertNext(mediaList: Array<AMediaWrapper>) = insertNext(mediaList.toList()) + fun insertNext(mediaList: Array<AbstractMediaWrapper>) = insertNext(mediaList.toList()) @MainThread - private fun insertNext(mediaList: List<AMediaWrapper>) { + private fun insertNext(mediaList: List<AbstractMediaWrapper>) { playlistManager.insertNext(mediaList) onMediaListChanged() } @MainThread - fun insertNext(media: AMediaWrapper) = insertNext(listOf(media)) + fun insertNext(media: AbstractMediaWrapper) = insertNext(listOf(media)) /** * Move an item inside the playlist. @@ -1140,7 +1139,7 @@ class PlaybackService : MediaBrowserServiceCompat(), CoroutineScope, LifecycleOw fun moveItem(positionStart: Int, positionEnd: Int) = playlistManager.moveItem(positionStart, positionEnd) @MainThread - fun insertItem(position: Int, mw: AMediaWrapper) = playlistManager.insertItem(position, mw) + fun insertItem(position: Int, mw: AbstractMediaWrapper) = playlistManager.insertItem(position, mw) @MainThread diff --git a/vlc-android/src/org/videolan/vlc/RecommendationsService.kt b/vlc-android/src/org/videolan/vlc/RecommendationsService.kt index 335eaae987..62095dfccc 100644 --- a/vlc-android/src/org/videolan/vlc/RecommendationsService.kt +++ b/vlc-android/src/org/videolan/vlc/RecommendationsService.kt @@ -32,7 +32,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.gui.helpers.BitmapUtil import org.videolan.vlc.gui.video.VideoPlayerActivity import org.videolan.vlc.util.* @@ -55,7 +55,7 @@ class RecommendationsService : IntentService("RecommendationService"), Coroutine doRecommendations() } - private fun buildRecommendation(mw: AMediaWrapper?, id: Int, priority: Int) { + private fun buildRecommendation(mw: AbstractMediaWrapper?, id: Int, priority: Int) { if (mw == null) return // build the recommendation as a Notification object val notification = NotificationCompat.BigPictureStyle( @@ -76,7 +76,7 @@ class RecommendationsService : IntentService("RecommendationService"), Coroutine mNotificationManager.notify(id, notification) } - private fun buildPendingIntent(mw: AMediaWrapper, id: Int): PendingIntent { + private fun buildPendingIntent(mw: AbstractMediaWrapper, id: Int): PendingIntent { val intent = Intent(this@RecommendationsService, VideoPlayerActivity::class.java) intent.action = PLAY_FROM_VIDEOGRID intent.putExtra(PLAY_EXTRA_ITEM_LOCATION, mw.uri) diff --git a/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt b/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt index 99f34d5fee..23464d7af3 100644 --- a/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt +++ b/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt @@ -12,7 +12,7 @@ import androidx.lifecycle.ProcessLifecycleOwner import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import kotlinx.coroutines.delay -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.gui.DialogActivity import org.videolan.vlc.util.AppScope import org.videolan.vlc.util.getFromMl @@ -53,7 +53,7 @@ class StoragesMonitor : BroadcastReceiver() { } is Unmount -> { delay(100L) - AMedialibrary.getInstance().removeDevice(action.uuid, action.path) + AbstractMedialibrary.getInstance().removeDevice(action.uuid, action.path) } } } diff --git a/vlc-android/src/org/videolan/vlc/VLCApplication.kt b/vlc-android/src/org/videolan/vlc/VLCApplication.kt index 29c946108e..b6017373aa 100644 --- a/vlc-android/src/org/videolan/vlc/VLCApplication.kt +++ b/vlc-android/src/org/videolan/vlc/VLCApplication.kt @@ -37,7 +37,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.Dialog import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.gui.DialogActivity import org.videolan.vlc.gui.dialogs.VlcProgressDialog import org.videolan.vlc.gui.helpers.AudioUtil @@ -206,8 +206,8 @@ class VLCApplication : Application() { dataMap.clear() } - val mlInstance: AMedialibrary - get() = AMedialibrary.getInstance() + val mlInstance: AbstractMedialibrary + get() = AbstractMedialibrary.getInstance() /** * Check if application is currently displayed diff --git a/vlc-android/src/org/videolan/vlc/extensions/ExtensionManagerService.java b/vlc-android/src/org/videolan/vlc/extensions/ExtensionManagerService.java index 51878156c7..7c6bfd214a 100644 --- a/vlc-android/src/org/videolan/vlc/extensions/ExtensionManagerService.java +++ b/vlc-android/src/org/videolan/vlc/extensions/ExtensionManagerService.java @@ -38,7 +38,7 @@ import android.text.TextUtils; import android.util.Log; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import org.videolan.vlc.extensions.api.IExtensionHost; import org.videolan.vlc.extensions.api.IExtensionService; import org.videolan.vlc.extensions.api.VLCExtensionItem; @@ -202,7 +202,7 @@ public class ExtensionManagerService extends Service { @Override public void playUri(Uri uri, String title) throws RemoteException { - final AMediaWrapper media = MLServiceLocator.getAMediaWrapper(uri); + final AbstractMediaWrapper media = MLServiceLocator.getAbstractMediaWrapper(uri); if (!TextUtils.isEmpty(title)); media.setDisplayTitle(title); mHandler.post(new Runnable() { diff --git a/vlc-android/src/org/videolan/vlc/extensions/Utils.java b/vlc-android/src/org/videolan/vlc/extensions/Utils.java index baeb998a16..10e2ab76e2 100644 --- a/vlc-android/src/org/videolan/vlc/extensions/Utils.java +++ b/vlc-android/src/org/videolan/vlc/extensions/Utils.java @@ -3,13 +3,13 @@ package org.videolan.vlc.extensions; import android.net.Uri; import org.videolan.medialibrary.MLServiceLocator; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import org.videolan.vlc.extensions.api.VLCExtensionItem; public class Utils { - public static AMediaWrapper mediawrapperFromExtension(VLCExtensionItem vlcItem) { - AMediaWrapper media = MLServiceLocator.getAMediaWrapper(Uri.parse(vlcItem.link)); + public static AbstractMediaWrapper mediawrapperFromExtension(VLCExtensionItem vlcItem) { + AbstractMediaWrapper media = MLServiceLocator.getAbstractMediaWrapper(Uri.parse(vlcItem.link)); media.setDisplayTitle(vlcItem.title); if (vlcItem.type != VLCExtensionItem.TYPE_OTHER_FILE) media.setType(vlcItem.type); diff --git a/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt b/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt index 19671f9bee..271e9fe923 100644 --- a/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt @@ -48,7 +48,7 @@ import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayout import kotlinx.coroutines.* import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.tools.setVisibility import org.videolan.vlc.* import org.videolan.vlc.gui.audio.AudioPlayer @@ -293,7 +293,7 @@ open class AudioPlayerContainerActivity : BaseActivity() { } private fun showProgressBar() { - if (!AMedialibrary.getInstance().isWorking) return + if (!AbstractMedialibrary.getInstance().isWorking) return MediaParsingService.progress.value?.run { val vsc = findViewById<View>(R.id.scan_viewstub) if (vsc != null) { @@ -345,7 +345,7 @@ open class AudioPlayerContainerActivity : BaseActivity() { } }) MediaParsingService.progress.observe(this, Observer { scanProgress -> - if (scanProgress == null || !AMedialibrary.getInstance().isWorking) { + if (scanProgress == null || !AbstractMedialibrary.getInstance().isWorking) { updateProgressVisibility(false) return@Observer } @@ -353,7 +353,7 @@ open class AudioPlayerContainerActivity : BaseActivity() { if (scanProgressText != null) scanProgressText!!.text = scanProgress.discovery if (scanProgressBar != null) scanProgressBar!!.progress = scanProgress.parsing }) - AMedialibrary.getState().observe(this, Observer { started -> if (started != null) updateProgressVisibility(started) }) + AbstractMedialibrary.getState().observe(this, Observer { started -> if (started != null) updateProgressVisibility(started) }) MediaParsingService.newStorages.observe(this, Observer<List<String>> { devices -> if (devices == null) return@Observer for (device in devices) UiTools.newStorageDetected(this@AudioPlayerContainerActivity, device) diff --git a/vlc-android/src/org/videolan/vlc/gui/DialogActivity.kt b/vlc-android/src/org/videolan/vlc/gui/DialogActivity.kt index c7b59a8839..a718cd72d5 100644 --- a/vlc-android/src/org/videolan/vlc/gui/DialogActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/DialogActivity.kt @@ -27,7 +27,7 @@ import android.os.Bundle import android.text.TextUtils import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.gui.dialogs.* import org.videolan.vlc.media.MediaUtils @@ -68,7 +68,7 @@ class DialogActivity : BaseActivity() { @ObsoleteCoroutinesApi private fun setupSubsDialog() { - val medialist = intent.getParcelableArrayListExtra<AMediaWrapper>(EXTRA_MEDIALIST) + val medialist = intent.getParcelableArrayListExtra<AbstractMediaWrapper>(EXTRA_MEDIALIST) if (medialist != null) MediaUtils.getSubs(this, medialist) else diff --git a/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt index 6a01dc5446..fa66b2452f 100644 --- a/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt @@ -24,7 +24,7 @@ import android.view.View import android.view.ViewGroup import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.MultiSelectAdapter import org.videolan.tools.MultiSelectHelper @@ -37,9 +37,9 @@ import org.videolan.vlc.util.Util @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi -class HistoryAdapter(private val mEventsHandler: IEventsHandler) : DiffUtilAdapter<AMediaWrapper, HistoryAdapter.ViewHolder>(), MultiSelectAdapter<MediaWrapper> { +class HistoryAdapter(private val mEventsHandler: IEventsHandler) : DiffUtilAdapter<AbstractMediaWrapper, HistoryAdapter.ViewHolder>(), MultiSelectAdapter<AbstractMediaWrapper> { private var mLayoutInflater: LayoutInflater? = null - var multiSelectHelper: MultiSelectHelper<AMediaWrapper> = MultiSelectHelper(this, UPDATE_SELECTION) + var multiSelectHelper: MultiSelectHelper<AbstractMediaWrapper> = MultiSelectHelper(this, UPDATE_SELECTION) inner class ViewHolder(binding: HistoryItemBinding) : SelectorViewHolder<HistoryItemBinding>(binding) { diff --git a/vlc-android/src/org/videolan/vlc/gui/HistoryFragment.kt b/vlc-android/src/org/videolan/vlc/gui/HistoryFragment.kt index 889a64de8c..a8e1f78196 100644 --- a/vlc-android/src/org/videolan/vlc/gui/HistoryFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/HistoryFragment.kt @@ -32,7 +32,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import kotlinx.android.synthetic.main.history_list.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.KeyHelper import org.videolan.tools.MultiSelectHelper @@ -52,7 +52,7 @@ private const val TAG = "VLC/HistoryFragment" @ExperimentalCoroutinesApi class HistoryFragment : MediaBrowserFragment<HistoryModel>(), IRefreshable, IHistory, SwipeRefreshLayout.OnRefreshListener, IEventsHandler { - private lateinit var multiSelectHelper: MultiSelectHelper<AMediaWrapper> + private lateinit var multiSelectHelper: MultiSelectHelper<AbstractMediaWrapper> private val historyAdapter: HistoryAdapter = HistoryAdapter(this) @TargetApi(Build.VERSION_CODES.HONEYCOMB) @@ -63,7 +63,7 @@ class HistoryFragment : MediaBrowserFragment<HistoryModel>(), IRefreshable, IHis override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel = ViewModelProviders.of(requireActivity(), HistoryModel.Factory(requireContext())).get(HistoryModel::class.java) - viewModel.dataset.observe(this, Observer<List<AMediaWrapper>> { list -> + viewModel.dataset.observe(this, Observer<List<AbstractMediaWrapper>> { list -> list?.let { historyAdapter.update(it) updateEmptyView() @@ -195,8 +195,8 @@ class HistoryFragment : MediaBrowserFragment<HistoryModel>(), IRefreshable, IHis invalidateActionMode() return } - if (position != 0) viewModel.moveUp(item as AMediaWrapper) - MediaUtils.openMedia(v.context, item as AMediaWrapper) + if (position != 0) viewModel.moveUp(item as AbstractMediaWrapper) + MediaUtils.openMedia(v.context, item as AbstractMediaWrapper) } override fun onLongClick(v: View, position: Int, item: MediaLibraryItem): Boolean { diff --git a/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt b/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt index be1946f7eb..268a540b1c 100644 --- a/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt @@ -22,8 +22,8 @@ import kotlinx.coroutines.* import org.videolan.libvlc.Media import org.videolan.libvlc.util.Extensions import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AArtist -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractArtist +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -69,7 +69,7 @@ class InfoActivity : AudioPlayerContainerActivity(), View.OnClickListener, PathA } this.item = item if (item.id == 0L) { - val libraryItem = VLCApplication.mlInstance.getMedia((item as AMediaWrapper).uri) + val libraryItem = VLCApplication.mlInstance.getMedia((item as AbstractMediaWrapper).uri) if (libraryItem != null) this.item = libraryItem } @@ -79,7 +79,7 @@ class InfoActivity : AudioPlayerContainerActivity(), View.OnClickListener, PathA model = getModel() binding.fab.setOnClickListener(this) - if (item is AMediaWrapper) { + if (item is AbstractMediaWrapper) { adapter = MediaInfoAdapter() binding.list.layoutManager = LinearLayoutManager(binding.root.context) binding.list.adapter = adapter @@ -111,15 +111,15 @@ class InfoActivity : AudioPlayerContainerActivity(), View.OnClickListener, PathA if (length > 0) binding.length = Tools.millisToText(length) - if (item is AMediaWrapper) { - val media = item as AMediaWrapper + if (item is AbstractMediaWrapper) { + val media = item as AbstractMediaWrapper val resolution = generateResolutionClass(media.width, media.height) binding.resolution = resolution } when { item.itemType == MediaLibraryItem.TYPE_MEDIA -> { - val media = item as AMediaWrapper + val media = item as AbstractMediaWrapper // binding.path = Uri.decode(media!!.uri.path).replace("/", " > ") binding.progress = if (media.length == 0L) 0 else (100.toLong() * media.time / length).toInt() binding.sizeTitleText = getString(R.string.file_size) @@ -138,7 +138,7 @@ class InfoActivity : AudioPlayerContainerActivity(), View.OnClickListener, PathA } else binding.ariane.visibility = View.GONE } item.itemType == MediaLibraryItem.TYPE_ARTIST -> { - val albums = (item as AArtist).albums + val albums = (item as AbstractArtist).albums val nbAlbums = albums?.size ?: 0 binding.sizeTitleText = getString(R.string.albums) binding.sizeValueText = nbAlbums.toString() @@ -212,7 +212,7 @@ class InfoModel : ViewModel(), CoroutineScope by MainScope() { cover.value = mrl?.let { withContext(Dispatchers.IO) { AudioUtil.readCoverBitmap(Uri.decode(it), width) } } } - internal fun parseTracks(context: Context, mw: AMediaWrapper) = launch { + internal fun parseTracks(context: Context, mw: AbstractMediaWrapper) = launch { val media = withContext(Dispatchers.IO) { val libVlc = VLCInstance[context] Media(libVlc, mw.uri).apply { parse() } @@ -231,11 +231,11 @@ class InfoModel : ViewModel(), CoroutineScope by MainScope() { mediaTracks.value = tracks.toList() } - internal fun checkFile(mw: AMediaWrapper) = launch { + internal fun checkFile(mw: AbstractMediaWrapper) = launch { val itemFile = withContext(Dispatchers.IO) { File(Uri.decode(mw.location.substring(5))) } if (!withContext(Dispatchers.IO) { itemFile.exists() } || !isActive) return@launch - if (mw.type == AMediaWrapper.TYPE_VIDEO) checkSubtitles(itemFile) + if (mw.type == AbstractMediaWrapper.TYPE_VIDEO) checkSubtitles(itemFile) sizeText.value = itemFile.length().readableFileSize() } diff --git a/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt b/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt index 5c4aba0431..c1ad716311 100644 --- a/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt @@ -42,7 +42,7 @@ import kotlinx.android.synthetic.main.toolbar.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.* import org.videolan.vlc.extensions.ExtensionManagerService import org.videolan.vlc.extensions.ExtensionsManager @@ -69,7 +69,7 @@ class MainActivity : ContentActivity(), ExtensionManagerService.ExtensionManager mainLoading.visibility = if (value) View.VISIBLE else View.GONE field = value } - private lateinit var mediaLibrary: AMedialibrary + private lateinit var mediaLibrary: AbstractMedialibrary private lateinit var extensionsManager: ExtensionsManager private lateinit var drawerLayout: HackyDrawerLayout private lateinit var navigationView: NavigationView diff --git a/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt b/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt index 32d1dd4252..21490d9a01 100644 --- a/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt @@ -47,8 +47,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.isStarted import org.videolan.vlc.BuildConfig @@ -206,7 +206,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL override fun onMove(oldPosition: Int, newPosition: Int) { if (BuildConfig.DEBUG) Log.d(TAG, "Moving item from $oldPosition to $newPosition") - (viewModel.playlist as APlaylist).move(oldPosition, newPosition) + (viewModel.playlist as AbstractPlaylist).move(oldPosition, newPosition) } @@ -265,7 +265,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { val list = audioBrowserAdapter.multiSelectHelper.getSelection() - val tracks = ArrayList<AMediaWrapper>() + val tracks = ArrayList<AbstractMediaWrapper>() for (mediaItem in list) tracks.addAll(Arrays.asList(*mediaItem.tracks)) @@ -287,8 +287,8 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL R.id.action_mode_audio_play -> MediaUtils.openList(this, tracks, 0) R.id.action_mode_audio_append -> MediaUtils.appendMedia(this, tracks) R.id.action_mode_audio_add_playlist -> UiTools.addToPlaylist(this, tracks) - R.id.action_mode_audio_info -> showInfoDialog(list[0] as AMediaWrapper) - R.id.action_mode_audio_set_song -> AudioUtil.setRingtone(list[0] as AMediaWrapper, this) + R.id.action_mode_audio_info -> showInfoDialog(list[0] as AbstractMediaWrapper) + R.id.action_mode_audio_set_song -> AudioUtil.setRingtone(list[0] as AbstractMediaWrapper, this) R.id.action_mode_audio_delete -> if (isPlaylist) removeFromPlaylist(tracks, indexes) else removeItems(tracks) else -> return false } @@ -300,7 +300,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL audioBrowserAdapter.multiSelectHelper.clearSelection() } - private fun showInfoDialog(media: AMediaWrapper) { + private fun showInfoDialog(media: AbstractMediaWrapper) { val i = Intent(this, InfoActivity::class.java) i.putExtra(TAG_ITEM, media) startActivity(i) @@ -308,7 +308,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL override fun onCtxAction(position: Int, option: Int) { if (position >= audioBrowserAdapter.itemCount) return - val media = audioBrowserAdapter.getItem(position) as AMediaWrapper? ?: return + val media = audioBrowserAdapter.getItem(position) as AbstractMediaWrapper? ?: return when (option) { CTX_INFORMATION -> showInfoDialog(media) CTX_DELETE -> removeItem(position, media) @@ -320,17 +320,17 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL } - private fun removeItem(position: Int, media: AMediaWrapper) { + private fun removeItem(position: Int, media: AbstractMediaWrapper) { val resId = if (isPlaylist) R.string.confirm_remove_from_playlist else R.string.confirm_delete if (isPlaylist) { - snackerConfirm(binding.root, getString(resId, media.title), Runnable { (viewModel.playlist as APlaylist).remove(position) }) + snackerConfirm(binding.root, getString(resId, media.title), Runnable { (viewModel.playlist as AbstractPlaylist).remove(position) }) } else { val deleteAction = Runnable { deleteMedia(media) } snackerConfirm(binding.root, getString(resId, media.title), Runnable { if (Util.checkWritePermission(this@PlaylistActivity, media, deleteAction)) deleteAction.run() }) } } - private fun removeItems(items: List<AMediaWrapper>) { + private fun removeItems(items: List<AbstractMediaWrapper>) { snackerConfirm(binding.root,getString(R.string.confirm_delete_several_media, items.size)) { for (item in items) { if (!isStarted()) break @@ -357,9 +357,10 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler, IL MediaUtils.playTracks(this, viewModel.playlist, 0) } - private fun removeFromPlaylist(list: List<AMediaWrapper>, indexes: List<Int>) { + private fun removeFromPlaylist(list: List<AbstractMediaWrapper>, indexes: List<Int>) { val itemsRemoved = HashMap<Int, Long>() - val playlist = viewModel.playlist as? APlaylist ?: return + val playlist = viewModel.playlist as? AbstractPlaylist + ?: return for (mediaItem in list) { for (i in 0 until playlist.tracks.size) { diff --git a/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt b/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt index 2494b07c5b..566deaea5a 100644 --- a/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt @@ -40,7 +40,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.BuildConfig import org.videolan.vlc.R @@ -150,7 +150,7 @@ class PlaylistFragment : BaseAudioBrowser<PlaylistsViewModel>(), SwipeRefreshLay } override fun onCtxAction(position: Int, option: Int) { - if (option == CTX_PLAY_ALL) MediaUtils.playAll(requireContext(), viewModel.provider as MedialibraryProvider<AMediaWrapper>, position, false) + if (option == CTX_PLAY_ALL) MediaUtils.playAll(requireContext(), viewModel.provider as MedialibraryProvider<AbstractMediaWrapper>, position, false) else super.onCtxAction(position, option) } diff --git a/vlc-android/src/org/videolan/vlc/gui/SearchActivity.kt b/vlc-android/src/org/videolan/vlc/gui/SearchActivity.kt index 62b200260f..edec7cfd3b 100644 --- a/vlc-android/src/org/videolan/vlc/gui/SearchActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/SearchActivity.kt @@ -22,7 +22,7 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.SearchAggregate import org.videolan.tools.isStarted @@ -35,7 +35,7 @@ import org.videolan.vlc.media.MediaUtils open class SearchActivity : BaseActivity(), TextWatcher, TextView.OnEditorActionListener { - private lateinit var medialibrary: AMedialibrary + private lateinit var medialibrary: AbstractMedialibrary private lateinit var binding: SearchActivityBinding private val clickHandler = ClickHandler() diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.kt b/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.kt index 1095135282..69b15899e7 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.kt @@ -37,8 +37,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.tabs.TabLayout import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.gui.ContentActivity @@ -191,12 +191,12 @@ class AudioAlbumsSongsFragment : BaseAudioBrowser<AlbumSongsViewModel>(), SwipeR super.onClick(v, position, item) return } - if (item is AAlbum) { + if (item is AbstractAlbum) { val i = Intent(activity, PlaylistActivity::class.java) i.putExtra(AudioBrowserFragment.TAG_ITEM, item) startActivity(i) } else - MediaUtils.openMedia(v.context, item as AMediaWrapper) + MediaUtils.openMedia(v.context, item as AbstractMediaWrapper) } override fun onCtxAction(position: Int, option: Int) { diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt index fb7469e545..501701ea8f 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt @@ -42,7 +42,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.tabs.TabLayout import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.BuildConfig import org.videolan.vlc.R @@ -336,7 +336,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>(), SwipeRef override fun onCtxAction(position: Int, option: Int) { @Suppress("UNCHECKED_CAST") - if (option == CTX_PLAY_ALL) MediaUtils.playAll(requireContext(), viewModel.providers[currentTab] as MedialibraryProvider<AMediaWrapper>, position, false) + if (option == CTX_PLAY_ALL) MediaUtils.playAll(requireContext(), viewModel.providers[currentTab] as MedialibraryProvider<AbstractMediaWrapper>, position, false) else super.onCtxAction(position, option) } @@ -346,7 +346,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>(), SwipeRef return } if (item.itemType == MediaLibraryItem.TYPE_MEDIA) { - MediaUtils.openMedia(activity, item as AMediaWrapper) + MediaUtils.openMedia(activity, item as AbstractMediaWrapper) return } val i: Intent diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt b/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt index eb2cf86609..21ee87b018 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt +++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt @@ -56,7 +56,7 @@ import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.isStarted import org.videolan.vlc.PlaybackService import org.videolan.vlc.R @@ -197,7 +197,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, CoroutineS } } - override fun onPopupMenu(view: View, position: Int, item: AMediaWrapper?) { + override fun onPopupMenu(view: View, position: Int, item: AbstractMediaWrapper?) { val activity = activity if (activity === null || position >= playlistAdapter.itemCount) return val flags = CTX_REMOVE_FROM_PLAYLIST or CTX_SET_RINGTONE or CTX_ADD_TO_PLAYLIST or CTX_STOP_AFTER_THIS @@ -320,7 +320,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, CoroutineS } } - override fun playItem(position: Int, item: AMediaWrapper) { + override fun playItem(position: Int, item: AbstractMediaWrapper) { clearSearch() playlistModel.play(playlistModel.getPlaylistPosition(position, item)) } @@ -372,7 +372,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, CoroutineS if (PlaybackService.hasRenderer()) VideoPlayerActivity.startOpened(v.context, it.uri, playlistModel.currentMediaPosition) else if (hasMedia()) { - it.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + it.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) playlistModel.switchToVideo() } } @@ -473,7 +473,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, CoroutineS override fun afterTextChanged(editable: Editable) {} - private val playlistObserver = Observer<MutableList<AMediaWrapper>> { + private val playlistObserver = Observer<MutableList<AbstractMediaWrapper>> { playlistAdapter.update(it!!) updateActor.offer(Unit) } diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt b/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt index f42a6d8aba..703af156a0 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt +++ b/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt @@ -33,7 +33,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewpager.widget.ViewPager import com.google.android.material.tabs.TabLayout import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.isStarted import org.videolan.vlc.R @@ -184,7 +184,7 @@ abstract class BaseAudioBrowser<T : SortableModel> : MediaBrowserFragment<T>(), R.id.action_mode_audio_append -> MediaUtils.appendMedia(activity, list.getTracks()) R.id.action_mode_audio_add_playlist -> UiTools.addToPlaylist(requireActivity(), list.getTracks()) R.id.action_mode_audio_info -> showInfoDialog(list[0]) - R.id.action_mode_audio_set_song -> AudioUtil.setRingtone(list[0] as AMediaWrapper, requireActivity()) + R.id.action_mode_audio_set_song -> AudioUtil.setRingtone(list[0] as AbstractMediaWrapper, requireActivity()) R.id.action_mode_audio_delete -> removeItems(list) } } @@ -192,7 +192,7 @@ abstract class BaseAudioBrowser<T : SortableModel> : MediaBrowserFragment<T>(), } private suspend fun List<MediaLibraryItem>.getTracks() = withContext(Dispatchers.Default) { - ArrayList<AMediaWrapper>().apply { + ArrayList<AbstractMediaWrapper>().apply { for (mediaItem in this@getTracks) addAll(Arrays.asList(*mediaItem.tracks)) } } @@ -267,7 +267,7 @@ abstract class BaseAudioBrowser<T : SortableModel> : MediaBrowserFragment<T>(), CTX_APPEND -> MediaUtils.appendMedia(requireActivity(), media.tracks) CTX_PLAY_NEXT -> MediaUtils.insertNext(requireActivity(), media.tracks) CTX_ADD_TO_PLAYLIST -> UiTools.addToPlaylist(requireActivity(), media.tracks, SavePlaylistDialog.KEY_NEW_TRACKS) - CTX_SET_RINGTONE -> AudioUtil.setRingtone(media as AMediaWrapper, requireActivity()) + CTX_SET_RINGTONE -> AudioUtil.setRingtone(media as AbstractMediaWrapper, requireActivity()) } } diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt index 0ca1c66ef6..2f29491adb 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt @@ -38,7 +38,7 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.VLCApplication import org.videolan.vlc.databinding.PlaylistItemBinding @@ -53,7 +53,7 @@ import java.util.* @ExperimentalCoroutinesApi @UseExperimental(ObsoleteCoroutinesApi::class) -class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<AMediaWrapper, PlaylistAdapter.ViewHolder>(), SwipeDragHelperAdapter { +class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<AbstractMediaWrapper, PlaylistAdapter.ViewHolder>(), SwipeDragHelperAdapter { private var mModel: PlaylistModel? = null @@ -72,9 +72,9 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<AMediaWrapp private val mHandler = PlaylistHandler(this) interface IPlayer { - fun onPopupMenu(view: View, position: Int, item: AMediaWrapper?) + fun onPopupMenu(view: View, position: Int, item: AbstractMediaWrapper?) fun onSelectionSet(position: Int) - fun playItem(position: Int, item: AMediaWrapper) + fun playItem(position: Int, item: AbstractMediaWrapper) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { @@ -100,7 +100,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<AMediaWrapp } @MainThread - override fun getItem(position: Int): AMediaWrapper { + override fun getItem(position: Int): AbstractMediaWrapper { return dataset[position] } @@ -159,7 +159,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<AMediaWrapp } } - fun onClick(v: View, media: AMediaWrapper) { + fun onClick(v: View, media: AbstractMediaWrapper) { val position = layoutPosition //getMediaPosition(media); player.playItem(position, media) } @@ -201,7 +201,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<AMediaWrapp } } - override fun createCB(): DiffUtilAdapter.DiffCallback<AMediaWrapper> { + override fun createCB(): DiffUtilAdapter.DiffCallback<AbstractMediaWrapper> { return MediaItemDiffCallback() } diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt index a53c385fba..5916c520a3 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt @@ -35,7 +35,7 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.MediaLibraryItem.TYPE_MEDIA import org.videolan.medialibrary.media.MediaLibraryItem.TYPE_STORAGE @@ -156,14 +156,14 @@ open class BaseBrowserAdapter() : DiffUtilAdapter<MediaLibraryItem, BaseBrowserA } private fun onBindMediaViewHolder(vh: MediaViewHolder, position: Int) { - val media = getItem(position) as AMediaWrapper + val media = getItem(position) as AbstractMediaWrapper val isFavorite = media.hasStateFlags(MediaLibraryItem.FLAG_FAVORITE) vh.binding.item = media val scheme = media.uri.scheme vh.binding.hasContextMenu = ((!networkRoot || isFavorite) && "content" != scheme && "otg" != scheme) - vh.binding.filename = if (media.type != AMediaWrapper.TYPE_DIR && "file" == scheme) media.fileName else null + vh.binding.filename = if (media.type != AbstractMediaWrapper.TYPE_DIR && "file" == scheme) media.fileName else null if (networkRoot) vh.binding.protocol = getProtocol(media) vh.binding.cover = getIcon(media, specialIcons) vh.selectView(multiSelectHelper.isSelected(position)) @@ -272,10 +272,10 @@ open class BaseBrowserAdapter() : DiffUtilAdapter<MediaLibraryItem, BaseBrowserA } - fun getIcon(media: AMediaWrapper, specialFolders: Boolean): BitmapDrawable { + fun getIcon(media: AbstractMediaWrapper, specialFolders: Boolean): BitmapDrawable { when (media.type) { - AMediaWrapper.TYPE_AUDIO -> return audioDrawable - AMediaWrapper.TYPE_DIR -> { + AbstractMediaWrapper.TYPE_AUDIO -> return audioDrawable + AbstractMediaWrapper.TYPE_DIR -> { if (specialFolders) { val uri = media.uri if (AndroidDevices.MediaFolders.EXTERNAL_PUBLIC_MOVIES_DIRECTORY_URI == uri || AndroidDevices.MediaFolders.WHATSAPP_VIDEOS_FILE_URI == uri) @@ -289,14 +289,14 @@ open class BaseBrowserAdapter() : DiffUtilAdapter<MediaLibraryItem, BaseBrowserA } return folderDrawable } - AMediaWrapper.TYPE_VIDEO -> return videoDrawable - AMediaWrapper.TYPE_SUBTITLE -> return subtitleDrawable + AbstractMediaWrapper.TYPE_VIDEO -> return videoDrawable + AbstractMediaWrapper.TYPE_SUBTITLE -> return subtitleDrawable else -> return unknownDrawable } } - private fun getProtocol(media: AMediaWrapper): String? { - return if (media.type != AMediaWrapper.TYPE_DIR) null else media.uri.scheme + private fun getProtocol(media: AbstractMediaWrapper): String? { + return if (media.type != AbstractMediaWrapper.TYPE_DIR) null else media.uri.scheme } open fun checkBoxAction(v: View, mrl: String) {} @@ -305,7 +305,7 @@ open class BaseBrowserAdapter() : DiffUtilAdapter<MediaLibraryItem, BaseBrowserA val internalList = ArrayList(list) mediaCount = 0 for (item in internalList) { - if (item.itemType == TYPE_MEDIA && ((item as AMediaWrapper).type == AMediaWrapper.TYPE_AUDIO || item.type == AMediaWrapper.TYPE_VIDEO)) + if (item.itemType == TYPE_MEDIA && ((item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_AUDIO || item.type == AbstractMediaWrapper.TYPE_VIDEO)) ++mediaCount } return internalList diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt index e93088748e..2a4d134d26 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt @@ -38,7 +38,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.databinding.DirectoryBrowserBinding @@ -74,7 +74,7 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr protected val handler = BrowserFragmentHandler(this) private lateinit var layoutManager: LinearLayoutManager var mrl: String? = null - protected var currentMedia: AMediaWrapper? = null + protected var currentMedia: AbstractMediaWrapper? = null private var savedPosition = -1 var isRootDirectory: Boolean = false protected var goBack = false @@ -209,7 +209,7 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr return !isRootDirectory } - fun browse(media: AMediaWrapper, save: Boolean) { + fun browse(media: AbstractMediaWrapper, save: Boolean) { val ctx = activity if (ctx == null || !isResumed || isRemoving) return val ft = ctx.supportFragmentManager.beginTransaction() @@ -283,7 +283,7 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr override fun removeItem(item: MediaLibraryItem): Boolean { val view = view ?: return false - val mw = item as? AMediaWrapper ?: return false + val mw = item as? AbstractMediaWrapper ?: return false val cancel = Runnable { viewModel.refresh() } val deleteAction = Runnable { launch { @@ -291,23 +291,23 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr viewModel.remove(mw) } } - val resId = if (mw.type == AMediaWrapper.TYPE_DIR) R.string.confirm_delete_folder else R.string.confirm_delete + val resId = if (mw.type == AbstractMediaWrapper.TYPE_DIR) R.string.confirm_delete_folder else R.string.confirm_delete UiTools.snackerConfirm(view, getString(resId, mw.title), Runnable { if (Util.checkWritePermission(requireActivity(), mw, deleteAction)) deleteAction.run() }) return true } - private fun showMediaInfo(mw: AMediaWrapper) { + private fun showMediaInfo(mw: AbstractMediaWrapper) { val i = Intent(activity, InfoActivity::class.java) i.putExtra(TAG_ITEM, mw) startActivity(i) } - private fun playAll(mw: AMediaWrapper?) { + private fun playAll(mw: AbstractMediaWrapper?) { var positionInPlaylist = 0 - val mediaLocations = LinkedList<AMediaWrapper>() + val mediaLocations = LinkedList<AbstractMediaWrapper>() for (file in viewModel.dataset.value) - if (file is AMediaWrapper) { - if (file.type == AMediaWrapper.TYPE_VIDEO || file.type == AMediaWrapper.TYPE_AUDIO) { + if (file is AbstractMediaWrapper) { + if (file.type == AbstractMediaWrapper.TYPE_VIDEO || file.type == AbstractMediaWrapper.TYPE_AUDIO) { mediaLocations.add(file) if (mw != null && file.equals(mw)) positionInPlaylist = mediaLocations.size - 1 @@ -332,15 +332,15 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr val fileBrowser = this is FileBrowserFragment val single = fileBrowser && count == 1 val selection = if (single) adapter.multiSelectHelper.getSelection() else null - val type = if (!Util.isListEmpty(selection)) (selection!![0] as AMediaWrapper).type else -1 - menu.findItem(R.id.action_mode_file_info).isVisible = single && (type == AMediaWrapper.TYPE_AUDIO || type == AMediaWrapper.TYPE_VIDEO) + val type = if (!Util.isListEmpty(selection)) (selection!![0] as AbstractMediaWrapper).type else -1 + menu.findItem(R.id.action_mode_file_info).isVisible = single && (type == AbstractMediaWrapper.TYPE_AUDIO || type == AbstractMediaWrapper.TYPE_VIDEO) menu.findItem(R.id.action_mode_file_append).isVisible = PlaylistManager.hasMedia() menu.findItem(R.id.action_mode_file_delete).isVisible = fileBrowser return true } override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { - val list = adapter.multiSelectHelper.getSelection() as? List<AMediaWrapper> ?: return false + val list = adapter.multiSelectHelper.getSelection() as? List<AbstractMediaWrapper> ?: return false if (list.isNotEmpty()) { when (item.itemId) { R.id.action_mode_file_play -> MediaUtils.openList(activity, list, 0) @@ -387,27 +387,27 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr } override fun onClick(v: View, position: Int, item: MediaLibraryItem) { - val mediaWrapper = item as AMediaWrapper + val mediaWrapper = item as AbstractMediaWrapper if (actionMode != null) { - if (mediaWrapper.type == AMediaWrapper.TYPE_AUDIO || - mediaWrapper.type == AMediaWrapper.TYPE_VIDEO || - mediaWrapper.type == AMediaWrapper.TYPE_DIR) { + if (mediaWrapper.type == AbstractMediaWrapper.TYPE_AUDIO || + mediaWrapper.type == AbstractMediaWrapper.TYPE_VIDEO || + mediaWrapper.type == AbstractMediaWrapper.TYPE_DIR) { adapter.multiSelectHelper.toggleSelection(position) invalidateActionMode() } } else { - mediaWrapper.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) - if (mediaWrapper.type == AMediaWrapper.TYPE_DIR) browse(mediaWrapper, true) + mediaWrapper.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) + if (mediaWrapper.type == AbstractMediaWrapper.TYPE_DIR) browse(mediaWrapper, true) else MediaUtils.openMedia(v.context, mediaWrapper) } } override fun onLongClick(v: View, position: Int, item: MediaLibraryItem): Boolean { if (item.itemType != MediaLibraryItem.TYPE_MEDIA) return false - val mediaWrapper = item as AMediaWrapper - if (mediaWrapper.type == AMediaWrapper.TYPE_AUDIO || - mediaWrapper.type == AMediaWrapper.TYPE_VIDEO || - mediaWrapper.type == AMediaWrapper.TYPE_DIR) { + val mediaWrapper = item as AbstractMediaWrapper + if (mediaWrapper.type == AbstractMediaWrapper.TYPE_AUDIO || + mediaWrapper.type == AbstractMediaWrapper.TYPE_VIDEO || + mediaWrapper.type == AbstractMediaWrapper.TYPE_DIR) { adapter.multiSelectHelper.toggleSelection(position) if (actionMode == null) startActionMode() } else onCtxClick(v, position, item) @@ -416,11 +416,11 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr override fun onCtxClick(v: View, position: Int, item: MediaLibraryItem) { if (actionMode == null && item.itemType == MediaLibraryItem.TYPE_MEDIA) launch { - val mw = item as AMediaWrapper + val mw = item as AbstractMediaWrapper if (mw.uri.scheme == "content" || mw.uri.scheme == OTG_SCHEME) return@launch var flags = if (!isRootDirectory && this@BaseBrowserFragment is FileBrowserFragment) CTX_DELETE else 0 if (!isRootDirectory && this is FileBrowserFragment) flags = flags or CTX_DELETE - if (mw.type == AMediaWrapper.TYPE_DIR) { + if (mw.type == AbstractMediaWrapper.TYPE_DIR) { val isEmpty = viewModel.isFolderEmpty(mw) if (!isEmpty) flags = flags or CTX_PLAY val isFileBrowser = this@BaseBrowserFragment is FileBrowserFragment && item.uri.scheme == "file" @@ -433,8 +433,8 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr } else flags or CTX_FAV_ADD } } else { - val isVideo = mw.type == AMediaWrapper.TYPE_VIDEO - val isAudio = mw.type == AMediaWrapper.TYPE_AUDIO + val isVideo = mw.type == AbstractMediaWrapper.TYPE_VIDEO + val isAudio = mw.type == AbstractMediaWrapper.TYPE_AUDIO val isMedia = isVideo || isAudio if (isMedia) flags = flags or CTX_PLAY_ALL or CTX_APPEND or CTX_INFORMATION or CTX_ADD_TO_PLAYLIST if (!isAudio) flags = flags or CTX_PLAY_AS_AUDIO @@ -445,18 +445,19 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr } override fun onCtxAction(position: Int, option: Int) { - val mw = adapter.getItem(position) as? AMediaWrapper ?: return + val mw = adapter.getItem(position) as? AbstractMediaWrapper + ?: return when (option) { CTX_PLAY -> MediaUtils.openMedia(activity, mw) CTX_PLAY_ALL -> { - mw.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + mw.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) playAll(mw) } CTX_APPEND -> MediaUtils.appendMedia(activity, mw) CTX_DELETE -> removeItem(mw) CTX_INFORMATION -> showMediaInfo(mw) CTX_PLAY_AS_AUDIO -> { - mw.addFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + mw.addFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) MediaUtils.openMedia(activity, mw) } CTX_ADD_TO_PLAYLIST -> UiTools.addToPlaylist(requireActivity(), mw.tracks, SavePlaylistDialog.KEY_NEW_TRACKS) diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionAdapter.kt index 9c0b9b475e..92b0c1e948 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionAdapter.kt @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.databinding.ExtensionItemViewBinding import org.videolan.vlc.extensions.api.VLCExtensionItem @@ -36,7 +36,7 @@ class ExtensionAdapter(internal var fragment: ExtensionBrowser?) : RecyclerView. if (item.type == VLCExtensionItem.TYPE_DIRECTORY) { fragment!!.browseItem(item) } else if (item.type == VLCExtensionItem.TYPE_AUDIO || item.type == VLCExtensionItem.TYPE_VIDEO) { - val mw = MLServiceLocator.getAMediaWrapper(Uri.parse(item.link)) + val mw = MLServiceLocator.getAbstractMediaWrapper(Uri.parse(item.link)) mw.setDisplayTitle(item.getTitle()) mw.description = item.getSubTitle() mw.type = getTypeAccordingToItem(item.type) @@ -100,12 +100,12 @@ class ExtensionAdapter(internal var fragment: ExtensionBrowser?) : RecyclerView. private fun getTypeAccordingToItem(type: Int): Int { return when (type) { - VLCExtensionItem.TYPE_DIRECTORY -> AMediaWrapper.TYPE_DIR - VLCExtensionItem.TYPE_VIDEO -> AMediaWrapper.TYPE_VIDEO - VLCExtensionItem.TYPE_AUDIO -> AMediaWrapper.TYPE_AUDIO - VLCExtensionItem.TYPE_PLAYLIST -> AMediaWrapper.TYPE_PLAYLIST - VLCExtensionItem.TYPE_SUBTITLE -> AMediaWrapper.TYPE_SUBTITLE - else -> AMediaWrapper.TYPE_ALL + VLCExtensionItem.TYPE_DIRECTORY -> AbstractMediaWrapper.TYPE_DIR + VLCExtensionItem.TYPE_VIDEO -> AbstractMediaWrapper.TYPE_VIDEO + VLCExtensionItem.TYPE_AUDIO -> AbstractMediaWrapper.TYPE_AUDIO + VLCExtensionItem.TYPE_PLAYLIST -> AbstractMediaWrapper.TYPE_PLAYLIST + VLCExtensionItem.TYPE_SUBTITLE -> AbstractMediaWrapper.TYPE_SUBTITLE + else -> AbstractMediaWrapper.TYPE_ALL } } diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionBrowser.kt b/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionBrowser.kt index 891823c569..2250cc0a47 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionBrowser.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionBrowser.kt @@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView import com.google.android.material.floatingactionbutton.FloatingActionButton import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.extensions.ExtensionManagerService import org.videolan.vlc.extensions.Utils @@ -154,14 +154,14 @@ class ExtensionBrowser : Fragment(), View.OnClickListener, androidx.swiperefresh when (option) { CTX_PLAY_ALL -> { val items = mAdapter.all - val medias = ArrayList<AMediaWrapper>(items.size) + val medias = ArrayList<AbstractMediaWrapper>(items.size) for (vlcItem in items) medias.add(Utils.mediawrapperFromExtension(vlcItem)) MediaUtils.openList(activity, medias, position) } CTX_APPEND -> MediaUtils.appendMedia(activity, Utils.mediawrapperFromExtension(mAdapter.getItem(position))) CTX_PLAY_AS_AUDIO -> { val mw = Utils.mediawrapperFromExtension(mAdapter.getItem(position)) - mw.addFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + mw.addFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) MediaUtils.openMedia(activity, mw) } CTX_ITEM_DL -> { diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt index 16b12a4efa..18d6e680df 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt @@ -36,7 +36,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.R @@ -108,7 +108,7 @@ open class FileBrowserFragment : BaseBrowserFragment() { override fun onClick(v: View, position: Int, item: MediaLibraryItem) { if (item.itemType == MediaLibraryItem.TYPE_MEDIA) { - val mw = item as AMediaWrapper + val mw = item as AbstractMediaWrapper if ("otg://" == mw.location) { val title = getString(R.string.otg_device_title) val otgRoot = OtgAccess.otgRoot @@ -131,7 +131,7 @@ open class FileBrowserFragment : BaseBrowserFragment() { } override fun onCtxAction(position: Int, option: Int) { - val mw = this.adapter.getItem(position) as AMediaWrapper? + val mw = this.adapter.getItem(position) as AbstractMediaWrapper? when (option) { CTX_FAV_ADD -> browserFavRepository.addLocalFavItem(mw!!.uri, mw.title, mw.artworkURL) else -> super.onCtxAction(position, option) @@ -164,8 +164,8 @@ open class FileBrowserFragment : BaseBrowserFragment() { private fun browseOtgDevice(uri: Uri, title: String) { - val mw = MLServiceLocator.getAMediaWrapper(uri) - mw.type = AMediaWrapper.TYPE_DIR + val mw = MLServiceLocator.getAbstractMediaWrapper(uri) + mw.type = AbstractMediaWrapper.TYPE_DIR mw.title = title handler.post { browse(mw, true) } } diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerAdapter.kt index 7d1fc77cfe..a064a8160e 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerAdapter.kt @@ -26,7 +26,7 @@ package org.videolan.vlc.gui.browser import androidx.databinding.ViewDataBinding import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi @@ -34,7 +34,7 @@ class FilePickerAdapter internal constructor(fragment: BaseBrowserFragment) : Ba override fun onBindViewHolder(holder: ViewHolder<ViewDataBinding>, position: Int) { val h = holder as MediaViewHolder - val media = getItem(position) as AMediaWrapper + val media = getItem(position) as AbstractMediaWrapper h.binding.item = media h.binding.hasContextMenu = false h.binding.protocol = null diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt index 4c8de4f4fa..ca40217290 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt @@ -34,7 +34,7 @@ import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.repository.DirectoryRepository @@ -80,15 +80,15 @@ class FilePickerFragment : FileBrowserFragment() { } override fun onClick(v: View, position: Int, item: MediaLibraryItem) { - val media = item as AMediaWrapper - if (media.type == AMediaWrapper.TYPE_DIR) + val media = item as AbstractMediaWrapper + if (media.type == AbstractMediaWrapper.TYPE_DIR) browse(media, true) else pickFile(media) } - private fun pickFile(mw: AMediaWrapper) { + private fun pickFile(mw: AbstractMediaWrapper) { val i = Intent(Intent.ACTION_PICK) i.putExtra(EXTRA_MRL, mw.location) requireActivity().setResult(Activity.RESULT_OK, i) @@ -104,7 +104,7 @@ class FilePickerFragment : FileBrowserFragment() { viewModel.refresh() } mrl != null -> { - val mw = MLServiceLocator.getAMediaWrapper(Uri.parse(FileUtils.getParent(mrl))) + val mw = MLServiceLocator.getAbstractMediaWrapper(Uri.parse(FileUtils.getParent(mrl))) browse(mw, false) } } diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt index c171c5e33c..c8c12e7b84 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt @@ -38,9 +38,9 @@ import androidx.recyclerview.widget.RecyclerView import androidx.transition.TransitionManager import com.google.android.material.floatingactionbutton.FloatingActionButton import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.isStarted import org.videolan.vlc.R @@ -71,7 +71,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : Fragment(), ActionMode. private lateinit var searchButtonView: View var swipeRefreshLayout: SwipeRefreshLayout? = null - lateinit var mediaLibrary: AMedialibrary + lateinit var mediaLibrary: AbstractMedialibrary var actionMode: ActionMode? = null var fabPlay: FloatingActionButton? = null open lateinit var viewModel: T @@ -162,8 +162,8 @@ abstract class MediaBrowserFragment<T : SortableModel> : Fragment(), ActionMode. for (item in items) { if (!isStarted()) break when(item) { - is AMediaWrapper -> if (getWritePermission(item.uri)) deleteMedia(item) - is APlaylist -> withContext(Dispatchers.IO) { item.delete() } + is AbstractMediaWrapper -> if (getWritePermission(item.uri)) deleteMedia(item) + is AbstractPlaylist -> withContext(Dispatchers.IO) { item.delete() } } } if (isStarted()) viewModel.refresh() @@ -173,12 +173,12 @@ abstract class MediaBrowserFragment<T : SortableModel> : Fragment(), ActionMode. protected open fun removeItem(item: MediaLibraryItem): Boolean { view ?: return false when { - item.itemType == MediaLibraryItem.TYPE_PLAYLIST -> UiTools.snackerConfirm(view!!, getString(R.string.confirm_delete_playlist, item.title), Runnable { MediaUtils.deletePlaylist(item as APlaylist) }) + item.itemType == MediaLibraryItem.TYPE_PLAYLIST -> UiTools.snackerConfirm(view!!, getString(R.string.confirm_delete_playlist, item.title), Runnable { MediaUtils.deletePlaylist(item as AbstractPlaylist) }) item.itemType == MediaLibraryItem.TYPE_MEDIA -> { val deleteAction = Runnable { if (isStarted()) launch { deleteMedia(item, false, null) } } - val resid = if ((item as AMediaWrapper).type == AMediaWrapper.TYPE_DIR) R.string.confirm_delete_folder else R.string.confirm_delete + val resid = if ((item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_DIR) R.string.confirm_delete_folder else R.string.confirm_delete UiTools.snackerConfirm(view!!, getString(resid, item.getTitle()), Runnable { if (Util.checkWritePermission(requireActivity(), item, deleteAction)) deleteAction.run() }) } else -> return false @@ -210,7 +210,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : Fragment(), ActionMode. } } - private fun onDeleteFailed(media: AMediaWrapper) { + private fun onDeleteFailed(media: AbstractMediaWrapper) { if (isAdded) view?.let { UiTools.snacker(it, getString(R.string.msg_delete_failed, media.title)) } } @@ -244,35 +244,35 @@ abstract class MediaBrowserFragment<T : SortableModel> : Fragment(), ActionMode. override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.ml_menu_sortby_name -> { - sortBy(AMedialibrary.SORT_ALPHA) + sortBy(AbstractMedialibrary.SORT_ALPHA) return true } R.id.ml_menu_sortby_filename -> { - sortBy(AMedialibrary.SORT_FILENAME) + sortBy(AbstractMedialibrary.SORT_FILENAME) return true } R.id.ml_menu_sortby_length -> { - sortBy(AMedialibrary.SORT_DURATION) + sortBy(AbstractMedialibrary.SORT_DURATION) return true } R.id.ml_menu_sortby_date -> { - sortBy(AMedialibrary.SORT_RELEASEDATE) + sortBy(AbstractMedialibrary.SORT_RELEASEDATE) return true } R.id.ml_menu_sortby_last_modified -> { - sortBy(AMedialibrary.SORT_LASTMODIFICATIONDATE) + sortBy(AbstractMedialibrary.SORT_LASTMODIFICATIONDATE) return true } R.id.ml_menu_sortby_artist_name -> { - sortBy(AMedialibrary.SORT_ARTIST) + sortBy(AbstractMedialibrary.SORT_ARTIST) return true } R.id.ml_menu_sortby_album_name -> { - sortBy(AMedialibrary.SORT_ALBUM) + sortBy(AbstractMedialibrary.SORT_ALBUM) return true } R.id.ml_menu_sortby_number -> { - sortBy(AMedialibrary.SORT_FILESIZE) //TODO + sortBy(AbstractMedialibrary.SORT_FILESIZE) //TODO return super.onOptionsItemSelected(item) } else -> return super.onOptionsItemSelected(item) diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.kt index e9ea8a1233..9af0d326b9 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.kt @@ -40,7 +40,7 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -131,7 +131,7 @@ class NetworkBrowserFragment : BaseBrowserFragment() { } override fun onCtxAction(position: Int, option: Int) { - val mw = this.adapter.getItem(position) as AMediaWrapper + val mw = this.adapter.getItem(position) as AbstractMediaWrapper when (option) { CTX_FAV_ADD -> browserFavRepository.addNetworkFavItem(mw.uri, mw.title, mw.artworkURL) CTX_FAV_EDIT -> showAddServerDialog(mw) @@ -182,7 +182,7 @@ class NetworkBrowserFragment : BaseBrowserFragment() { else if (v.id == R.id.fab) showAddServerDialog(null) } - private fun showAddServerDialog(mw: AMediaWrapper?) { + private fun showAddServerDialog(mw: AbstractMediaWrapper?) { val fm = fragmentManager ?: return val dialog = NetworkServerDialog() if (mw != null) dialog.setServer(mw) diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt index 8e8994617d..eced753530 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt @@ -7,14 +7,14 @@ import android.view.ViewGroup import android.widget.TextView import androidx.collection.SimpleArrayMap import androidx.recyclerview.widget.RecyclerView -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.util.AndroidDevices private val storages = SimpleArrayMap<String, String>() -class PathAdapter(val browser: PathAdapterListener, media: AMediaWrapper) : RecyclerView.Adapter<PathAdapter.ViewHolder>() { +class PathAdapter(val browser: PathAdapterListener, media: AbstractMediaWrapper) : RecyclerView.Adapter<PathAdapter.ViewHolder>() { init { if (media.hasStateFlags(MediaLibraryItem.FLAG_STORAGE)) storages.put(Uri.decode(media.uri.path), media.title) diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserAdapter.kt index 3fbe725979..32cd7aa711 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserAdapter.kt @@ -31,7 +31,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.Storage import org.videolan.vlc.MediaParsingService @@ -57,7 +57,7 @@ internal class StorageBrowserAdapter(fragment: StorageBrowserFragment) : BaseBro val vh = holder as BaseBrowserAdapter.MediaViewHolder var storage = getItem(position) - if (storage.itemType == MediaLibraryItem.TYPE_MEDIA) storage = Storage((storage as AMediaWrapper).uri) + if (storage.itemType == MediaLibraryItem.TYPE_MEDIA) storage = Storage((storage as AbstractMediaWrapper).uri) var storagePath = (storage as Storage).uri.path ?: "" if (!storagePath.endsWith("/")) storagePath += "/" vh.binding.item = storage diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt index 063810dbc5..aa5ef57af3 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt @@ -45,7 +45,7 @@ import kotlinx.coroutines.launch import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.interfaces.EntryPointsEventsCb -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.Storage import org.videolan.vlc.MediaParsingService @@ -135,7 +135,7 @@ class StorageBrowserFragment : FileBrowserFragment(), EntryPointsEventsCb { return super.onOptionsItemSelected(item) } - fun browse(media: AMediaWrapper, position: Int, scanned: Boolean) { + fun browse(media: AbstractMediaWrapper, position: Int, scanned: Boolean) { val ft = activity?.supportFragmentManager?.beginTransaction() val next = createFragment() val args = Bundle() @@ -166,8 +166,8 @@ class StorageBrowserFragment : FileBrowserFragment(), EntryPointsEventsCb { } override fun onClick(v: View, position: Int, item: MediaLibraryItem) { - val mw = (item as? Storage)?.let { MLServiceLocator.getAMediaWrapper(it.uri) } ?: return - mw.type = AMediaWrapper.TYPE_DIR + val mw = (item as? Storage)?.let { MLServiceLocator.getAbstractMediaWrapper(it.uri) } ?: return + mw.type = AbstractMediaWrapper.TYPE_DIR browse(mw, position, (DataBindingUtil.findBinding<BrowserItemBinding>(v))?.browserCheckbox?.state == ThreeStatesCheckbox.STATE_CHECKED) } diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt index 9e06a44241..68d9aad254 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt @@ -16,7 +16,7 @@ import android.widget.* import androidx.appcompat.app.AppCompatDialog import androidx.fragment.app.DialogFragment import com.google.android.material.textfield.TextInputLayout -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.gui.DialogActivity import org.videolan.vlc.gui.MainActivity @@ -246,7 +246,7 @@ class NetworkServerDialog : DialogFragment(), AdapterView.OnItemSelectedListener } } - fun setServer(mw: AMediaWrapper) { + fun setServer(mw: AbstractMediaWrapper) { networkUri = mw.uri networkName = mw.title } diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt index 49cec6904e..5588ac9b7a 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt @@ -36,10 +36,10 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED import com.google.android.material.textfield.TextInputLayout -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -57,9 +57,9 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener, private lateinit var mEmptyView: TextView private lateinit var mSaveButton: Button private lateinit var adapter: SimpleAdapter - private lateinit var mTracks: Array<AMediaWrapper> - private lateinit var mNewTrack: Array<AMediaWrapper> - private lateinit var mMedialibrary: AMedialibrary + private lateinit var mTracks: Array<AbstractMediaWrapper> + private lateinit var mNewTrack: Array<AbstractMediaWrapper> + private lateinit var mMedialibrary: AbstractMedialibrary private var mPlaylistId: Long = 0 override fun initialFocusedView(): View = mListView @@ -70,13 +70,13 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener, adapter = SimpleAdapter(this) mTracks = try { @Suppress("UNCHECKED_CAST") - arguments!!.getParcelableArray(KEY_TRACKS) as Array<AMediaWrapper> + arguments!!.getParcelableArray(KEY_TRACKS) as Array<AbstractMediaWrapper> } catch (e: Exception) { emptyArray() } mNewTrack = try { @Suppress("UNCHECKED_CAST") - arguments!!.getParcelableArray(KEY_NEW_TRACKS) as Array<AMediaWrapper> + arguments!!.getParcelableArray(KEY_NEW_TRACKS) as Array<AbstractMediaWrapper> } catch (e: Exception) { emptyArray() } @@ -123,9 +123,9 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener, runIO(Runnable { val name = mEditText!!.text.toString().trim { it <= ' ' } val addTracks = !Tools.isArrayEmpty(mNewTrack) - var playlist: APlaylist? = mMedialibrary.getPlaylist(mPlaylistId) + var playlist: AbstractPlaylist? = mMedialibrary.getPlaylist(mPlaylistId) val exists = playlist != null - val tracks: Array<AMediaWrapper>? + val tracks: Array<AbstractMediaWrapper>? if (!exists) playlist = mMedialibrary.createPlaylist(name) if (playlist == null) return@Runnable tracks = if (addTracks) { diff --git a/vlc-android/src/org/videolan/vlc/gui/folders/FoldersAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/folders/FoldersAdapter.kt index 3e6754acd1..fe17cb1af2 100644 --- a/vlc-android/src/org/videolan/vlc/gui/folders/FoldersAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/folders/FoldersAdapter.kt @@ -13,14 +13,14 @@ import kotlinx.coroutines.channels.SendChannel import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.media.AFolder +import org.videolan.medialibrary.interfaces.media.AbstractFolder import org.videolan.tools.MultiSelectAdapter import org.videolan.tools.MultiSelectHelper import org.videolan.vlc.databinding.FolderItemBinding import org.videolan.vlc.gui.helpers.SelectorViewHolder import org.videolan.vlc.util.UPDATE_SELECTION -class FoldersAdapter(val actor: SendChannel<FolderAction>) : PagedListAdapter<AFolder, FoldersAdapter.ViewHolder>(DIFF_CALLBACK), MultiSelectAdapter<AFolder>, CoroutineScope { +class FoldersAdapter(val actor: SendChannel<FolderAction>) : PagedListAdapter<AbstractFolder, FoldersAdapter.ViewHolder>(DIFF_CALLBACK), MultiSelectAdapter<AbstractFolder>, CoroutineScope { override val coroutineContext = Dispatchers.Main.immediate private lateinit var inflater: LayoutInflater @@ -36,7 +36,7 @@ class FoldersAdapter(val actor: SendChannel<FolderAction>) : PagedListAdapter<AF val folder = getItem(position) holder.binding.folder = folder launch { - val count = withContext(Dispatchers.IO) { folder?.mediaCount(AFolder.TYPE_FOLDER_VIDEO) ?: 0 } + val count = withContext(Dispatchers.IO) { folder?.mediaCount(AbstractFolder.TYPE_FOLDER_VIDEO) ?: 0 } holder.binding.folderDesc.visibility = if (count == 0) View.GONE else View.VISIBLE if (count > 0) holder.binding.folderDesc.text = "$count videos" } @@ -54,7 +54,7 @@ class FoldersAdapter(val actor: SendChannel<FolderAction>) : PagedListAdapter<AF } } - override fun getItem(position: Int): AFolder? = super.getItem(position) + override fun getItem(position: Int): AbstractFolder? = super.getItem(position) @TargetApi(Build.VERSION_CODES.M) inner class ViewHolder(binding: FolderItemBinding) : SelectorViewHolder<FolderItemBinding>(binding) { @@ -81,10 +81,10 @@ class FoldersAdapter(val actor: SendChannel<FolderAction>) : PagedListAdapter<AF } private const val UPDATE_PAYLOAD = 1 -private val DIFF_CALLBACK = object : DiffUtil.ItemCallback<AFolder>() { - override fun areItemsTheSame( oldItem: AFolder, newItem: AFolder) = oldItem == newItem +private val DIFF_CALLBACK = object : DiffUtil.ItemCallback<AbstractFolder>() { + override fun areItemsTheSame(oldItem: AbstractFolder, newItem: AbstractFolder) = oldItem == newItem - override fun areContentsTheSame(oldItem: AFolder, newItem: AFolder) = true + override fun areContentsTheSame(oldItem: AbstractFolder, newItem: AbstractFolder) = true - override fun getChangePayload(oldItem: AFolder, newItem: AFolder) = UPDATE_PAYLOAD + override fun getChangePayload(oldItem: AbstractFolder, newItem: AbstractFolder) = UPDATE_PAYLOAD } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/gui/folders/FoldersFragment.kt b/vlc-android/src/org/videolan/vlc/gui/folders/FoldersFragment.kt index 57e2b893a0..8b73d0d0d2 100644 --- a/vlc-android/src/org/videolan/vlc/gui/folders/FoldersFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/folders/FoldersFragment.kt @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.folders_fragment.* import kotlinx.coroutines.* import kotlinx.coroutines.channels.actor -import org.videolan.medialibrary.interfaces.media.AFolder +import org.videolan.medialibrary.interfaces.media.AbstractFolder import org.videolan.vlc.R import org.videolan.vlc.gui.SecondaryActivity import org.videolan.vlc.gui.browser.MediaBrowserFragment @@ -149,6 +149,6 @@ class FoldersFragment : MediaBrowserFragment<FoldersViewModel>(), CtxActionRecei } sealed class FolderAction -class FolderClick(val position: Int, val folder: AFolder) : FolderAction() -class FolderLongClick(val position: Int, val folder: AFolder) : FolderAction() -class FolderCtxClick(val position: Int, val folder: AFolder) : FolderAction() \ No newline at end of file +class FolderClick(val position: Int, val folder: AbstractFolder) : FolderAction() +class FolderLongClick(val position: Int, val folder: AbstractFolder) : FolderAction() +class FolderCtxClick(val position: Int, val folder: AbstractFolder) : FolderAction() \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt index ed9a14e679..366afbb3b7 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt @@ -36,7 +36,7 @@ import androidx.fragment.app.FragmentActivity import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.BuildConfig import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -71,7 +71,7 @@ object AudioUtil { // */ // public static AtomicReference<String> PLAYLIST_DIR = new AtomicReference<>(); - fun setRingtone(song: AMediaWrapper, context: FragmentActivity) { + fun setRingtone(song: AbstractMediaWrapper, context: FragmentActivity) { if (AndroidUtil.isOOrLater && !Permissions.canWriteStorage(context)) { Permissions.askWriteStoragePermission(context, false, Runnable { setRingtone(song, context) }) return @@ -173,7 +173,7 @@ object AudioUtil { dir.delete() } - private fun getCoverFromMediaStore(context: Context, media: AMediaWrapper): String? { + private fun getCoverFromMediaStore(context: Context, media: AbstractMediaWrapper): String? { val album = media.album ?: return null val contentResolver = context.contentResolver val uri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI @@ -195,7 +195,7 @@ object AudioUtil { } @Throws(NoSuchAlgorithmException::class, UnsupportedEncodingException::class) - private fun getCoverFromVlc(context: Context, media: AMediaWrapper): String? { + private fun getCoverFromVlc(context: Context, media: AbstractMediaWrapper): String? { var artworkURL: String? = media.artworkURL if (artworkURL != null && artworkURL.startsWith("file://")) { return Uri.decode(artworkURL).replace("file://", "") @@ -229,7 +229,7 @@ object AudioUtil { return null } - private fun getCoverFromFolder(media: AMediaWrapper): String? { + private fun getCoverFromFolder(media: AbstractMediaWrapper): String? { val f = AndroidUtil.UriToFile(media.uri) ?: return null val folder = f.parentFile ?: return null @@ -264,12 +264,12 @@ object AudioUtil { return null } - private fun getCoverCachePath(context: Context, media: AMediaWrapper, width: Int): String { + private fun getCoverCachePath(context: Context, media: AbstractMediaWrapper, width: Int): String { val hash = MurmurHash.hash32(MediaUtils.getMediaArtist(context, media) + MediaUtils.getMediaAlbum(context, media)) return COVER_DIR.get() + (if (hash >= 0) "" + hash else "m" + -hash) + "_" + width } - private fun getCoverFromMemCache(context: Context, media: AMediaWrapper?, width: Int): Bitmap? { + private fun getCoverFromMemCache(context: Context, media: AbstractMediaWrapper?, width: Int): Bitmap? { var cover: Bitmap? = null if (media != null && media.artist != null && media.album != null) { cover = BitmapCache.getBitmapFromMemCache(getCoverCachePath(context, media, width)) @@ -282,7 +282,7 @@ object AudioUtil { @SuppressLint("NewApi") @Synchronized - fun getCover(context: Context, media: AMediaWrapper, width: Int): Bitmap? { + fun getCover(context: Context, media: AbstractMediaWrapper, width: Int): Bitmap? { var coverPath: String? = null var cover: Bitmap? = null var cachePath: String? = null @@ -387,7 +387,7 @@ object AudioUtil { } @JvmOverloads - fun getCover(context: Context, list: List<AMediaWrapper>, width: Int, fromMemCache: Boolean = false): Bitmap? { + fun getCover(context: Context, list: List<AbstractMediaWrapper>, width: Int, fromMemCache: Boolean = false): Bitmap? { var cover: Bitmap? = null val testedAlbums = LinkedList<String>() for (media in list) { @@ -406,7 +406,7 @@ object AudioUtil { return cover } - fun getCoverFromMemCache(context: Context, list: List<AMediaWrapper>, width: Int): Bitmap? { + fun getCoverFromMemCache(context: Context, list: List<AbstractMediaWrapper>, width: Int): Bitmap? { return getCover(context, list, width, true) } } diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt index 576b915a20..fabaa0d8c9 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt @@ -23,7 +23,7 @@ package org.videolan.vlc.gui.helpers import android.graphics.Bitmap import android.graphics.BitmapFactory import android.net.Uri -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -31,21 +31,21 @@ object BitmapUtil { const val TAG = "VLC/UiTools/BitmapUtil" - fun getPictureFromCache(media: AMediaWrapper): Bitmap? { + fun getPictureFromCache(media: AbstractMediaWrapper): Bitmap? { // mPicture is not null only if passed through // the ctor which is deprecated by now. val b = media.picture return b ?: BitmapCache.getBitmapFromMemCache(media.location) } - private fun fetchPicture(media: AMediaWrapper): Bitmap? { + private fun fetchPicture(media: AbstractMediaWrapper): Bitmap? { val picture = readCoverBitmap(media.artworkURL) if (picture != null) BitmapCache.addBitmapToMemCache(media.location, picture) return picture } - fun getPicture(media: AMediaWrapper): Bitmap? { + fun getPicture(media: AbstractMediaWrapper): Bitmap? { val picture = getPictureFromCache(media) return picture ?: fetchPicture(media) } diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt index b1a87ca27d..fbc15122e3 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt @@ -18,7 +18,7 @@ import androidx.databinding.OnRebindCallback import androidx.databinding.ViewDataBinding import androidx.leanback.widget.ImageCardView import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.BR import org.videolan.vlc.R @@ -50,11 +50,11 @@ fun loadImage(v: View, item: MediaLibraryItem?) { return } val isMedia = item.itemType == MediaLibraryItem.TYPE_MEDIA - if (isMedia && (item as AMediaWrapper).type == AMediaWrapper.TYPE_VIDEO && !Settings.showVideoThumbs) { + if (isMedia && (item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_VIDEO && !Settings.showVideoThumbs) { updateImageView(UiTools.getDefaultVideoDrawable(v.context).bitmap, v, binding) return } - val isGroup = isMedia && (item as AMediaWrapper).type == AMediaWrapper.TYPE_GROUP + val isGroup = isMedia && (item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_GROUP val isFolder = !isMedia && item.itemType == MediaLibraryItem.TYPE_FOLDER; val cacheKey = when { isGroup -> "group:${item.title}" @@ -85,7 +85,7 @@ fun getAudioIconDrawable(context: Context?, type: Int): BitmapDrawable? = contex } fun getMediaIconDrawable(context: Context, type: Int): BitmapDrawable? = when (type) { - AMediaWrapper.TYPE_VIDEO -> UiTools.getDefaultVideoDrawable(context) + AbstractMediaWrapper.TYPE_VIDEO -> UiTools.getDefaultVideoDrawable(context) else -> UiTools.getDefaultAudioDrawable(context) } @@ -223,11 +223,11 @@ fun updateImageView(bitmap: Bitmap?, target: View, vdb: ViewDataBinding?) { private suspend fun findInLibrary(item: MediaLibraryItem, isMedia: Boolean, isGroup: Boolean): MediaLibraryItem { if (isMedia && !isGroup && item.id == 0L) { - val mw = item as AMediaWrapper + val mw = item as AbstractMediaWrapper val type = mw.type - val isMediaFile = type == AMediaWrapper.TYPE_AUDIO || type == AMediaWrapper.TYPE_VIDEO + val isMediaFile = type == AbstractMediaWrapper.TYPE_AUDIO || type == AbstractMediaWrapper.TYPE_VIDEO val uri = mw.uri - if (!isMediaFile && !(type == AMediaWrapper.TYPE_DIR && "upnp" == uri.scheme)) return item + if (!isMediaFile && !(type == AbstractMediaWrapper.TYPE_DIR && "upnp" == uri.scheme)) return item if (isMediaFile && "file" == uri.scheme) return withContext(Dispatchers.IO) { sMedialibrary.getMedia(uri) } ?: item } diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/MediaComparators.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/MediaComparators.kt index 01e47c1526..2f3d90d8a6 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/MediaComparators.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/MediaComparators.kt @@ -19,12 +19,12 @@ */ package org.videolan.vlc.gui.helpers -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import java.util.* object MediaComparators { - val byTrackNumber: Comparator<AMediaWrapper> = Comparator { m1, m2 -> + val BY_TRACK_NUMBER: Comparator<AbstractMediaWrapper> = Comparator { m1, m2 -> if (m1.discNumber < m2.discNumber) return@Comparator -1 if (m1.discNumber > m2.discNumber) return@Comparator 1 if (m1.trackNumber < m2.trackNumber) return@Comparator -1 diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt index 8010475a81..53819e993e 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt @@ -241,7 +241,7 @@ class PlayerOptionsDelegate(val activity: AppCompatActivity, val service: Playba tag = "equalizer" } ID_SAVE_PLAYLIST -> { - UiTools.addToPlaylist(activity, service.medias) + UiTools.addToPlaylist(activity, service.media) hide() return } diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt index 156f2342a1..7b1a67745b 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt @@ -63,9 +63,9 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.isStarted import org.videolan.vlc.BuildConfig @@ -253,15 +253,15 @@ object UiTools { } } - fun savePlaylist(activity: FragmentActivity, list: List<AMediaWrapper>) { + fun savePlaylist(activity: FragmentActivity, list: List<AbstractMediaWrapper>) { addToPlaylist(activity, list.toTypedArray(), SavePlaylistDialog.KEY_TRACKS) } - fun addToPlaylist(activity: FragmentActivity, list: List<AMediaWrapper>) { + fun addToPlaylist(activity: FragmentActivity, list: List<AbstractMediaWrapper>) { addToPlaylist(activity, list.toTypedArray(), SavePlaylistDialog.KEY_NEW_TRACKS) } - fun addToPlaylist(activity: FragmentActivity, tracks: Array<AMediaWrapper>, key: String) { + fun addToPlaylist(activity: FragmentActivity, tracks: Array<AbstractMediaWrapper>, key: String) { if (!activity.isStarted()) return val savePlaylistDialog = SavePlaylistDialog() val args = Bundle() @@ -276,7 +276,7 @@ object UiTools { MediaLibraryItem.TYPE_ARTIST -> getDefaultArtistDrawable(context) MediaLibraryItem.TYPE_ALBUM -> getDefaultAlbumDrawable(context) MediaLibraryItem.TYPE_MEDIA -> { - if ((item as AMediaWrapper).type == AMediaWrapper.TYPE_VIDEO) getDefaultVideoDrawable(context) else getDefaultAudioDrawable(context) + if ((item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_VIDEO) getDefaultVideoDrawable(context) else getDefaultAudioDrawable(context) } else -> getDefaultAudioDrawable(context) } @@ -325,21 +325,21 @@ object UiTools { val sort = provider.sort val desc = provider.desc var item: MenuItem? = menu.findItem(R.id.ml_menu_sortby_name) - item?.setTitle(if (sort == AMedialibrary.SORT_ALPHA && !desc) R.string.sortby_name_desc else R.string.sortby_name) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_ALPHA && !desc) R.string.sortby_name_desc else R.string.sortby_name) item = menu.findItem(R.id.ml_menu_sortby_filename) - item?.setTitle(if (sort == AMedialibrary.SORT_FILENAME && !desc) R.string.sortby_filename_desc else R.string.sortby_filename) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_FILENAME && !desc) R.string.sortby_filename_desc else R.string.sortby_filename) item = menu.findItem(R.id.ml_menu_sortby_artist_name) - item?.setTitle(if (sort == AMedialibrary.SORT_ARTIST && !desc) R.string.sortby_artist_name_desc else R.string.sortby_artist_name) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_ARTIST && !desc) R.string.sortby_artist_name_desc else R.string.sortby_artist_name) item = menu.findItem(R.id.ml_menu_sortby_album_name) - item?.setTitle(if (sort == AMedialibrary.SORT_ALBUM && !desc) R.string.sortby_album_name_desc else R.string.sortby_album_name) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_ALBUM && !desc) R.string.sortby_album_name_desc else R.string.sortby_album_name) item = menu.findItem(R.id.ml_menu_sortby_length) - item?.setTitle(if (sort == AMedialibrary.SORT_DURATION && !desc) R.string.sortby_length_desc else R.string.sortby_length) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_DURATION && !desc) R.string.sortby_length_desc else R.string.sortby_length) item = menu.findItem(R.id.ml_menu_sortby_date) - item?.setTitle(if (sort == AMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_date_desc else R.string.sortby_date) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_date_desc else R.string.sortby_date) item = menu.findItem(R.id.ml_menu_sortby_last_modified) - item?.setTitle(if (sort == AMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_last_modified_date_desc else R.string.sortby_last_modified_date) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_last_modified_date_desc else R.string.sortby_last_modified_date) // item = menu.findItem(R.id.ml_menu_sortby_number); TODO sort by track number - // if (item != null) item.setTitle(sort == AMedialibrary.SORT_ && !desc ? R.string.sortby_number_desc : R.string.sortby_number); + // if (item != null) item.setTitle(sort == AbstractMedialibrary.SORT_ && !desc ? R.string.sortby_number_desc : R.string.sortby_number); } @@ -349,21 +349,21 @@ object UiTools { val sort = model.sort val desc = model.desc var item: MenuItem? = menu.findItem(R.id.ml_menu_sortby_name) - item?.setTitle(if (sort == AMedialibrary.SORT_ALPHA && !desc) R.string.sortby_name_desc else R.string.sortby_name) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_ALPHA && !desc) R.string.sortby_name_desc else R.string.sortby_name) item = menu.findItem(R.id.ml_menu_sortby_filename) - item?.setTitle(if (sort == AMedialibrary.SORT_FILENAME && !desc) R.string.sortby_filename_desc else R.string.sortby_filename) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_FILENAME && !desc) R.string.sortby_filename_desc else R.string.sortby_filename) item = menu.findItem(R.id.ml_menu_sortby_artist_name) - item?.setTitle(if (sort == AMedialibrary.SORT_ARTIST && !desc) R.string.sortby_artist_name_desc else R.string.sortby_artist_name) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_ARTIST && !desc) R.string.sortby_artist_name_desc else R.string.sortby_artist_name) item = menu.findItem(R.id.ml_menu_sortby_album_name) - item?.setTitle(if (sort == AMedialibrary.SORT_ALBUM && !desc) R.string.sortby_album_name_desc else R.string.sortby_album_name) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_ALBUM && !desc) R.string.sortby_album_name_desc else R.string.sortby_album_name) item = menu.findItem(R.id.ml_menu_sortby_length) - item?.setTitle(if (sort == AMedialibrary.SORT_DURATION && !desc) R.string.sortby_length_desc else R.string.sortby_length) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_DURATION && !desc) R.string.sortby_length_desc else R.string.sortby_length) item = menu.findItem(R.id.ml_menu_sortby_date) - item?.setTitle(if (sort == AMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_date_desc else R.string.sortby_date) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_date_desc else R.string.sortby_date) item = menu.findItem(R.id.ml_menu_sortby_last_modified) - item?.setTitle(if (sort == AMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_last_modified_date_desc else R.string.sortby_last_modified_date) + item?.setTitle(if (sort == AbstractMedialibrary.SORT_RELEASEDATE && !desc) R.string.sortby_last_modified_date_desc else R.string.sortby_last_modified_date) // item = menu.findItem(R.id.ml_menu_sortby_number); TODO sort by track number - // if (item != null) item.setTitle(sort == AMedialibrary.SORT_ && !desc ? R.string.sortby_number_desc : R.string.sortby_number); + // if (item != null) item.setTitle(sort == AbstractMedialibrary.SORT_ && !desc ? R.string.sortby_number_desc : R.string.sortby_number); } @@ -422,9 +422,9 @@ object UiTools { MediaUtils.openUri(activity, item.uri) else if (item.text != null) { val uri = Uri.parse(item.text.toString()) - val media = MLServiceLocator.getAMediaWrapper(uri) + val media = MLServiceLocator.getAbstractMediaWrapper(uri) if ("file" != uri.scheme) - media.type = AMediaWrapper.TYPE_STREAM + media.type = AbstractMediaWrapper.TYPE_STREAM MediaUtils.openMedia(activity, media) } return@OnDragListener true diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/hf/OtgAccess.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/hf/OtgAccess.kt index 5c71e429b3..537251f12a 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/hf/OtgAccess.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/hf/OtgAccess.kt @@ -33,7 +33,7 @@ import androidx.documentfile.provider.DocumentFile import androidx.fragment.app.FragmentActivity import androidx.lifecycle.LiveData import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import videolan.org.commontools.LiveEvent const val SAF_REQUEST = 85 @@ -70,7 +70,7 @@ class OtgAccess : BaseHeadlessFragment() { } @WorkerThread -fun getDocumentFiles(context: Context, path: String) : List<AMediaWrapper>? { +fun getDocumentFiles(context: Context, path: String) : List<AbstractMediaWrapper>? { val rootUri = OtgAccess.otgRoot.value ?: return null // else Uri.Builder().scheme("content") // .authority(OTG_CONTENT_AUTHORITY) @@ -90,15 +90,15 @@ fun getDocumentFiles(context: Context, path: String) : List<AMediaWrapper>? { } // we have the end point DocumentFile, list the files inside it and return - val list = mutableListOf<AMediaWrapper>() + val list = mutableListOf<AbstractMediaWrapper>() for (file in documentFile.listFiles()) { if (file.exists() && file.canRead()) { if (file.name?.startsWith(".") == true) continue - val mw = MLServiceLocator.getAMediaWrapper(file.uri).apply { + val mw = MLServiceLocator.getAbstractMediaWrapper(file.uri).apply { type = when { - file.isDirectory -> AMediaWrapper.TYPE_DIR - file.type?.startsWith("video") == true -> AMediaWrapper.TYPE_VIDEO - file.type?.startsWith("audio") == true -> AMediaWrapper.TYPE_AUDIO + file.isDirectory -> AbstractMediaWrapper.TYPE_DIR + file.type?.startsWith("video") == true -> AbstractMediaWrapper.TYPE_VIDEO + file.type?.startsWith("audio") == true -> AbstractMediaWrapper.TYPE_AUDIO else -> type } title = file.name diff --git a/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt index 8b4a9084cc..980d1bd01e 100644 --- a/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt @@ -27,12 +27,12 @@ import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.channels.SendChannel -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.databinding.MrlItemBinding internal class MRLAdapter(private val eventActor: SendChannel<MrlAction>) : RecyclerView.Adapter<MRLAdapter.ViewHolder>() { - private var dataset: List<AMediaWrapper>? = null + private var dataset: List<AbstractMediaWrapper>? = null val isEmpty: Boolean get() = itemCount == 0 @@ -49,12 +49,12 @@ internal class MRLAdapter(private val eventActor: SendChannel<MrlAction>) : Recy holder.binding.mrlItemTitle.text = Uri.decode(item?.title) } - fun setList(list: List<AMediaWrapper>?) { + fun setList(list: List<AbstractMediaWrapper>?) { dataset = list notifyDataSetChanged() } - fun getItem(position: Int): AMediaWrapper? = when { + fun getItem(position: Int): AbstractMediaWrapper? = when { position >= itemCount -> null position < 0 -> null else -> dataset?.get(position) @@ -77,5 +77,5 @@ internal class MRLAdapter(private val eventActor: SendChannel<MrlAction>) : Recy } sealed class MrlAction -class Playmedia(val media: AMediaWrapper) : MrlAction() +class Playmedia(val media: AbstractMediaWrapper) : MrlAction() class ShowContext(val position: Int) : MrlAction() diff --git a/vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt b/vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt index 9190eec5bc..7344b34b24 100644 --- a/vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt @@ -44,7 +44,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.channels.actor import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.coroutineScope import org.videolan.vlc.R import org.videolan.vlc.databinding.MrlPanelBinding @@ -117,7 +117,7 @@ class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorAction override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.dataset.observe(this, Observer { adapter.setList(it as List<AMediaWrapper>) }) + viewModel.dataset.observe(this, Observer { adapter.setList(it as List<AbstractMediaWrapper>) }) } override fun onStart() { @@ -138,7 +138,7 @@ class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorAction private fun processUri(): Boolean { if (!TextUtils.isEmpty(viewModel.observableSearchText.get())) { - val mw = MLServiceLocator.getAMediaWrapper(Uri.parse(viewModel.observableSearchText.get())) + val mw = MLServiceLocator.getAbstractMediaWrapper(Uri.parse(viewModel.observableSearchText.get())) playMedia(mw) viewModel.observableSearchText.set("") return true @@ -146,8 +146,8 @@ class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorAction return false } - private fun playMedia(mw: AMediaWrapper) { - mw.type = AMediaWrapper.TYPE_STREAM + private fun playMedia(mw: AbstractMediaWrapper) { + mw.type = AbstractMediaWrapper.TYPE_STREAM MediaUtils.openMedia(activity, mw) viewModel.refresh() activity?.invalidateOptionsMenu() diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt index 5306102d91..47c45ab98a 100644 --- a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt +++ b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt @@ -34,7 +34,7 @@ import androidx.preference.EditTextPreference import androidx.preference.Preference import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.BuildConfig import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -107,9 +107,9 @@ class PreferencesAdvanced : BasePreferenceFragment(), SharedPreferences.OnShared else runIO(Runnable { val dump = Runnable { - val db = File(requireContext().getDir("db", Context.MODE_PRIVATE).toString() + AMedialibrary.VLC_MEDIA_DB_NAME) + val db = File(requireContext().getDir("db", Context.MODE_PRIVATE).toString() + AbstractMedialibrary.VLC_MEDIA_DB_NAME) - if (FileUtils.copyFile(db, File(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY + AMedialibrary.VLC_MEDIA_DB_NAME))) + if (FileUtils.copyFile(db, File(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY + AbstractMedialibrary.VLC_MEDIA_DB_NAME))) runOnMainThread(Runnable { val ctx = context if (ctx != null) Toast.makeText(ctx, "Database dumped on internal storage root", Toast.LENGTH_LONG).show() diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/CardPresenter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/CardPresenter.kt index 88984f309a..0f2865ee41 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/CardPresenter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/CardPresenter.kt @@ -40,8 +40,8 @@ import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper import org.videolan.medialibrary.media.DummyItem +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -74,10 +74,10 @@ class CardPresenter(private val context: Activity) : Presenter() { fun updateCardViewImage(item: MediaLibraryItem) { val noArt = TextUtils.isEmpty(item.artworkMrl) - if (item is AMediaWrapper) { - val group = item.type == AMediaWrapper.TYPE_GROUP - val folder = item.type == AMediaWrapper.TYPE_DIR - val video = item.type == AMediaWrapper.TYPE_VIDEO + if (item is AbstractMediaWrapper) { + val group = item.type == AbstractMediaWrapper.TYPE_GROUP + val folder = item.type == AbstractMediaWrapper.TYPE_DIR + val video = item.type == AbstractMediaWrapper.TYPE_VIDEO if (!folder && (group || video && !item.isThumbnailGenerated)) { if (noArt) { cardView.mainImageView.scaleType = ImageView.ScaleType.FIT_CENTER @@ -103,7 +103,7 @@ class CardPresenter(private val context: Activity) : Presenter() { private fun getDefaultImage(mediaLibraryItem: MediaLibraryItem): Bitmap? { var picture: Bitmap? val res = cardView.resources - picture = if (mediaLibraryItem.itemType == MediaLibraryItem.TYPE_MEDIA && (mediaLibraryItem as AMediaWrapper).type == AMediaWrapper.TYPE_DIR) { + picture = if (mediaLibraryItem.itemType == MediaLibraryItem.TYPE_MEDIA && (mediaLibraryItem as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_DIR) { if (TextUtils.equals(mediaLibraryItem.uri.scheme, "file")) BitmapFactory.decodeResource(res, R.drawable.ic_menu_folder_big) else @@ -132,12 +132,12 @@ class CardPresenter(private val context: Activity) : Presenter() { override fun onBindViewHolder(viewHolder: Presenter.ViewHolder, item: Any) { val holder = viewHolder as ViewHolder when (item) { - is AMediaWrapper -> { + is AbstractMediaWrapper -> { holder.cardView.titleText = item.title holder.cardView.contentText = item.description holder.updateCardViewImage(item) if (mIsSeenMediaMarkerVisible - && item.type == AMediaWrapper.TYPE_VIDEO + && item.type == AbstractMediaWrapper.TYPE_VIDEO && item.seen > 0L) holder.cardView.badgeImage = ContextCompat.getDrawable(context, R.drawable.ic_seen_tv_normal) holder.view.setOnLongClickListener { v -> @@ -180,18 +180,18 @@ class CardPresenter(private val context: Activity) : Presenter() { UPDATE_DESCRIPTION -> holder.cardView.contentText = media.description UPDATE_THUMB -> loadImage(holder.cardView, media) UPDATE_TIME -> { - val mediaWrapper = item as AMediaWrapper + val mediaWrapper = item as AbstractMediaWrapper Tools.setMediaDescription(mediaWrapper) holder.cardView.contentText = mediaWrapper.description if (mediaWrapper.time <= 0) { - if (mIsSeenMediaMarkerVisible && item.type == AMediaWrapper.TYPE_VIDEO + if (mIsSeenMediaMarkerVisible && item.type == AbstractMediaWrapper.TYPE_VIDEO && item.seen > 0L) holder.cardView.badgeImage = ContextCompat.getDrawable(context, R.drawable.ic_seen_tv_normal) } } UPDATE_SEEN -> { - val mw = item as AMediaWrapper - if (mIsSeenMediaMarkerVisible && mw.type == AMediaWrapper.TYPE_VIDEO && mw.seen > 0L) + val mw = item as AbstractMediaWrapper + if (mIsSeenMediaMarkerVisible && mw.type == AbstractMediaWrapper.TYPE_VIDEO && mw.seen > 0L) holder.cardView.badgeImage = ContextCompat.getDrawable(context, R.drawable.ic_seen_tv_normal) } } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt index 849e9ddb4f..6ef43ab983 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.databinding.MediaBrowserTvItemBinding import org.videolan.vlc.gui.DiffUtilAdapter @@ -24,12 +24,12 @@ import org.videolan.vlc.util.generateResolutionClass @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi -class FileTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, var itemSize: Int) : DiffUtilAdapter<AMediaWrapper, MediaTvItemAdapter.AbstractMediaItemViewHolder<MediaBrowserTvItemBinding>>(), FastScroller.SeparatedAdapter, TvItemAdapter { +class FileTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, var itemSize: Int) : DiffUtilAdapter<AbstractMediaWrapper, MediaTvItemAdapter.AbstractMediaItemViewHolder<MediaBrowserTvItemBinding>>(), FastScroller.SeparatedAdapter, TvItemAdapter { override fun submitList(pagedList: Any?) { if (pagedList is List<*>) { @Suppress("UNCHECKED_CAST") - update(pagedList as List<AMediaWrapper>) + update(pagedList as List<AbstractMediaWrapper>) } } @@ -79,8 +79,8 @@ class FileTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, va this.focusListener = focusListener } - override fun createCB(): DiffCallback<AMediaWrapper> { - return object : DiffCallback<AMediaWrapper>() { + override fun createCB(): DiffCallback<AbstractMediaWrapper> { + return object : DiffCallback<AbstractMediaWrapper>() { override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = try { oldList[oldItemPosition] == newList[newItemPosition] } catch (e: IndexOutOfBoundsException) { @@ -143,8 +143,8 @@ class FileTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, va var seen = 0L var description = item?.description var resolution = "" - if (item is AMediaWrapper) { - if (item.type == AMediaWrapper.TYPE_VIDEO) { + if (item is AbstractMediaWrapper) { + if (item.type == AbstractMediaWrapper.TYPE_VIDEO) { resolution = generateResolutionClass(item.width, item.height) ?: "" isSquare = false description = if (item.time == 0L) Tools.millisToString(item.length) else Tools.getProgressText(item) diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MainTvActivity.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MainTvActivity.kt index 97910aab35..5335238dc4 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/MainTvActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/MainTvActivity.kt @@ -30,7 +30,7 @@ import android.view.View import android.widget.ProgressBar import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.R import org.videolan.vlc.ScanProgress import org.videolan.vlc.StartActivity @@ -106,12 +106,12 @@ class MainTvActivity : BaseTvActivity() { } override fun onParsingServiceProgress(scanProgress: ScanProgress?) { - if (progressBar.visibility == View.GONE && AMedialibrary.getInstance().isWorking) + if (progressBar.visibility == View.GONE && AbstractMedialibrary.getInstance().isWorking) handler.sendEmptyMessage(SHOW_LOADING) } override fun onParsingServiceFinished() { - if (!AMedialibrary.getInstance().isWorking) + if (!AbstractMedialibrary.getInstance().isWorking) handler.sendEmptyMessageDelayed(HIDE_LOADING, 500) } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt index 007cfcd414..1d201cd558 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt @@ -33,8 +33,8 @@ import androidx.lifecycle.Observer import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.DummyItem import org.videolan.vlc.BuildConfig import org.videolan.vlc.R @@ -200,7 +200,7 @@ class MainTvFragment : BrowseSupportFragment(), OnItemViewSelectedListener, OnIt override fun onStart() { super.onStart() - if (selectedItem is AMediaWrapper) TvUtil.updateBackground(backgroundManager, selectedItem) + if (selectedItem is AbstractMediaWrapper) TvUtil.updateBackground(backgroundManager, selectedItem) model.refresh() } @@ -212,8 +212,9 @@ class MainTvFragment : BrowseSupportFragment(), OnItemViewSelectedListener, OnIt override fun onClick(v: View?) = requireActivity().startActivity(Intent(requireContext(), SearchActivity::class.java)) fun showDetails(): Boolean { - val media = selectedItem as? AMediaWrapper ?: return false - if (media.type != AMediaWrapper.TYPE_DIR) return false + val media = selectedItem as? AbstractMediaWrapper + ?: return false + if (media.type != AbstractMediaWrapper.TYPE_DIR) return false val intent = Intent(requireActivity(), DetailsActivity::class.java) // pass the item information intent.putExtra("media", media) @@ -239,7 +240,7 @@ class MainTvFragment : BrowseSupportFragment(), OnItemViewSelectedListener, OnIt when ((item as GenericCardItem).id) { ID_SETTINGS -> activity.startActivityForResult(Intent(activity, org.videolan.vlc.gui.tv.preferences.PreferencesActivity::class.java), ACTIVITY_RESULT_PREFERENCES) ID_REFRESH -> { - if (!AMedialibrary.getInstance().isWorking) { + if (!AbstractMedialibrary.getInstance().isWorking) { requireActivity().reloadLibrary() } } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MediaHeaderAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MediaHeaderAdapter.kt index bc39d1ed33..9fbc0c2e44 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/MediaHeaderAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/MediaHeaderAdapter.kt @@ -5,7 +5,7 @@ import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.RecyclerView -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.R import org.videolan.vlc.databinding.SongHeaderItemBinding @@ -13,7 +13,7 @@ class MediaHeaderAdapter(private val onHeaderSelected: OnHeaderSelected) : Recyc private val alphaItems = listOf("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#") - var sortType = AMedialibrary.SORT_ALPHA + var sortType = AbstractMedialibrary.SORT_ALPHA var items = ArrayList<String>() @@ -23,14 +23,14 @@ class MediaHeaderAdapter(private val onHeaderSelected: OnHeaderSelected) : Recyc override fun getItemCount(): Int { return when (sortType) { - AMedialibrary.SORT_ALPHA, AMedialibrary.SORT_DEFAULT -> alphaItems.size + AbstractMedialibrary.SORT_ALPHA, AbstractMedialibrary.SORT_DEFAULT -> alphaItems.size else -> items.size } } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - if (sortType == AMedialibrary.SORT_ALPHA || sortType == AMedialibrary.SORT_DEFAULT) { + if (sortType == AbstractMedialibrary.SORT_ALPHA || sortType == AbstractMedialibrary.SORT_DEFAULT) { holder.binding.headerText = alphaItems[position] holder.binding.hasContent = items.contains(alphaItems[position]) } else { @@ -40,7 +40,7 @@ class MediaHeaderAdapter(private val onHeaderSelected: OnHeaderSelected) : Recyc } fun getItem(position: Int): String { - return if (sortType == AMedialibrary.SORT_ALPHA || sortType == AMedialibrary.SORT_DEFAULT) { + return if (sortType == AbstractMedialibrary.SORT_ALPHA || sortType == AbstractMedialibrary.SORT_DEFAULT) { alphaItems[position] } else { items[position] diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MediaItemDetailsFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MediaItemDetailsFragment.kt index 9f63bce8de..84ed229293 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/MediaItemDetailsFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/MediaItemDetailsFragment.kt @@ -36,7 +36,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.gui.helpers.AudioUtil import org.videolan.vlc.gui.helpers.UiTools @@ -56,7 +56,7 @@ class MediaItemDetailsFragment : DetailsSupportFragment() { private lateinit var backgroundManager: BackgroundManager private lateinit var rowsAdapter: ArrayObjectAdapter private lateinit var mediaItemDetails: MediaItemDetails - private lateinit var mediaWrapper: AMediaWrapper + private lateinit var mediaWrapper: AbstractMediaWrapper private lateinit var browserFavRepository: BrowserFavRepository private var mediaStarted: Boolean = false @@ -88,7 +88,7 @@ class MediaItemDetailsFragment : DetailsSupportFragment() { mediaItemDetails = extras.getParcelable("item") as MediaItemDetails val hasMedia = extras.containsKey("media") val selector = ClassPresenterSelector() - val media = (if (hasMedia) extras.getParcelable<Parcelable>("media") else MLServiceLocator.getAMediaWrapper(AndroidUtil.LocationToUri(mediaItemDetails.location))) as AMediaWrapper + val media = (if (hasMedia) extras.getParcelable<Parcelable>("media") else MLServiceLocator.getAbstractMediaWrapper(AndroidUtil.LocationToUri(mediaItemDetails.location))) as AbstractMediaWrapper if (!hasMedia) { media.setDisplayTitle(mediaItemDetails.title) } @@ -153,13 +153,13 @@ class MediaItemDetailsFragment : DetailsSupportFragment() { ListRowPresenter()) rowsAdapter = ArrayObjectAdapter(selector) runIO(Runnable { - val cover = if (media.type == AMediaWrapper.TYPE_AUDIO || media.type == AMediaWrapper.TYPE_VIDEO) + val cover = if (media.type == AbstractMediaWrapper.TYPE_AUDIO || media.type == AbstractMediaWrapper.TYPE_VIDEO) AudioUtil.readCoverBitmap(mediaItemDetails.artworkUrl, 512) else null val blurred = if (cover != null) UiTools.blurBitmap(cover) else null val browserFavExists = browserFavRepository.browserFavExists(Uri.parse(mediaItemDetails.location)) - val isDir = media.type == AMediaWrapper.TYPE_DIR + val isDir = media.type == AbstractMediaWrapper.TYPE_DIR val canSave = isDir && FileUtils.canSave(media) runOnMainThread(Runnable { if (isDetached) return@Runnable @@ -175,7 +175,7 @@ class MediaItemDetailsFragment : DetailsSupportFragment() { detailsOverview.addAction(Action(ID_BROWSE.toLong(), res.getString(R.string.browse_folder))) if (canSave) detailsOverview.addAction(if (browserFavExists) actionDelete else actionAdd) - } else if (media.type == AMediaWrapper.TYPE_AUDIO) { + } else if (media.type == AbstractMediaWrapper.TYPE_AUDIO) { // Add images and action buttons to the details view if (cover == null) detailsOverview.imageDrawable = ContextCompat.getDrawable(context, R.drawable.ic_default_cone) @@ -185,7 +185,7 @@ class MediaItemDetailsFragment : DetailsSupportFragment() { detailsOverview.addAction(Action(ID_PLAY.toLong(), res.getString(R.string.play))) detailsOverview.addAction(Action(ID_LISTEN.toLong(), res.getString(R.string.listen))) detailsOverview.addAction(Action(ID_PLAYLIST.toLong(), res.getString(R.string.add_to_playlist))) - } else if (media.type == AMediaWrapper.TYPE_VIDEO) { + } else if (media.type == AbstractMediaWrapper.TYPE_VIDEO) { // Add images and action buttons to the details view if (cover == null) detailsOverview.imageDrawable = ContextCompat.getDrawable(context, R.drawable.ic_default_cone) diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt index e1ae7e4d0a..d8e8b07dcf 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.databinding.MediaBrowserTvItemBinding import org.videolan.vlc.gui.helpers.SelectorViewHolder @@ -194,8 +194,8 @@ class MediaTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, v var seen = 0L var description = item?.description var resolution = "" - if (item is AMediaWrapper) { - if (item.type == AMediaWrapper.TYPE_VIDEO) { + if (item is AbstractMediaWrapper) { + if (item.type == AbstractMediaWrapper.TYPE_VIDEO) { resolution = generateResolutionClass(item.width, item.height) ?: "" isSquare = false description = if (item.time == 0L) Tools.millisToString(item.length) else Tools.getProgressText(item) diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/SearchFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/SearchFragment.kt index 86866d9abe..7d02642e32 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/SearchFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/SearchFragment.kt @@ -32,10 +32,10 @@ import androidx.leanback.widget.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.AArtist -import org.videolan.medialibrary.interfaces.media.AGenre -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractArtist +import org.videolan.medialibrary.interfaces.media.AbstractGenre +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.* import org.videolan.tools.coroutineScope import org.videolan.vlc.R @@ -52,7 +52,7 @@ class SearchFragment : SearchSupportFragment(), SearchSupportFragment.SearchResu private val rowsAdapter = ArrayObjectAdapter(ListRowPresenter()) private val defaultItemClickedListener: OnItemViewClickedListener get() = OnItemViewClickedListener { _, item, _, row -> - if (item is AMediaWrapper) TvUtil.openMedia(requireActivity(), item, null) + if (item is AbstractMediaWrapper) TvUtil.openMedia(requireActivity(), item, null) else TvUtil.openAudioCategory(requireActivity(), item as MediaLibraryItem) requireActivity().finish() } @@ -98,11 +98,11 @@ class SearchFragment : SearchSupportFragment(), SearchSupportFragment.SearchResu val songsAdapter = ArrayObjectAdapter(cp) if (!mediaEmpty) songsAdapter.addAll(0, Arrays.asList(*searchAggregate.tracks)) val artistsAdapter = ArrayObjectAdapter(cp) - if (!empty) artistsAdapter.addAll(0, Arrays.asList<AArtist>(*searchAggregate.artists)) + if (!empty) artistsAdapter.addAll(0, Arrays.asList<AbstractArtist>(*searchAggregate.artists)) val albumsAdapter = ArrayObjectAdapter(cp) - if (!empty) albumsAdapter.addAll(0, Arrays.asList<AAlbum>(*searchAggregate.albums)) + if (!empty) albumsAdapter.addAll(0, Arrays.asList<AbstractAlbum>(*searchAggregate.albums)) val genresAdapter = ArrayObjectAdapter(cp) - if (!empty) genresAdapter.addAll(0, Arrays.asList<AGenre>(*searchAggregate.genres)) + if (!empty) genresAdapter.addAll(0, Arrays.asList<AbstractGenre>(*searchAggregate.genres)) if (!mediaEmpty && videoAdapter.size() > 0) rowsAdapter.add(ListRow(HeaderItem(0, resources.getString(R.string.videos)), videoAdapter)) // if (!mediaEmpty && episodesAdapter.size() > 0) diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt b/vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt index be88c842fd..1ccae35e9d 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt @@ -38,7 +38,7 @@ import androidx.leanback.app.BackgroundManager import androidx.leanback.widget.DiffCallback import androidx.leanback.widget.ListRow import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.DummyItem import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.getposition @@ -72,8 +72,8 @@ object TvUtil { override fun areContentsTheSame(oldItem: MediaLibraryItem, newItem: MediaLibraryItem): Boolean { if (oldItem.itemType == MediaLibraryItem.TYPE_DUMMY) return TextUtils.equals(oldItem.description, newItem.description) if (oldItem.itemType != MediaLibraryItem.TYPE_MEDIA) return true - val oldMedia = oldItem as AMediaWrapper - val newMedia = newItem as AMediaWrapper + val oldMedia = oldItem as AbstractMediaWrapper + val newMedia = newItem as AbstractMediaWrapper return oldMedia === newMedia || (oldMedia.time == newMedia.time && TextUtils.equals(oldMedia.artworkMrl, newMedia.artworkMrl) && oldMedia.seen == newMedia.seen) @@ -81,8 +81,8 @@ object TvUtil { override fun getChangePayload(oldItem: MediaLibraryItem, newItem: MediaLibraryItem): Any { if (oldItem.itemType == MediaLibraryItem.TYPE_DUMMY) return UPDATE_DESCRIPTION - val oldMedia = oldItem as AMediaWrapper - val newMedia = newItem as AMediaWrapper + val oldMedia = oldItem as AbstractMediaWrapper + val newMedia = newItem as AbstractMediaWrapper if (oldMedia.time != newMedia.time) return UPDATE_TIME return if (!TextUtils.equals(oldMedia.artworkMrl, newMedia.artworkMrl)) UPDATE_THUMB else UPDATE_SEEN @@ -109,9 +109,9 @@ object TvUtil { fun getOverscanHorizontal(context: Context) = context.resources.getDimensionPixelSize(R.dimen.tv_overscan_horizontal) fun getOverscanVertical(context: Context) = context.resources.getDimensionPixelSize(R.dimen.tv_overscan_vertical) - fun playMedia(activity: Activity, media: AMediaWrapper) { - if (media.type == AMediaWrapper.TYPE_AUDIO) { - val tracks = ArrayList<AMediaWrapper>() + fun playMedia(activity: Activity, media: AbstractMediaWrapper) { + if (media.type == AbstractMediaWrapper.TYPE_AUDIO) { + val tracks = ArrayList<AbstractMediaWrapper>() tracks.add(media) playMedia(activity, tracks) } else @@ -127,19 +127,19 @@ object TvUtil { @Suppress("UNCHECKED_CAST") fun openMedia(activity: FragmentActivity, item: Any?, model: BaseModel<out MediaLibraryItem>?) { when (item) { - is AMediaWrapper -> when { - item.type == AMediaWrapper.TYPE_AUDIO -> { - val list = (model!!.dataset.value as List<AMediaWrapper>).filter { it.type != AMediaWrapper.TYPE_DIR } + is AbstractMediaWrapper -> when { + item.type == AbstractMediaWrapper.TYPE_AUDIO -> { + val list = (model!!.dataset.value as List<AbstractMediaWrapper>).filter { it.type != AbstractMediaWrapper.TYPE_DIR } val position = list.getposition(item) playAudioList(activity, list, position) } - item.type == AMediaWrapper.TYPE_DIR -> { + item.type == AbstractMediaWrapper.TYPE_DIR -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, if ("file" == item.uri.scheme) HEADER_DIRECTORIES else HEADER_NETWORK) intent.data = item.uri activity.startActivity(intent) } - item.type == AMediaWrapper.TYPE_GROUP -> { + item.type == AbstractMediaWrapper.TYPE_GROUP -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, HEADER_VIDEO) val title = item.title.substring(if (item.title.toLowerCase().startsWith("the")) 4 else 0) @@ -148,7 +148,7 @@ object TvUtil { } else -> { model?.run { - val list = (dataset.value as List<AMediaWrapper>).filter { it.type != AMediaWrapper.TYPE_DIR } + val list = (dataset.value as List<AbstractMediaWrapper>).filter { it.type != AbstractMediaWrapper.TYPE_DIR } val position = list.getposition(item) MediaUtils.openList(activity, list, position) } ?: MediaUtils.openMedia(activity, item) @@ -175,19 +175,19 @@ object TvUtil { @Suppress("UNCHECKED_CAST") fun openMedia(activity: FragmentActivity, item: Any?, model: BrowserModel) { when (item) { - is AMediaWrapper -> when { - item.type == AMediaWrapper.TYPE_AUDIO -> { - val list = (model.dataset.value as List<AMediaWrapper>).filter { it.type != AMediaWrapper.TYPE_DIR } + is AbstractMediaWrapper -> when { + item.type == AbstractMediaWrapper.TYPE_AUDIO -> { + val list = (model.dataset.value as List<AbstractMediaWrapper>).filter { it.type != AbstractMediaWrapper.TYPE_DIR } val position = list.getposition(item) playAudioList(activity, list, position) } - item.type == AMediaWrapper.TYPE_DIR -> { + item.type == AbstractMediaWrapper.TYPE_DIR -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, if ("file" == item.uri.scheme) HEADER_DIRECTORIES else HEADER_NETWORK) intent.data = item.uri activity.startActivity(intent) } - item.type == AMediaWrapper.TYPE_GROUP -> { + item.type == AbstractMediaWrapper.TYPE_GROUP -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, HEADER_VIDEO) val title = item.title.substring(if (item.title.toLowerCase().startsWith("the")) 4 else 0) @@ -196,7 +196,7 @@ object TvUtil { } else -> { model.run { - val list = (dataset.value as List<AMediaWrapper>).filter { it.type != AMediaWrapper.TYPE_DIR } + val list = (dataset.value as List<AbstractMediaWrapper>).filter { it.type != AbstractMediaWrapper.TYPE_DIR } val position = list.getposition(item) MediaUtils.openList(activity, list, position) } @@ -223,21 +223,21 @@ object TvUtil { @Suppress("UNCHECKED_CAST") suspend fun openMediaFromPaged(activity: FragmentActivity, item: Any?, provider: MedialibraryProvider<out MediaLibraryItem>) { when (item) { - is AMediaWrapper -> when { - item.type == AMediaWrapper.TYPE_AUDIO -> { + is AbstractMediaWrapper -> when { + item.type == AbstractMediaWrapper.TYPE_AUDIO -> { val list = withContext(Dispatchers.IO) { - (provider.getAll().toList()).filter { it.itemType != AMediaWrapper.TYPE_DIR } as ArrayList<AMediaWrapper> + (provider.getAll().toList()).filter { it.itemType != AbstractMediaWrapper.TYPE_DIR } as ArrayList<AbstractMediaWrapper> } val position = list.getposition(item) playAudioList(activity, list, position) } - item.type == AMediaWrapper.TYPE_DIR -> { + item.type == AbstractMediaWrapper.TYPE_DIR -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, if ("file" == item.uri.scheme) HEADER_DIRECTORIES else HEADER_NETWORK) intent.data = item.uri activity.startActivity(intent) } - item.type == AMediaWrapper.TYPE_GROUP -> { + item.type == AbstractMediaWrapper.TYPE_GROUP -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, HEADER_VIDEO) val title = item.title.substring(if (item.title.toLowerCase().startsWith("the")) 4 else 0) @@ -246,7 +246,7 @@ object TvUtil { } else -> { val list = withContext(Dispatchers.IO) { - (provider.getAll().toList() as List<AMediaWrapper>).filter { it.type != AMediaWrapper.TYPE_DIR } + (provider.getAll().toList() as List<AbstractMediaWrapper>).filter { it.type != AbstractMediaWrapper.TYPE_DIR } } val position = list.getposition(item) MediaUtils.openList(activity, list, position) @@ -270,7 +270,7 @@ object TvUtil { } } - fun showMediaDetail(activity: Context, mediaWrapper: AMediaWrapper) { + fun showMediaDetail(activity: Context, mediaWrapper: AbstractMediaWrapper) { val intent = Intent(activity, DetailsActivity::class.java) intent.putExtra("media", mediaWrapper) intent.putExtra("item", MediaItemDetails(mediaWrapper.title, mediaWrapper.artist, mediaWrapper.album, mediaWrapper.location, mediaWrapper.artworkURL)) @@ -284,11 +284,11 @@ object TvUtil { activity.startActivity(intent) } - private fun playAudioList(activity: Activity, array: Array<AMediaWrapper>, position: Int) { + private fun playAudioList(activity: Activity, array: Array<AbstractMediaWrapper>, position: Int) { playAudioList(activity, array.toList(), position) } - private fun playAudioList(activity: Activity, list: List<AMediaWrapper>, position: Int) { + private fun playAudioList(activity: Activity, list: List<AbstractMediaWrapper>, position: Int) { MediaUtils.openList(activity, list, position) val intent = Intent(activity, AudioPlayerActivity::class.java) activity.startActivity(intent) @@ -302,7 +302,7 @@ object TvUtil { context.startActivity(intent) } mediaLibraryItem.itemType == MediaLibraryItem.TYPE_MEDIA -> { - val list = ArrayList<AMediaWrapper>().apply { add(mediaLibraryItem as AMediaWrapper) } + val list = ArrayList<AbstractMediaWrapper>().apply { add(mediaLibraryItem as AbstractMediaWrapper) } playAudioList(context, list, 0) } else -> { @@ -319,7 +319,7 @@ object TvUtil { fun updateBackground(bm: BackgroundManager?, item: Any?) { if (bm === null || item === null) return if (item is MediaLibraryItem) AppScope.launch { - val crop = item.itemType != MediaLibraryItem.TYPE_MEDIA || (item as AMediaWrapper).type == AMediaWrapper.TYPE_AUDIO + val crop = item.itemType != MediaLibraryItem.TYPE_MEDIA || (item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_AUDIO val artworkMrl = item.artworkMrl if (!TextUtils.isEmpty(artworkMrl)) { val blurred = withContext(Dispatchers.IO) { @@ -365,10 +365,10 @@ object TvUtil { MediaLibraryItem.TYPE_ARTIST -> return R.drawable.ic_artist_big MediaLibraryItem.TYPE_GENRE -> return R.drawable.ic_genre_big MediaLibraryItem.TYPE_MEDIA -> { - val mw = mediaLibraryItem as AMediaWrapper + val mw = mediaLibraryItem as AbstractMediaWrapper return when { - mw.type == AMediaWrapper.TYPE_VIDEO -> R.drawable.ic_browser_video_big_normal - else -> if (mw.type == AMediaWrapper.TYPE_DIR) + mw.type == AbstractMediaWrapper.TYPE_VIDEO -> R.drawable.ic_browser_video_big_normal + else -> if (mw.type == AbstractMediaWrapper.TYPE_DIR) R.drawable.ic_menu_folder_big else R.drawable.ic_song_big diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt b/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt index 7d8d222f15..e749e46480 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt @@ -38,7 +38,7 @@ import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.isStarted import org.videolan.vlc.R import org.videolan.vlc.databinding.TvAudioPlayerBinding @@ -81,14 +81,14 @@ class AudioPlayerActivity : BaseTvActivity() { binding.lifecycleOwner = this model = ViewModelProviders.of(this).get(PlaylistModel::class.java) binding.progress = model.progress - model.dataset.observe(this, Observer<List<AMediaWrapper>> { mediaWrappers -> + model.dataset.observe(this, Observer<List<AbstractMediaWrapper>> { mediaWrappers -> if (mediaWrappers != null) { adapter.setSelection(-1) adapter.update(mediaWrappers) } }) model.playerState.observe(this, Observer { playerState -> update(playerState) }) - val medialist = intent.getParcelableArrayListExtra<AMediaWrapper>(MEDIA_LIST) + val medialist = intent.getParcelableArrayListExtra<AbstractMediaWrapper>(MEDIA_LIST) val position = intent.getIntExtra(MEDIA_POSITION, 0) if (medialist != null) MediaUtils.openList(this, medialist, position) playToPause = AnimatedVectorDrawableCompat.create(this, R.drawable.anim_play_pause)!! @@ -110,7 +110,7 @@ class AudioPlayerActivity : BaseTvActivity() { wasPlaying = state.playing val mw = model.currentMediaWrapper - if (mw != null && !mw.hasFlag(AMediaWrapper.MEDIA_FORCE_AUDIO) && model.canSwitchToVideo()) { + if (mw != null && !mw.hasFlag(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) && model.canSwitchToVideo()) { model.switchToVideo() finish() return @@ -235,7 +235,7 @@ class AudioPlayerActivity : BaseTvActivity() { if (shuffle) Collections.shuffle(medias) else - Collections.sort(medias, MediaComparators.byTrackNumber) + Collections.sort(medias, MediaComparators.BY_TRACK_NUMBER) model.load(medias, 0) } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/PlaylistAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/PlaylistAdapter.kt index 92406a28bc..2f644a3495 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/PlaylistAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/PlaylistAdapter.kt @@ -25,7 +25,7 @@ import android.view.View import android.view.ViewGroup import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.databinding.TvSimpleListItemBinding import org.videolan.vlc.gui.DiffUtilAdapter @@ -35,7 +35,7 @@ import org.videolan.vlc.util.Util @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi class PlaylistAdapter -internal constructor(private val audioPlayerActivity: AudioPlayerActivity) : DiffUtilAdapter<AMediaWrapper, PlaylistAdapter.ViewHolder>() { +internal constructor(private val audioPlayerActivity: AudioPlayerActivity) : DiffUtilAdapter<AbstractMediaWrapper, PlaylistAdapter.ViewHolder>() { internal var selectedItem = -1 private set diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt index 582bdc0d9a..d2dcbce0fb 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt @@ -46,8 +46,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.song_browser.* import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.BuildConfig import org.videolan.vlc.R @@ -112,7 +112,7 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv calculateNbColumns() title.text = viewModel.currentItem?.let { - if (it is AMediaWrapper && it.uri.path == AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY) getString(R.string.internal_memory) + if (it is AbstractMediaWrapper && it.uri.path == AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY) getString(R.string.internal_memory) else it.title } ?: getTitle() @@ -213,7 +213,7 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv override fun refresh() = (viewModel as RefreshModel).refresh() override fun onLongClick(v: View, position: Int, item: MediaLibraryItem): Boolean { - if (item is AMediaWrapper) { + if (item is AbstractMediaWrapper) { TvUtil.showMediaDetail(requireActivity(), item) } return true @@ -255,35 +255,35 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv animationDelegate.collapseExtendedFAB() when (item.itemId) { R.id.ml_menu_sortby_name -> { - sortBy(AMedialibrary.SORT_ALPHA) + sortBy(AbstractMedialibrary.SORT_ALPHA) return true } R.id.ml_menu_sortby_filename -> { - sortBy(AMedialibrary.SORT_FILENAME) + sortBy(AbstractMedialibrary.SORT_FILENAME) return true } R.id.ml_menu_sortby_length -> { - sortBy(AMedialibrary.SORT_DURATION) + sortBy(AbstractMedialibrary.SORT_DURATION) return true } R.id.ml_menu_sortby_date -> { - sortBy(AMedialibrary.SORT_RELEASEDATE) + sortBy(AbstractMedialibrary.SORT_RELEASEDATE) return true } R.id.ml_menu_sortby_last_modified -> { - sortBy(AMedialibrary.SORT_LASTMODIFICATIONDATE) + sortBy(AbstractMedialibrary.SORT_LASTMODIFICATIONDATE) return true } R.id.ml_menu_sortby_artist_name -> { - sortBy(AMedialibrary.SORT_ARTIST) + sortBy(AbstractMedialibrary.SORT_ARTIST) return true } R.id.ml_menu_sortby_album_name -> { - sortBy(AMedialibrary.SORT_ALBUM) + sortBy(AbstractMedialibrary.SORT_ALBUM) return true } R.id.ml_menu_sortby_number -> { - sortBy(AMedialibrary.SORT_FILESIZE) + sortBy(AbstractMedialibrary.SORT_FILESIZE) return super.onOptionsItemSelected(item) } else -> return super.onOptionsItemSelected(item) diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt index 5df35a403b..538ab43587 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt @@ -34,7 +34,7 @@ import android.widget.TextView import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Observer import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.tools.KeyHelper import org.videolan.vlc.* import org.videolan.vlc.gui.helpers.UiTools @@ -49,7 +49,7 @@ private const val TAG = "VLC/BaseTvActivity" @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) abstract class BaseTvActivity : FragmentActivity(), CoroutineScope by MainScope() { - private lateinit var mediaLibrary: AMedialibrary + private lateinit var mediaLibrary: AbstractMedialibrary private lateinit var settings: SharedPreferences @Volatile private var currentlyVisible = false @@ -106,7 +106,7 @@ abstract class BaseTvActivity : FragmentActivity(), CoroutineScope by MainScope( private fun registerLiveData() { MediaParsingService.progress.observe(this, Observer { scanProgress -> if (scanProgress != null) onParsingServiceProgress(scanProgress) }) - AMedialibrary.getState().observe(this, Observer { started -> + AbstractMedialibrary.getState().observe(this, Observer { started -> if (started == null) return@Observer if (started) onParsingServiceStarted() diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/CategoriesFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/CategoriesFragment.kt index 879c007d4c..3d675e0aa7 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/CategoriesFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/CategoriesFragment.kt @@ -32,7 +32,7 @@ import androidx.leanback.app.BackgroundManager import androidx.leanback.app.BrowseSupportFragment import androidx.leanback.widget.* import androidx.lifecycle.Observer -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.gui.tv.CardPresenter @@ -86,15 +86,15 @@ open class CategoriesFragment<T : BaseModel<out MediaLibraryItem>> : BrowseSuppo private var currentArt : String? = null override fun onItemSelected(itemViewHolder: Presenter.ViewHolder?, item: Any?, rowViewHolder: RowPresenter.ViewHolder?, row: Row?) { if (item === null) return - selecteditem = item as AMediaWrapper + selecteditem = item as AbstractMediaWrapper if (currentArt == item.artworkMrl) return currentArt = item.artworkMrl TvUtil.updateBackground(backgroundManager, item) } override fun onItemClicked(viewHolder: Presenter.ViewHolder, item: Any, viewHolder1: RowPresenter.ViewHolder, row: Row) { - val media = item as AMediaWrapper - if (media.type == AMediaWrapper.TYPE_DIR) TvUtil.browseFolder(requireActivity(), getCategoryId(), item.uri) + val media = item as AbstractMediaWrapper + if (media.type == AbstractMediaWrapper.TYPE_DIR) TvUtil.browseFolder(requireActivity(), getCategoryId(), item.uri) else TvUtil.openMedia(requireActivity(), item, viewModel) } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/DirectoryBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/DirectoryBrowserFragment.kt index bf17504829..086b8805e2 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/DirectoryBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/DirectoryBrowserFragment.kt @@ -31,7 +31,7 @@ import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.util.UPDATE_DESCRIPTION @@ -74,7 +74,7 @@ class DirectoryBrowserFragment : MediaSortedFragment<BrowserModel>() { } override fun onItemClicked(viewHolder: Presenter.ViewHolder, item: Any, viewHolder1: RowPresenter.ViewHolder, row: Row) { - if (item is AMediaWrapper && item.type == AMediaWrapper.TYPE_DIR) viewModel.saveList(item) + if (item is AbstractMediaWrapper && item.type == AbstractMediaWrapper.TYPE_DIR) viewModel.saveList(item) super.onItemClicked(viewHolder, item, viewHolder1, row) } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/FileBrowserTvFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/FileBrowserTvFragment.kt index 14801978c6..8ad3d942d5 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/FileBrowserTvFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/FileBrowserTvFragment.kt @@ -10,8 +10,8 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.song_browser.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.BuildConfig import org.videolan.vlc.R @@ -60,7 +60,7 @@ class FileBrowserTvFragment : BaseBrowserTvFragment() { super.onCreate(savedInstanceState) item = if (savedInstanceState != null) savedInstanceState.getParcelable<Parcelable>(ITEM) as? MediaLibraryItem else arguments?.getParcelable(ITEM) as? MediaLibraryItem - viewModel = getBrowserModel(getCategory(), (item as? AMediaWrapper)?.location, true, false) + viewModel = getBrowserModel(getCategory(), (item as? AbstractMediaWrapper)?.location, true, false) viewModel.currentItem = item @@ -69,7 +69,7 @@ class FileBrowserTvFragment : BaseBrowserTvFragment() { if (BuildConfig.DEBUG) Log.d("FileBrowserTvFragment", "Submit lis of ${items.size} items") //headers - val nbColumns = if ((viewModel as BrowserModel).sort == AMedialibrary.SORT_ALPHA || (viewModel as BrowserModel).sort == AMedialibrary.SORT_DEFAULT) 9 else 1 + val nbColumns = if ((viewModel as BrowserModel).sort == AbstractMedialibrary.SORT_ALPHA || (viewModel as BrowserModel).sort == AbstractMedialibrary.SORT_DEFAULT) 9 else 1 headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns) headerAdapter.sortType = (viewModel as BrowserModel).sort @@ -116,14 +116,14 @@ class FileBrowserTvFragment : BaseBrowserTvFragment() { private fun getCategory() = arguments?.getInt(CATEGORY, TYPE_FILE) ?: TYPE_FILE override fun onClick(v: View, position: Int, item: MediaLibraryItem) { - val mediaWrapper = item as AMediaWrapper + val mediaWrapper = item as AbstractMediaWrapper - mediaWrapper.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) - if (mediaWrapper.type == AMediaWrapper.TYPE_DIR) browse(mediaWrapper, true) + mediaWrapper.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) + if (mediaWrapper.type == AbstractMediaWrapper.TYPE_DIR) browse(mediaWrapper, true) else TvUtil.openMedia(requireActivity(), item, viewModel as BrowserModel) } - fun browse(media: AMediaWrapper, save: Boolean) { + fun browse(media: AbstractMediaWrapper, save: Boolean) { val ctx = activity if (ctx == null || !isResumed || isRemoving) return val ft = ctx.supportFragmentManager.beginTransaction() diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/MediaBrowserTvFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/MediaBrowserTvFragment.kt index d35b93a26e..631b77a5ff 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/MediaBrowserTvFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/MediaBrowserTvFragment.kt @@ -9,8 +9,8 @@ import kotlinx.android.synthetic.main.song_browser.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.gui.tv.MediaTvItemAdapter @@ -67,7 +67,7 @@ class MediaBrowserTvFragment : BaseBrowserTvFragment() { submitList(items) //headers - val nbColumns = if ((viewModel as MediaBrowserViewModel).sort == AMedialibrary.SORT_ALPHA || (viewModel as MediaBrowserViewModel).sort == AMedialibrary.SORT_DEFAULT) 9 else 1 + val nbColumns = if ((viewModel as MediaBrowserViewModel).sort == AbstractMedialibrary.SORT_ALPHA || (viewModel as MediaBrowserViewModel).sort == AbstractMedialibrary.SORT_DEFAULT) 9 else 1 headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns) headerAdapter.sortType = (viewModel as MediaBrowserViewModel).sort @@ -89,7 +89,7 @@ class MediaBrowserTvFragment : BaseBrowserTvFragment() { override fun onClick(v: View, position: Int, item: MediaLibraryItem) { launch { if ((viewModel as MediaBrowserViewModel).category == CATEGORY_VIDEOS && !Settings.getInstance(requireContext()).getBoolean(FORCE_PLAY_ALL, true)) { - TvUtil.playMedia(requireActivity(), item as AMediaWrapper) + TvUtil.playMedia(requireActivity(), item as AbstractMediaWrapper) } else { TvUtil.openMediaFromPaged(requireActivity(), item, viewModel.provider as MedialibraryProvider<out MediaLibraryItem>) } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/NetworkBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/NetworkBrowserFragment.kt index f3439e580b..5d76d8b386 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/NetworkBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/NetworkBrowserFragment.kt @@ -36,7 +36,7 @@ import androidx.lifecycle.ViewModelProviders import androidx.localbroadcastmanager.content.LocalBroadcastManager import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.VLCApplication @@ -98,7 +98,7 @@ class NetworkBrowserFragment : MediaSortedFragment<NetworkModel>() { } override fun onItemClicked(viewHolder: Presenter.ViewHolder, item: Any, viewHolder1: RowPresenter.ViewHolder, row: Row) { - if (item is AMediaWrapper && item.type == AMediaWrapper.TYPE_DIR) viewModel.saveList(item) + if (item is AbstractMediaWrapper && item.type == AbstractMediaWrapper.TYPE_DIR) viewModel.saveList(item) super.onItemClicked(viewHolder, item, viewHolder1, row) } diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/VerticalGridActivity.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/VerticalGridActivity.kt index d117a2007c..fcc81a1037 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/VerticalGridActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/VerticalGridActivity.kt @@ -68,11 +68,11 @@ class VerticalGridActivity : BaseTvActivity(), BrowserActivityInterface { var uri = intent.data if (uri == null) uri = intent.getParcelableExtra(KEY_URI) - val item = if (uri == null) null else MLServiceLocator.getAMediaWrapper(uri) + val item = if (uri == null) null else MLServiceLocator.getAbstractMediaWrapper(uri) fragment = FileBrowserTvFragment.newInstance(TYPE_NETWORK, item) } else if (type == HEADER_DIRECTORIES) { - fragment = FileBrowserTvFragment.newInstance(TYPE_FILE, intent.data?.let { MLServiceLocator.getAMediaWrapper(it) }) + fragment = FileBrowserTvFragment.newInstance(TYPE_FILE, intent.data?.let { MLServiceLocator.getAbstractMediaWrapper(it) }) } else { finish() return diff --git a/vlc-android/src/org/videolan/vlc/gui/video/PopupManager.kt b/vlc-android/src/org/videolan/vlc/gui/video/PopupManager.kt index dd1e40a327..c395329f20 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/PopupManager.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/PopupManager.kt @@ -39,7 +39,7 @@ import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.IVLCVout import org.videolan.libvlc.Media import org.videolan.libvlc.MediaPlayer -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.PlaybackService import org.videolan.vlc.R import org.videolan.vlc.gui.view.PopupLayout @@ -221,7 +221,7 @@ class PopupManager constructor(private val mService: PlaybackService) : Playback private fun expandToVideoPlayer() { removePopup() if (mService.hasMedia() && !mService.isPlaying) - mService.currentMediaWrapper!!.flags = AMediaWrapper.MEDIA_PAUSED + mService.currentMediaWrapper!!.flags = AbstractMediaWrapper.MEDIA_PAUSED mService.switchToVideo() } diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt b/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt index 7cfba8f3d5..e79be8d35f 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt @@ -38,9 +38,9 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AFolder -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractFolder +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.tools.MultiSelectHelper import org.videolan.vlc.R @@ -70,10 +70,10 @@ private const val UNSET_REFRESHING = 16 @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi -class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshLayout.OnRefreshListener, IEventsHandler, Observer<PagedList<AMediaWrapper>>, CtxActionReceiver { +class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshLayout.OnRefreshListener, IEventsHandler, Observer<PagedList<AbstractMediaWrapper>>, CtxActionReceiver { private lateinit var videoListAdapter: VideoListAdapter - private lateinit var multiSelectHelper: MultiSelectHelper<AMediaWrapper> + private lateinit var multiSelectHelper: MultiSelectHelper<AbstractMediaWrapper> private lateinit var binding: VideoGridBinding private var gridItemDecoration: RecyclerView.ItemDecoration? = null @@ -105,7 +105,7 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL val seenMarkVisible = preferences.getBoolean("media_seen", true) videoListAdapter = VideoListAdapter(this, seenMarkVisible) multiSelectHelper = videoListAdapter.multiSelectHelper - val folder = if (savedInstanceState != null ) savedInstanceState.getParcelable<AFolder>(KEY_FOLDER) + val folder = if (savedInstanceState != null ) savedInstanceState.getParcelable<AbstractFolder>(KEY_FOLDER) else arguments?.getParcelable(KEY_FOLDER) viewModel = getViewModel(folder) viewModel.provider.pagedList.observe(this, this) @@ -178,8 +178,8 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL videoListAdapter.release() } - override fun onChanged(list: PagedList<AMediaWrapper>?) { - videoListAdapter.showFilename(viewModel.sort == AMedialibrary.SORT_FILENAME) + override fun onChanged(list: PagedList<AbstractMediaWrapper>?) { + videoListAdapter.showFilename(viewModel.sort == AbstractMedialibrary.SORT_FILENAME) if (list != null) videoListAdapter.submitList(list) } @@ -210,14 +210,14 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL } - private fun playVideo(media: AMediaWrapper, fromStart: Boolean) { - media.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) - if (fromStart) media.addFlags(AMediaWrapper.MEDIA_FROM_START) + private fun playVideo(media: AbstractMediaWrapper, fromStart: Boolean) { + media.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) + if (fromStart) media.addFlags(AbstractMediaWrapper.MEDIA_FROM_START) MediaUtils.openMedia(requireContext(), media) } - private fun playAudio(media: AMediaWrapper) { - media.addFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + private fun playAudio(media: AbstractMediaWrapper) { + media.addFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) MediaUtils.openMedia(activity, media) } @@ -270,7 +270,7 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL } override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { - val list = ArrayList<AMediaWrapper>() + val list = ArrayList<AbstractMediaWrapper>() for (mw in multiSelectHelper.getSelection()) { list.add(mw) } @@ -285,7 +285,7 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL // break; R.id.action_video_download_subtitles -> MediaUtils.getSubs(requireActivity(), list) R.id.action_video_play_audio -> { - for (media in list) media.addFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + for (media in list) media.addFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) MediaUtils.openList(activity, list, 0) } R.id.action_mode_audio_add_playlist -> UiTools.addToPlaylist(requireActivity(), list) @@ -307,13 +307,13 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL } override fun onClick(v: View, position: Int, item: MediaLibraryItem) { - val media = item as AMediaWrapper + val media = item as AbstractMediaWrapper if (actionMode != null) { multiSelectHelper.toggleSelection(position) invalidateActionMode() return } - media.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + media.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) val settings = Settings.getInstance(v.context) if (settings.getBoolean(FORCE_PLAY_ALL, false)) { MediaUtils.playAll(requireContext(), viewModel.provider, position, false) @@ -332,8 +332,8 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL override fun onImageClick(v: View, position: Int, item: MediaLibraryItem) {} override fun onCtxClick(v: View, position: Int, item: MediaLibraryItem) { - val mw = item as AMediaWrapper - val group = mw.type == AMediaWrapper.TYPE_GROUP + val mw = item as AbstractMediaWrapper + val group = mw.type == AbstractMediaWrapper.TYPE_GROUP var flags = if (group) CTX_VIDEO_GOUP_FLAGS else CTX_VIDEO_FLAGS if (mw.time != 0L && !group) flags = flags or CTX_PLAY_FROM_START if (actionMode == null) diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoListAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/video/VideoListAdapter.kt index 1905515b5c..1ee3861229 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/VideoListAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoListAdapter.kt @@ -39,9 +39,9 @@ import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.GridLayoutManager import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.MultiSelectAdapter import org.videolan.tools.MultiSelectHelper import org.videolan.vlc.BR @@ -57,7 +57,7 @@ private const val TAG = "VLC/VideoListAdapter" class VideoListAdapter internal constructor( private val mEventsHandler: IEventsHandler, private var mIsSeenMediaMarkerVisible: Boolean -) : PagedListAdapter<AMediaWrapper, VideoListAdapter.ViewHolder>(VideoItemDiffCallback), MultiSelectAdapter<AMediaWrapper> { +) : PagedListAdapter<AbstractMediaWrapper, VideoListAdapter.ViewHolder>(VideoItemDiffCallback), MultiSelectAdapter<AbstractMediaWrapper> { var isListMode = false private var gridCardWidth = 0 @@ -65,7 +65,7 @@ class VideoListAdapter internal constructor( val multiSelectHelper = MultiSelectHelper(this, UPDATE_SELECTION) - private val thumbObs = Observer<AMediaWrapper> { media -> + private val thumbObs = Observer<AbstractMediaWrapper> { media -> val position = currentList?.snapshot()?.indexOf(media) ?: return@Observer getItem(position)?.run { artworkURL = media.artworkURL @@ -74,14 +74,14 @@ class VideoListAdapter internal constructor( } init { - AMedialibrary.lastThumb.observeForever(thumbObs) + AbstractMedialibrary.lastThumb.observeForever(thumbObs) } fun release() { - AMedialibrary.lastThumb.removeObserver(thumbObs) + AbstractMedialibrary.lastThumb.removeObserver(thumbObs) } - val all: List<AMediaWrapper> + val all: List<AbstractMediaWrapper> get() = currentList?.snapshot() ?: emptyList() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { @@ -130,21 +130,21 @@ class VideoListAdapter internal constructor( return position in 0..(itemCount - 1) } -// operator fun contains(mw: AMediaWrapper): Boolean { +// operator fun contains(mw: AbstractMediaWrapper): Boolean { // return getDataset().indexOf(mw) !== -1 // } @MainThread fun clear() {} - private fun fillView(holder: ViewHolder, media: AMediaWrapper) { + private fun fillView(holder: ViewHolder, media: AbstractMediaWrapper) { val text: String? val resolution = generateResolutionClass(media.width, media.height) var max = 0 var progress = 0 var seen = 0L - text = if (media.type == AMediaWrapper.TYPE_GROUP) { + text = if (media.type == AbstractMediaWrapper.TYPE_GROUP) { media.description } else { seen = if (mIsSeenMediaMarkerVisible) media.seen else 0L @@ -214,22 +214,22 @@ class VideoListAdapter internal constructor( override fun isSelected() = multiSelectHelper.isSelected(layoutPosition) } - override fun onCurrentListChanged(previousList: PagedList<AMediaWrapper>?, currentList: PagedList<AMediaWrapper>?) { + override fun onCurrentListChanged(previousList: PagedList<AbstractMediaWrapper>?, currentList: PagedList<AbstractMediaWrapper>?) { mEventsHandler.onUpdateFinished(this) } - private object VideoItemDiffCallback : DiffUtil.ItemCallback<AMediaWrapper>() { - override fun areItemsTheSame(oldItem: AMediaWrapper, newItem: AMediaWrapper): Boolean { + private object VideoItemDiffCallback : DiffUtil.ItemCallback<AbstractMediaWrapper>() { + override fun areItemsTheSame(oldItem: AbstractMediaWrapper, newItem: AbstractMediaWrapper): Boolean { return oldItem === newItem || oldItem.type == newItem.type && oldItem.equals(newItem) } - override fun areContentsTheSame(oldItem: AMediaWrapper, newItem: AMediaWrapper): Boolean { + override fun areContentsTheSame(oldItem: AbstractMediaWrapper, newItem: AbstractMediaWrapper): Boolean { return oldItem === newItem || (oldItem.displayTime == newItem.displayTime && TextUtils.equals(oldItem.artworkMrl, newItem.artworkMrl) && oldItem.seen == newItem.seen) } - override fun getChangePayload(oldItem: AMediaWrapper, newItem: AMediaWrapper) = when { + override fun getChangePayload(oldItem: AbstractMediaWrapper, newItem: AbstractMediaWrapper) = when { oldItem.displayTime != newItem.displayTime -> UPDATE_TIME !TextUtils.equals(oldItem.artworkMrl, newItem.artworkMrl) -> UPDATE_THUMB else -> UPDATE_SEEN diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt index 4d0c880f9d..7820946ba6 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt @@ -81,10 +81,10 @@ import org.videolan.libvlc.RendererItem import org.videolan.libvlc.util.AndroidUtil import org.videolan.libvlc.util.DisplayManager import org.videolan.libvlc.util.VLCVideoLayout -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.* import org.videolan.vlc.* import org.videolan.vlc.database.models.ExternalSub @@ -116,7 +116,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle private val controlsConstraintSetPortrait = ConstraintSet() private val controlsConstraintSetLandscape = ConstraintSet() var service: PlaybackService? = null - private lateinit var medialibrary: AMedialibrary + private lateinit var medialibrary: AbstractMedialibrary private var videoLayout: VLCVideoLayout? = null lateinit var displayManager: DisplayManager private var rootView: View? = null @@ -232,7 +232,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle return if (AndroidUtil.isLolliPopOrLater) pm.isInteractive else pm.isScreenOn } - private val playlistObserver = Observer<List<AMediaWrapper>> { mediaWrappers -> if (mediaWrappers != null) playlistAdapter!!.update(mediaWrappers) } + private val playlistObserver = Observer<List<AbstractMediaWrapper>> { mediaWrappers -> if (mediaWrappers != null) playlistAdapter!!.update(mediaWrappers) } private var addNextTrack = false @@ -627,7 +627,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle if (Permissions.canDrawOverlays(this)) { switchingView = true switchToPopup = true - if (service?.isPlaying != true) mw.addFlags(AMediaWrapper.MEDIA_PAUSED) + if (service?.isPlaying != true) mw.addFlags(AbstractMediaWrapper.MEDIA_PAUSED) cleanUI() exitOK() } else @@ -859,7 +859,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle if (switchToPopup) switchToPopup(currentMediaPosition) else { - currentMediaWrapper!!.addFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) + currentMediaWrapper!!.addFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) showWithoutParse(currentMediaPosition) } return @@ -1476,14 +1476,14 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle if (event.esChangedType == Media.Track.Type.Audio) { setESTrackLists() runIO(Runnable { - val audioTrack = media.getMetaLong(AMediaWrapper.META_AUDIOTRACK).toInt() + val audioTrack = media.getMetaLong(AbstractMediaWrapper.META_AUDIOTRACK).toInt() if (audioTrack != 0 || currentAudioTrack != -2) service.setAudioTrack(if (media.id == 0L) currentAudioTrack else audioTrack) }) } else if (event.esChangedType == Media.Track.Type.Text) { setESTrackLists() runIO(Runnable { - val spuTrack = media.getMetaLong(AMediaWrapper.META_SUBTITLE_TRACK).toInt() + val spuTrack = media.getMetaLong(AbstractMediaWrapper.META_SUBTITLE_TRACK).toInt() if (addNextTrack) { val tracks = service.spuTracks if (!Util.isArrayEmpty(tracks as Array<MediaPlayer.TrackDescription>)) service!!.setSpuTrack(tracks[tracks.size - 1].id) @@ -1534,10 +1534,10 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle stopLoading() updateOverlayPausePlay() updateNavStatus() - if (!mw.hasFlag(AMediaWrapper.MEDIA_PAUSED)) + if (!mw.hasFlag(AbstractMediaWrapper.MEDIA_PAUSED)) handler.sendEmptyMessageDelayed(FADE_OUT, OVERLAY_TIMEOUT.toLong()) else { - mw.removeFlags(AMediaWrapper.MEDIA_PAUSED) + mw.removeFlags(AbstractMediaWrapper.MEDIA_PAUSED) wasPaused = false } setESTracks() @@ -1712,7 +1712,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle } - override fun onPopupMenu(view: View, position: Int, item: AMediaWrapper?) { + override fun onPopupMenu(view: View, position: Int, item: AbstractMediaWrapper?) { val popupMenu = PopupMenu(this, view) popupMenu.menuInflater.inflate(R.menu.audio_player, popupMenu.menu) @@ -1729,7 +1729,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle override fun onSelectionSet(position: Int) = playlist.scrollToPosition(position) - override fun playItem(position: Int, item: AMediaWrapper) { + override fun playItem(position: Int, item: AbstractMediaWrapper) { service?.playIndex(position) } @@ -1868,7 +1868,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle service.setAudioTrack(trackID) runIO(Runnable { val mw = medialibrary.findMedia(service.currentMediaWrapper) - if (mw != null && mw.id != 0L) mw.setLongMeta(AMediaWrapper.META_AUDIOTRACK, trackID.toLong()) + if (mw != null && mw.id != 0L) mw.setLongMeta(AbstractMediaWrapper.META_AUDIOTRACK, trackID.toLong()) }) } } @@ -1907,7 +1907,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle private fun setSpuTrack(trackID: Int) { runOnMainThread(Runnable { service?.setSpuTrack(trackID) }) val mw = medialibrary.findMedia(service?.currentMediaWrapper) ?: return - if (mw.id != 0L) mw.setLongMeta(AMediaWrapper.META_SUBTITLE_TRACK, trackID.toLong()) + if (mw.id != 0L) mw.setLongMeta(AbstractMediaWrapper.META_SUBTITLE_TRACK, trackID.toLong()) } private fun showNavMenu() { @@ -2433,13 +2433,13 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle if (startTime == 0L && savedTime > 0L) startTime = savedTime val restorePlayback = hasMedia && currentMedia!!.uri == videoUri - var openedMedia: AMediaWrapper? = null + var openedMedia: AbstractMediaWrapper? = null val resumePlaylist = service.isValidIndex(positionInPlaylist) val continueplayback = isPlaying && (restorePlayback || positionInPlaylist == service.currentMediaPosition) if (resumePlaylist) { // Provided externally from AudioService if (BuildConfig.DEBUG) Log.d(TAG, "Continuing playback from PlaybackService at index $positionInPlaylist") - openedMedia = service.medias[positionInPlaylist] + openedMedia = service.media[positionInPlaylist] // if (openedMedia == null) { // encounteredError() // return @@ -2449,7 +2449,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle updatePausable(service.isPausable) } if (videoUri != null) { - var media: AMediaWrapper? = null + var media: AbstractMediaWrapper? = null if (!continueplayback) { if (!resumePlaylist) { // restore last position @@ -2460,7 +2460,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle media = medialibrary.getMedia(videoUri!!) } if (media != null && media.id != 0L && media.time == 0L) - media.time = media.getMetaLong(AMediaWrapper.META_PROGRESS) + media.time = media.getMetaLong(AbstractMediaWrapper.META_PROGRESS) } else media = openedMedia if (media != null) { @@ -2497,14 +2497,14 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle // Start playback & seek /* prepare playback */ val medialoaded = media != null - if (!medialoaded) media = if (hasMedia) currentMedia else MLServiceLocator.getAMediaWrapper(videoUri!!) + if (!medialoaded) media = if (hasMedia) currentMedia else MLServiceLocator.getAbstractMediaWrapper(videoUri!!) if (wasPaused) - media!!.addFlags(AMediaWrapper.MEDIA_PAUSED) + media!!.addFlags(AbstractMediaWrapper.MEDIA_PAUSED) if (intent.hasExtra(PLAY_DISABLE_HARDWARE)) - media!!.addFlags(AMediaWrapper.MEDIA_NO_HWACCEL) - media!!.removeFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) - media.addFlags(AMediaWrapper.MEDIA_VIDEO) - if (fromStart) media.addFlags(AMediaWrapper.MEDIA_FROM_START) + media!!.addFlags(AbstractMediaWrapper.MEDIA_NO_HWACCEL) + media!!.removeFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) + media.addFlags(AbstractMediaWrapper.MEDIA_VIDEO) + if (fromStart) media.addFlags(AbstractMediaWrapper.MEDIA_FROM_START) // Set resume point if (!continueplayback && !fromStart) { @@ -2848,7 +2848,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle context.startActivity(intent) } - fun getIntent(action: String, mw: AMediaWrapper, fromStart: Boolean, openedPosition: Int): Intent { + fun getIntent(action: String, mw: AbstractMediaWrapper, fromStart: Boolean, openedPosition: Int): Intent { return getIntent(action, VLCApplication.appContext, mw.uri, mw.title, fromStart, openedPosition) } diff --git a/vlc-android/src/org/videolan/vlc/interfaces/Sortable.kt b/vlc-android/src/org/videolan/vlc/interfaces/Sortable.kt index 76b7569d05..4a930f194d 100644 --- a/vlc-android/src/org/videolan/vlc/interfaces/Sortable.kt +++ b/vlc-android/src/org/videolan/vlc/interfaces/Sortable.kt @@ -3,7 +3,7 @@ package org.videolan.vlc.interfaces import android.view.MenuItem import android.view.View import android.widget.PopupMenu -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.R import org.videolan.vlc.viewmodels.BaseModel @@ -29,11 +29,11 @@ interface Sortable : PopupMenu.OnMenuItemClickListener { override fun onMenuItemClick(item: MenuItem): Boolean { val vm = getVM() vm.sort(when (item.itemId) { - R.id.ml_menu_sortby_name -> AMedialibrary.SORT_ALPHA - R.id.ml_menu_sortby_filename -> AMedialibrary.SORT_FILENAME - R.id.ml_menu_sortby_length -> AMedialibrary.SORT_DURATION - R.id.ml_menu_sortby_last_modified -> AMedialibrary.SORT_LASTMODIFICATIONDATE - R.id.ml_menu_sortby_date -> AMedialibrary.SORT_RELEASEDATE + R.id.ml_menu_sortby_name -> AbstractMedialibrary.SORT_ALPHA + R.id.ml_menu_sortby_filename -> AbstractMedialibrary.SORT_FILENAME + R.id.ml_menu_sortby_length -> AbstractMedialibrary.SORT_DURATION + R.id.ml_menu_sortby_last_modified -> AbstractMedialibrary.SORT_LASTMODIFICATIONDATE + R.id.ml_menu_sortby_date -> AbstractMedialibrary.SORT_RELEASEDATE else -> return false }) return true diff --git a/vlc-android/src/org/videolan/vlc/media/MediaSessionBrowser.java b/vlc-android/src/org/videolan/vlc/media/MediaSessionBrowser.java index 76a5ac49c4..1a292a7531 100644 --- a/vlc-android/src/org/videolan/vlc/media/MediaSessionBrowser.java +++ b/vlc-android/src/org/videolan/vlc/media/MediaSessionBrowser.java @@ -41,8 +41,8 @@ import android.support.v4.media.MediaDescriptionCompat; import androidx.annotation.NonNull; import androidx.annotation.WorkerThread; -import org.videolan.medialibrary.interfaces.AMedialibrary; -import org.videolan.medialibrary.interfaces.media.AMediaWrapper; +import org.videolan.medialibrary.interfaces.AbstractMedialibrary; +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper; import org.videolan.medialibrary.media.MediaLibraryItem; import org.videolan.vlc.R; import org.videolan.vlc.VLCApplication; @@ -207,30 +207,30 @@ public class MediaSessionBrowser implements ExtensionManagerService.ExtensionMan return results; case ID_LAST_ADDED: limitSize = true; - list = AMedialibrary.getInstance().getRecentAudio(); + list = AbstractMedialibrary.getInstance().getRecentAudio(); break; case ID_HISTORY: limitSize = true; - list = AMedialibrary.getInstance().lastMediaPlayed(); + list = AbstractMedialibrary.getInstance().lastMediaPlayed(); break; case ID_ARTISTS: - list = AMedialibrary.getInstance().getArtists(Settings.INSTANCE.getInstance(context).getBoolean(SettingsKt.KEY_ARTISTS_SHOW_ALL, false)); + list = AbstractMedialibrary.getInstance().getArtists(Settings.INSTANCE.getInstance(context).getBoolean(SettingsKt.KEY_ARTISTS_SHOW_ALL, false)); break; case ID_ALBUMS: - list = AMedialibrary.getInstance().getAlbums(); + list = AbstractMedialibrary.getInstance().getAlbums(); break; case ID_GENRES: - list = AMedialibrary.getInstance().getGenres(); + list = AbstractMedialibrary.getInstance().getGenres(); break; case ID_PLAYLISTS: - list = AMedialibrary.getInstance().getPlaylists(); + list = AbstractMedialibrary.getInstance().getPlaylists(); break; case ID_SONGS: - list = AMedialibrary.getInstance().getAudio(); + list = AbstractMedialibrary.getInstance().getAudio(); break; default: String[] idSections = parentId.split("_"); - AMedialibrary ml = AMedialibrary.getInstance(); + AbstractMedialibrary ml = AbstractMedialibrary.getInstance(); long id = Long.parseLong(idSections[1]); switch (idSections[0]) { case ARTIST_PREFIX: @@ -244,7 +244,7 @@ public class MediaSessionBrowser implements ExtensionManagerService.ExtensionMan if (list != null) { MediaDescriptionCompat.Builder item = new MediaDescriptionCompat.Builder(); for (MediaLibraryItem libraryItem : list) { - if (libraryItem.getItemType() == MediaLibraryItem.TYPE_MEDIA && ((AMediaWrapper) libraryItem).getType() != AMediaWrapper.TYPE_AUDIO) + if (libraryItem.getItemType() == MediaLibraryItem.TYPE_MEDIA && ((AbstractMediaWrapper) libraryItem).getType() != AbstractMediaWrapper.TYPE_AUDIO) continue; Bitmap cover = AudioUtil.INSTANCE.readCoverBitmap(Uri.decode(libraryItem.getArtworkMrl()), 256); if (cover == null) @@ -253,8 +253,8 @@ public class MediaSessionBrowser implements ExtensionManagerService.ExtensionMan .setMediaId(generateMediaId(libraryItem)); item.setIconBitmap(cover); if (libraryItem.getItemType() == MediaLibraryItem.TYPE_MEDIA) { - item.setMediaUri(((AMediaWrapper) libraryItem).getUri()) - .setSubtitle(MediaUtils.INSTANCE.getMediaSubtitle((AMediaWrapper) libraryItem)); + item.setMediaUri(((AbstractMediaWrapper) libraryItem).getUri()) + .setSubtitle(MediaUtils.INSTANCE.getMediaSubtitle((AbstractMediaWrapper) libraryItem)); } else item.setSubtitle(libraryItem.getDescription()); boolean playable = libraryItem.getItemType() == MediaLibraryItem.TYPE_MEDIA || libraryItem.getItemType() == MediaLibraryItem.TYPE_ALBUM || diff --git a/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt b/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt index d3184103e3..71408f8fbb 100644 --- a/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt +++ b/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt @@ -20,13 +20,13 @@ import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.AFolder -import org.videolan.medialibrary.interfaces.media.AMediaWrapper -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractFolder +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.medialibrary.media.* import org.videolan.vlc.PlaybackService import org.videolan.vlc.R @@ -47,7 +47,7 @@ private const val TAG = "VLC/MediaUtils" object MediaUtils : CoroutineScope { override val coroutineContext = Dispatchers.Main.immediate - fun getSubs(activity: FragmentActivity, mediaList: List<AMediaWrapper>) { + fun getSubs(activity: FragmentActivity, mediaList: List<AbstractMediaWrapper>) { if (activity is AppCompatActivity) showSubtitleDownloaderDialogFragment(activity, mediaList.map { it.uri }) else { val intent = Intent(activity, DialogActivity::class.java).setAction(DialogActivity.KEY_SUBS_DL) @@ -58,7 +58,7 @@ object MediaUtils : CoroutineScope { } } - fun getSubs(activity: FragmentActivity, media: AMediaWrapper) { + fun getSubs(activity: FragmentActivity, media: AbstractMediaWrapper) { getSubs(activity, listOf(media)) } @@ -79,7 +79,7 @@ object MediaUtils : CoroutineScope { }) } - fun appendMedia(context: Context?, media: List<AMediaWrapper>?) { + fun appendMedia(context: Context?, media: List<AbstractMediaWrapper>?) { if (media == null || media.isEmpty() || context == null) return DialogCallback(context, object : DialogCallback.Runnable { override fun run(service: PlaybackService) { @@ -93,13 +93,13 @@ object MediaUtils : CoroutineScope { }) } - fun appendMedia(context: Context?, media: AMediaWrapper?) { + fun appendMedia(context: Context?, media: AbstractMediaWrapper?) { if (media != null) appendMedia(context, arrayListOf(media)) } - fun appendMedia(context: Context, array: Array<AMediaWrapper>) = appendMedia(context, array.asList()) + fun appendMedia(context: Context, array: Array<AbstractMediaWrapper>) = appendMedia(context, array.asList()) - fun insertNext(context: Context?, media: Array<AMediaWrapper>?) { + fun insertNext(context: Context?, media: Array<AbstractMediaWrapper>?) { if (media == null || context == null) return DialogCallback(context, object : DialogCallback.Runnable { override fun run(service: PlaybackService) { @@ -113,12 +113,12 @@ object MediaUtils : CoroutineScope { }) } - fun insertNext(context: Context?, media: AMediaWrapper?) { + fun insertNext(context: Context?, media: AbstractMediaWrapper?) { if (media == null || context == null) return insertNext(context, arrayOf(media)) } - fun openMedia(context: Context?, media: AMediaWrapper?) { + fun openMedia(context: Context?, media: AbstractMediaWrapper?) { if (media == null || context == null) return DialogCallback(context, object : DialogCallback.Runnable { override fun run(service: PlaybackService) { @@ -132,9 +132,9 @@ object MediaUtils : CoroutineScope { openMediaNoUi(ctx, media) } - fun openMediaNoUi(uri: Uri) = openMediaNoUi(VLCApplication.appContext, MLServiceLocator.getAMediaWrapper(uri)) + fun openMediaNoUi(uri: Uri) = openMediaNoUi(VLCApplication.appContext, MLServiceLocator.getAbstractMediaWrapper(uri)) - fun openMediaNoUi(context: Context?, media: AMediaWrapper?) { + fun openMediaNoUi(context: Context?, media: AbstractMediaWrapper?) { if (media == null || context == null) return object : BaseCallBack(context) { override fun onChanged(service: PlaybackService?) { @@ -150,19 +150,19 @@ object MediaUtils : CoroutineScope { openList(context, withContext(Dispatchers.IO) { item.tracks }.toList(), position) } - fun playAlbums(context: Context?, provider: MedialibraryProvider<AAlbum>, position: Int, shuffle: Boolean) { + fun playAlbums(context: Context?, provider: MedialibraryProvider<AbstractAlbum>, position: Int, shuffle: Boolean) { if (context == null) return SuspendDialogCallback(context) { service -> val count = withContext(Dispatchers.IO) { provider.getTotalCount() } when (count) { 0 -> null in 1..MEDIALIBRARY_PAGE_SIZE -> withContext(Dispatchers.IO) { - mutableListOf<AMediaWrapper>().apply { + mutableListOf<AbstractMediaWrapper>().apply { for (album in provider.getAll()) album.tracks?.let { addAll(it) } } } else -> withContext(Dispatchers.IO) { - mutableListOf<AMediaWrapper>().apply { + mutableListOf<AbstractMediaWrapper>().apply { var index = 0 while (index < count) { val pageCount = min(MEDIALIBRARY_PAGE_SIZE, count - index) @@ -179,11 +179,11 @@ object MediaUtils : CoroutineScope { } } - fun playAll(context: Context?, provider: MedialibraryProvider<AMediaWrapper>, position: Int, shuffle: Boolean) { + fun playAll(context: Context?, provider: MedialibraryProvider<AbstractMediaWrapper>, position: Int, shuffle: Boolean) { if (context == null) return SuspendDialogCallback(context) { service -> val count = withContext(Dispatchers.IO) { provider.getTotalCount() } - fun play(list: List<AMediaWrapper>) { + fun play(list: List<AbstractMediaWrapper>) { service.load(list, if (shuffle) Random().nextInt(min(count, MEDIALIBRARY_PAGE_SIZE)) else position) if (shuffle && !service.isShuffling) service.shuffle() } @@ -192,7 +192,7 @@ object MediaUtils : CoroutineScope { in 1..MEDIALIBRARY_PAGE_SIZE -> play(withContext(Dispatchers.IO) { provider.getAll().toList() }) else -> { var index = 0 - val appendList = mutableListOf<AMediaWrapper>() + val appendList = mutableListOf<AbstractMediaWrapper>() while (index < count) { val pageCount = min(MEDIALIBRARY_PAGE_SIZE, count - index) val list = withContext(Dispatchers.IO) { provider.getPage(pageCount, index).toList() } @@ -210,7 +210,7 @@ object MediaUtils : CoroutineScope { if (context == null) return SuspendDialogCallback(context) { service -> val count = withContext(Dispatchers.IO) { provider.getTotalCount() } - fun play(list: List<AMediaWrapper>) { + fun play(list: List<AbstractMediaWrapper>) { service.load(list, if (shuffle) Random().nextInt(min(count, MEDIALIBRARY_PAGE_SIZE)) else position) if (shuffle && !service.isShuffling) service.shuffle() } @@ -218,7 +218,7 @@ object MediaUtils : CoroutineScope { 0 -> return@SuspendDialogCallback in 1..MEDIALIBRARY_PAGE_SIZE -> play(withContext(Dispatchers.IO) { provider.getAll().flatMap { - it.media(provider.type, AMedialibrary.SORT_DEFAULT, false, it.mediaCount(provider.type), 0).toList() + it.media(provider.type, AbstractMedialibrary.SORT_DEFAULT, false, it.mediaCount(provider.type), 0).toList() } }) else -> { @@ -227,7 +227,7 @@ object MediaUtils : CoroutineScope { val pageCount = min(MEDIALIBRARY_PAGE_SIZE, count - index) val list = withContext(Dispatchers.IO) { provider.getPage(pageCount, index).flatMap { - it.media(provider.type, AMedialibrary.SORT_DEFAULT, false, it.mediaCount(provider.type), 0).toList() + it.media(provider.type, AbstractMedialibrary.SORT_DEFAULT, false, it.mediaCount(provider.type), 0).toList() } } if (index == 0) play(list) @@ -240,7 +240,7 @@ object MediaUtils : CoroutineScope { } @JvmOverloads - fun openList(context: Context?, list: List<AMediaWrapper>, position: Int, shuffle: Boolean = false) { + fun openList(context: Context?, list: List<AbstractMediaWrapper>, position: Int, shuffle: Boolean = false) { if (Util.isListEmpty(list) || context == null) return DialogCallback(context, object : DialogCallback.Runnable { override fun run(service: PlaybackService) { @@ -268,21 +268,21 @@ object MediaUtils : CoroutineScope { }) } - fun getMediaArtist(ctx: Context, media: AMediaWrapper?) = media?.artist + fun getMediaArtist(ctx: Context, media: AbstractMediaWrapper?) = media?.artist ?: if (media?.nowPlaying != null) "" else getMediaString(ctx, R.string.unknown_artist) - fun getMediaReferenceArtist(ctx: Context, media: AMediaWrapper?) = getMediaArtist(ctx, media) + fun getMediaReferenceArtist(ctx: Context, media: AbstractMediaWrapper?) = getMediaArtist(ctx, media) - fun getMediaAlbumArtist(ctx: Context, media: AMediaWrapper?) = media?.albumArtist + fun getMediaAlbumArtist(ctx: Context, media: AbstractMediaWrapper?) = media?.albumArtist ?: getMediaString(ctx, R.string.unknown_artist) - fun getMediaAlbum(ctx: Context, media: AMediaWrapper?) = media?.album + fun getMediaAlbum(ctx: Context, media: AbstractMediaWrapper?) = media?.album ?: if (media?.nowPlaying != null) "" else getMediaString(ctx, R.string.unknown_album) - fun getMediaGenre(ctx: Context, media: AMediaWrapper?) = media?.genre + fun getMediaGenre(ctx: Context, media: AbstractMediaWrapper?) = media?.genre ?: getMediaString(ctx, R.string.unknown_genre) - fun getMediaSubtitle(media: AMediaWrapper): String? { + fun getMediaSubtitle(media: AbstractMediaWrapper): String? { var subtitle = media.nowPlaying ?: media.artist if (media.length > 0L) { subtitle = if (TextUtils.isEmpty(subtitle)) Tools.millisToString(media.length) @@ -291,7 +291,7 @@ object MediaUtils : CoroutineScope { return subtitle } - fun getMediaTitle(mediaWrapper: AMediaWrapper) = mediaWrapper.title + fun getMediaTitle(mediaWrapper: AbstractMediaWrapper) = mediaWrapper.title ?: FileUtils.getFileNameFromPath(mediaWrapper.location)!! fun getContentMediaUri(data: Uri) = try { @@ -419,7 +419,7 @@ object MediaUtils : CoroutineScope { } } - fun retrieveMediaTitle(mw: AMediaWrapper) = try { + fun retrieveMediaTitle(mw: AbstractMediaWrapper) = try { VLCApplication.appContext.contentResolver.query(mw.uri, null, null, null, null)?.use { val nameIndex = it.getColumnIndex(OpenableColumns.DISPLAY_NAME) if (nameIndex > -1 && it.count > 0) { @@ -434,14 +434,14 @@ object MediaUtils : CoroutineScope { } catch (ignored: SecurityException) { } - fun deletePlaylist(playlist: APlaylist) = launch(Dispatchers.IO) { playlist.delete() } + fun deletePlaylist(playlist: AbstractPlaylist) = launch(Dispatchers.IO) { playlist.delete() } } @WorkerThread -fun AFolder.getAll(type: Int = AFolder.TYPE_FOLDER_VIDEO, sort: Int = AMedialibrary.SORT_DEFAULT, desc: Boolean = false) : List<AMediaWrapper> { +fun AbstractFolder.getAll(type: Int = AbstractFolder.TYPE_FOLDER_VIDEO, sort: Int = AbstractMedialibrary.SORT_DEFAULT, desc: Boolean = false) : List<AbstractMediaWrapper> { var index = 0 val count = mediaCount(type) - val all = mutableListOf<AMediaWrapper>() + val all = mutableListOf<AbstractMediaWrapper>() while (index < count) { val pageCount = min(MEDIALIBRARY_PAGE_SIZE, count - index) val list = media(type, sort, desc, pageCount, index) @@ -451,7 +451,7 @@ fun AFolder.getAll(type: Int = AFolder.TYPE_FOLDER_VIDEO, sort: Int = AMedialibr return all } -fun List<AFolder>.getAll(type: Int = AFolder.TYPE_FOLDER_VIDEO, sort: Int = AMedialibrary.SORT_DEFAULT, desc: Boolean = false) : List<AMediaWrapper> { +fun List<AbstractFolder>.getAll(type: Int = AbstractFolder.TYPE_FOLDER_VIDEO, sort: Int = AbstractMedialibrary.SORT_DEFAULT, desc: Boolean = false) : List<AbstractMediaWrapper> { return flatMap { it.getAll(type, sort, desc) } } diff --git a/vlc-android/src/org/videolan/vlc/media/MediaWrapperList.kt b/vlc-android/src/org/videolan/vlc/media/MediaWrapperList.kt index 26a7ba301a..cb64c484a2 100644 --- a/vlc-android/src/org/videolan/vlc/media/MediaWrapperList.kt +++ b/vlc-android/src/org/videolan/vlc/media/MediaWrapperList.kt @@ -1,5 +1,5 @@ /***************************************************************************** - * AMediaWrapperList.java + * MediaWrapperList.java * * Copyright © 2013-2015 VLC authors and VideoLAN * Copyright © 2013 Edward Wang @@ -20,17 +20,17 @@ */ package org.videolan.vlc.media -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import java.util.* -class AMediaWrapperList { +class MediaWrapperList { /* TODO: add locking */ - private val internalList = ArrayList<AMediaWrapper>() + private val internalList = ArrayList<AbstractMediaWrapper>() private val eventListenerList = ArrayList<EventListener>() private var videoCount = 0 - val copy: MutableList<AMediaWrapper> + val copy: MutableList<AbstractMediaWrapper> @Synchronized get() = ArrayList(internalList) val isAudioList: Boolean @@ -43,10 +43,10 @@ class AMediaWrapperList { } @Synchronized - fun add(media: AMediaWrapper) { + fun add(media: AbstractMediaWrapper) { internalList.add(media) signalEventListeners(EVENT_ADDED, internalList.size - 1, -1, media.location) - if (media.type == AMediaWrapper.TYPE_VIDEO) + if (media.type == AbstractMediaWrapper.TYPE_VIDEO) ++videoCount } @@ -90,11 +90,11 @@ class AMediaWrapperList { } @Synchronized - fun insert(position: Int, media: AMediaWrapper) { + fun insert(position: Int, media: AbstractMediaWrapper) { if (position < 0) return internalList.add(Math.min(position, internalList.size), media) signalEventListeners(EVENT_ADDED, position, -1, media.location) - if (media.type == AMediaWrapper.TYPE_VIDEO) + if (media.type == AbstractMediaWrapper.TYPE_VIDEO) ++videoCount } @@ -123,7 +123,7 @@ class AMediaWrapperList { @Synchronized fun remove(position: Int) { if (!isValid(position)) return - if (internalList[position].type == AMediaWrapper.TYPE_VIDEO) + if (internalList[position].type == AbstractMediaWrapper.TYPE_VIDEO) --videoCount val uri = internalList[position].location internalList.removeAt(position) @@ -136,7 +136,7 @@ class AMediaWrapperList { while (i < internalList.size) { val uri = internalList[i].location if (uri == location) { - if (internalList[i].type == AMediaWrapper.TYPE_VIDEO) + if (internalList[i].type == AbstractMediaWrapper.TYPE_VIDEO) --videoCount internalList.removeAt(i) signalEventListeners(EVENT_REMOVED, i, -1, uri) @@ -152,18 +152,18 @@ class AMediaWrapperList { } @Synchronized - fun getMedia(position: Int): AMediaWrapper? { + fun getMedia(position: Int): AbstractMediaWrapper? { return if (isValid(position)) internalList[position] else null } @Synchronized - fun replaceWith(list: List<AMediaWrapper>) { + fun replaceWith(list: List<AbstractMediaWrapper>) { internalList.clear() internalList.addAll(list) } @Synchronized - fun map(list: List<AMediaWrapper>) { + fun map(list: List<AbstractMediaWrapper>) { internalList.addAll(list) } @@ -190,7 +190,7 @@ class AMediaWrapperList { } companion object { - private const val TAG = "VLC/AMediaWrapperList" + private const val TAG = "VLC/MediaWrapperList" private const val EVENT_ADDED = 0 private const val EVENT_REMOVED = 1 diff --git a/vlc-android/src/org/videolan/vlc/media/PlayerController.kt b/vlc-android/src/org/videolan/vlc/media/PlayerController.kt index dc9d04e1f5..96fb1d5418 100644 --- a/vlc-android/src/org/videolan/vlc/media/PlayerController.kt +++ b/vlc-android/src/org/videolan/vlc/media/PlayerController.kt @@ -10,10 +10,9 @@ import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import org.videolan.libvlc.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.BuildConfig import org.videolan.vlc.PlaybackService -import org.videolan.vlc.gui.preferences.PreferencesActivity import org.videolan.vlc.repository.SlaveRepository import org.videolan.vlc.util.* import kotlin.math.abs @@ -193,7 +192,7 @@ class PlayerController(val context: Context) : IVLCVout.Callback, MediaPlayer.Ev setPlaybackStopped() } - fun setSlaves(media: Media, mw: AMediaWrapper) = launch { + fun setSlaves(media: Media, mw: AbstractMediaWrapper) = launch { if (mediaplayer.isReleased) return@launch val slaves = mw.slaves slaves?.let { it.forEach { slave -> media.addSlave(slave) } } @@ -236,7 +235,7 @@ class PlayerController(val context: Context) : IVLCVout.Callback, MediaPlayer.Ev * @param id of the Meta event received, -1 for none * @return true if UI needs to be updated */ - internal fun updateCurrentMeta(id: Int, mw: AMediaWrapper?): Boolean { + internal fun updateCurrentMeta(id: Int, mw: AbstractMediaWrapper?): Boolean { if (id == Media.Meta.Publisher) return false mw?.updateMeta(mediaplayer) return id != Media.Meta.NowPlaying || mw?.nowPlaying !== null diff --git a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt index c3fb74a4f3..93e1d2ec7d 100644 --- a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt +++ b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt @@ -16,9 +16,9 @@ import org.videolan.libvlc.Media import org.videolan.libvlc.MediaPlayer import org.videolan.libvlc.RendererItem import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.BuildConfig import org.videolan.vlc.PlaybackService import org.videolan.vlc.R @@ -34,16 +34,16 @@ private const val AUDIO_REPEAT_MODE_KEY = "audio_repeat_mode" @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi -class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventListener, Media.EventListener, CoroutineScope { +class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventListener, Media.EventListener, CoroutineScope { override val coroutineContext = Dispatchers.Main.immediate companion object { val showAudioPlayer = MutableLiveData<Boolean>().apply { value = false } - private val mediaList = AMediaWrapperList() + private val mediaList = MediaWrapperList() fun hasMedia() = mediaList.size() != 0 } - private val medialibrary by lazy(LazyThreadSafetyMode.NONE) { AMedialibrary.getInstance() } + private val medialibrary by lazy(LazyThreadSafetyMode.NONE) { AbstractMedialibrary.getInstance() } val player by lazy(LazyThreadSafetyMode.NONE) { PlayerController(service.applicationContext) } private val settings by lazy(LazyThreadSafetyMode.NONE) { Settings.getInstance(service) } private val ctx by lazy(LazyThreadSafetyMode.NONE) { service.applicationContext } @@ -89,7 +89,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis @MainThread fun loadLocations(mediaPathList: List<String>, position: Int) { launch { - val mediaList = ArrayList<AMediaWrapper>() + val mediaList = ArrayList<AbstractMediaWrapper>() withContext(Dispatchers.IO) { for (location in mediaPathList) { var mediaWrapper = medialibrary.getMedia(location) @@ -100,7 +100,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis continue } Log.v(TAG, "Creating on-the-fly Media object for $location") - mediaWrapper = MLServiceLocator.getAMediaWrapper(Uri.parse(location)) + mediaWrapper = MLServiceLocator.getAbstractMediaWrapper(Uri.parse(location)) mediaList.add(mediaWrapper) } else mediaList.add(mediaWrapper) @@ -111,7 +111,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis } @MainThread - fun load(list: List<AMediaWrapper>, position: Int, mlUpdate: Boolean = false) { + fun load(list: List<AbstractMediaWrapper>, position: Int, mlUpdate: Boolean = false) { launch { saveMediaList() savePosition() @@ -158,7 +158,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis launch { val playList = withContext(Dispatchers.Default) { locations.asSequence().map { Uri.decode(it) }.mapTo(ArrayList(locations.size)) { - MLServiceLocator.getAMediaWrapper(Uri.parse(it)) + MLServiceLocator.getAbstractMediaWrapper(Uri.parse(it)) } } // load playlist @@ -167,7 +167,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis val position = max(0, settings.getInt(if (audio) "position_in_audio_list" else "position_in_media_list", 0)) savedTime = settings.getLong(if (audio) "position_in_song" else "position_in_media", -1) if (!audio && position < playList.size && settings.getBoolean(VIDEO_PAUSED, false)) { - playList[position].addFlags(AMediaWrapper.MEDIA_PAUSED) + playList[position].addFlags(AbstractMediaWrapper.MEDIA_PAUSED) } load(playList, position, true) loadingLastPlaylist = false @@ -283,16 +283,16 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis } val mw = mediaList.getMedia(index) ?: return - val isVideoPlaying = mw.type == AMediaWrapper.TYPE_VIDEO && player.isVideoPlaying() - if (!videoBackground && isVideoPlaying) mw.addFlags(AMediaWrapper.MEDIA_VIDEO) - if (videoBackground) mw.addFlags(AMediaWrapper.MEDIA_FORCE_AUDIO) - if (isBenchmark) mw.addFlags(AMediaWrapper.MEDIA_BENCHMARK) + val isVideoPlaying = mw.type == AbstractMediaWrapper.TYPE_VIDEO && player.isVideoPlaying() + if (!videoBackground && isVideoPlaying) mw.addFlags(AbstractMediaWrapper.MEDIA_VIDEO) + if (videoBackground) mw.addFlags(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) + if (isBenchmark) mw.addFlags(AbstractMediaWrapper.MEDIA_BENCHMARK) parsed = false player.switchToVideo = false if (TextUtils.equals(mw.uri.scheme, "content")) withContext(Dispatchers.IO) { MediaUtils.retrieveMediaTitle(mw) } - if (mw.type != AMediaWrapper.TYPE_VIDEO || isVideoPlaying || player.hasRenderer - || mw.hasFlag(AMediaWrapper.MEDIA_FORCE_AUDIO)) { + if (mw.type != AbstractMediaWrapper.TYPE_VIDEO || isVideoPlaying || player.hasRenderer + || mw.hasFlag(AbstractMediaWrapper.MEDIA_FORCE_AUDIO)) { val uri = withContext(Dispatchers.IO) { FileUtils.getUri(mw.uri) } if (uri == null) { skipMedia() @@ -335,7 +335,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis @MainThread fun switchToVideo(): Boolean { val media = getCurrentMedia() - if (media === null || media.hasFlag(AMediaWrapper.MEDIA_FORCE_AUDIO) || !player.canSwitchToVideo()) + if (media === null || media.hasFlag(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) || !player.canSwitchToVideo()) return false val hasRenderer = player.hasRenderer videoBackground = false @@ -353,8 +353,8 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis fun setVideoTrackEnabled(enabled: Boolean) { if (!hasMedia() || !player.isPlaying()) return - if (enabled) getCurrentMedia()?.addFlags(AMediaWrapper.MEDIA_VIDEO) - else getCurrentMedia()?.removeFlags(AMediaWrapper.MEDIA_VIDEO) + if (enabled) getCurrentMedia()?.addFlags(AbstractMediaWrapper.MEDIA_VIDEO) + else getCurrentMedia()?.removeFlags(AbstractMediaWrapper.MEDIA_VIDEO) player.setVideoTrackEnabled(enabled) } @@ -410,48 +410,48 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis val rate = player.getRate() val media = withContext(Dispatchers.IO) { medialibrary.findMedia(currentMedia) } if (media === null || media.id == 0L) return@launch - if (media.type == AMediaWrapper.TYPE_VIDEO || canSwitchToVideo || media.isPodcast) { + if (media.type == AbstractMediaWrapper.TYPE_VIDEO || canSwitchToVideo || media.isPodcast) { var progress = time / length.toFloat() if (progress > 0.95f || length - time < 10000) { //increase seen counter if more than 95% of the media have been seen //and reset progress to 0 - launch(Dispatchers.IO) { media.setLongMeta(AMediaWrapper.META_SEEN, media.seen+1) } + launch(Dispatchers.IO) { media.setLongMeta(AbstractMediaWrapper.META_SEEN, media.seen+1) } progress = 0f } media.time = if (progress == 0f) 0L else time - launch(Dispatchers.IO) { media.setLongMeta(AMediaWrapper.META_PROGRESS, media.time) } + launch(Dispatchers.IO) { media.setLongMeta(AbstractMediaWrapper.META_PROGRESS, media.time) } } - launch(Dispatchers.IO) { media.setStringMeta(AMediaWrapper.META_SPEED, rate.toString()) } + launch(Dispatchers.IO) { media.setStringMeta(AbstractMediaWrapper.META_SPEED, rate.toString()) } } fun setSpuTrack(index: Int) { if (!player.setSpuTrack(index)) return val media = getCurrentMedia() ?: return - if (media.id != 0L) launch(Dispatchers.IO) { media.setLongMeta(AMediaWrapper.META_SUBTITLE_TRACK, player.getSpuTrack().toLong()) } + if (media.id != 0L) launch(Dispatchers.IO) { media.setLongMeta(AbstractMediaWrapper.META_SUBTITLE_TRACK, player.getSpuTrack().toLong()) } } fun setAudioDelay(delay: Long) { if (!player.setAudioDelay(delay)) return val media = getCurrentMedia() ?: return if (media.id != 0L && settings.getBoolean("save_individual_audio_delay", false)) { - launch(Dispatchers.IO) { media.setLongMeta(AMediaWrapper.META_AUDIODELAY, player.getAudioDelay()) } + launch(Dispatchers.IO) { media.setLongMeta(AbstractMediaWrapper.META_AUDIODELAY, player.getAudioDelay()) } } } fun setSpuDelay(delay: Long) { if (!player.setSpuDelay(delay)) return val media = getCurrentMedia() ?: return - if (media.id != 0L) launch(Dispatchers.IO) { media.setLongMeta(AMediaWrapper.META_SUBTITLE_DELAY, player.getSpuDelay()) } + if (media.id != 0L) launch(Dispatchers.IO) { media.setLongMeta(AbstractMediaWrapper.META_SUBTITLE_DELAY, player.getSpuDelay()) } } - private fun loadMediaMeta(media: AMediaWrapper) { + private fun loadMediaMeta(media: AbstractMediaWrapper) { if (media.id == 0L) return if (player.canSwitchToVideo()) { if (settings.getBoolean("save_individual_audio_delay", false)) - player.setAudioDelay(media.getMetaLong(AMediaWrapper.META_AUDIODELAY)) - player.setSpuTrack(media.getMetaLong(AMediaWrapper.META_SUBTITLE_TRACK).toInt()) - player.setSpuDelay(media.getMetaLong(AMediaWrapper.META_SUBTITLE_DELAY)) - val rateString = media.getMetaString(AMediaWrapper.META_SPEED) + player.setAudioDelay(media.getMetaLong(AbstractMediaWrapper.META_AUDIODELAY)) + player.setSpuTrack(media.getMetaLong(AbstractMediaWrapper.META_SUBTITLE_TRACK).toInt()) + player.setSpuDelay(media.getMetaLong(AbstractMediaWrapper.META_SUBTITLE_DELAY)) + val rateString = media.getMetaString(AbstractMediaWrapper.META_SPEED) if (!rateString.isNullOrEmpty()) { player.setRate(rateString.toFloat(), false) } @@ -505,7 +505,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis val media = getCurrentMedia() if (expand && media !== null) { expanding = true - nextIndex = expand(media.type == AMediaWrapper.TYPE_STREAM) + nextIndex = expand(media.type == AbstractMediaWrapper.TYPE_STREAM) expanding = false } else { nextIndex = -1 @@ -572,7 +572,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis private suspend fun expand(updateHistory: Boolean): Int { val index = currentIndex val expandedMedia = getCurrentMedia() - val stream = expandedMedia?.type == AMediaWrapper.TYPE_STREAM + val stream = expandedMedia?.type == AbstractMediaWrapper.TYPE_STREAM val ml = player.expand() var ret = -1 @@ -583,7 +583,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis for (i in 0 until ml.count) { val child = ml.getMediaAt(i) withContext(Dispatchers.IO) { child.parse() } - mediaList.insert(index+i, MLServiceLocator.getAMediaWrapper(child)) + mediaList.insert(index+i, MLServiceLocator.getAbstractMediaWrapper(child)) child.release() } mediaList.addEventListener(this) @@ -593,7 +593,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis getCurrentMedia()?.apply { AppScope.launch(Dispatchers.IO) { if (stream) { - type = AMediaWrapper.TYPE_STREAM + type = AbstractMediaWrapper.TYPE_STREAM entryUrl = mrl medialibrary.getMedia(mrl)?.run { if (id > 0) medialibrary.removeExternalMedia(id) } } else if (uri.scheme != "fd") { @@ -616,15 +616,15 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis fun getMedia(position: Int) = mediaList.getMedia(position) - private suspend fun getStartTime(mw: AMediaWrapper) : Long { + private suspend fun getStartTime(mw: AbstractMediaWrapper) : Long { val start = when { - mw.hasFlag(AMediaWrapper.MEDIA_FROM_START) -> { - mw.removeFlags(AMediaWrapper.MEDIA_FROM_START) + mw.hasFlag(AbstractMediaWrapper.MEDIA_FROM_START) -> { + mw.removeFlags(AbstractMediaWrapper.MEDIA_FROM_START) 0L } savedTime <= 0L -> when { mw.time > 0L -> mw.time - mw.type == AMediaWrapper.TYPE_VIDEO || mw.isPodcast -> withContext(Dispatchers.IO) { medialibrary.findMedia(mw).getMetaLong(AMediaWrapper.META_PROGRESS) } + mw.type == AbstractMediaWrapper.TYPE_VIDEO || mw.isPodcast -> withContext(Dispatchers.IO) { medialibrary.findMedia(mw).getMetaLong(AbstractMediaWrapper.META_PROGRESS) } else -> 0L } else -> savedTime @@ -652,7 +652,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis * Append to the current existing playlist */ @MainThread - suspend fun append(list: List<AMediaWrapper>) { + suspend fun append(list: List<AbstractMediaWrapper>) { if (!hasCurrentMedia()) { load(list, 0) return @@ -669,7 +669,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis */ @MainThread - fun insertNext(list: List<AMediaWrapper>) { + fun insertNext(list: List<AbstractMediaWrapper>) { if (!hasCurrentMedia()) { load(list, 0) return @@ -685,7 +685,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis fun moveItem(positionStart: Int, positionEnd: Int) = mediaList.move(positionStart, positionEnd) @MainThread - fun insertItem(position: Int, mw: AMediaWrapper) = mediaList.insert(position, mw) + fun insertItem(position: Int, mw: AbstractMediaWrapper) = mediaList.insert(position, mw) @MainThread @@ -696,7 +696,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis fun getMediaListSize()= mediaList.size() - fun getMediaList(): List<AMediaWrapper> = mediaList.copy + fun getMediaList(): List<AbstractMediaWrapper> = mediaList.copy fun toggleABRepeat() { val time = player.getCurrentTime() @@ -798,7 +798,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis } } - private suspend fun savePlaycount(mw: AMediaWrapper) { + private suspend fun savePlaycount(mw: AbstractMediaWrapper) { if (settings.getBoolean(PLAYBACK_HISTORY, true)) withContext(Dispatchers.IO) { var id = mw.id if (id == 0L) { @@ -806,7 +806,7 @@ class PlaylistManager(val service: PlaybackService) : AMediaWrapperList.EventLis if (internalMedia != null && internalMedia.id != 0L) id = internalMedia.id else { - internalMedia = if (mw.type == AMediaWrapper.TYPE_STREAM) { + internalMedia = if (mw.type == AbstractMediaWrapper.TYPE_STREAM) { val media = medialibrary.addStream(Uri.decode(entryUrl ?: mw.uri.toString()), mw.title) entryUrl = null media diff --git a/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt b/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt index b864f29455..81ec5db1c3 100644 --- a/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt @@ -35,9 +35,9 @@ import kotlinx.coroutines.channels.mapNotNullTo import org.videolan.libvlc.Media import org.videolan.libvlc.util.MediaBrowser import org.videolan.libvlc.util.MediaBrowser.EventListener -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.Storage import org.videolan.vlc.R @@ -60,7 +60,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me private val showAll = Settings.getInstance(context).getBoolean("browser_show_all_files", true) val descriptionUpdate = MutableLiveData<Pair<Int, String>>() - internal val medialibrary = AMedialibrary.getInstance() + internal val medialibrary = AbstractMedialibrary.getInstance() private val browserActor = actor<BrowserAction>(capacity = Channel.UNLIMITED) { for (action in channel) if (isActive) when (action) { @@ -126,7 +126,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me position > 0 -> value[position - 1] else -> null } - ModelsHelper.getHeader(context, AMedialibrary.SORT_ALPHA, item, previous)?.let { + ModelsHelper.getHeader(context, AbstractMedialibrary.SORT_ALPHA, item, previous)?.let { launch { headers.put(position, it) (liveHeaders as MutableLiveData<HeadersIndex>).value = headers @@ -152,8 +152,8 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me private suspend fun parseSubDirectoriesImpl() { if (dataset.value.isEmpty()) return val currentMediaList = withContext(Dispatchers.Main) { dataset.value.toList().also { if (url != null) computeHeaders(dataset.value) } } - val directories: MutableList<AMediaWrapper> = ArrayList() - val files: MutableList<AMediaWrapper> = ArrayList() + val directories: MutableList<AbstractMediaWrapper> = ArrayList() + val files: MutableList<AbstractMediaWrapper> = ArrayList() foldersContentMap.clear() withContext(Dispatchers.IO) { initBrowser() @@ -167,13 +167,13 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me val item = currentMediaList[currentParsedPosition] val current = when { item.itemType == MediaLibraryItem.TYPE_MEDIA -> { - val mw = item as AMediaWrapper - if (mw.type != AMediaWrapper.TYPE_DIR && mw.type != AMediaWrapper.TYPE_PLAYLIST) continue@loop + val mw = item as AbstractMediaWrapper + if (mw.type != AbstractMediaWrapper.TYPE_DIR && mw.type != AbstractMediaWrapper.TYPE_PLAYLIST) continue@loop if (mw.uri.scheme == "otg" || mw.uri.scheme == "content") continue@loop mw } item.itemType == MediaLibraryItem.TYPE_STORAGE -> - MLServiceLocator.getAMediaWrapper((item as Storage).uri).apply { type = AMediaWrapper.TYPE_DIR } + MLServiceLocator.getAbstractMediaWrapper((item as Storage).uri).apply { type = AbstractMediaWrapper.TYPE_DIR } else -> continue@loop } // request parsing @@ -183,7 +183,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me for (media in browserChannel) { val mw = findMedia(media) ?: continue val type = mw.type - if (type == AMediaWrapper.TYPE_DIR) directories.add(mw) + if (type == AbstractMediaWrapper.TYPE_DIR) directories.add(mw) else files.add(mw) } // all subitems are in @@ -224,15 +224,15 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me return sb.toString() } - private suspend fun findMedia(media: Media): AMediaWrapper? { - val mw = MLServiceLocator.getAMediaWrapper(media) + private suspend fun findMedia(media: Media): AbstractMediaWrapper? { + val mw = MLServiceLocator.getAbstractMediaWrapper(media) media.release() if (!mw.isMedia()) { if (mw.isBrowserMedia()) return mw else if (!showAll) return null } val uri = mw.uri - if ((mw.type == AMediaWrapper.TYPE_AUDIO || mw.type == AMediaWrapper.TYPE_VIDEO) + if ((mw.type == AbstractMediaWrapper.TYPE_AUDIO || mw.type == AbstractMediaWrapper.TYPE_VIDEO) && "file" == uri.scheme) return withContext(Dispatchers.IO) { medialibrary.getMedia(uri) ?: mw } @@ -276,9 +276,9 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me protected fun removeList(url: String) = prefetchLists.remove(url) - fun saveList(media: AMediaWrapper) = foldersContentMap[media]?.let { if (!it.isEmpty()) prefetchLists[media.location] = it } + fun saveList(media: AbstractMediaWrapper) = foldersContentMap[media]?.let { if (!it.isEmpty()) prefetchLists[media.location] = it } - fun isFolderEmpty(mw: AMediaWrapper) = foldersContentMap[mw]?.isEmpty() ?: true + fun isFolderEmpty(mw: AbstractMediaWrapper) = foldersContentMap[mw]?.isEmpty() ?: true companion object { private val browserHandler by lazy { diff --git a/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt b/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt index 84166f9309..ee3858e5b0 100644 --- a/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt @@ -28,7 +28,7 @@ import androidx.lifecycle.Observer import kotlinx.coroutines.* import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.DummyItem import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor @@ -107,8 +107,8 @@ open class FileBrowserProvider( val file = File(mediaDirLocation) if (!file.exists() || !file.canRead()) continue storageAccess = true - val directory = MLServiceLocator.getAMediaWrapper(AndroidUtil.PathToUri(mediaDirLocation)) - directory.type = AMediaWrapper.TYPE_DIR + val directory = MLServiceLocator.getAbstractMediaWrapper(AndroidUtil.PathToUri(mediaDirLocation)) + directory.type = AbstractMediaWrapper.TYPE_DIR if (TextUtils.equals(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY, mediaDirLocation)) { directory.setDisplayTitle(internalmemoryTitle) storagePosition = devices.size @@ -125,9 +125,9 @@ open class FileBrowserProvider( } if (!storageAccess) return // For first launch, storage access may not already be granted if (AndroidUtil.isLolliPopOrLater && !ExternalMonitor.devices.value.isEmpty()) { - val otg = MLServiceLocator.getAMediaWrapper(Uri.parse("otg://")).apply { + val otg = MLServiceLocator.getAbstractMediaWrapper(Uri.parse("otg://")).apply { title = context.getString(R.string.otg_device_title) - type = AMediaWrapper.TYPE_DIR + type = AbstractMediaWrapper.TYPE_DIR } otgPosition = devices.size devices.add(otg) @@ -171,9 +171,9 @@ open class FileBrowserProvider( otgPosition = -1 } } else if (otgPosition == -1) { - val otg = MLServiceLocator.getAMediaWrapper(Uri.parse("otg://")).apply { + val otg = MLServiceLocator.getAbstractMediaWrapper(Uri.parse("otg://")).apply { title = context.getString(R.string.otg_device_title) - type = AMediaWrapper.TYPE_DIR + type = AbstractMediaWrapper.TYPE_DIR } otgPosition = storagePosition+1 dataset.add(otgPosition, otg) diff --git a/vlc-android/src/org/videolan/vlc/providers/FilePickerProvider.kt b/vlc-android/src/org/videolan/vlc/providers/FilePickerProvider.kt index 2ba39a539e..5c7c5b1c81 100644 --- a/vlc-android/src/org/videolan/vlc/providers/FilePickerProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/FilePickerProvider.kt @@ -22,7 +22,7 @@ package org.videolan.vlc.providers import android.content.Context import org.videolan.libvlc.util.MediaBrowser -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.util.LiveDataset @@ -38,7 +38,7 @@ class FilePickerProvider(context: Context, dataset: LiveDataset<MediaLibraryItem } override fun addMedia(media: MediaLibraryItem) { - if (media is AMediaWrapper && (media.type == AMediaWrapper.TYPE_SUBTITLE || media.type == AMediaWrapper.TYPE_DIR)) super.addMedia(media) + if (media is AbstractMediaWrapper && (media.type == AbstractMediaWrapper.TYPE_SUBTITLE || media.type == AbstractMediaWrapper.TYPE_DIR)) super.addMedia(media) } override fun parseSubDirectories() {} diff --git a/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt b/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt index 4cbb8fcd24..94752d95b1 100644 --- a/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt @@ -24,7 +24,7 @@ import android.content.Context import androidx.lifecycle.Observer import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.DummyItem import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor @@ -35,7 +35,7 @@ import org.videolan.vlc.util.Settings @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi -class NetworkProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>, url: String? = null, showHiddenFiles: Boolean): BrowserProvider(context, dataset, url, showHiddenFiles), Observer<List<AMediaWrapper>> { +class NetworkProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>, url: String? = null, showHiddenFiles: Boolean): BrowserProvider(context, dataset, url, showHiddenFiles), Observer<List<AbstractMediaWrapper>> { private val favorites = if (url == null && !Settings.showTvUi) BrowserFavRepository.getInstance(context).networkFavorites else null @@ -83,7 +83,7 @@ class NetworkProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>, super.release() } - override fun onChanged(favs: List<AMediaWrapper>?) { + override fun onChanged(favs: List<AbstractMediaWrapper>?) { val data = dataset.value.toMutableList() data.listIterator().run { while (hasNext()) { @@ -94,7 +94,7 @@ class NetworkProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>, dataset.value = data.apply { getFavoritesList(favs)?.let { addAll(0, it) } } } - private fun getFavoritesList(favs: List<AMediaWrapper>?): MutableList<MediaLibraryItem>? { + private fun getFavoritesList(favs: List<AbstractMediaWrapper>?): MutableList<MediaLibraryItem>? { if (favs?.isNotEmpty() == true) { val list = mutableListOf<MediaLibraryItem>() list.add(0, DummyItem(context.getString(R.string.network_favorites))) diff --git a/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt b/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt index 49215ce482..9814aaa5d1 100644 --- a/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt @@ -27,7 +27,7 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.filter import kotlinx.coroutines.channels.mapTo import org.videolan.libvlc.Media -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.Storage import org.videolan.vlc.R @@ -65,7 +65,7 @@ class StorageProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>, override fun addMedia(media: MediaLibraryItem) { if (media.itemType == MediaLibraryItem.TYPE_MEDIA) { - if ((media as AMediaWrapper).type == AMediaWrapper.TYPE_DIR) super.addMedia(Storage(media.uri)) + if ((media as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_DIR) super.addMedia(Storage(media.uri)) return } else if (media.itemType != MediaLibraryItem.TYPE_STORAGE) return super.addMedia(media) diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/AlbumsProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/AlbumsProvider.kt index 7f7da753f8..f13b67cebe 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/AlbumsProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/AlbumsProvider.kt @@ -22,53 +22,53 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.AArtist -import org.videolan.medialibrary.interfaces.media.AGenre +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractArtist +import org.videolan.medialibrary.interfaces.media.AbstractGenre import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.util.Settings import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class AlbumsProvider(val parent : MediaLibraryItem?, context: Context, scope: SortableModel) : MedialibraryProvider<AAlbum>(context, scope) { +class AlbumsProvider(val parent : MediaLibraryItem?, context: Context, scope: SortableModel) : MedialibraryProvider<AbstractAlbum>(context, scope) { override val sortKey = "${super.sortKey}_${parent?.javaClass?.simpleName}" override fun canSortByDuration() = true override fun canSortByReleaseDate() = true init { - sort = Settings.getInstance(context).getInt(sortKey, if (parent is AArtist) AMedialibrary.SORT_RELEASEDATE else AMedialibrary.SORT_DEFAULT) + sort = Settings.getInstance(context).getInt(sortKey, if (parent is AbstractArtist) AbstractMedialibrary.SORT_RELEASEDATE else AbstractMedialibrary.SORT_DEFAULT) desc = Settings.getInstance(context).getBoolean("${sortKey}_desc", false) } - override fun getAll() : Array<AAlbum> = when (parent) { - is AArtist -> parent.getAlbums(sort, scope.desc) - is AGenre -> parent.getAlbums(sort, scope.desc) + override fun getAll() : Array<AbstractAlbum> = when (parent) { + is AbstractArtist -> parent.getAlbums(sort, scope.desc) + is AbstractGenre -> parent.getAlbums(sort, scope.desc) else -> medialibrary.getAlbums(sort, scope.desc) } - override fun getPage(loadSize: Int, startposition: Int) : Array<AAlbum> { + override fun getPage(loadSize: Int, startposition: Int) : Array<AbstractAlbum> { val list = if (scope.filterQuery == null) when(parent) { - is AArtist -> parent.getPagedAlbums(sort, scope.desc, loadSize, startposition) - is AGenre -> parent.getPagedAlbums(sort, scope.desc, loadSize, startposition) + is AbstractArtist -> parent.getPagedAlbums(sort, scope.desc, loadSize, startposition) + is AbstractGenre -> parent.getPagedAlbums(sort, scope.desc, loadSize, startposition) else -> medialibrary.getPagedAlbums(sort, scope.desc, loadSize, startposition) } else when(parent) { - is AArtist -> parent.searchAlbums(scope.filterQuery, sort, scope.desc, loadSize, startposition) - is AGenre -> parent.searchAlbums(scope.filterQuery, sort, scope.desc, loadSize, startposition) + is AbstractArtist -> parent.searchAlbums(scope.filterQuery, sort, scope.desc, loadSize, startposition) + is AbstractGenre -> parent.searchAlbums(scope.filterQuery, sort, scope.desc, loadSize, startposition) else -> medialibrary.searchAlbum(scope.filterQuery, sort, scope.desc, loadSize, startposition) } return list.also { completeHeaders(it, startposition) } } override fun getTotalCount() = if (scope.filterQuery == null) when(parent) { - is AArtist -> parent.albumsCount - is AGenre -> parent.albumsCount + is AbstractArtist -> parent.albumsCount + is AbstractGenre -> parent.albumsCount else -> medialibrary.albumsCount } else when (parent) { - is AArtist -> parent.searchAlbumsCount(scope.filterQuery) - is AGenre -> parent.searchAlbumsCount(scope.filterQuery) + is AbstractArtist -> parent.searchAlbumsCount(scope.filterQuery) + is AbstractGenre -> parent.searchAlbumsCount(scope.filterQuery) else -> medialibrary.getAlbumsCount(scope.filterQuery) } } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/ArtistsProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/ArtistsProvider.kt index 8d512e3ec2..630ab33f6d 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/ArtistsProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/ArtistsProvider.kt @@ -22,16 +22,16 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AArtist +import org.videolan.medialibrary.interfaces.media.AbstractArtist import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class ArtistsProvider(context: Context, scope: SortableModel, var showAll: Boolean) : MedialibraryProvider<AArtist>(context, scope) { +class ArtistsProvider(context: Context, scope: SortableModel, var showAll: Boolean) : MedialibraryProvider<AbstractArtist>(context, scope) { - override fun getAll() : Array<AArtist> = medialibrary.getArtists(showAll, sort, scope.desc) + override fun getAll() : Array<AbstractArtist> = medialibrary.getArtists(showAll, sort, scope.desc) - override fun getPage(loadSize: Int, startposition: Int): Array<AArtist> { + override fun getPage(loadSize: Int, startposition: Int): Array<AbstractArtist> { val list = if (scope.filterQuery == null) medialibrary.getPagedArtists(showAll, sort, scope.desc, loadSize, startposition) else medialibrary.searchArtist(scope.filterQuery, sort, scope.desc, loadSize, startposition) return list.also { completeHeaders(it, startposition) } diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/FoldersProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/FoldersProvider.kt index da4318b4b8..187b2eb345 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/FoldersProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/FoldersProvider.kt @@ -22,16 +22,16 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AFolder +import org.videolan.medialibrary.interfaces.media.AbstractFolder import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class FoldersProvider(context: Context, scope: SortableModel, val type: Int) : MedialibraryProvider<AFolder>(context, scope) { - override fun getAll() : Array<AFolder> = medialibrary.getFolders(type, sort, scope.desc, getTotalCount(), 0) +class FoldersProvider(context: Context, scope: SortableModel, val type: Int) : MedialibraryProvider<AbstractFolder>(context, scope) { + override fun getAll() : Array<AbstractFolder> = medialibrary.getFolders(type, sort, scope.desc, getTotalCount(), 0) override fun getTotalCount() = medialibrary.getFoldersCount(type) - override fun getPage(loadSize: Int, startposition: Int) : Array<AFolder> = medialibrary.getFolders(type, sort, scope.desc, loadSize, startposition).also { completeHeaders(it, startposition) } + override fun getPage(loadSize: Int, startposition: Int) : Array<AbstractFolder> = medialibrary.getFolders(type, sort, scope.desc, loadSize, startposition).also { completeHeaders(it, startposition) } } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/GenresProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/GenresProvider.kt index 6f783c8b64..6becc155fd 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/GenresProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/GenresProvider.kt @@ -22,16 +22,16 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AGenre +import org.videolan.medialibrary.interfaces.media.AbstractGenre import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class GenresProvider(context: Context, scope: SortableModel) : MedialibraryProvider<AGenre>(context, scope) { +class GenresProvider(context: Context, scope: SortableModel) : MedialibraryProvider<AbstractGenre>(context, scope) { - override fun getAll() : Array<AGenre> = medialibrary.getGenres(sort, scope.desc) + override fun getAll() : Array<AbstractGenre> = medialibrary.getGenres(sort, scope.desc) - override fun getPage(loadSize: Int, startposition: Int) : Array<AGenre> { + override fun getPage(loadSize: Int, startposition: Int) : Array<AbstractGenre> { val list = if (scope.filterQuery == null) medialibrary.getPagedGenres(sort, scope.desc, loadSize, startposition) else medialibrary.searchGenre(scope.filterQuery, sort, scope.desc, loadSize, startposition) return list.also { completeHeaders(it, startposition) } diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/MedialibraryProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/MedialibraryProvider.kt index a36f3b3f8d..76e349157b 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/MedialibraryProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/MedialibraryProvider.kt @@ -29,7 +29,7 @@ import androidx.paging.toLiveData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.providers.HeaderProvider import org.videolan.vlc.providers.HeadersIndex @@ -37,13 +37,13 @@ import org.videolan.vlc.util.* import org.videolan.vlc.viewmodels.SortableModel abstract class MedialibraryProvider<T : MediaLibraryItem>(val context: Context, val scope: SortableModel) : HeaderProvider() { - protected val medialibrary = AMedialibrary.getInstance() + protected val medialibrary = AbstractMedialibrary.getInstance() private lateinit var dataSource : DataSource<Int, T> val loading = MutableLiveData<Boolean>().apply { value = false } @Volatile private var isRefreshing = false protected open val sortKey : String = this.javaClass.simpleName - var sort = AMedialibrary.SORT_DEFAULT + var sort = AbstractMedialibrary.SORT_DEFAULT var desc = false private val pagingConfig = Config( @@ -74,7 +74,7 @@ abstract class MedialibraryProvider<T : MediaLibraryItem>(val context: Context, open fun sort(sort: Int) { if (canSortBy(sort)) { desc = when (this.sort) { - AMedialibrary.SORT_DEFAULT -> sort == AMedialibrary.SORT_ALPHA + AbstractMedialibrary.SORT_DEFAULT -> sort == AbstractMedialibrary.SORT_ALPHA sort -> !desc else -> false } diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/PlaylistsProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/PlaylistsProvider.kt index 1046243036..a26a81f179 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/PlaylistsProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/PlaylistsProvider.kt @@ -22,16 +22,16 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class PlaylistsProvider(context: Context, scope: SortableModel) : MedialibraryProvider<APlaylist>(context, scope) { +class PlaylistsProvider(context: Context, scope: SortableModel) : MedialibraryProvider<AbstractPlaylist>(context, scope) { - override fun getAll() : Array<APlaylist> = medialibrary.getPlaylists(sort, scope.desc) + override fun getAll() : Array<AbstractPlaylist> = medialibrary.getPlaylists(sort, scope.desc) - override fun getPage(loadSize: Int, startposition: Int) : Array<APlaylist> { + override fun getPage(loadSize: Int, startposition: Int) : Array<AbstractPlaylist> { val list = if (scope.filterQuery == null) medialibrary.getPagedPlaylists(sort, scope.desc, loadSize, startposition) else medialibrary.searchPlaylist(scope.filterQuery, sort, scope.desc, loadSize, startposition) return list.also { completeHeaders(it, startposition) } diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/TracksProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/TracksProvider.kt index 6062e5bc4b..0afe631ec7 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/TracksProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/TracksProvider.kt @@ -22,7 +22,7 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.interfaces.media.* import org.videolan.medialibrary.media.* import org.videolan.vlc.util.Settings @@ -30,7 +30,7 @@ import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class TracksProvider(val parent : MediaLibraryItem?, context: Context, scope: SortableModel) : MedialibraryProvider<AMediaWrapper>(context, scope) { +class TracksProvider(val parent : MediaLibraryItem?, context: Context, scope: SortableModel) : MedialibraryProvider<AbstractMediaWrapper>(context, scope) { override val sortKey = "${super.sortKey}_${parent?.javaClass?.simpleName}" override fun canSortByDuration() = true @@ -38,45 +38,45 @@ class TracksProvider(val parent : MediaLibraryItem?, context: Context, scope: So override fun canSortByLastModified() = true init { - sort = Settings.getInstance(context).getInt(sortKey, AMedialibrary.SORT_DEFAULT) - desc = Settings.getInstance(context).getBoolean("${sortKey}_desc", parent is AArtist) - if (sort == AMedialibrary.SORT_DEFAULT) sort = when (parent) { - is AArtist -> AMedialibrary.SORT_ALBUM - is AAlbum -> AMedialibrary.SORT_DEFAULT - else -> AMedialibrary.SORT_ALPHA + sort = Settings.getInstance(context).getInt(sortKey, AbstractMedialibrary.SORT_DEFAULT) + desc = Settings.getInstance(context).getBoolean("${sortKey}_desc", parent is AbstractArtist) + if (sort == AbstractMedialibrary.SORT_DEFAULT) sort = when (parent) { + is AbstractArtist -> AbstractMedialibrary.SORT_ALBUM + is AbstractAlbum -> AbstractMedialibrary.SORT_DEFAULT + else -> AbstractMedialibrary.SORT_ALPHA } } - override fun getAll(): Array<AMediaWrapper> = parent?.tracks ?: medialibrary.getAudio(sort, scope.desc) + override fun getAll(): Array<AbstractMediaWrapper> = parent?.tracks ?: medialibrary.getAudio(sort, scope.desc) - override fun getPage(loadSize: Int, startposition: Int) : Array<AMediaWrapper> { + override fun getPage(loadSize: Int, startposition: Int) : Array<AbstractMediaWrapper> { val list = if (scope.filterQuery == null) when(parent) { - is AArtist -> parent.getPagedTracks(sort, scope.desc, loadSize, startposition) - is AAlbum -> parent.getPagedTracks(sort, scope.desc, loadSize, startposition) - is AGenre -> parent.getPagedTracks(sort, scope.desc, loadSize, startposition) - is APlaylist -> parent.getPagedTracks(loadSize, startposition) + is AbstractArtist -> parent.getPagedTracks(sort, scope.desc, loadSize, startposition) + is AbstractAlbum -> parent.getPagedTracks(sort, scope.desc, loadSize, startposition) + is AbstractGenre -> parent.getPagedTracks(sort, scope.desc, loadSize, startposition) + is AbstractPlaylist -> parent.getPagedTracks(loadSize, startposition) else -> medialibrary.getPagedAudio(sort, scope.desc, loadSize, startposition) } else when(parent) { - is AArtist -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) - is AAlbum -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) - is AGenre -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) - is APlaylist -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) + is AbstractArtist -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) + is AbstractAlbum -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) + is AbstractGenre -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) + is AbstractPlaylist -> parent.searchTracks(scope.filterQuery, sort, scope.desc, loadSize, startposition) else -> medialibrary.searchAudio(scope.filterQuery, sort, scope.desc, loadSize, startposition) } return list.also { completeHeaders(it, startposition) } } override fun getTotalCount() = if (scope.filterQuery == null) when (parent) { - is AAlbum -> parent.realTracksCount - is APlaylist -> parent.realTracksCount - is AArtist, - is AGenre -> parent.tracksCount + is AbstractAlbum -> parent.realTracksCount + is AbstractPlaylist -> parent.realTracksCount + is AbstractArtist, + is AbstractGenre -> parent.tracksCount else -> medialibrary.audioCount } else when(parent) { - is AArtist -> parent.searchTracksCount(scope.filterQuery) - is AAlbum -> parent.searchTracksCount(scope.filterQuery) - is AGenre -> parent.searchTracksCount(scope.filterQuery) - is APlaylist -> parent.searchTracksCount(scope.filterQuery) + is AbstractArtist -> parent.searchTracksCount(scope.filterQuery) + is AbstractAlbum -> parent.searchTracksCount(scope.filterQuery) + is AbstractGenre -> parent.searchTracksCount(scope.filterQuery) + is AbstractPlaylist -> parent.searchTracksCount(scope.filterQuery) else ->medialibrary.getAudioCount(scope.filterQuery) } } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/providers/medialibrary/VideosProvider.kt b/vlc-android/src/org/videolan/vlc/providers/medialibrary/VideosProvider.kt index 878ed0ffce..0f92690198 100644 --- a/vlc-android/src/org/videolan/vlc/providers/medialibrary/VideosProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/medialibrary/VideosProvider.kt @@ -22,40 +22,40 @@ package org.videolan.vlc.providers.medialibrary import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AFolder -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractFolder +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.media.getAll import org.videolan.vlc.viewmodels.SortableModel @ExperimentalCoroutinesApi -class VideosProvider(val folder : AFolder?, context: Context, scope: SortableModel) : MedialibraryProvider<AMediaWrapper>(context, scope){ +class VideosProvider(val folder : AbstractFolder?, context: Context, scope: SortableModel) : MedialibraryProvider<AbstractMediaWrapper>(context, scope){ override fun canSortByFileNameName() = true override fun canSortByDuration() = true override fun canSortByLastModified() = folder == null override fun getTotalCount() = if (scope.filterQuery == null) when { - folder !== null -> folder.mediaCount(AFolder.TYPE_FOLDER_VIDEO) + folder !== null -> folder.mediaCount(AbstractFolder.TYPE_FOLDER_VIDEO) else -> medialibrary.videoCount } else when { - folder !== null -> folder.searchTracksCount(scope.filterQuery, AFolder.TYPE_FOLDER_VIDEO) + folder !== null -> folder.searchTracksCount(scope.filterQuery, AbstractFolder.TYPE_FOLDER_VIDEO) else -> medialibrary.getVideoCount(scope.filterQuery) } - override fun getPage(loadSize: Int, startposition: Int): Array<AMediaWrapper> { + override fun getPage(loadSize: Int, startposition: Int): Array<AbstractMediaWrapper> { val list = if (scope.filterQuery == null) when { - folder !== null -> folder.media(AFolder.TYPE_FOLDER_VIDEO, sort, scope.desc, loadSize, startposition) + folder !== null -> folder.media(AbstractFolder.TYPE_FOLDER_VIDEO, sort, scope.desc, loadSize, startposition) else -> medialibrary.getPagedVideos(sort, scope.desc, loadSize, startposition) } else when { - folder !== null -> folder.searchTracks(scope.filterQuery, AFolder.TYPE_FOLDER_VIDEO, sort, scope.desc, loadSize, startposition) + folder !== null -> folder.searchTracks(scope.filterQuery, AbstractFolder.TYPE_FOLDER_VIDEO, sort, scope.desc, loadSize, startposition) else -> medialibrary.searchVideo(scope.filterQuery, sort, scope.desc, loadSize, startposition) } return list.also { completeHeaders(it, startposition) } } - override fun getAll(): Array<AMediaWrapper> = when { - folder !== null -> folder.getAll(AFolder.TYPE_FOLDER_VIDEO, sort, scope.desc).toTypedArray() + override fun getAll(): Array<AbstractMediaWrapper> = when { + folder !== null -> folder.getAll(AbstractFolder.TYPE_FOLDER_VIDEO, sort, scope.desc).toTypedArray() else -> medialibrary.videos } } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt b/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt index e41094a2a6..07e0254ca9 100644 --- a/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt @@ -26,7 +26,7 @@ import android.net.Uri import androidx.annotation.WorkerThread import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.IOScopedObject import org.videolan.tools.SingletonHolder import org.videolan.vlc.ExternalMonitor @@ -56,7 +56,7 @@ class BrowserFavRepository(private val browserFavDao: BrowserFavDao) : IOScopedO } val networkFavorites by lazy { - MediatorLiveData<List<AMediaWrapper>>().apply { + MediatorLiveData<List<AbstractMediaWrapper>>().apply { addSource(networkFavs) { value = convertFavorites(it).filterNetworkFavs() } addSource(ExternalMonitor.connected) { launch(Dispatchers.Main.immediate) { @@ -72,13 +72,13 @@ class BrowserFavRepository(private val browserFavDao: BrowserFavDao) : IOScopedO fun deleteBrowserFav(uri: Uri) = launch { browserFavDao.delete(uri) } - private fun List<AMediaWrapper>.filterNetworkFavs() : List<AMediaWrapper> { + private fun List<AbstractMediaWrapper>.filterNetworkFavs() : List<AbstractMediaWrapper> { return when { isEmpty() -> this !ExternalMonitor.isConnected -> emptyList() !ExternalMonitor.allowLan() -> { val schemes = Arrays.asList("ftp", "sftp", "ftps", "http", "https") - mutableListOf<AMediaWrapper>().apply { this@filterNetworkFavs.filterTo(this) { schemes.contains(it.uri.scheme) } } + mutableListOf<AbstractMediaWrapper>().apply { this@filterNetworkFavs.filterTo(this) { schemes.contains(it.uri.scheme) } } } else -> this } diff --git a/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt b/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt index ed2464031a..9b2a8885f2 100644 --- a/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt @@ -7,7 +7,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.IOScopedObject import org.videolan.tools.SingletonHolder import org.videolan.vlc.R @@ -50,9 +50,9 @@ class DirectoryRepository (private val customDirectoryDao: CustomDirectoryDao) : companion object : SingletonHolder<DirectoryRepository, Context>({ DirectoryRepository(MediaDatabase.getInstance(it).customDirectoryDao()) }) } -fun createDirectory(it: String, context: Context): AMediaWrapper { - val directory = MLServiceLocator.getAMediaWrapper(AndroidUtil.PathToUri(it)) - directory.type = AMediaWrapper.TYPE_DIR +fun createDirectory(it: String, context: Context): AbstractMediaWrapper { + val directory = MLServiceLocator.getAbstractMediaWrapper(AndroidUtil.PathToUri(it)) + directory.type = AbstractMediaWrapper.TYPE_DIR if (TextUtils.equals(EXTERNAL_PUBLIC_DIRECTORY, it)) { directory.setDisplayTitle(context.resources.getString(R.string.internal_memory)) } else { diff --git a/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt b/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt index 581f76981e..0b2e48cf8c 100644 --- a/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.videolan.libvlc.Media -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.tools.IOScopedObject import org.videolan.tools.SingletonHolder import org.videolan.vlc.database.MediaDatabase @@ -44,7 +44,7 @@ class SlaveRepository(private val slaveDao:SlaveDao) : IOScopedObject() { } } - fun saveSlaves(mw: AMediaWrapper): List<Job>? { + fun saveSlaves(mw: AbstractMediaWrapper): List<Job>? { return mw.slaves?.let{ it.map { saveSlave(mw.location, it.type, it.priority, it.uri) } } diff --git a/vlc-android/src/org/videolan/vlc/util/Browserutils.kt b/vlc-android/src/org/videolan/vlc/util/Browserutils.kt index c604605d6e..28d9234729 100644 --- a/vlc-android/src/org/videolan/vlc/util/Browserutils.kt +++ b/vlc-android/src/org/videolan/vlc/util/Browserutils.kt @@ -22,7 +22,7 @@ package org.videolan.vlc.util import android.net.Uri import org.videolan.medialibrary.MLServiceLocator -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.database.models.BrowserFav @@ -33,9 +33,9 @@ fun isSchemeSupported(scheme: String?) = when(scheme) { } fun convertFavorites(browserFavs: List<BrowserFav>?) = browserFavs?.map { (uri, _, title, iconUrl) -> - MLServiceLocator.getAMediaWrapper(uri).apply { + MLServiceLocator.getAbstractMediaWrapper(uri).apply { setDisplayTitle(Uri.decode(title)) - type = AMediaWrapper.TYPE_DIR + type = AbstractMediaWrapper.TYPE_DIR iconUrl?.let { artworkURL = Uri.decode(it) } setStateFlags(MediaLibraryItem.FLAG_FAVORITE) } diff --git a/vlc-android/src/org/videolan/vlc/util/FileUtils.kt b/vlc-android/src/org/videolan/vlc/util/FileUtils.kt index 7483d799c4..817fd15f52 100644 --- a/vlc-android/src/org/videolan/vlc/util/FileUtils.kt +++ b/vlc-android/src/org/videolan/vlc/util/FileUtils.kt @@ -40,7 +40,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.withContext import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.BuildConfig import org.videolan.vlc.VLCApplication import org.videolan.vlc.media.MediaUtils @@ -287,7 +287,7 @@ object FileUtils { }) } - fun canSave(mw: AMediaWrapper?): Boolean { + fun canSave(mw: AbstractMediaWrapper?): Boolean { if (mw == null || mw.uri == null) return false val scheme = mw.uri.scheme return (TextUtils.equals(scheme, "file") || TextUtils.equals(scheme, "smb") diff --git a/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt b/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt index 007a8845f3..1f7ed5d7b7 100644 --- a/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt @@ -3,7 +3,7 @@ package org.videolan.vlc.util import androidx.lifecycle.MutableLiveData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.VLCApplication import org.videolan.vlc.media.MediaUtils @@ -45,11 +45,11 @@ open class FilterDelegate<T : MediaLibraryItem>(protected val dataset: MutableLi } } -class PlaylistFilterDelegate(dataset: MutableLiveData<out List<AMediaWrapper>>) : FilterDelegate<AMediaWrapper>(dataset) { +class PlaylistFilterDelegate(dataset: MutableLiveData<out List<AbstractMediaWrapper>>) : FilterDelegate<AbstractMediaWrapper>(dataset) { - override suspend fun filteringJob(charSequence: CharSequence?): MutableList<AMediaWrapper>? { + override suspend fun filteringJob(charSequence: CharSequence?): MutableList<AbstractMediaWrapper>? { if (charSequence !== null) initSource()?.let { list -> - return withContext(Dispatchers.Default) { mutableListOf<AMediaWrapper>().apply { + return withContext(Dispatchers.Default) { mutableListOf<AbstractMediaWrapper>().apply { val queryStrings = charSequence.trim().toString().split(" ").asSequence().filter { it.isNotEmpty() }.map { it.toLowerCase() }.toList() for (media in list) { val title = MediaUtils.getMediaTitle(media).toLowerCase() diff --git a/vlc-android/src/org/videolan/vlc/util/Kextensions.kt b/vlc-android/src/org/videolan/vlc/util/Kextensions.kt index 0ee3960d2e..32ba8a9e8f 100644 --- a/vlc-android/src/org/videolan/vlc/util/Kextensions.kt +++ b/vlc-android/src/org/videolan/vlc/util/Kextensions.kt @@ -21,8 +21,8 @@ import androidx.lifecycle.* import kotlinx.coroutines.* import org.videolan.libvlc.Media import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.VLCApplication import org.videolan.vlc.startMedialibrary @@ -72,21 +72,21 @@ suspend fun retry ( } fun Media?.canExpand() = this != null && (type == Media.Type.Directory || type == Media.Type.Playlist) -fun AMediaWrapper?.isMedia() = this != null && (type == AMediaWrapper.TYPE_AUDIO || type == AMediaWrapper.TYPE_VIDEO) -fun AMediaWrapper?.isBrowserMedia() = this != null && (isMedia() || type == AMediaWrapper.TYPE_DIR || type == AMediaWrapper.TYPE_PLAYLIST) +fun AbstractMediaWrapper?.isMedia() = this != null && (type == AbstractMediaWrapper.TYPE_AUDIO || type == AbstractMediaWrapper.TYPE_VIDEO) +fun AbstractMediaWrapper?.isBrowserMedia() = this != null && (isMedia() || type == AbstractMediaWrapper.TYPE_DIR || type == AbstractMediaWrapper.TYPE_PLAYLIST) fun Context.getAppSystemService(name: String) = applicationContext.getSystemService(name)!! fun Long.random() = (Random().nextFloat() * this).toLong() @ExperimentalCoroutinesApi -suspend inline fun <reified T> Context.getFromMl(crossinline block: AMedialibrary.() -> T) = withContext(Dispatchers.IO) { - val ml = AMedialibrary.getInstance() +suspend inline fun <reified T> Context.getFromMl(crossinline block: AbstractMedialibrary.() -> T) = withContext(Dispatchers.IO) { + val ml = AbstractMedialibrary.getInstance() if (ml.isStarted) block.invoke(ml) else { val scan = Settings.getInstance(this@getFromMl).getInt(KEY_MEDIALIBRARY_SCAN, ML_SCAN_ON) == ML_SCAN_ON suspendCancellableCoroutine { continuation -> - val listener = object : AMedialibrary.OnMedialibraryReadyListener { + val listener = object : AbstractMedialibrary.OnMedialibraryReadyListener { override fun onMedialibraryReady() { val cb = this if (!continuation.isCompleted) launch(start = CoroutineStart.UNDISPATCHED) { @@ -105,14 +105,14 @@ suspend inline fun <reified T> Context.getFromMl(crossinline block: AMedialibrar } -fun List<AMediaWrapper>.getWithMLMeta() : List<AMediaWrapper> { - if (this is MutableList<AMediaWrapper>) return updateWithMLMeta() - val list = mutableListOf<AMediaWrapper>() +fun List<AbstractMediaWrapper>.getWithMLMeta() : List<AbstractMediaWrapper> { + if (this is MutableList<AbstractMediaWrapper>) return updateWithMLMeta() + val list = mutableListOf<AbstractMediaWrapper>() val ml = VLCApplication.mlInstance for (media in this) { if (media.id == 0L) { val mw = ml.findMedia(media) - if (mw.id != 0L) if (mw.type == AMediaWrapper.TYPE_ALL) mw.type = media.type + if (mw.id != 0L) if (mw.type == AbstractMediaWrapper.TYPE_ALL) mw.type = media.type list.add(mw) } } @@ -120,7 +120,7 @@ fun List<AMediaWrapper>.getWithMLMeta() : List<AMediaWrapper> { } -fun MutableList<AMediaWrapper>.updateWithMLMeta() : MutableList<AMediaWrapper> { +fun MutableList<AbstractMediaWrapper>.updateWithMLMeta() : MutableList<AbstractMediaWrapper> { val iter = listIterator() val ml = VLCApplication.mlInstance try { @@ -129,7 +129,7 @@ fun MutableList<AMediaWrapper>.updateWithMLMeta() : MutableList<AMediaWrapper> { if (media.id == 0L) { val mw = ml.findMedia(media) if (mw!!.id != 0L) { - if (mw.type == AMediaWrapper.TYPE_ALL) mw.type = media.getType() + if (mw.type == AbstractMediaWrapper.TYPE_ALL) mw.type = media.getType() iter.set(mw) } } diff --git a/vlc-android/src/org/videolan/vlc/util/ModelsHelper.kt b/vlc-android/src/org/videolan/vlc/util/ModelsHelper.kt index a82e605795..c0bc784b2c 100644 --- a/vlc-android/src/org/videolan/vlc/util/ModelsHelper.kt +++ b/vlc-android/src/org/videolan/vlc/util/ModelsHelper.kt @@ -7,10 +7,10 @@ import kotlinx.coroutines.withContext import org.videolan.libvlc.Media import org.videolan.libvlc.MediaPlayer -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.AMediaWrapper -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.medialibrary.media.DummyItem import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.PlaybackService @@ -38,9 +38,9 @@ object ModelsHelper { internal suspend fun splitList(sort: Int, items: Collection<MediaLibraryItem>) = withContext(Dispatchers.IO) { val array = mutableMapOf<String, MutableList<MediaLibraryItem>>() when (sort) { - AMedialibrary.SORT_DEFAULT, - AMedialibrary.SORT_FILENAME, - AMedialibrary.SORT_ALPHA -> { + AbstractMedialibrary.SORT_DEFAULT, + AbstractMedialibrary.SORT_FILENAME, + AbstractMedialibrary.SORT_ALPHA -> { var currentLetter: String? = null for (item in items) { if (item.itemType == MediaLibraryItem.TYPE_DUMMY) continue @@ -53,7 +53,7 @@ object ModelsHelper { array[letter]?.add(item) } } - AMedialibrary.SORT_DURATION -> { + AbstractMedialibrary.SORT_DURATION -> { var currentLengthCategory: String? = null for (item in items) { if (item.itemType == MediaLibraryItem.TYPE_DUMMY) continue @@ -66,7 +66,7 @@ object ModelsHelper { array[currentLengthCategory]?.add(item) } } - AMedialibrary.SORT_RELEASEDATE -> { + AbstractMedialibrary.SORT_RELEASEDATE -> { var currentYear: String? = null for (item in items) { if (item.itemType == MediaLibraryItem.TYPE_DUMMY) continue @@ -78,11 +78,11 @@ object ModelsHelper { array[currentYear]?.add(item) } } - AMedialibrary.SORT_ARTIST -> { + AbstractMedialibrary.SORT_ARTIST -> { var currentArtist: String? = null for (item in items) { if (item.itemType == MediaLibraryItem.TYPE_DUMMY) continue - val artist = (item as AMediaWrapper).artist ?: "" + val artist = (item as AbstractMediaWrapper).artist ?: "" if (currentArtist === null || !TextUtils.equals(currentArtist, artist)) { currentArtist = artist if (array[currentArtist].isNullOrEmpty()) array[currentArtist] = mutableListOf() @@ -90,11 +90,11 @@ object ModelsHelper { array[currentArtist]?.add(item) } } - AMedialibrary.SORT_ALBUM -> { + AbstractMedialibrary.SORT_ALBUM -> { var currentAlbum: String? = null for (item in items) { if (item.itemType == MediaLibraryItem.TYPE_DUMMY) continue - val album = (item as AMediaWrapper).album ?: "" + val album = (item as AbstractMediaWrapper).album ?: "" if (currentAlbum === null || !TextUtils.equals(currentAlbum, album)) { currentAlbum = album if (array[currentAlbum].isNullOrEmpty()) array[currentAlbum] = mutableListOf() @@ -103,7 +103,7 @@ object ModelsHelper { } } } - if (sort == AMedialibrary.SORT_DEFAULT || sort == AMedialibrary.SORT_FILENAME || sort == AMedialibrary.SORT_ALPHA) + if (sort == AbstractMedialibrary.SORT_DEFAULT || sort == AbstractMedialibrary.SORT_FILENAME || sort == AbstractMedialibrary.SORT_ALPHA) array.toSortedMap() else array } @@ -113,9 +113,9 @@ object ModelsHelper { } fun getHeader(context: Context?, sort: Int, item: MediaLibraryItem, aboveItem: MediaLibraryItem?) = if (context !== null) when (sort) { - AMedialibrary.SORT_DEFAULT, - AMedialibrary.SORT_FILENAME, - AMedialibrary.SORT_ALPHA -> { + AbstractMedialibrary.SORT_DEFAULT, + AbstractMedialibrary.SORT_FILENAME, + AbstractMedialibrary.SORT_ALPHA -> { val letter = if (item.title.isEmpty() || !Character.isLetter(item.title[0]) || ModelsHelper.isSpecialItem(item)) "#" else item.title.substring(0, 1).toUpperCase() if (aboveItem == null) letter else { @@ -123,7 +123,7 @@ object ModelsHelper { if (letter != previous) letter else null } } - AMedialibrary.SORT_DURATION -> { + AbstractMedialibrary.SORT_DURATION -> { val length = getLength(item) val lengthCategory = lengthToCategory(length) if (aboveItem == null) lengthCategory @@ -132,7 +132,7 @@ object ModelsHelper { if (lengthCategory != previous) lengthCategory else null } } - AMedialibrary.SORT_RELEASEDATE -> { + AbstractMedialibrary.SORT_RELEASEDATE -> { val year = getYear(item) if (aboveItem == null) year else { @@ -140,28 +140,28 @@ object ModelsHelper { if (year != previous) year else null } } - AMedialibrary.SORT_LASTMODIFICATIONDATE -> { - val timestamp = (item as AMediaWrapper).lastModified + AbstractMedialibrary.SORT_LASTMODIFICATIONDATE -> { + val timestamp = (item as AbstractMediaWrapper).lastModified val category = getTimeCategory(timestamp) if (aboveItem == null) getTimeCategoryString(context, category) else { - val prevCat = getTimeCategory((aboveItem as AMediaWrapper).lastModified) + val prevCat = getTimeCategory((aboveItem as AbstractMediaWrapper).lastModified) if (prevCat != category) getTimeCategoryString(context, category) else null } } - AMedialibrary.SORT_ARTIST -> { - val artist = (item as AMediaWrapper).artist ?: "" + AbstractMedialibrary.SORT_ARTIST -> { + val artist = (item as AbstractMediaWrapper).artist ?: "" if (aboveItem == null) artist else { - val previous = (aboveItem as AMediaWrapper).artist ?: "" + val previous = (aboveItem as AbstractMediaWrapper).artist ?: "" if (artist != previous) artist else null } } - AMedialibrary.SORT_ALBUM -> { - val album = (item as AMediaWrapper).album ?: "" + AbstractMedialibrary.SORT_ALBUM -> { + val album = (item as AbstractMediaWrapper).album ?: "" if (aboveItem == null) album else { - val previous = (aboveItem as AMediaWrapper).album ?: "" + val previous = (aboveItem as AbstractMediaWrapper).album ?: "" if (album != previous) album else null } } @@ -189,12 +189,12 @@ object ModelsHelper { private fun isSpecialItem(item: MediaLibraryItem) = item.itemType == MediaLibraryItem.TYPE_ARTIST && (item.id == 1L || item.id == 2L) || item.itemType == MediaLibraryItem.TYPE_ALBUM - && item.title == AAlbum.SpecialRes.UNKNOWN_ALBUM + && item.title == AbstractAlbum.SpecialRes.UNKNOWN_ALBUM private fun getLength(media: MediaLibraryItem): Int { return when { - media.itemType == MediaLibraryItem.TYPE_ALBUM -> (media as AAlbum).duration - media.itemType == MediaLibraryItem.TYPE_MEDIA -> (media as AMediaWrapper).length.toInt() + media.itemType == MediaLibraryItem.TYPE_ALBUM -> (media as AbstractAlbum).duration + media.itemType == MediaLibraryItem.TYPE_MEDIA -> (media as AbstractMediaWrapper).length.toInt() else -> 0 } } @@ -218,22 +218,22 @@ object ModelsHelper { private fun getYear(media: MediaLibraryItem): String { return when (media.itemType) { - MediaLibraryItem.TYPE_ALBUM -> if ((media as AAlbum).releaseYear == 0) "-" else media.releaseYear.toString() - MediaLibraryItem.TYPE_MEDIA -> if ((media as AMediaWrapper).date == null) "-" else media.date + MediaLibraryItem.TYPE_ALBUM -> if ((media as AbstractAlbum).releaseYear == 0) "-" else media.releaseYear.toString() + MediaLibraryItem.TYPE_MEDIA -> if ((media as AbstractMediaWrapper).date == null) "-" else media.date else -> "-" } } fun getTracksCount(media: MediaLibraryItem): Int { return when (media.itemType) { - MediaLibraryItem.TYPE_ALBUM -> (media as AAlbum).tracksCount - MediaLibraryItem.TYPE_PLAYLIST -> (media as APlaylist).tracksCount + MediaLibraryItem.TYPE_ALBUM -> (media as AbstractAlbum).tracksCount + MediaLibraryItem.TYPE_PLAYLIST -> (media as AbstractPlaylist).tracksCount else -> 0 } } } -object EmptyMLCallbacks : AMedialibrary.MediaCb, AMedialibrary.ArtistsCb, AMedialibrary.AlbumsCb, AMedialibrary.GenresCb, AMedialibrary.PlaylistsCb { +object EmptyMLCallbacks : AbstractMedialibrary.MediaCb, AbstractMedialibrary.ArtistsCb, AbstractMedialibrary.AlbumsCb, AbstractMedialibrary.GenresCb, AbstractMedialibrary.PlaylistsCb { override fun onMediaAdded() {} override fun onMediaModified() {} override fun onMediaDeleted() {} @@ -262,31 +262,31 @@ interface RefreshModel { } fun SortableModel.canSortBy(sort: Int) = when (sort) { - AMedialibrary.SORT_DEFAULT -> true - AMedialibrary.SORT_ALPHA -> canSortByName() - AMedialibrary.SORT_FILENAME -> canSortByFileNameName() - AMedialibrary.SORT_DURATION -> canSortByDuration() - AMedialibrary.SORT_INSERTIONDATE -> canSortByInsertionDate() - AMedialibrary.SORT_LASTMODIFICATIONDATE -> canSortByLastModified() - AMedialibrary.SORT_RELEASEDATE -> canSortByReleaseDate() - AMedialibrary.SORT_FILESIZE -> canSortByFileSize() - AMedialibrary.SORT_ARTIST -> canSortByArtist() - AMedialibrary.SORT_ALBUM -> canSortByAlbum() - AMedialibrary.SORT_PLAYCOUNT -> canSortByPlayCount() + AbstractMedialibrary.SORT_DEFAULT -> true + AbstractMedialibrary.SORT_ALPHA -> canSortByName() + AbstractMedialibrary.SORT_FILENAME -> canSortByFileNameName() + AbstractMedialibrary.SORT_DURATION -> canSortByDuration() + AbstractMedialibrary.SORT_INSERTIONDATE -> canSortByInsertionDate() + AbstractMedialibrary.SORT_LASTMODIFICATIONDATE -> canSortByLastModified() + AbstractMedialibrary.SORT_RELEASEDATE -> canSortByReleaseDate() + AbstractMedialibrary.SORT_FILESIZE -> canSortByFileSize() + AbstractMedialibrary.SORT_ARTIST -> canSortByArtist() + AbstractMedialibrary.SORT_ALBUM -> canSortByAlbum() + AbstractMedialibrary.SORT_PLAYCOUNT -> canSortByPlayCount() else -> false } fun MedialibraryProvider<*>.canSortBy(sort: Int) = when (sort) { - AMedialibrary.SORT_DEFAULT -> true - AMedialibrary.SORT_ALPHA -> canSortByName() - AMedialibrary.SORT_FILENAME -> canSortByFileNameName() - AMedialibrary.SORT_DURATION -> canSortByDuration() - AMedialibrary.SORT_INSERTIONDATE -> canSortByInsertionDate() - AMedialibrary.SORT_LASTMODIFICATIONDATE -> canSortByLastModified() - AMedialibrary.SORT_RELEASEDATE -> canSortByReleaseDate() - AMedialibrary.SORT_FILESIZE -> canSortByFileSize() - AMedialibrary.SORT_ARTIST -> canSortByArtist() - AMedialibrary.SORT_ALBUM -> canSortByAlbum() - AMedialibrary.SORT_PLAYCOUNT -> canSortByPlayCount() + AbstractMedialibrary.SORT_DEFAULT -> true + AbstractMedialibrary.SORT_ALPHA -> canSortByName() + AbstractMedialibrary.SORT_FILENAME -> canSortByFileNameName() + AbstractMedialibrary.SORT_DURATION -> canSortByDuration() + AbstractMedialibrary.SORT_INSERTIONDATE -> canSortByInsertionDate() + AbstractMedialibrary.SORT_LASTMODIFICATIONDATE -> canSortByLastModified() + AbstractMedialibrary.SORT_RELEASEDATE -> canSortByReleaseDate() + AbstractMedialibrary.SORT_FILESIZE -> canSortByFileSize() + AbstractMedialibrary.SORT_ARTIST -> canSortByArtist() + AbstractMedialibrary.SORT_ALBUM -> canSortByAlbum() + AbstractMedialibrary.SORT_PLAYCOUNT -> canSortByPlayCount() else -> false } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/util/ThumbnailsProvider.kt b/vlc-android/src/org/videolan/vlc/util/ThumbnailsProvider.kt index d88e749854..b8936c8ce1 100644 --- a/vlc-android/src/org/videolan/vlc/util/ThumbnailsProvider.kt +++ b/vlc-android/src/org/videolan/vlc/util/ThumbnailsProvider.kt @@ -13,10 +13,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.withContext -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.AMedialibrary.THUMBS_FOLDER_NAME -import org.videolan.medialibrary.interfaces.media.AFolder -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary.THUMBS_FOLDER_NAME +import org.videolan.medialibrary.interfaces.media.AbstractFolder +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.VLCApplication import org.videolan.vlc.gui.helpers.AudioUtil.readCoverBitmap @@ -41,22 +41,21 @@ object ThumbnailsProvider { private val lock = Any() @WorkerThread - fun getFolderThumbnail(folder: AFolder, width: Int): Bitmap? { - val media = listOf(*folder.media(AFolder.TYPE_FOLDER_VIDEO, AMedialibrary.SORT_DEFAULT, true, 4, 0)) + fun getFolderThumbnail(folder: AbstractFolder, width: Int): Bitmap? { + val media = listOf(*folder.media(AbstractFolder.TYPE_FOLDER_VIDEO, AbstractMedialibrary.SORT_DEFAULT, true, 4, 0)) return getComposedImage("folder:" + folder.title, media, width) } @WorkerThread - fun getMediaThumbnail(item: AMediaWrapper, width: Int): Bitmap? { - if (item.type == AMediaWrapper.TYPE_GROUP) return getComposedImage("group:" + item.title, (item as MediaGroup).all, width) - return if (item.type == AMediaWrapper.TYPE_VIDEO && TextUtils.isEmpty(item.artworkMrl)) + fun getMediaThumbnail(item: AbstractMediaWrapper, width: Int): Bitmap? { + return if (item.type == AbstractMediaWrapper.TYPE_VIDEO && TextUtils.isEmpty(item.artworkMrl)) getVideoThumbnail(item, width) else readCoverBitmap(Uri.decode(item.artworkMrl), width) } fun getMediaCacheKey(isMedia: Boolean, item: MediaLibraryItem): String? { - if (isMedia && (item as AMediaWrapper).type == AMediaWrapper.TYPE_VIDEO && TextUtils.isEmpty(item.getArtworkMrl())) { + if (isMedia && (item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_VIDEO && TextUtils.isEmpty(item.getArtworkMrl())) { if (appDir == null) appDir = VLCApplication.appContext.getExternalFilesDir(null) val hasCache = appDir != null && appDir!!.exists() if (hasCache && cacheDir == null) cacheDir = appDir!!.absolutePath + THUMBS_FOLDER_NAME @@ -66,7 +65,7 @@ object ThumbnailsProvider { } @WorkerThread - fun getVideoThumbnail(media: AMediaWrapper, width: Int): Bitmap? { + fun getVideoThumbnail(media: AbstractMediaWrapper, width: Int): Bitmap? { val filePath = media.uri.path ?: return null if (appDir == null) appDir = VLCApplication.appContext.getExternalFilesDir(null) val hasCache = appDir?.exists() == true @@ -86,12 +85,12 @@ object ThumbnailsProvider { media.artworkURL = thumbPath } } else if (media.id != 0L) { - AMedialibrary.getInstance().requestThumbnail(media.id) + AbstractMedialibrary.getInstance().requestThumbnail(media.id) } return bitmap } - suspend fun getPlaylistImage(key: String, mediaList: List<AMediaWrapper>, width: Int): Bitmap? { + suspend fun getPlaylistImage(key: String, mediaList: List<AbstractMediaWrapper>, width: Int): Bitmap? { var composedImage = BitmapCache.getBitmapFromMemCache(key) if (composedImage == null) { composedImage = composePlaylistImage(mediaList, width) @@ -105,7 +104,7 @@ object ThumbnailsProvider { * @param mediaList The track list of the playlist * @return a Bitmap object */ - private suspend fun composePlaylistImage(mediaList: List<AMediaWrapper>, width: Int): Bitmap? { + private suspend fun composePlaylistImage(mediaList: List<AbstractMediaWrapper>, width: Int): Bitmap? { if (mediaList.isEmpty()) { return null } @@ -117,7 +116,7 @@ object ThumbnailsProvider { return obtainBitmap(mediaList[0], width) } - val artworks = ArrayList<AMediaWrapper>() + val artworks = ArrayList<AbstractMediaWrapper>() for (mediaWrapper in mediaList) { val artworkAlreadyHere = artworks.any { it.artworkURL == mediaWrapper.artworkURL } @@ -169,15 +168,15 @@ object ThumbnailsProvider { suspend fun obtainBitmap(item: MediaLibraryItem, width: Int) = withContext(Dispatchers.IO) { when (item) { - is AMediaWrapper -> getMediaThumbnail(item, width) - is AFolder -> getFolderThumbnail(item, width) + is AbstractMediaWrapper -> getMediaThumbnail(item, width) + is AbstractFolder -> getFolderThumbnail(item, width) else -> readCoverBitmap(Uri.decode(item.artworkMrl), width) } } @WorkerThread - fun getComposedImage(key: String, mediaList: List<AMediaWrapper>, width: Int): Bitmap? { + fun getComposedImage(key: String, mediaList: List<AbstractMediaWrapper>, width: Int): Bitmap? { var composedImage = BitmapCache.getBitmapFromMemCache(key) if (composedImage == null) { composedImage = composeImage(mediaList, width) @@ -191,7 +190,7 @@ object ThumbnailsProvider { * @param mediaList The media list from which will extract thumbnails * @return a Bitmap object */ - private fun composeImage(mediaList: List<AMediaWrapper>, imageWidth: Int): Bitmap? { + private fun composeImage(mediaList: List<AbstractMediaWrapper>, imageWidth: Int): Bitmap? { val sourcesImages = arrayOfNulls<Bitmap>(min(MAX_IMAGES, mediaList.size)) var count = 0 var minWidth = Integer.MAX_VALUE diff --git a/vlc-android/src/org/videolan/vlc/util/TvChannels.kt b/vlc-android/src/org/videolan/vlc/util/TvChannels.kt index 9a4c3abb39..ac1bf01edf 100644 --- a/vlc-android/src/org/videolan/vlc/util/TvChannels.kt +++ b/vlc-android/src/org/videolan/vlc/util/TvChannels.kt @@ -31,7 +31,7 @@ import androidx.annotation.RequiresApi import androidx.tvprovider.media.tv.TvContractCompat import androidx.tvprovider.media.tv.WatchNextProgram import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.BuildConfig import org.videolan.vlc.PreviewVideoInputService import org.videolan.vlc.R @@ -91,7 +91,7 @@ fun Context.launchChannelUpdate() = AppScope.launch { updatePrograms(this@launchChannelUpdate, id) } -suspend fun setResumeProgram(context: Context, mw: AMediaWrapper) { +suspend fun setResumeProgram(context: Context, mw: AbstractMediaWrapper) { var cursor: Cursor? = null var isProgramPresent = false val mw = context.getFromMl { findMedia(mw) } @@ -133,7 +133,7 @@ suspend fun setResumeProgram(context: Context, mw: AMediaWrapper) { } -private suspend fun AMediaWrapper.artUri() : Uri { +private suspend fun AbstractMediaWrapper.artUri() : Uri { if (!isThumbnailGenerated) { withContext(Dispatchers.IO) { ThumbnailsProvider.getVideoThumbnail(this@artUri, 512) } } diff --git a/vlc-android/src/org/videolan/vlc/util/Util.kt b/vlc-android/src/org/videolan/vlc/util/Util.kt index 0e99e0cc99..b2435c236d 100644 --- a/vlc-android/src/org/videolan/vlc/util/Util.kt +++ b/vlc-android/src/org/videolan/vlc/util/Util.kt @@ -30,7 +30,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.Dialog import org.videolan.libvlc.util.AndroidUtil -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.R import org.videolan.vlc.VLCApplication import org.videolan.vlc.gui.helpers.hf.WriteExternalDelegate @@ -135,7 +135,7 @@ object Util { }) } - fun checkWritePermission(activity: FragmentActivity, media: AMediaWrapper, callback: Runnable): Boolean { + fun checkWritePermission(activity: FragmentActivity, media: AbstractMediaWrapper, callback: Runnable): Boolean { val uri = media.uri if ("file" != uri.scheme) return false if (uri.path!!.startsWith(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY)) { diff --git a/vlc-android/src/org/videolan/vlc/util/VLCOptions.kt b/vlc-android/src/org/videolan/vlc/util/VLCOptions.kt index 708c276231..316b12a007 100644 --- a/vlc-android/src/org/videolan/vlc/util/VLCOptions.kt +++ b/vlc-android/src/org/videolan/vlc/util/VLCOptions.kt @@ -32,7 +32,7 @@ import org.videolan.libvlc.MediaPlayer import org.videolan.libvlc.util.AndroidUtil import org.videolan.libvlc.util.HWDecoderUtil import org.videolan.libvlc.util.VLCUtil -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.PlaybackService import org.videolan.vlc.R import org.videolan.vlc.VLCApplication @@ -200,10 +200,10 @@ object VLCOptions { } fun setMediaOptions(media: Media, context: Context, flags: Int) { - val noHardwareAcceleration = flags and AMediaWrapper.MEDIA_NO_HWACCEL != 0 - val noVideo = flags and AMediaWrapper.MEDIA_VIDEO == 0 - val benchmark = flags and AMediaWrapper.MEDIA_BENCHMARK != 0 - val paused = flags and AMediaWrapper.MEDIA_PAUSED != 0 + val noHardwareAcceleration = flags and AbstractMediaWrapper.MEDIA_NO_HWACCEL != 0 + val noVideo = flags and AbstractMediaWrapper.MEDIA_VIDEO == 0 + val benchmark = flags and AbstractMediaWrapper.MEDIA_BENCHMARK != 0 + val paused = flags and AbstractMediaWrapper.MEDIA_PAUSED != 0 var hardwareAcceleration = HW_ACCELERATION_DISABLED val prefs = Settings.getInstance(context) diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/HistoryModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/HistoryModel.kt index 2362405b91..a93b177b2b 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/HistoryModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/HistoryModel.kt @@ -25,9 +25,9 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper -class HistoryModel(context: Context) : MedialibraryModel<AMediaWrapper>(context) { +class HistoryModel(context: Context) : MedialibraryModel<AbstractMediaWrapper>(context) { override fun canSortByName() = false @@ -35,7 +35,7 @@ class HistoryModel(context: Context) : MedialibraryModel<AMediaWrapper>(context) dataset.value = withContext(Dispatchers.Default) { medialibrary.lastMediaPlayed().toMutableList() } } - fun moveUp(media: AMediaWrapper) { + fun moveUp(media: AbstractMediaWrapper) { dataset.value = dataset.value.apply { remove(media) add(0, media) diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryModel.kt index 7afc36bdfe..a795afa515 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryModel.kt @@ -23,14 +23,14 @@ package org.videolan.vlc.viewmodels import android.content.Context import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.media.MediaLibraryItem @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi -abstract class MedialibraryModel<T : MediaLibraryItem>(context: Context) : BaseModel<T>(context), AMedialibrary.OnMedialibraryReadyListener, AMedialibrary.OnDeviceChangeListener { +abstract class MedialibraryModel<T : MediaLibraryItem>(context: Context) : BaseModel<T>(context), AbstractMedialibrary.OnMedialibraryReadyListener, AbstractMedialibrary.OnDeviceChangeListener { - val medialibrary = AMedialibrary.getInstance() + val medialibrary = AbstractMedialibrary.getInstance() init { medialibrary.apply { diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryViewModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryViewModel.kt index 9295c37a98..2e64236a92 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryViewModel.kt @@ -1,15 +1,15 @@ package org.videolan.vlc.viewmodels import android.content.Context -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.providers.medialibrary.MedialibraryProvider abstract class MedialibraryViewModel(context: Context) : SortableModel(context), - AMedialibrary.OnMedialibraryReadyListener, AMedialibrary.OnDeviceChangeListener { + AbstractMedialibrary.OnMedialibraryReadyListener, AbstractMedialibrary.OnDeviceChangeListener { - val medialibrary = AMedialibrary.getInstance().apply { + val medialibrary = AbstractMedialibrary.getInstance().apply { addOnMedialibraryReadyListener(this@MedialibraryViewModel) addOnDeviceChangeListener(this@MedialibraryViewModel) } diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt index ba299214f7..b4d7042fde 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt @@ -29,7 +29,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch import org.videolan.medialibrary.Tools -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.vlc.PlaybackService import org.videolan.vlc.media.PlaylistManager import org.videolan.vlc.util.EmptyPBSCallback @@ -42,8 +42,8 @@ import org.videolan.vlc.util.REPEAT_NONE class PlaylistModel : ScopedModel(), PlaybackService.Callback by EmptyPBSCallback, Observer<PlaybackService> { var service: PlaybackService? = null - val dataset = LiveDataset<AMediaWrapper>() - private var originalDataset : MutableList<AMediaWrapper>? = null + val dataset = LiveDataset<AbstractMediaWrapper>() + private var originalDataset : MutableList<AbstractMediaWrapper>? = null val selection : Int get() = if (filtering) -1 else service?.playlistManager?.currentIndex ?: -1 private var filtering = false @@ -65,7 +65,7 @@ class PlaylistModel : ScopedModel(), PlaybackService.Callback by EmptyPBSCallbac override fun update() { service?.run { - dataset.value = medias.toMutableList() + dataset.value = media.toMutableList() playerState.value = PlayerState(isPlaying, title, artist) } } @@ -73,7 +73,7 @@ class PlaylistModel : ScopedModel(), PlaybackService.Callback by EmptyPBSCallbac val hasMedia get() = service?.hasMedia() ?: false - fun insertMedia(position: Int, media: AMediaWrapper) = service?.insertItem(position, media) + fun insertMedia(position: Int, media: AbstractMediaWrapper) = service?.insertItem(position, media) fun remove(position: Int) = service?.remove(position) @@ -103,7 +103,7 @@ class PlaylistModel : ScopedModel(), PlaybackService.Callback by EmptyPBSCallbac super.onCleared() } - fun getPlaylistPosition(position: Int, media: AMediaWrapper): Int { + fun getPlaylistPosition(position: Int, media: AbstractMediaWrapper): Int { val list = originalDataset ?: dataset.value if (position in 0 until list.size && list[position] == media) return position else { @@ -164,24 +164,24 @@ class PlaylistModel : ScopedModel(), PlaybackService.Callback by EmptyPBSCallbac service?.repeatType = value } - val currentMediaWrapper : AMediaWrapper? + val currentMediaWrapper : AbstractMediaWrapper? get() = service?.currentMediaWrapper val currentMediaPosition : Int get() = service?.currentMediaPosition ?: -1 val medias - get() = service?.medias + get() = service?.media fun shuffle() = service?.shuffle() - fun load(medialist: List<AMediaWrapper>, position: Int) = service?.load(medialist, position) + fun load(medialist: List<AbstractMediaWrapper>, position: Int) = service?.load(medialist, position) fun switchToVideo() : Boolean { service?.apply { if (PlaylistManager.hasMedia() && !isVideoPlaying && !hasRenderer()) { currentMediaWrapper?.run { - if (!hasFlag(AMediaWrapper.MEDIA_FORCE_AUDIO) && canSwitchToVideo()) { + if (!hasFlag(AbstractMediaWrapper.MEDIA_FORCE_AUDIO) && canSwitchToVideo()) { switchToVideo() return true } diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/SortableModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/SortableModel.kt index ba06b90354..cd0c3f88d0 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/SortableModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/SortableModel.kt @@ -1,7 +1,7 @@ package org.videolan.vlc.viewmodels import android.content.Context -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.util.RefreshModel import org.videolan.vlc.util.Settings import org.videolan.vlc.util.canSortBy @@ -9,7 +9,7 @@ import org.videolan.vlc.util.canSortBy abstract class SortableModel(protected val context: Context): ScopedModel(), RefreshModel { protected open val sortKey : String = this.javaClass.simpleName - var sort = AMedialibrary.SORT_DEFAULT + var sort = AbstractMedialibrary.SORT_DEFAULT var desc = false var filterQuery : String? = null @@ -30,7 +30,7 @@ abstract class SortableModel(protected val context: Context): ScopedModel(), Ref open fun sort(sort: Int) { if (canSortBy(sort)) { desc = when (this.sort) { - AMedialibrary.SORT_DEFAULT -> sort == AMedialibrary.SORT_ALPHA + AbstractMedialibrary.SORT_DEFAULT -> sort == AbstractMedialibrary.SORT_ALPHA sort -> !desc else -> false } diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/StreamsModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/StreamsModel.kt index edd9299e19..84e712c928 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/StreamsModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/StreamsModel.kt @@ -27,10 +27,10 @@ import androidx.lifecycle.ViewModelProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper -class StreamsModel(context: Context) : MedialibraryModel<AMediaWrapper>(context) { +class StreamsModel(context: Context) : MedialibraryModel<AbstractMediaWrapper>(context) { val observableSearchText = ObservableField<String>() init { diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/browser/BrowserModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/browser/BrowserModel.kt index 8feb3d6c39..4c0c2a769e 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/browser/BrowserModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/browser/BrowserModel.kt @@ -27,7 +27,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.providers.* import org.videolan.vlc.repository.DirectoryRepository @@ -67,9 +67,9 @@ open class BrowserModel(context: Context, val url: String?, type: Int, showHidde } } - fun saveList(media: AMediaWrapper) = provider.saveList(media) + fun saveList(media: AbstractMediaWrapper) = provider.saveList(media) - fun isFolderEmpty(mw: AMediaWrapper) = provider.isFolderEmpty(mw) + fun isFolderEmpty(mw: AbstractMediaWrapper) = provider.isFolderEmpty(mw) fun getDescriptionUpdate() = provider.descriptionUpdate @@ -99,10 +99,10 @@ open class BrowserModel(context: Context, val url: String?, type: Int, showHidde private val ascComp by lazy { Comparator<MediaLibraryItem> { item1, item2 -> if (item1?.itemType == MediaLibraryItem.TYPE_MEDIA) { - val type1 = (item1 as AMediaWrapper).type - val type2 = (item2 as AMediaWrapper).type - if (type1 == AMediaWrapper.TYPE_DIR && type2 != AMediaWrapper.TYPE_DIR) return@Comparator -1 - else if (type1 != AMediaWrapper.TYPE_DIR && type2 == AMediaWrapper.TYPE_DIR) return@Comparator 1 + val type1 = (item1 as AbstractMediaWrapper).type + val type2 = (item2 as AbstractMediaWrapper).type + if (type1 == AbstractMediaWrapper.TYPE_DIR && type2 != AbstractMediaWrapper.TYPE_DIR) return@Comparator -1 + else if (type1 != AbstractMediaWrapper.TYPE_DIR && type2 == AbstractMediaWrapper.TYPE_DIR) return@Comparator 1 } item1?.title?.toLowerCase()?.compareTo(item2?.title?.toLowerCase() ?: "") ?: -1 } @@ -110,10 +110,10 @@ private val ascComp by lazy { private val descComp by lazy { Comparator<MediaLibraryItem> { item1, item2 -> if (item1?.itemType == MediaLibraryItem.TYPE_MEDIA) { - val type1 = (item1 as AMediaWrapper).type - val type2 = (item2 as AMediaWrapper).type - if (type1 == AMediaWrapper.TYPE_DIR && type2 != AMediaWrapper.TYPE_DIR) return@Comparator -1 - else if (type1 != AMediaWrapper.TYPE_DIR && type2 == AMediaWrapper.TYPE_DIR) return@Comparator 1 + val type1 = (item1 as AbstractMediaWrapper).type + val type2 = (item2 as AbstractMediaWrapper).type + if (type1 == AbstractMediaWrapper.TYPE_DIR && type2 != AbstractMediaWrapper.TYPE_DIR) return@Comparator -1 + else if (type1 != AbstractMediaWrapper.TYPE_DIR && type2 == AbstractMediaWrapper.TYPE_DIR) return@Comparator 1 } item2?.title?.toLowerCase()?.compareTo(item1?.title?.toLowerCase() ?: "") ?: -1 } diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AlbumSongsViewModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AlbumSongsViewModel.kt index 8aae81406b..2d6529d7a2 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AlbumSongsViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AlbumSongsViewModel.kt @@ -26,9 +26,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.AArtist +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractArtist import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.gui.audio.AudioAlbumsSongsFragment import org.videolan.vlc.providers.medialibrary.AlbumsProvider @@ -38,9 +38,9 @@ import org.videolan.vlc.viewmodels.MedialibraryViewModel @ExperimentalCoroutinesApi class AlbumSongsViewModel(context: Context, val parent: MediaLibraryItem) : MedialibraryViewModel(context), - AMedialibrary.MediaCb, - AMedialibrary.ArtistsCb by EmptyMLCallbacks, - AMedialibrary.AlbumsCb by EmptyMLCallbacks { + AbstractMedialibrary.MediaCb, + AbstractMedialibrary.ArtistsCb by EmptyMLCallbacks, + AbstractMedialibrary.AlbumsCb by EmptyMLCallbacks { val albumsProvider = AlbumsProvider(parent, context, this) val tracksProvider = TracksProvider(parent, context, this) @@ -48,8 +48,8 @@ class AlbumSongsViewModel(context: Context, val parent: MediaLibraryItem) : Medi init { when (parent) { - is AArtist -> medialibrary.addArtistsCb(this@AlbumSongsViewModel) - is AAlbum -> medialibrary.addAlbumsCb(this@AlbumSongsViewModel) + is AbstractArtist -> medialibrary.addArtistsCb(this@AlbumSongsViewModel) + is AbstractAlbum -> medialibrary.addAlbumsCb(this@AlbumSongsViewModel) else -> medialibrary.addMediaCb(this@AlbumSongsViewModel) } } @@ -66,8 +66,8 @@ class AlbumSongsViewModel(context: Context, val parent: MediaLibraryItem) : Medi override fun onCleared() { when (parent) { - is AArtist -> medialibrary.removeArtistsCb(this) - is AAlbum -> medialibrary.removeAlbumsCb(this) + is AbstractArtist -> medialibrary.removeArtistsCb(this) + is AbstractAlbum -> medialibrary.removeAlbumsCb(this) else -> medialibrary.removeMediaCb(this) } super.onCleared() diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AudioBrowserViewModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AudioBrowserViewModel.kt index 54a4b3b7fa..4e9a4049d3 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AudioBrowserViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/AudioBrowserViewModel.kt @@ -26,7 +26,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary +import org.videolan.medialibrary.interfaces.AbstractMedialibrary import org.videolan.vlc.gui.audio.AudioBrowserFragment import org.videolan.vlc.providers.medialibrary.AlbumsProvider import org.videolan.vlc.providers.medialibrary.ArtistsProvider @@ -40,10 +40,10 @@ import org.videolan.vlc.viewmodels.MedialibraryViewModel @ExperimentalCoroutinesApi class AudioBrowserViewModel(context: Context) : MedialibraryViewModel(context), - AMedialibrary.MediaCb, - AMedialibrary.ArtistsCb by EmptyMLCallbacks, - AMedialibrary.AlbumsCb by EmptyMLCallbacks, - AMedialibrary.GenresCb by EmptyMLCallbacks { + AbstractMedialibrary.MediaCb, + AbstractMedialibrary.ArtistsCb by EmptyMLCallbacks, + AbstractMedialibrary.AlbumsCb by EmptyMLCallbacks, + AbstractMedialibrary.GenresCb by EmptyMLCallbacks { val artistsProvider = ArtistsProvider(context, this, true) val albumsProvider = AlbumsProvider(null, context, this) diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/FoldersViewModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/FoldersViewModel.kt index 3a1abb9aee..268e31bf9e 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/FoldersViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/FoldersViewModel.kt @@ -25,7 +25,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.* -import org.videolan.medialibrary.interfaces.media.AFolder +import org.videolan.medialibrary.interfaces.media.AbstractFolder import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.gui.folders.FoldersFragment import org.videolan.vlc.media.MediaUtils @@ -51,12 +51,12 @@ class FoldersViewModel(context: Context, val type : Int) : MedialibraryViewModel list?.let { MediaUtils.appendMedia(context, it) } } - fun playSelection(selection: List<AFolder>) = launch { + fun playSelection(selection: List<AbstractFolder>) = launch { val list = selection.flatMap { it.getAll() } MediaUtils.openList(context, list, 0) } - fun appendSelection(selection: List<AFolder>) = launch { + fun appendSelection(selection: List<AbstractFolder>) = launch { val list = selection.flatMap { it.getAll() } MediaUtils.appendMedia(context, list) } @@ -71,4 +71,4 @@ class FoldersViewModel(context: Context, val type : Int) : MedialibraryViewModel @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi -internal fun FoldersFragment.getViewModel() = ViewModelProviders.of(requireActivity(), FoldersViewModel.Factory(requireContext(), AFolder.TYPE_FOLDER_VIDEO)).get(FoldersViewModel::class.java) +internal fun FoldersFragment.getViewModel() = ViewModelProviders.of(requireActivity(), FoldersViewModel.Factory(requireContext(), AbstractFolder.TYPE_FOLDER_VIDEO)).get(FoldersViewModel::class.java) diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/PlaylistViewModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/PlaylistViewModel.kt index 8f97780c14..6ead82a7d3 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/PlaylistViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/PlaylistViewModel.kt @@ -26,9 +26,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AAlbum -import org.videolan.medialibrary.interfaces.media.APlaylist +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractAlbum +import org.videolan.medialibrary.interfaces.media.AbstractPlaylist import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.gui.PlaylistActivity import org.videolan.vlc.providers.medialibrary.MedialibraryProvider @@ -39,16 +39,16 @@ import org.videolan.vlc.viewmodels.MedialibraryViewModel @ExperimentalCoroutinesApi class PlaylistViewModel(context: Context, val playlist: MediaLibraryItem) : MedialibraryViewModel(context), - AMedialibrary.MediaCb by EmptyMLCallbacks, - AMedialibrary.AlbumsCb by EmptyMLCallbacks, - AMedialibrary.PlaylistsCb by EmptyMLCallbacks { + AbstractMedialibrary.MediaCb by EmptyMLCallbacks, + AbstractMedialibrary.AlbumsCb by EmptyMLCallbacks, + AbstractMedialibrary.PlaylistsCb by EmptyMLCallbacks { val tracksProvider = TracksProvider(playlist, context, this) override val providers : Array<MedialibraryProvider<out MediaLibraryItem>> = arrayOf(tracksProvider) init { when (playlist) { - is APlaylist -> medialibrary.addPlaylistCb(this@PlaylistViewModel) - is AAlbum -> medialibrary.addAlbumsCb(this@PlaylistViewModel) + is AbstractPlaylist -> medialibrary.addPlaylistCb(this@PlaylistViewModel) + is AbstractAlbum -> medialibrary.addAlbumsCb(this@PlaylistViewModel) else -> medialibrary.addMediaCb(this@PlaylistViewModel) } } @@ -67,8 +67,8 @@ class PlaylistViewModel(context: Context, val playlist: MediaLibraryItem) : Medi override fun onCleared() { when (playlist) { - is APlaylist -> medialibrary.removePlaylistCb(this) - is AAlbum -> medialibrary.removeAlbumsCb(this) + is AbstractPlaylist -> medialibrary.removePlaylistCb(this) + is AbstractAlbum -> medialibrary.removeAlbumsCb(this) else -> medialibrary.removeMediaCb(this) } super.onCleared() diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt index 70578b8c75..6605e8f24d 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt @@ -26,7 +26,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.medialibrary.interfaces.media.AFolder +import org.videolan.medialibrary.interfaces.media.AbstractFolder import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.gui.video.VideoGridFragment import org.videolan.vlc.providers.medialibrary.MedialibraryProvider @@ -34,11 +34,11 @@ import org.videolan.vlc.providers.medialibrary.VideosProvider import org.videolan.vlc.viewmodels.MedialibraryViewModel @ExperimentalCoroutinesApi -class VideosViewModel(context: Context, val folder: AFolder?) : MedialibraryViewModel(context) { +class VideosViewModel(context: Context, val folder: AbstractFolder?) : MedialibraryViewModel(context) { val provider = VideosProvider(folder, context, this) override val providers: Array<MedialibraryProvider<out MediaLibraryItem>> = arrayOf(provider) - class Factory(val context: Context, val folder: AFolder?): ViewModelProvider.NewInstanceFactory() { + class Factory(val context: Context, val folder: AbstractFolder?): ViewModelProvider.NewInstanceFactory() { override fun <T : ViewModel> create(modelClass: Class<T>): T { @Suppress("UNCHECKED_CAST") return VideosViewModel(context.applicationContext, folder) as T @@ -48,4 +48,4 @@ class VideosViewModel(context: Context, val folder: AFolder?) : MedialibraryView @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi -internal fun VideoGridFragment.getViewModel(folder: AFolder?) = ViewModelProviders.of(requireActivity(), VideosViewModel.Factory(requireContext(), folder)).get(VideosViewModel::class.java) \ No newline at end of file +internal fun VideoGridFragment.getViewModel(folder: AbstractFolder?) = ViewModelProviders.of(requireActivity(), VideosViewModel.Factory(requireContext(), folder)).get(VideosViewModel::class.java) \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt index a8db09959d..ce505089cd 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt @@ -30,8 +30,8 @@ import androidx.lifecycle.* import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor -import org.videolan.medialibrary.interfaces.AMedialibrary -import org.videolan.medialibrary.interfaces.media.AMediaWrapper +import org.videolan.medialibrary.interfaces.AbstractMedialibrary +import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper import org.videolan.medialibrary.media.DummyItem import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor @@ -56,15 +56,15 @@ private const val TAG = "MainTvModel" @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi -class MainTvModel(app: Application) : AndroidViewModel(app), AMedialibrary.OnMedialibraryReadyListener, - AMedialibrary.OnDeviceChangeListener, CoroutineScope by MainScope() { +class MainTvModel(app: Application) : AndroidViewModel(app), AbstractMedialibrary.OnMedialibraryReadyListener, + AbstractMedialibrary.OnDeviceChangeListener, CoroutineScope by MainScope() { val context = getApplication<Application>().baseContext!! - private val medialibrary = AMedialibrary.getInstance() + private val medialibrary = AbstractMedialibrary.getInstance() val settings = Settings.getInstance(context) private val showInternalStorage = AndroidDevices.showInternalStorage() private val browserFavRepository = BrowserFavRepository.getInstance(context) - private var updatedFavoritList: List<AMediaWrapper> = listOf() + private var updatedFavoritList: List<AbstractMediaWrapper> = listOf() var showHistory = false private set // LiveData @@ -73,7 +73,7 @@ class MainTvModel(app: Application) : AndroidViewModel(app), AMedialibrary.OnMed val videos: LiveData<List<MediaLibraryItem>> = MutableLiveData() val audioCategories: LiveData<List<MediaLibraryItem>> = MutableLiveData() val browsers: LiveData<List<MediaLibraryItem>> = MutableLiveData() - val history: LiveData<List<AMediaWrapper>> = MutableLiveData() + val history: LiveData<List<AbstractMediaWrapper>> = MutableLiveData() val playlist: LiveData<List<MediaLibraryItem>> = MutableLiveData() private val nowPlayingDelegate = NowPlayingDelegate(this) @@ -129,7 +129,7 @@ class MainTvModel(app: Application) : AndroidViewModel(app), AMedialibrary.OnMed private fun updateVideos() = launch { context.getFromMl { - getPagedVideos(AMedialibrary.SORT_INSERTIONDATE, true, NUM_ITEMS_PREVIEW, 0) + getPagedVideos(AbstractMedialibrary.SORT_INSERTIONDATE, true, NUM_ITEMS_PREVIEW, 0) }.let { (videos as MutableLiveData).value = mutableListOf<MediaLibraryItem>().apply { add(DummyItem(HEADER_VIDEO, context.getString(R.string.videos_all), context.resources.getQuantityString(R.plurals.videos_quantity, it.size, it.size))) @@ -150,7 +150,7 @@ class MainTvModel(app: Application) : AndroidViewModel(app), AMedialibrary.OnMed private fun updatePlaylists() = launch { context.getFromMl { - getPagedPlaylists(AMedialibrary.SORT_INSERTIONDATE, true, NUM_ITEMS_PREVIEW, 0) + getPagedPlaylists(AbstractMedialibrary.SORT_INSERTIONDATE, true, NUM_ITEMS_PREVIEW, 0) }.let { (playlist as MutableLiveData).value = mutableListOf<MediaLibraryItem>().apply { // add(DummyItem(HEADER_PLAYLISTS, context.getString(R.string.playlists), "")) @@ -215,8 +215,8 @@ class MainTvModel(app: Application) : AndroidViewModel(app), AMedialibrary.OnMed fun open(activity: FragmentActivity, item: Any?) { when (item) { - is AMediaWrapper -> when { - item.type == AMediaWrapper.TYPE_DIR -> { + is AbstractMediaWrapper -> when { + item.type == AbstractMediaWrapper.TYPE_DIR -> { val intent = Intent(activity, VerticalGridActivity::class.java) intent.putExtra(MainTvActivity.BROWSER_TYPE, if ("file" == item.uri.scheme) HEADER_DIRECTORIES else HEADER_NETWORK) intent.data = item.uri @@ -224,7 +224,7 @@ class MainTvModel(app: Application) : AndroidViewModel(app), AMedialibrary.OnMed } else -> { MediaUtils.openMedia(activity, item) - if (item.type == AMediaWrapper.TYPE_AUDIO) { + if (item.type == AbstractMediaWrapper.TYPE_AUDIO) { activity.startActivity(Intent(activity, AudioPlayerActivity::class.java)) } } diff --git a/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt b/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt index 4814be9d0a..b17bae9fb0 100644 --- a/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt +++ b/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt @@ -31,7 +31,7 @@ import java.io.File object TestUtil { private const val fakeUri: String = "https://www.videolan.org/fake_" private const val fakeSubUri: String = "/storage/emulated/0/Android/data/org.videolan.vlc.debug/files/subs/" - private const val fakeMediaUri: String = "/storage/emulated/0/Android/data/org.videolan.vlc.debug/files/medias/" + private const val fakeMediaUri: String = "/storage/emulated/0/Android/data/org.videolan.vlc.debug/files/media/" fun createLocalFav(uri: Uri, title: String, iconUrl: String?): BrowserFav { return BrowserFav(uri, TYPE_LOCAL_FAV, title, iconUrl) -- GitLab