From 58cebe4c9808a47fdbe26de56fdc65391e0aea1b Mon Sep 17 00:00:00 2001 From: Fr4nzD13trich Date: Thu, 20 Nov 2025 13:36:23 +0100 Subject: [PATCH] Repo created --- CHANGELOG.md | 253 ++++ LICENSE | 674 +++++++++ README.md | 127 +- USAGE.md | 183 +++ app/.gitignore | 1 + app/build.gradle | 133 ++ app/proguard-rules.pro | 28 + .../1.json | 746 ++++++++++ .../10.json | 1065 ++++++++++++++ .../11.json | 1101 +++++++++++++++ .../12.json | 1151 +++++++++++++++ .../2.json | 790 +++++++++++ .../3.json | 797 +++++++++++ .../4.json | 997 +++++++++++++ .../5.json | 1004 ++++++++++++++ .../6.json | 1016 ++++++++++++++ .../7.json | 1021 ++++++++++++++ .../8.json | 1021 ++++++++++++++ .../9.json | 1027 ++++++++++++++ app/src/degoogled/ic_launcher-playstore.png | Bin 0 -> 20899 bytes .../tempo/service/MediaService.kt | 561 ++++++++ .../tempo/ui/fragment/ToolbarFragment.java | 65 + .../cappielloantonio/tempo/util/Flavors.java | 9 + .../res/drawable/ic_launcher_foreground.xml | 54 + .../degoogled/res/drawable/ic_splash_logo.xml | 53 + app/src/degoogled/res/menu/main_page_menu.xml | 15 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1676 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3288 bytes .../res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1100 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2068 bytes .../res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 2246 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 4516 bytes .../res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 3286 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 6902 bytes .../res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 4442 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 9442 bytes .../res/values/ic_launcher_background.xml | 4 + app/src/main/AndroidManifest.xml | 102 ++ app/src/main/ic_launcher-playstore.png | Bin 0 -> 20726 bytes .../java/com/cappielloantonio/tempo/App.java | 109 ++ .../ConnectivityStatusBroadcastReceiver.java | 34 + .../tempo/database/AppDatabase.java | 69 + .../database/converter/DateConverters.kt | 16 + .../tempo/database/dao/ChronologyDao.java | 23 + .../tempo/database/dao/DownloadDao.java | 41 + .../tempo/database/dao/FavoriteDao.java | 26 + .../tempo/database/dao/LyricsDao.java | 24 + .../tempo/database/dao/PlaylistDao.java | 27 + .../tempo/database/dao/QueueDao.java | 44 + .../tempo/database/dao/RecentSearchDao.java | 23 + .../tempo/database/dao/ServerDao.java | 24 + .../database/dao/SessionMediaItemDao.java | 29 + .../cappielloantonio/tempo/github/Github.java | 29 + .../tempo/github/GithubRetrofitClient.kt | 30 + .../github/api/release/ReleaseClient.java | 24 + .../github/api/release/ReleaseService.java | 12 + .../tempo/github/models/Assets.kt | 34 + .../tempo/github/models/Author.kt | 44 + .../tempo/github/models/LatestRelease.kt | 46 + .../tempo/github/models/Reactions.kt | 28 + .../tempo/github/models/Uploader.kt | 44 + .../tempo/github/utils/UpdateUtil.java | 32 + .../tempo/glide/CustomGlideModule.java | 32 + .../tempo/glide/CustomGlideRequest.java | 150 ++ .../tempo/glide/IPv6StringLoader.java | 110 ++ .../tempo/helper/ThemeHelper.java | 35 + .../recyclerview/CustomLinearSnapHelper.java | 24 + .../recyclerview/DotsIndicatorDecoration.java | 116 ++ .../helper/recyclerview/FastScrollbar.java | 197 +++ .../recyclerview/GridItemDecoration.java | 41 + .../recyclerview/NestedScrollableHost.kt | 88 ++ .../PaginationScrollListener.java | 33 + .../helper/recyclerview/SquareLayout.java | 28 + .../tempo/interfaces/ClickCallback.java | 35 + .../tempo/interfaces/DecadesCallback.java | 8 + .../tempo/interfaces/DialogClickCallback.java | 13 + .../tempo/interfaces/MediaCallback.java | 11 + .../tempo/interfaces/MediaIndexCallback.java | 8 + .../tempo/interfaces/PlaylistCallback.java | 8 + .../tempo/interfaces/PodcastCallback.java | 9 + .../tempo/interfaces/RadioCallback.java | 9 + .../tempo/interfaces/ScanCallback.java | 9 + .../tempo/interfaces/StarCallback.java | 9 + .../tempo/interfaces/SystemCallback.java | 9 + .../tempo/model/Chronology.kt | 59 + .../cappielloantonio/tempo/model/Download.kt | 64 + .../cappielloantonio/tempo/model/Favorite.kt | 32 + .../tempo/model/HomeSector.kt | 11 + .../tempo/model/LyricsCache.kt | 25 + .../com/cappielloantonio/tempo/model/Queue.kt | 59 + .../tempo/model/RecentSearch.kt | 17 + .../tempo/model/ReplayGain.kt | 9 + .../cappielloantonio/tempo/model/Server.kt | 39 + .../tempo/model/SessionMediaItem.kt | 289 ++++ .../tempo/repository/AlbumRepository.java | 301 ++++ .../tempo/repository/ArtistRepository.java | 387 ++++++ .../repository/AutomotiveRepository.java | 1027 ++++++++++++++ .../repository/ChronologyRepository.java | 39 + .../tempo/repository/DirectoryRepository.java | 89 ++ .../tempo/repository/DownloadRepository.java | 213 +++ .../tempo/repository/FavoriteRepository.java | 140 ++ .../tempo/repository/GenreRepository.java | 57 + .../tempo/repository/LyricsRepository.java | 92 ++ .../tempo/repository/OpenRepository.java | 37 + .../tempo/repository/PlaylistRepository.java | 229 +++ .../tempo/repository/PodcastRepository.java | 153 ++ .../tempo/repository/QueueRepository.java | 378 +++++ .../tempo/repository/RadioRepository.java | 91 ++ .../tempo/repository/ScanRepository.java | 58 + .../tempo/repository/SearchingRepository.java | 196 +++ .../tempo/repository/ServerRepository.java | 61 + .../tempo/repository/SharingRepository.java | 99 ++ .../tempo/repository/SongRepository.java | 260 ++++ .../tempo/repository/SystemRepository.java | 123 ++ .../tempo/service/DownloaderManager.java | 148 ++ .../tempo/service/DownloaderService.java | 115 ++ .../tempo/service/EqualizerManager.kt | 47 + .../tempo/service/MediaManager.java | 485 +++++++ .../tempo/subsonic/RetrofitClient.kt | 66 + .../tempo/subsonic/Subsonic.java | 162 +++ .../tempo/subsonic/SubsonicPreferences.java | 86 ++ .../albumsonglist/AlbumSongListClient.java | 61 + .../albumsonglist/AlbumSongListService.java | 36 + .../api/bookmarks/BookmarksClient.java | 33 + .../api/bookmarks/BookmarksService.java | 19 + .../subsonic/api/browsing/BrowsingClient.java | 106 ++ .../api/browsing/BrowsingService.java | 63 + .../internetradio/InternetRadioClient.java | 41 + .../internetradio/InternetRadioService.java | 24 + .../MediaAnnotationClient.java | 41 + .../MediaAnnotationService.java | 24 + .../MediaLibraryScanningClient.java | 31 + .../MediaLibraryScanningService.java | 17 + .../mediaretrieval/MediaRetrievalClient.java | 36 + .../mediaretrieval/MediaRetrievalService.java | 21 + .../tempo/subsonic/api/open/OpenClient.java | 26 + .../tempo/subsonic/api/open/OpenService.java | 15 + .../subsonic/api/playlist/PlaylistClient.java | 48 + .../api/playlist/PlaylistService.java | 28 + .../subsonic/api/podcast/PodcastClient.java | 56 + .../subsonic/api/podcast/PodcastService.java | 33 + .../api/searching/SearchingClient.java | 31 + .../api/searching/SearchingService.java | 18 + .../subsonic/api/sharing/SharingClient.java | 41 + .../subsonic/api/sharing/SharingService.java | 24 + .../subsonic/api/system/SystemClient.java | 47 + .../subsonic/api/system/SystemService.java | 20 + .../tempo/subsonic/base/ApiResponse.kt | 11 + .../tempo/subsonic/base/Version.java | 59 + .../tempo/subsonic/models/AlbumID3.kt | 39 + .../tempo/subsonic/models/AlbumInfo.kt | 13 + .../tempo/subsonic/models/AlbumList.kt | 8 + .../tempo/subsonic/models/AlbumList2.kt | 10 + .../subsonic/models/AlbumWithSongsID3.kt | 13 + .../tempo/subsonic/models/Artist.kt | 16 + .../tempo/subsonic/models/ArtistID3.kt | 18 + .../tempo/subsonic/models/ArtistInfo.kt | 8 + .../tempo/subsonic/models/ArtistInfo2.kt | 11 + .../tempo/subsonic/models/ArtistInfoBase.kt | 13 + .../subsonic/models/ArtistWithAlbumsID3.kt | 13 + .../tempo/subsonic/models/ArtistsID3.kt | 11 + .../tempo/subsonic/models/AudioTrack.kt | 10 + .../tempo/subsonic/models/Bookmark.kt | 14 + .../tempo/subsonic/models/Bookmarks.kt | 8 + .../tempo/subsonic/models/Captions.kt | 9 + .../tempo/subsonic/models/ChatMessage.kt | 10 + .../tempo/subsonic/models/ChatMessages.kt | 8 + .../tempo/subsonic/models/Child.kt | 88 ++ .../tempo/subsonic/models/Directory.kt | 22 + .../tempo/subsonic/models/DiscTitle.kt | 12 + .../tempo/subsonic/models/Error.kt | 9 + .../tempo/subsonic/models/ErrorCode.kt | 18 + .../tempo/subsonic/models/Genre.kt | 15 + .../tempo/subsonic/models/Genres.kt | 10 + .../tempo/subsonic/models/Index.kt | 11 + .../tempo/subsonic/models/IndexID3.kt | 11 + .../tempo/subsonic/models/Indexes.kt | 14 + .../subsonic/models/InternetRadioStation.kt | 14 + .../subsonic/models/InternetRadioStations.kt | 10 + .../tempo/subsonic/models/ItemDate.kt | 33 + .../tempo/subsonic/models/ItemGenre.kt | 11 + .../tempo/subsonic/models/JukeboxPlaylist.kt | 8 + .../tempo/subsonic/models/JukeboxStatus.kt | 11 + .../tempo/subsonic/models/License.kt | 12 + .../tempo/subsonic/models/Line.kt | 9 + .../tempo/subsonic/models/Lyrics.kt | 10 + .../tempo/subsonic/models/LyricsList.kt | 8 + .../tempo/subsonic/models/MediaType.kt | 15 + .../tempo/subsonic/models/MusicFolder.kt | 12 + .../tempo/subsonic/models/MusicFolders.kt | 10 + .../tempo/subsonic/models/NewestPodcasts.kt | 10 + .../tempo/subsonic/models/NowPlaying.kt | 8 + .../tempo/subsonic/models/NowPlayingEntry.kt | 16 + .../subsonic/models/OpenSubsonicExtension.kt | 9 + .../tempo/subsonic/models/PlayQueue.kt | 16 + .../tempo/subsonic/models/Playlist.kt | 72 + .../subsonic/models/PlaylistWithSongs.kt | 15 + .../tempo/subsonic/models/Playlists.kt | 10 + .../tempo/subsonic/models/PodcastChannel.kt | 23 + .../tempo/subsonic/models/PodcastEpisode.kt | 40 + .../tempo/subsonic/models/PodcastStatus.kt | 17 + .../tempo/subsonic/models/Podcasts.kt | 10 + .../tempo/subsonic/models/RecordLabel.kt | 12 + .../tempo/subsonic/models/ResponseStatus.kt | 13 + .../tempo/subsonic/models/ScanStatus.kt | 9 + .../tempo/subsonic/models/SearchResult.kt | 10 + .../tempo/subsonic/models/SearchResult2.kt | 14 + .../tempo/subsonic/models/SearchResult3.kt | 14 + .../tempo/subsonic/models/Share.kt | 23 + .../tempo/subsonic/models/Shares.kt | 10 + .../tempo/subsonic/models/SimilarArtistID3.kt | 9 + .../tempo/subsonic/models/SimilarSongs.kt | 8 + .../tempo/subsonic/models/SimilarSongs2.kt | 10 + .../tempo/subsonic/models/Songs.kt | 10 + .../tempo/subsonic/models/Starred.kt | 10 + .../tempo/subsonic/models/Starred2.kt | 14 + .../tempo/subsonic/models/StructuredLyrics.kt | 13 + .../tempo/subsonic/models/SubsonicResponse.kt | 57 + .../tempo/subsonic/models/TopSongs.kt | 10 + .../tempo/subsonic/models/User.kt | 26 + .../tempo/subsonic/models/Users.kt | 8 + .../tempo/subsonic/models/VideoConversion.kt | 10 + .../tempo/subsonic/models/VideoInfo.kt | 11 + .../tempo/subsonic/models/Videos.kt | 8 + .../tempo/subsonic/utils/CacheUtil.java | 73 + .../subsonic/utils/EmptyDateTypeAdapter.kt | 42 + .../tempo/subsonic/utils/StringUtil.java | 28 + .../tempo/ui/activity/MainActivity.java | 556 ++++++++ .../tempo/ui/activity/base/BaseActivity.java | 112 ++ .../tempo/ui/adapter/AlbumAdapter.java | 95 ++ .../AlbumArtistPageOrSimilarAdapter.java | 95 ++ .../ui/adapter/AlbumCatalogueAdapter.java | 207 +++ .../ui/adapter/AlbumHorizontalAdapter.java | 161 +++ .../tempo/ui/adapter/ArtistAdapter.java | 111 ++ .../ui/adapter/ArtistCatalogueAdapter.java | 161 +++ .../ui/adapter/ArtistHorizontalAdapter.java | 175 +++ .../ui/adapter/ArtistSimilarAdapter.java | 103 ++ .../tempo/ui/adapter/DiscoverSongAdapter.java | 108 ++ .../ui/adapter/DownloadHorizontalAdapter.java | 355 +++++ .../tempo/ui/adapter/GenreAdapter.java | 76 + .../ui/adapter/GenreCatalogueAdapter.java | 128 ++ .../tempo/ui/adapter/GridTrackAdapter.java | 81 ++ .../adapter/HomeSectorHorizontalAdapter.java | 76 + .../adapter/InternetRadioStationAdapter.java | 98 ++ .../ui/adapter/MusicDirectoryAdapter.java | 111 ++ .../tempo/ui/adapter/MusicFolderAdapter.java | 85 ++ .../tempo/ui/adapter/MusicIndexAdapter.java | 87 ++ .../ui/adapter/PlayerSongQueueAdapter.java | 249 ++++ .../PlaylistDialogHorizontalAdapter.java | 79 ++ .../PlaylistDialogSongHorizontalAdapter.java | 74 + .../ui/adapter/PlaylistHorizontalAdapter.java | 151 ++ .../PodcastChannelCatalogueAdapter.java | 143 ++ .../PodcastChannelHorizontalAdapter.java | 97 ++ .../ui/adapter/PodcastEpisodeAdapter.java | 150 ++ .../tempo/ui/adapter/ServerAdapter.java | 86 ++ .../ui/adapter/ShareHorizontalAdapter.java | 99 ++ .../tempo/ui/adapter/SimilarTrackAdapter.java | 92 ++ .../ui/adapter/SongHorizontalAdapter.java | 386 ++++++ .../tempo/ui/adapter/YearAdapter.java | 74 + .../ui/dialog/BatteryOptimizationDialog.java | 41 + .../ui/dialog/ConnectionAlertDialog.java | 51 + .../dialog/DeleteDownloadStorageDialog.java | 75 + .../ui/dialog/DownloadDirectoryDialog.java | 61 + .../dialog/DownloadDirectoryPickerDialog.java | 63 + .../ui/dialog/DownloadStorageDialog.java | 94 ++ .../ui/dialog/GithubTempoUpdateDialog.java | 73 + .../ui/dialog/HomeRearrangementDialog.java | 115 ++ .../ui/dialog/PlaylistChooserDialog.java | 109 ++ .../tempo/ui/dialog/PlaylistEditorDialog.java | 195 +++ .../ui/dialog/PodcastChannelEditorDialog.java | 89 ++ .../tempo/ui/dialog/RadioEditorDialog.java | 111 ++ .../tempo/ui/dialog/RatingDialog.java | 75 + .../tempo/ui/dialog/ServerSignupDialog.java | 142 ++ .../ui/dialog/ServerUnreachableDialog.java | 63 + .../tempo/ui/dialog/ShareUpdateDialog.java | 133 ++ .../ui/dialog/StarredAlbumSyncDialog.java | 88 ++ .../ui/dialog/StarredArtistSyncDialog.java | 88 ++ .../tempo/ui/dialog/StarredSyncDialog.java | 89 ++ .../dialog/StreamingCacheStorageDialog.java | 76 + .../tempo/ui/dialog/TrackInfoDialog.java | 204 +++ .../ui/fragment/AlbumCatalogueFragment.java | 288 ++++ .../ui/fragment/AlbumListPageFragment.java | 236 ++++ .../tempo/ui/fragment/AlbumPageFragment.java | 401 ++++++ .../ui/fragment/ArtistCatalogueFragment.java | 220 +++ .../ui/fragment/ArtistListPageFragment.java | 206 +++ .../tempo/ui/fragment/ArtistPageFragment.java | 310 +++++ .../tempo/ui/fragment/DirectoryFragment.java | 200 +++ .../tempo/ui/fragment/DownloadFragment.java | 315 +++++ .../tempo/ui/fragment/EqualizerFragment.kt | 268 ++++ .../tempo/ui/fragment/FilterFragment.java | 106 ++ .../ui/fragment/GenreCatalogueFragment.java | 172 +++ .../tempo/ui/fragment/HomeFragment.java | 104 ++ .../ui/fragment/HomeTabMusicFragment.java | 1233 +++++++++++++++++ .../ui/fragment/HomeTabPodcastFragment.java | 188 +++ .../ui/fragment/HomeTabRadioFragment.java | 151 ++ .../tempo/ui/fragment/IndexFragment.java | 110 ++ .../tempo/ui/fragment/LandingFragment.java | 17 + .../tempo/ui/fragment/LibraryFragment.java | 295 ++++ .../tempo/ui/fragment/LoginFragment.java | 167 +++ .../fragment/PlayerBottomSheetFragment.java | 334 +++++ .../ui/fragment/PlayerControllerFragment.java | 668 +++++++++ .../ui/fragment/PlayerCoverFragment.java | 203 +++ .../ui/fragment/PlayerLyricsFragment.java | 365 +++++ .../ui/fragment/PlayerQueueFragment.java | 258 ++++ .../fragment/PlaylistCatalogueFragment.java | 186 +++ .../ui/fragment/PlaylistPageFragment.java | 323 +++++ .../PodcastChannelCatalogueFragment.java | 155 +++ .../fragment/PodcastChannelPageFragment.java | 183 +++ .../tempo/ui/fragment/SearchFragment.java | 330 +++++ .../tempo/ui/fragment/SettingsFragment.java | 580 ++++++++ .../ui/fragment/SongListPageFragment.java | 370 +++++ .../AlbumBottomSheetDialog.java | 294 ++++ .../ArtistBottomSheetDialog.java | 142 ++ .../DownloadedBottomSheetDialog.java | 150 ++ .../PodcastChannelBottomSheetDialog.java | 96 ++ .../PodcastEpisodeBottomSheetDialog.java | 155 +++ .../ShareBottomSheetDialog.java | 120 ++ .../SongBottomSheetDialog.java | 400 ++++++ .../tempo/ui/fragment/pager/HomePager.java | 48 + .../PlayerControllerHorizontalPager.java | 37 + .../pager/PlayerControllerVerticalPager.java | 51 + .../tempo/util/AssetLinkNavigator.java | 188 +++ .../tempo/util/AssetLinkUtil.java | 188 +++ .../cappielloantonio/tempo/util/Constants.kt | 136 ++ .../tempo/util/DownloadUtil.java | 259 ++++ .../tempo/util/DynamicMediaSourceFactory.kt | 69 + .../tempo/util/ExternalAudioReader.java | 244 ++++ .../tempo/util/ExternalAudioWriter.java | 393 ++++++ .../util/ExternalDownloadMetadataStore.java | 123 ++ .../tempo/util/IndexUtil.java | 29 + .../tempo/util/MappingUtil.java | 296 ++++ .../tempo/util/MusicUtil.java | 357 +++++ .../tempo/util/NetworkUtil.java | 29 + .../util/OpenSubsonicExtensionsUtil.java | 41 + .../tempo/util/Preferences.kt | 677 +++++++++ .../tempo/util/ReplayGainUtil.java | 178 +++ .../tempo/util/StreamingCacheDataSource.kt | 62 + .../cappielloantonio/tempo/util/UIUtil.java | 115 ++ .../com/cappielloantonio/tempo/util/Util.java | 64 + .../viewmodel/AlbumBottomSheetViewModel.java | 132 ++ .../viewmodel/AlbumCatalogueViewModel.java | 105 ++ .../viewmodel/AlbumListPageViewModel.java | 67 + .../tempo/viewmodel/AlbumPageViewModel.java | 59 + .../viewmodel/ArtistBottomSheetViewModel.java | 118 ++ .../viewmodel/ArtistCatalogueViewModel.java | 56 + .../viewmodel/ArtistListPageViewModel.java | 61 + .../tempo/viewmodel/ArtistPageViewModel.java | 58 + .../tempo/viewmodel/DirectoryViewModel.java | 24 + .../tempo/viewmodel/DownloadViewModel.java | 127 ++ .../tempo/viewmodel/FilterViewModel.java | 48 + .../viewmodel/GenreCatalogueViewModel.java | 26 + .../viewmodel/HomeRearrangementViewModel.java | 78 ++ .../tempo/viewmodel/HomeViewModel.java | 470 +++++++ .../tempo/viewmodel/IndexViewModel.java | 35 + .../tempo/viewmodel/LibraryViewModel.java | 114 ++ .../tempo/viewmodel/LoginViewModel.java | 48 + .../tempo/viewmodel/MainViewModel.java | 44 + .../tempo/viewmodel/PlaybackViewModel.java | 35 + .../viewmodel/PlayerBottomSheetViewModel.java | 407 ++++++ .../viewmodel/PlaylistCatalogueViewModel.java | 44 + .../viewmodel/PlaylistChooserViewModel.java | 63 + .../viewmodel/PlaylistEditorViewModel.java | 104 ++ .../viewmodel/PlaylistPageViewModel.java | 58 + .../PodcastChannelBottomSheetViewModel.java | 33 + .../PodcastChannelCatalogueViewModel.java | 35 + .../PodcastChannelEditorViewModel.java | 27 + .../PodcastChannelPageViewModel.java | 41 + .../PodcastEpisodeBottomSheetViewModel.java | 33 + .../tempo/viewmodel/PodcastViewModel.java | 52 + .../tempo/viewmodel/RadioEditorViewModel.java | 43 + .../tempo/viewmodel/RadioViewModel.java | 35 + .../tempo/viewmodel/RatingViewModel.java | 84 ++ .../tempo/viewmodel/SearchViewModel.java | 68 + .../tempo/viewmodel/SettingViewModel.java | 49 + .../viewmodel/ShareBottomSheetViewModel.java | 37 + .../viewmodel/SongBottomSheetViewModel.java | 139 ++ .../viewmodel/SongListPageViewModel.java | 100 ++ .../viewmodel/StarredAlbumsSyncViewModel.java | 90 ++ .../StarredArtistsSyncViewModel.java | 94 ++ .../tempo/viewmodel/StarredSyncViewModel.java | 31 + .../tempo/widget/WidgetActions.java | 62 + .../tempo/widget/WidgetProvider.java | 137 ++ .../tempo/widget/WidgetProvider4x1.java | 9 + .../tempo/widget/WidgetUpdateManager.java | 309 +++++ .../tempo/widget/WidgetViewsFactory.java | 252 ++++ .../res/drawable/button_favorite_selector.xml | 5 + .../drawable/button_play_pause_selector.xml | 5 + .../drawable/button_skip_silence_selector.xml | 5 + .../res/drawable/fast_scrollbar_bubble.xml | 15 + .../res/drawable/fast_scrollbar_handle.xml | 17 + .../gradient_backdrop_background_image.xml | 8 + .../gradient_discover_background_image.xml | 8 + ...gradient_player_cover_background_image.xml | 9 + app/src/main/res/drawable/ic_add.xml | 9 + app/src/main/res/drawable/ic_arrow_back.xml | 9 + app/src/main/res/drawable/ic_arrow_down.xml | 9 + app/src/main/res/drawable/ic_bookmark.xml | 9 + .../main/res/drawable/ic_bookmark_sync.xml | 9 + app/src/main/res/drawable/ic_check_circle.xml | 9 + app/src/main/res/drawable/ic_close.xml | 9 + app/src/main/res/drawable/ic_done.xml | 9 + app/src/main/res/drawable/ic_download.xml | 9 + app/src/main/res/drawable/ic_drag_handle.xml | 9 + app/src/main/res/drawable/ic_eq.xml | 11 + app/src/main/res/drawable/ic_error.xml | 9 + app/src/main/res/drawable/ic_favorite.xml | 9 + .../res/drawable/ic_favorites_outlined.xml | 9 + app/src/main/res/drawable/ic_feed.xml | 12 + .../main/res/drawable/ic_file_download.xml | 9 + app/src/main/res/drawable/ic_filter_list.xml | 9 + app/src/main/res/drawable/ic_folder.xml | 9 + app/src/main/res/drawable/ic_forward.xml | 15 + app/src/main/res/drawable/ic_graphic_eq.xml | 9 + app/src/main/res/drawable/ic_history.xml | 9 + app/src/main/res/drawable/ic_home.xml | 9 + app/src/main/res/drawable/ic_info_stream.xml | 9 + .../res/drawable/ic_launcher_foreground.xml | 56 + app/src/main/res/drawable/ic_link.xml | 10 + app/src/main/res/drawable/ic_lyrics.xml | 10 + .../main/res/drawable/ic_lyrics_sync_lock.xml | 9 + .../main/res/drawable/ic_mix_from_here.xml | 10 + app/src/main/res/drawable/ic_more_vert.xml | 9 + .../main/res/drawable/ic_navigate_next.xml | 10 + app/src/main/res/drawable/ic_pause.xml | 9 + .../res/drawable/ic_placeholder_album.xml | 17 + .../res/drawable/ic_placeholder_artist.xml | 18 + .../res/drawable/ic_placeholder_directory.xml | 17 + .../res/drawable/ic_placeholder_folder.xml | 17 + .../res/drawable/ic_placeholder_playlist.xml | 17 + .../res/drawable/ic_placeholder_podcast.xml | 17 + .../res/drawable/ic_placeholder_radio.xml | 17 + .../main/res/drawable/ic_placeholder_song.xml | 17 + app/src/main/res/drawable/ic_play.xml | 9 + .../main/res/drawable/ic_play_for_work.xml | 9 + app/src/main/res/drawable/ic_playlist_add.xml | 10 + .../main/res/drawable/ic_podcast_download.xml | 9 + app/src/main/res/drawable/ic_queue.xml | 10 + app/src/main/res/drawable/ic_refresh.xml | 9 + app/src/main/res/drawable/ic_repeat.xml | 9 + app/src/main/res/drawable/ic_repeat_one.xml | 12 + app/src/main/res/drawable/ic_replay.xml | 9 + app/src/main/res/drawable/ic_search.xml | 9 + .../drawable/ic_server_transcode_priority.xml | 9 + app/src/main/res/drawable/ic_settings.xml | 9 + app/src/main/res/drawable/ic_share.xml | 9 + app/src/main/res/drawable/ic_shuffle.xml | 15 + app/src/main/res/drawable/ic_skip_next.xml | 9 + .../main/res/drawable/ic_skip_previous.xml | 9 + app/src/main/res/drawable/ic_skip_silence.xml | 9 + .../res/drawable/ic_skip_silence_outlined.xml | 9 + app/src/main/res/drawable/ic_sort_list.xml | 10 + app/src/main/res/drawable/ic_splash_logo.xml | 56 + app/src/main/res/drawable/ic_star.xml | 9 + .../main/res/drawable/ic_star_outlined.xml | 9 + app/src/main/res/drawable/ic_tap.xml | 9 + .../res/drawable/ic_toolbar_motion_on.xml | 9 + .../main/res/drawable/ic_toolbar_tempo.xml | 52 + app/src/main/res/drawable/ic_transcode.xml | 9 + app/src/main/res/drawable/logo.xml | 51 + .../res/drawable/ui_empty_description.xml | 171 +++ app/src/main/res/drawable/ui_empty_list.xml | 597 ++++++++ .../main/res/drawable/ui_empty_podcast.xml | 172 +++ .../res/drawable/ui_empty_radio_station.xml | 172 +++ .../main/res/drawable/ui_eq_not_supported.xml | 93 ++ .../main/res/drawable/ui_splash_screen.xml | 6 + app/src/main/res/drawable/widget_bg.xml | 6 + app/src/main/res/font/inter.xml | 13 + app/src/main/res/font/inter_black.ttf | Bin 0 -> 294396 bytes app/src/main/res/font/inter_bold.ttf | Bin 0 -> 293448 bytes app/src/main/res/font/inter_extra_bold.ttf | Bin 0 -> 294072 bytes app/src/main/res/font/inter_extra_light.ttf | Bin 0 -> 288400 bytes app/src/main/res/font/inter_light.ttf | Bin 0 -> 288088 bytes app/src/main/res/font/inter_medium.ttf | Bin 0 -> 292140 bytes app/src/main/res/font/inter_regular.ttf | Bin 0 -> 287928 bytes app/src/main/res/font/inter_semi_bold.ttf | Bin 0 -> 293028 bytes app/src/main/res/font/inter_thin.ttf | Bin 0 -> 288568 bytes ...nner_fragment_player_controller_layout.xml | 404 ++++++ app/src/main/res/layout/activity_main.xml | 54 + .../res/layout/bottom_sheet_album_dialog.xml | 203 +++ .../res/layout/bottom_sheet_artist_dialog.xml | 95 ++ .../layout/bottom_sheet_downloaded_dialog.xml | 123 ++ .../bottom_sheet_podcast_channel_dialog.xml | 67 + .../bottom_sheet_podcast_episode_dialog.xml | 137 ++ .../res/layout/bottom_sheet_share_dialog.xml | 106 ++ .../res/layout/bottom_sheet_song_dialog.xml | 220 +++ .../res/layout/chip_search_filter_genre.xml | 12 + .../layout/dialog_battery_optimization.xml | 25 + .../res/layout/dialog_connection_alert.xml | 14 + .../layout/dialog_delete_download_storage.xml | 15 + .../res/layout/dialog_download_directory.xml | 15 + .../res/layout/dialog_download_storage.xml | 23 + .../res/layout/dialog_github_tempo_update.xml | 14 + .../res/layout/dialog_home_rearrangement.xml | 23 + .../res/layout/dialog_playlist_chooser.xml | 26 + .../res/layout/dialog_playlist_editor.xml | 58 + .../layout/dialog_podcast_channel_editor.xml | 27 + .../main/res/layout/dialog_radio_editor.xml | 67 + app/src/main/res/layout/dialog_rating.xml | 20 + .../main/res/layout/dialog_server_signup.xml | 137 ++ .../res/layout/dialog_server_unreachable.xml | 14 + .../main/res/layout/dialog_share_update.xml | 51 + .../res/layout/dialog_starred_album_sync.xml | 14 + .../res/layout/dialog_starred_artist_sync.xml | 14 + .../main/res/layout/dialog_starred_sync.xml | 14 + .../layout/dialog_streaming_cache_storage.xml | 23 + app/src/main/res/layout/dialog_track_info.xml | 499 +++++++ .../res/layout/fragment_album_catalogue.xml | 105 ++ .../res/layout/fragment_album_list_page.xml | 90 ++ .../main/res/layout/fragment_album_page.xml | 265 ++++ .../res/layout/fragment_artist_catalogue.xml | 77 + .../res/layout/fragment_artist_list_page.xml | 90 ++ .../main/res/layout/fragment_artist_page.xml | 257 ++++ .../main/res/layout/fragment_directory.xml | 77 + app/src/main/res/layout/fragment_download.xml | 136 ++ .../main/res/layout/fragment_equalizer.xml | 105 ++ app/src/main/res/layout/fragment_filter.xml | 94 ++ .../res/layout/fragment_genre_catalogue.xml | 95 ++ app/src/main/res/layout/fragment_home.xml | 22 + .../res/layout/fragment_home_tab_music.xml | 978 +++++++++++++ .../res/layout/fragment_home_tab_podcast.xml | 175 +++ .../res/layout/fragment_home_tab_radio.xml | 118 ++ app/src/main/res/layout/fragment_index.xml | 77 + app/src/main/res/layout/fragment_landing.xml | 6 + app/src/main/res/layout/fragment_library.xml | 273 ++++ app/src/main/res/layout/fragment_login.xml | 70 + .../layout/fragment_player_bottom_sheet.xml | 16 + .../layout/fragment_playlist_catalogue.xml | 77 + .../res/layout/fragment_playlist_page.xml | 207 +++ .../fragment_podcast_channel_catalogue.xml | 60 + .../layout/fragment_podcast_channel_page.xml | 110 ++ app/src/main/res/layout/fragment_search.xml | 149 ++ app/src/main/res/layout/fragment_settings.xml | 6 + .../res/layout/fragment_song_list_page.xml | 108 ++ app/src/main/res/layout/fragment_toolbar.xml | 36 + .../inner_fragment_player_controller.xml | 12 + ...nner_fragment_player_controller_layout.xml | 414 ++++++ .../layout/inner_fragment_player_cover.xml | 136 ++ .../layout/inner_fragment_player_lyrics.xml | 99 ++ .../layout/inner_fragment_player_queue.xml | 40 + .../item_home_catalogue_podcast_channel.xml | 28 + .../res/layout/item_home_discover_song.xml | 45 + .../main/res/layout/item_home_grid_track.xml | 11 + .../item_home_internet_radio_station.xml | 71 + .../res/layout/item_home_podcast_episode.xml | 120 ++ .../res/layout/item_home_similar_track.xml | 28 + app/src/main/res/layout/item_home_year.xml | 43 + .../main/res/layout/item_horizontal_album.xml | 65 + .../res/layout/item_horizontal_artist.xml | 67 + .../res/layout/item_horizontal_download.xml | 88 ++ .../layout/item_horizontal_home_sector.xml | 26 + .../res/layout/item_horizontal_playlist.xml | 65 + .../item_horizontal_playlist_dialog.xml | 37 + .../item_horizontal_playlist_dialog_track.xml | 89 ++ .../item_horizontal_podcast_channel.xml | 64 + .../main/res/layout/item_horizontal_share.xml | 65 + .../main/res/layout/item_horizontal_track.xml | 228 +++ .../main/res/layout/item_library_album.xml | 40 + .../main/res/layout/item_library_artist.xml | 29 + ...m_library_artist_page_or_similar_album.xml | 40 + .../layout/item_library_catalogue_album.xml | 46 + .../layout/item_library_catalogue_artist.xml | 29 + .../layout/item_library_catalogue_genre.xml | 39 + .../main/res/layout/item_library_genre.xml | 41 + .../layout/item_library_music_directory.xml | 70 + .../res/layout/item_library_music_folder.xml | 53 + .../res/layout/item_library_music_index.xml | 57 + .../layout/item_library_similar_artist.xml | 29 + app/src/main/res/layout/item_login_server.xml | 39 + .../res/layout/item_player_queue_song.xml | 152 ++ .../res/layout/item_search_suggestion.xml | 48 + .../main/res/layout/layout_fast_scrollbar.xml | 26 + app/src/main/res/layout/layout_toolbar.xml | 36 + .../res/layout/player_body_bottom_sheet.xml | 6 + .../res/layout/player_header_bottom_sheet.xml | 148 ++ .../main/res/layout/view_asset_link_row.xml | 55 + .../main/res/layout/widget_layout_compact.xml | 175 +++ .../main/res/layout/widget_layout_large.xml | 189 +++ .../res/layout/widget_layout_large_short.xml | 198 +++ .../main/res/layout/widget_layout_medium.xml | 216 +++ .../res/layout/widget_preview_compact.xml | 82 ++ app/src/main/res/menu/album_page_menu.xml | 19 + app/src/main/res/menu/artist_list_menu.xml | 12 + app/src/main/res/menu/bottom_nav_menu.xml | 15 + app/src/main/res/menu/directory_page_menu.xml | 10 + app/src/main/res/menu/download_popup_menu.xml | 22 + .../filter_podcast_episode_popup_menu.xml | 9 + .../res/menu/filter_top_songs_popup_menu.xml | 12 + app/src/main/res/menu/login_page_menu.xml | 10 + app/src/main/res/menu/main_page_menu.xml | 21 + app/src/main/res/menu/playlist_page_menu.xml | 26 + .../main/res/menu/sort_album_popup_menu.xml | 24 + .../main/res/menu/sort_artist_popup_menu.xml | 12 + .../main/res/menu/sort_genre_popup_menu.xml | 9 + .../menu/sort_horizontal_album_popup_menu.xml | 12 + .../sort_horizontal_artist_popup_menu.xml | 12 + .../res/menu/sort_playlist_popup_menu.xml | 9 + .../main/res/menu/sort_song_popup_menu.xml | 12 + app/src/main/res/menu/toolbar_menu.xml | 11 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1580 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3136 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1114 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1994 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 2142 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 3158 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 6736 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 4234 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 9266 bytes app/src/main/res/navigation/nav_graph.xml | 355 +++++ app/src/main/res/values-de/arrays.xml | 157 +++ app/src/main/res/values-de/strings.xml | 419 ++++++ app/src/main/res/values-es-rES/arrays.xml | 257 ++++ app/src/main/res/values-es-rES/strings.xml | 508 +++++++ app/src/main/res/values-fr/arrays.xml | 257 ++++ app/src/main/res/values-fr/strings.xml | 449 ++++++ app/src/main/res/values-it/arrays.xml | 257 ++++ app/src/main/res/values-it/strings.xml | 417 ++++++ app/src/main/res/values-ko/arrays.xml | 242 ++++ app/src/main/res/values-ko/strings.xml | 427 ++++++ app/src/main/res/values-night-v35/styles.xml | 41 + app/src/main/res/values-night/colors.xml | 13 + .../main/res/values-night/colors_widget.xml | 7 + app/src/main/res/values-night/styles.xml | 47 + app/src/main/res/values-pl/arrays.xml | 257 ++++ app/src/main/res/values-pl/strings.xml | 525 +++++++ app/src/main/res/values-pt/arrays.xml | 242 ++++ app/src/main/res/values-pt/strings.xml | 369 +++++ app/src/main/res/values-ru/arrays.xml | 257 ++++ app/src/main/res/values-ru/strings.xml | 453 ++++++ app/src/main/res/values-tr/arrays.xml | 257 ++++ app/src/main/res/values-tr/strings.xml | 456 ++++++ app/src/main/res/values-v35/styles.xml | 38 + app/src/main/res/values-zh/arrays.xml | 227 +++ app/src/main/res/values-zh/strings.xml | 403 ++++++ app/src/main/res/values/arrays.xml | 257 ++++ app/src/main/res/values/colors.xml | 71 + app/src/main/res/values/colors_widget.xml | 9 + app/src/main/res/values/dimens.xml | 11 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/ids.xml | 3 + app/src/main/res/values/integers.xml | 6 + app/src/main/res/values/strings.xml | 536 +++++++ app/src/main/res/values/styles.xml | 54 + app/src/main/res/values/typography.xml | 94 ++ app/src/main/res/xml/auto_app_desc.xml | 4 + app/src/main/res/xml/global_preferences.xml | 449 ++++++ app/src/main/res/xml/locale_config.xml | 14 + .../main/res/xml/network_security_config.xml | 9 + app/src/main/res/xml/widget_info.xml | 10 + .../tempo/service/MediaBrowserTree.kt | 497 +++++++ .../service/MediaLibraryServiceCallback.kt | 396 ++++++ .../tempo/service/MediaService.kt | 467 +++++++ .../tempo/ui/fragment/ToolbarFragment.java | 67 + .../cappielloantonio/tempo/util/Flavors.java | 17 + build.gradle | 21 + .../metadata/android/en-US/changelogs/1.txt | 1 + .../metadata/android/en-US/changelogs/2.txt | 2 + .../metadata/android/en-US/changelogs/3.txt | 10 + .../metadata/android/en-US/changelogs/4.txt | 2 + .../metadata/android/en-US/changelogs/5.txt | 5 + .../metadata/android/en-US/changelogs/6.txt | 5 + .../android/en-US/full_description.txt | 19 + .../metadata/android/en-US/images/icon.png | Bin 0 -> 11413 bytes .../en-US/images/phoneScreenshots/1_dark.png | Bin 0 -> 140077 bytes .../en-US/images/phoneScreenshots/1_light.png | Bin 0 -> 145595 bytes .../en-US/images/phoneScreenshots/2_dark.png | Bin 0 -> 141337 bytes .../en-US/images/phoneScreenshots/2_light.png | Bin 0 -> 141312 bytes .../en-US/images/phoneScreenshots/3_dark.png | Bin 0 -> 84525 bytes .../en-US/images/phoneScreenshots/3_light.png | Bin 0 -> 31957 bytes .../en-US/images/phoneScreenshots/4_dark.png | Bin 0 -> 27934 bytes .../en-US/images/phoneScreenshots/4_light.png | Bin 0 -> 27703 bytes .../en-US/images/phoneScreenshots/5_dark.png | Bin 0 -> 17796 bytes .../en-US/images/phoneScreenshots/5_light.png | Bin 0 -> 17737 bytes .../en-US/images/phoneScreenshots/6_dark.png | Bin 0 -> 29759 bytes .../en-US/images/phoneScreenshots/6_light.png | Bin 0 -> 30496 bytes .../en-US/images/phoneScreenshots/8_dark.png | Bin 0 -> 26564 bytes .../en-US/images/phoneScreenshots/8_light.png | Bin 0 -> 26661 bytes .../images/phoneScreenshots/9_screenshot.png | Bin 0 -> 335288 bytes .../android/en-US/short_description.txt | 1 + fastlane/metadata/android/en-US/title.txt | 1 + gradle.properties | 21 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 +++ gradlew.bat | 84 ++ libs/lib-decoder-ffmpeg-release.aar | Bin 0 -> 232481 bytes mockup/svg/tempus_horizontal_logo.png | Bin 0 -> 35053 bytes mockup/usage/add_podcast_feed.png | Bin 0 -> 16576 bytes mockup/usage/add_radio_station.png | Bin 0 -> 6543 bytes mockup/usage/fave_album.png | Bin 0 -> 44394 bytes mockup/usage/fave_artist.png | Bin 0 -> 66007 bytes mockup/usage/player_icons.png | Bin 0 -> 44475 bytes privacy.html | 12 + settings.gradle | 5 + 697 files changed, 71766 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 USAGE.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/1.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/10.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/11.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/12.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/2.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/3.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/4.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/5.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/6.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/7.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/8.json create mode 100644 app/schemas/com.cappielloantonio.tempo.database.AppDatabase/9.json create mode 100644 app/src/degoogled/ic_launcher-playstore.png create mode 100644 app/src/degoogled/java/com/cappielloantonio/tempo/service/MediaService.kt create mode 100644 app/src/degoogled/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java create mode 100644 app/src/degoogled/java/com/cappielloantonio/tempo/util/Flavors.java create mode 100644 app/src/degoogled/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/degoogled/res/drawable/ic_splash_logo.xml create mode 100644 app/src/degoogled/res/menu/main_page_menu.xml create mode 100644 app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/degoogled/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/degoogled/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/degoogled/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/degoogled/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/degoogled/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/degoogled/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/degoogled/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/degoogled/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/degoogled/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/degoogled/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/degoogled/res/values/ic_launcher_background.xml create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/com/cappielloantonio/tempo/App.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/broadcast/receiver/ConnectivityStatusBroadcastReceiver.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/AppDatabase.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/converter/DateConverters.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/ChronologyDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/DownloadDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/FavoriteDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/LyricsDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/PlaylistDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/QueueDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/RecentSearchDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/ServerDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/database/dao/SessionMediaItemDao.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/Github.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/GithubRetrofitClient.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/models/Assets.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/models/Author.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/models/LatestRelease.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/models/Reactions.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/models/Uploader.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/github/utils/UpdateUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideModule.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideRequest.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/glide/IPv6StringLoader.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/ThemeHelper.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/CustomLinearSnapHelper.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/DotsIndicatorDecoration.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/FastScrollbar.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/GridItemDecoration.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/NestedScrollableHost.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/PaginationScrollListener.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/SquareLayout.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/DecadesCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/DialogClickCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaIndexCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/PlaylistCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/PodcastCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/RadioCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/ScanCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/StarCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/interfaces/SystemCallback.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/Chronology.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/Download.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/Favorite.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/HomeSector.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/LyricsCache.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/Queue.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/RecentSearch.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/ReplayGain.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/Server.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/model/SessionMediaItem.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/AlbumRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/ArtistRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/AutomotiveRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/ChronologyRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/DirectoryRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/DownloadRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/FavoriteRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/GenreRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/LyricsRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/OpenRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/QueueRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/RadioRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/ScanRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/SearchingRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/ServerRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/SharingRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/SongRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/service/DownloaderManager.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/service/DownloaderService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/service/EqualizerManager.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/RetrofitClient.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/Subsonic.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/SubsonicPreferences.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/base/ApiResponse.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/base/Version.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumInfo.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList2.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumWithSongsID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Artist.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo2.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfoBase.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistWithAlbumsID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistsID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AudioTrack.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmark.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmarks.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Captions.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessage.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessages.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Child.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Directory.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/DiscTitle.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Error.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ErrorCode.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genre.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genres.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Index.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/IndexID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Indexes.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStation.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStations.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemDate.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemGenre.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxPlaylist.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxStatus.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/License.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Line.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Lyrics.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/LyricsList.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MediaType.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolder.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolders.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NewestPodcasts.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlaying.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlayingEntry.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/OpenSubsonicExtension.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlayQueue.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlist.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlaylistWithSongs.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlists.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastChannel.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastEpisode.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastStatus.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Podcasts.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/RecordLabel.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ResponseStatus.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ScanStatus.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult2.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Share.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Shares.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarArtistID3.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs2.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Songs.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred2.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/StructuredLyrics.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SubsonicResponse.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/TopSongs.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/User.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Users.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoConversion.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoInfo.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Videos.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/CacheUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/EmptyDateTypeAdapter.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/StringUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumArtistPageOrSimilarAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistCatalogueAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistSimilarAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DiscoverSongAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DownloadHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreCatalogueAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GridTrackAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/HomeSectorHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/InternetRadioStationAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicFolderAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlayerSongQueueAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogSongHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelCatalogueAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ServerAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ShareHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SimilarTrackAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/adapter/YearAdapter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/BatteryOptimizationDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ConnectionAlertDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryPickerDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadStorageDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/GithubTempoUpdateDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/HomeRearrangementDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistEditorDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PodcastChannelEditorDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RadioEditorDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RatingDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerSignupDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerUnreachableDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ShareUpdateDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredArtistSyncDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StreamingCacheStorageDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumListPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistCatalogueFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistListPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DirectoryFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DownloadFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/EqualizerFragment.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/FilterFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/GenreCatalogueFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabPodcastFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabRadioFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/IndexFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LandingFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LibraryFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LoginFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerLyricsFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistCatalogueFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelCatalogueFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/DownloadedBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastChannelBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastEpisodeBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ShareBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/HomePager.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerHorizontalPager.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerVerticalPager.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkNavigator.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/DownloadUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/DynamicMediaSourceFactory.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioReader.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioWriter.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/ExternalDownloadMetadataStore.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/IndexUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/MusicUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/NetworkUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/OpenSubsonicExtensionsUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/ReplayGainUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/StreamingCacheDataSource.kt create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/UIUtil.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/util/Util.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumListPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistCatalogueViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistListPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/DownloadViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/FilterViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/GenreCatalogueViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeRearrangementViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/IndexViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/LibraryViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/LoginViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaybackViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlayerBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistCatalogueViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistEditorViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelCatalogueViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelEditorViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastEpisodeBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioEditorViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/RatingViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/SearchViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/SettingViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/ShareBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongBottomSheetViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongListPageViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredArtistsSyncViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredSyncViewModel.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/widget/WidgetActions.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider4x1.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/widget/WidgetUpdateManager.java create mode 100644 app/src/main/java/com/cappielloantonio/tempo/widget/WidgetViewsFactory.java create mode 100644 app/src/main/res/drawable/button_favorite_selector.xml create mode 100644 app/src/main/res/drawable/button_play_pause_selector.xml create mode 100644 app/src/main/res/drawable/button_skip_silence_selector.xml create mode 100644 app/src/main/res/drawable/fast_scrollbar_bubble.xml create mode 100644 app/src/main/res/drawable/fast_scrollbar_handle.xml create mode 100644 app/src/main/res/drawable/gradient_backdrop_background_image.xml create mode 100644 app/src/main/res/drawable/gradient_discover_background_image.xml create mode 100644 app/src/main/res/drawable/gradient_player_cover_background_image.xml create mode 100644 app/src/main/res/drawable/ic_add.xml create mode 100644 app/src/main/res/drawable/ic_arrow_back.xml create mode 100644 app/src/main/res/drawable/ic_arrow_down.xml create mode 100644 app/src/main/res/drawable/ic_bookmark.xml create mode 100644 app/src/main/res/drawable/ic_bookmark_sync.xml create mode 100644 app/src/main/res/drawable/ic_check_circle.xml create mode 100644 app/src/main/res/drawable/ic_close.xml create mode 100644 app/src/main/res/drawable/ic_done.xml create mode 100644 app/src/main/res/drawable/ic_download.xml create mode 100644 app/src/main/res/drawable/ic_drag_handle.xml create mode 100644 app/src/main/res/drawable/ic_eq.xml create mode 100644 app/src/main/res/drawable/ic_error.xml create mode 100644 app/src/main/res/drawable/ic_favorite.xml create mode 100644 app/src/main/res/drawable/ic_favorites_outlined.xml create mode 100644 app/src/main/res/drawable/ic_feed.xml create mode 100644 app/src/main/res/drawable/ic_file_download.xml create mode 100644 app/src/main/res/drawable/ic_filter_list.xml create mode 100644 app/src/main/res/drawable/ic_folder.xml create mode 100644 app/src/main/res/drawable/ic_forward.xml create mode 100644 app/src/main/res/drawable/ic_graphic_eq.xml create mode 100644 app/src/main/res/drawable/ic_history.xml create mode 100644 app/src/main/res/drawable/ic_home.xml create mode 100644 app/src/main/res/drawable/ic_info_stream.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_link.xml create mode 100644 app/src/main/res/drawable/ic_lyrics.xml create mode 100644 app/src/main/res/drawable/ic_lyrics_sync_lock.xml create mode 100644 app/src/main/res/drawable/ic_mix_from_here.xml create mode 100644 app/src/main/res/drawable/ic_more_vert.xml create mode 100644 app/src/main/res/drawable/ic_navigate_next.xml create mode 100644 app/src/main/res/drawable/ic_pause.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_album.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_artist.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_directory.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_folder.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_playlist.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_podcast.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_radio.xml create mode 100644 app/src/main/res/drawable/ic_placeholder_song.xml create mode 100644 app/src/main/res/drawable/ic_play.xml create mode 100644 app/src/main/res/drawable/ic_play_for_work.xml create mode 100644 app/src/main/res/drawable/ic_playlist_add.xml create mode 100644 app/src/main/res/drawable/ic_podcast_download.xml create mode 100644 app/src/main/res/drawable/ic_queue.xml create mode 100644 app/src/main/res/drawable/ic_refresh.xml create mode 100644 app/src/main/res/drawable/ic_repeat.xml create mode 100644 app/src/main/res/drawable/ic_repeat_one.xml create mode 100644 app/src/main/res/drawable/ic_replay.xml create mode 100644 app/src/main/res/drawable/ic_search.xml create mode 100644 app/src/main/res/drawable/ic_server_transcode_priority.xml create mode 100644 app/src/main/res/drawable/ic_settings.xml create mode 100644 app/src/main/res/drawable/ic_share.xml create mode 100644 app/src/main/res/drawable/ic_shuffle.xml create mode 100644 app/src/main/res/drawable/ic_skip_next.xml create mode 100644 app/src/main/res/drawable/ic_skip_previous.xml create mode 100644 app/src/main/res/drawable/ic_skip_silence.xml create mode 100644 app/src/main/res/drawable/ic_skip_silence_outlined.xml create mode 100644 app/src/main/res/drawable/ic_sort_list.xml create mode 100644 app/src/main/res/drawable/ic_splash_logo.xml create mode 100644 app/src/main/res/drawable/ic_star.xml create mode 100644 app/src/main/res/drawable/ic_star_outlined.xml create mode 100644 app/src/main/res/drawable/ic_tap.xml create mode 100644 app/src/main/res/drawable/ic_toolbar_motion_on.xml create mode 100644 app/src/main/res/drawable/ic_toolbar_tempo.xml create mode 100644 app/src/main/res/drawable/ic_transcode.xml create mode 100644 app/src/main/res/drawable/logo.xml create mode 100644 app/src/main/res/drawable/ui_empty_description.xml create mode 100644 app/src/main/res/drawable/ui_empty_list.xml create mode 100644 app/src/main/res/drawable/ui_empty_podcast.xml create mode 100644 app/src/main/res/drawable/ui_empty_radio_station.xml create mode 100644 app/src/main/res/drawable/ui_eq_not_supported.xml create mode 100644 app/src/main/res/drawable/ui_splash_screen.xml create mode 100644 app/src/main/res/drawable/widget_bg.xml create mode 100644 app/src/main/res/font/inter.xml create mode 100644 app/src/main/res/font/inter_black.ttf create mode 100644 app/src/main/res/font/inter_bold.ttf create mode 100644 app/src/main/res/font/inter_extra_bold.ttf create mode 100644 app/src/main/res/font/inter_extra_light.ttf create mode 100644 app/src/main/res/font/inter_light.ttf create mode 100644 app/src/main/res/font/inter_medium.ttf create mode 100644 app/src/main/res/font/inter_regular.ttf create mode 100644 app/src/main/res/font/inter_semi_bold.ttf create mode 100644 app/src/main/res/font/inter_thin.ttf create mode 100644 app/src/main/res/layout-land/inner_fragment_player_controller_layout.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/bottom_sheet_album_dialog.xml create mode 100644 app/src/main/res/layout/bottom_sheet_artist_dialog.xml create mode 100644 app/src/main/res/layout/bottom_sheet_downloaded_dialog.xml create mode 100644 app/src/main/res/layout/bottom_sheet_podcast_channel_dialog.xml create mode 100644 app/src/main/res/layout/bottom_sheet_podcast_episode_dialog.xml create mode 100644 app/src/main/res/layout/bottom_sheet_share_dialog.xml create mode 100644 app/src/main/res/layout/bottom_sheet_song_dialog.xml create mode 100644 app/src/main/res/layout/chip_search_filter_genre.xml create mode 100644 app/src/main/res/layout/dialog_battery_optimization.xml create mode 100644 app/src/main/res/layout/dialog_connection_alert.xml create mode 100644 app/src/main/res/layout/dialog_delete_download_storage.xml create mode 100644 app/src/main/res/layout/dialog_download_directory.xml create mode 100644 app/src/main/res/layout/dialog_download_storage.xml create mode 100644 app/src/main/res/layout/dialog_github_tempo_update.xml create mode 100644 app/src/main/res/layout/dialog_home_rearrangement.xml create mode 100644 app/src/main/res/layout/dialog_playlist_chooser.xml create mode 100644 app/src/main/res/layout/dialog_playlist_editor.xml create mode 100644 app/src/main/res/layout/dialog_podcast_channel_editor.xml create mode 100644 app/src/main/res/layout/dialog_radio_editor.xml create mode 100644 app/src/main/res/layout/dialog_rating.xml create mode 100644 app/src/main/res/layout/dialog_server_signup.xml create mode 100644 app/src/main/res/layout/dialog_server_unreachable.xml create mode 100644 app/src/main/res/layout/dialog_share_update.xml create mode 100644 app/src/main/res/layout/dialog_starred_album_sync.xml create mode 100644 app/src/main/res/layout/dialog_starred_artist_sync.xml create mode 100644 app/src/main/res/layout/dialog_starred_sync.xml create mode 100644 app/src/main/res/layout/dialog_streaming_cache_storage.xml create mode 100644 app/src/main/res/layout/dialog_track_info.xml create mode 100644 app/src/main/res/layout/fragment_album_catalogue.xml create mode 100644 app/src/main/res/layout/fragment_album_list_page.xml create mode 100644 app/src/main/res/layout/fragment_album_page.xml create mode 100644 app/src/main/res/layout/fragment_artist_catalogue.xml create mode 100644 app/src/main/res/layout/fragment_artist_list_page.xml create mode 100644 app/src/main/res/layout/fragment_artist_page.xml create mode 100644 app/src/main/res/layout/fragment_directory.xml create mode 100644 app/src/main/res/layout/fragment_download.xml create mode 100644 app/src/main/res/layout/fragment_equalizer.xml create mode 100644 app/src/main/res/layout/fragment_filter.xml create mode 100644 app/src/main/res/layout/fragment_genre_catalogue.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_home_tab_music.xml create mode 100644 app/src/main/res/layout/fragment_home_tab_podcast.xml create mode 100644 app/src/main/res/layout/fragment_home_tab_radio.xml create mode 100644 app/src/main/res/layout/fragment_index.xml create mode 100644 app/src/main/res/layout/fragment_landing.xml create mode 100644 app/src/main/res/layout/fragment_library.xml create mode 100644 app/src/main/res/layout/fragment_login.xml create mode 100644 app/src/main/res/layout/fragment_player_bottom_sheet.xml create mode 100644 app/src/main/res/layout/fragment_playlist_catalogue.xml create mode 100644 app/src/main/res/layout/fragment_playlist_page.xml create mode 100644 app/src/main/res/layout/fragment_podcast_channel_catalogue.xml create mode 100644 app/src/main/res/layout/fragment_podcast_channel_page.xml create mode 100644 app/src/main/res/layout/fragment_search.xml create mode 100644 app/src/main/res/layout/fragment_settings.xml create mode 100644 app/src/main/res/layout/fragment_song_list_page.xml create mode 100644 app/src/main/res/layout/fragment_toolbar.xml create mode 100644 app/src/main/res/layout/inner_fragment_player_controller.xml create mode 100644 app/src/main/res/layout/inner_fragment_player_controller_layout.xml create mode 100644 app/src/main/res/layout/inner_fragment_player_cover.xml create mode 100644 app/src/main/res/layout/inner_fragment_player_lyrics.xml create mode 100644 app/src/main/res/layout/inner_fragment_player_queue.xml create mode 100644 app/src/main/res/layout/item_home_catalogue_podcast_channel.xml create mode 100644 app/src/main/res/layout/item_home_discover_song.xml create mode 100644 app/src/main/res/layout/item_home_grid_track.xml create mode 100644 app/src/main/res/layout/item_home_internet_radio_station.xml create mode 100644 app/src/main/res/layout/item_home_podcast_episode.xml create mode 100644 app/src/main/res/layout/item_home_similar_track.xml create mode 100644 app/src/main/res/layout/item_home_year.xml create mode 100644 app/src/main/res/layout/item_horizontal_album.xml create mode 100644 app/src/main/res/layout/item_horizontal_artist.xml create mode 100644 app/src/main/res/layout/item_horizontal_download.xml create mode 100644 app/src/main/res/layout/item_horizontal_home_sector.xml create mode 100644 app/src/main/res/layout/item_horizontal_playlist.xml create mode 100644 app/src/main/res/layout/item_horizontal_playlist_dialog.xml create mode 100644 app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml create mode 100644 app/src/main/res/layout/item_horizontal_podcast_channel.xml create mode 100644 app/src/main/res/layout/item_horizontal_share.xml create mode 100644 app/src/main/res/layout/item_horizontal_track.xml create mode 100644 app/src/main/res/layout/item_library_album.xml create mode 100644 app/src/main/res/layout/item_library_artist.xml create mode 100644 app/src/main/res/layout/item_library_artist_page_or_similar_album.xml create mode 100644 app/src/main/res/layout/item_library_catalogue_album.xml create mode 100644 app/src/main/res/layout/item_library_catalogue_artist.xml create mode 100644 app/src/main/res/layout/item_library_catalogue_genre.xml create mode 100644 app/src/main/res/layout/item_library_genre.xml create mode 100644 app/src/main/res/layout/item_library_music_directory.xml create mode 100644 app/src/main/res/layout/item_library_music_folder.xml create mode 100644 app/src/main/res/layout/item_library_music_index.xml create mode 100644 app/src/main/res/layout/item_library_similar_artist.xml create mode 100644 app/src/main/res/layout/item_login_server.xml create mode 100644 app/src/main/res/layout/item_player_queue_song.xml create mode 100644 app/src/main/res/layout/item_search_suggestion.xml create mode 100644 app/src/main/res/layout/layout_fast_scrollbar.xml create mode 100644 app/src/main/res/layout/layout_toolbar.xml create mode 100644 app/src/main/res/layout/player_body_bottom_sheet.xml create mode 100644 app/src/main/res/layout/player_header_bottom_sheet.xml create mode 100644 app/src/main/res/layout/view_asset_link_row.xml create mode 100644 app/src/main/res/layout/widget_layout_compact.xml create mode 100644 app/src/main/res/layout/widget_layout_large.xml create mode 100644 app/src/main/res/layout/widget_layout_large_short.xml create mode 100644 app/src/main/res/layout/widget_layout_medium.xml create mode 100644 app/src/main/res/layout/widget_preview_compact.xml create mode 100644 app/src/main/res/menu/album_page_menu.xml create mode 100644 app/src/main/res/menu/artist_list_menu.xml create mode 100644 app/src/main/res/menu/bottom_nav_menu.xml create mode 100644 app/src/main/res/menu/directory_page_menu.xml create mode 100644 app/src/main/res/menu/download_popup_menu.xml create mode 100644 app/src/main/res/menu/filter_podcast_episode_popup_menu.xml create mode 100644 app/src/main/res/menu/filter_top_songs_popup_menu.xml create mode 100644 app/src/main/res/menu/login_page_menu.xml create mode 100644 app/src/main/res/menu/main_page_menu.xml create mode 100644 app/src/main/res/menu/playlist_page_menu.xml create mode 100644 app/src/main/res/menu/sort_album_popup_menu.xml create mode 100644 app/src/main/res/menu/sort_artist_popup_menu.xml create mode 100644 app/src/main/res/menu/sort_genre_popup_menu.xml create mode 100644 app/src/main/res/menu/sort_horizontal_album_popup_menu.xml create mode 100644 app/src/main/res/menu/sort_horizontal_artist_popup_menu.xml create mode 100644 app/src/main/res/menu/sort_playlist_popup_menu.xml create mode 100644 app/src/main/res/menu/sort_song_popup_menu.xml create mode 100644 app/src/main/res/menu/toolbar_menu.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/navigation/nav_graph.xml create mode 100644 app/src/main/res/values-de/arrays.xml create mode 100644 app/src/main/res/values-de/strings.xml create mode 100644 app/src/main/res/values-es-rES/arrays.xml create mode 100644 app/src/main/res/values-es-rES/strings.xml create mode 100644 app/src/main/res/values-fr/arrays.xml create mode 100644 app/src/main/res/values-fr/strings.xml create mode 100644 app/src/main/res/values-it/arrays.xml create mode 100644 app/src/main/res/values-it/strings.xml create mode 100644 app/src/main/res/values-ko/arrays.xml create mode 100644 app/src/main/res/values-ko/strings.xml create mode 100644 app/src/main/res/values-night-v35/styles.xml create mode 100644 app/src/main/res/values-night/colors.xml create mode 100644 app/src/main/res/values-night/colors_widget.xml create mode 100644 app/src/main/res/values-night/styles.xml create mode 100644 app/src/main/res/values-pl/arrays.xml create mode 100644 app/src/main/res/values-pl/strings.xml create mode 100644 app/src/main/res/values-pt/arrays.xml create mode 100644 app/src/main/res/values-pt/strings.xml create mode 100644 app/src/main/res/values-ru/arrays.xml create mode 100644 app/src/main/res/values-ru/strings.xml create mode 100644 app/src/main/res/values-tr/arrays.xml create mode 100644 app/src/main/res/values-tr/strings.xml create mode 100644 app/src/main/res/values-v35/styles.xml create mode 100644 app/src/main/res/values-zh/arrays.xml create mode 100644 app/src/main/res/values-zh/strings.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/colors_widget.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/ids.xml create mode 100644 app/src/main/res/values/integers.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/values/typography.xml create mode 100644 app/src/main/res/xml/auto_app_desc.xml create mode 100644 app/src/main/res/xml/global_preferences.xml create mode 100644 app/src/main/res/xml/locale_config.xml create mode 100644 app/src/main/res/xml/network_security_config.xml create mode 100644 app/src/main/res/xml/widget_info.xml create mode 100644 app/src/tempus/java/com/cappielloantonio/tempo/service/MediaBrowserTree.kt create mode 100644 app/src/tempus/java/com/cappielloantonio/tempo/service/MediaLibraryServiceCallback.kt create mode 100644 app/src/tempus/java/com/cappielloantonio/tempo/service/MediaService.kt create mode 100644 app/src/tempus/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java create mode 100644 app/src/tempus/java/com/cappielloantonio/tempo/util/Flavors.java create mode 100644 build.gradle create mode 100644 fastlane/metadata/android/en-US/changelogs/1.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/2.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/3.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/4.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/5.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/6.txt create mode 100644 fastlane/metadata/android/en-US/full_description.txt create mode 100644 fastlane/metadata/android/en-US/images/icon.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/1_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/1_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/2_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/2_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/3_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/3_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/4_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/4_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/5_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/5_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/6_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/6_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/8_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/8_light.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/9_screenshot.png create mode 100644 fastlane/metadata/android/en-US/short_description.txt create mode 100644 fastlane/metadata/android/en-US/title.txt create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 libs/lib-decoder-ffmpeg-release.aar create mode 100644 mockup/svg/tempus_horizontal_logo.png create mode 100644 mockup/usage/add_podcast_feed.png create mode 100644 mockup/usage/add_radio_station.png create mode 100644 mockup/usage/fave_album.png create mode 100644 mockup/usage/fave_artist.png create mode 100644 mockup/usage/player_icons.png create mode 100644 privacy.html create mode 100644 settings.gradle diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..2694a36 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,253 @@ +# Changelog + +## Pending release... +* chore: Update russian strings.xml by @Sevinfolds in https://github.com/eddyizm/tempus/pull/249 +* fix: disallow duplicate songs in queue by @eddyizm in https://github.com/eddyizm/tempus/pull/252 +* fix:github release check by @eddyizm in https://github.com/eddyizm/tempus/pull/253 +* fix: Fixed crash when viewing share by @drakeerv in https://github.com/eddyizm/tempus/pull/255 +* chore: Update Polish translation by @skajmer in https://github.com/eddyizm/tempus/pull/257 +* fix: add podcast/radio channel visible when empty podcasts/radio by @eddyizm in https://github.com/eddyizm/tempus/pull/260 + +## New Contributors +* @Sevinfolds made their first contribution in https://github.com/eddyizm/tempus/pull/249 +* @drakeerv made their first contribution in https://github.com/eddyizm/tempus/pull/255 + +## [4.2.0](https://github.com/eddyizm/tempo/releases/tag/v4.2.0) (2025-11-09) +## What's Changed +* fix: Equalizer fix in main build variant by @jaime-grj in https://github.com/eddyizm/tempus/pull/239 +* fix: Images not filling holder by @eddyizm in https://github.com/eddyizm/tempus/pull/244 +* feat: Make artist and album clickable by @eddyizm in https://github.com/eddyizm/tempus/pull/243 +* feat: implement scroll to currently playing feature by @shrapnelnet in https://github.com/eddyizm/tempus/pull/247 +* fix: shuffling genres only queuing 25 songs by @shrapnelnet in https://github.com/eddyizm/tempus/pull/246 + +## New Contributors +* @shrapnelnet made their first contribution in https://github.com/eddyizm/tempus/pull/247 + +**Full Changelog**: https://github.com/eddyizm/tempus/compare/v4.1.3...v4.2.0 + +## [4.1.3](https://github.com/eddyizm/tempo/releases/tag/v4.1.3) (2025-11-06) +## What's Changed +* [fix: equalizer missing referenced value](https://github.com/eddyizm/tempus/commit/923cfd5bc97ed7db28c90348e3619d0a784fc434) +* Fix: Album track list bug by @eddyizm in https://github.com/eddyizm/tempus/pull/237 +* fix: Add listener to enable equalizer when audioSessionId changes by @jaime-grj in https://github.com/eddyizm/tempus/pull/235 + +**Full Changelog**: https://github.com/eddyizm/tempus/compare/v4.1.0...v4.1.3 + +## [4.1.0](https://github.com/eddyizm/tempo/releases/tag/v4.1.0) (2025-11-05) +## What's Changed +* chore(i18n): Update Spanish (es-ES) translation by @jaime-grj in https://github.com/eddyizm/tempus/pull/205 +* shuffle for artists without using `getTopSongs` by @pca006132 in https://github.com/eddyizm/tempus/pull/207 +* Update USAGE.md with instant mix details by @zc-devs in https://github.com/eddyizm/tempus/pull/220 +* feat: sort artists by album count by @pca006132 in https://github.com/eddyizm/tempus/pull/206 +* Fix downloaded tab performance by @pca006132 in https://github.com/eddyizm/tempus/pull/210 +* fix: remove NestedScrollViews for fragment_album_page by @pca006132 in https://github.com/eddyizm/tempus/pull/216 +* fix: playlist page should not snap by @pca006132 in https://github.com/eddyizm/tempus/pull/218 +* fix: do not override getItemViewType and getItemId by @pca006132 in https://github.com/eddyizm/tempus/pull/221 +* chore: update media3 dependencies by @pca006132 in https://github.com/eddyizm/tempus/pull/217 +* fix: update MediaItems after network change by @pca006132 in https://github.com/eddyizm/tempus/pull/222 +* fix: skip mapping downloaded item by @pca006132 in https://github.com/eddyizm/tempus/pull/228 + +## New Contributors +* @pca006132 made their first contribution in https://github.com/eddyizm/tempus/pull/207 + +**Full Changelog**: https://github.com/eddyizm/tempus/compare/v4.0.7...v4.1.0 + +## [4.0.7](https://github.com/eddyizm/tempo/releases/tag/v4.0.7) (2025-10-28) +## What's Changed +* chore: updated tempo references to tempus including github check by @eddyizm in https://github.com/eddyizm/tempus/pull/197 +* fix: Crash on share no expiration date or field returned from api by @eddyizm in https://github.com/eddyizm/tempus/pull/199 + +**Full Changelog**: https://github.com/eddyizm/tempus/compare/v4.0.6...v4.0.7 + +## [4.0.6](https://github.com/eddyizm/tempo/releases/tag/v4.0.6) (2025-10-26) +## Attention +This release will not update previous installs as it is considered a new app, no longer `Tempo`, new icon, new app id, and new app name. Hoping it will not be a huge inconvenience but was necessary in order to publish to app stores like IzzyDroid and FDroid. + +**Android Auto** +Support should be the same as before, however, I was not able to test any of the icons/visuals, so please let me know if there are any remnants of the tempo logo/icon as I believe I removed them all and replaced them successfully. + +## What's Changed +* Check also underlying transport by @zc-devs in https://github.com/eddyizm/tempus/pull/90 +* fix: updated workflow for 32/64 bit apks by @eddyizm in https://github.com/eddyizm/tempus/pull/176 +* Unhide genre from album details view by @sebaFlame in https://github.com/eddyizm/tempus/pull/161 +* fix: persist album sorting on resume by @eddyizm in https://github.com/eddyizm/tempus/pull/181 +* chore: update readme and usage references to tempus. added new banner… by @eddyizm in https://github.com/eddyizm/tempus/pull/182 +* Tempus rebrand by @eddyizm in https://github.com/eddyizm/tempus/pull/183 +* Update Polish translation by @skajmer in https://github.com/eddyizm/tempus/pull/188 + +## New Contributors +* @zc-devs made their first contribution in https://github.com/eddyizm/tempus/pull/90 +* @sebaFlame made their first contribution in https://github.com/eddyizm/tempus/pull/161 + +**Full Changelog**: https://github.com/eddyizm/tempus/compare/v3.17.14...v4.0.1 + +## [3.17.14](https://github.com/eddyizm/tempo/releases/tag/v3.17.14) (2025-10-16) +## What's Changed +* fix: General build warning and playback issues by @le-firehawk in https://github.com/eddyizm/tempo/pull/167 +* fix: persist album sort preference by @eddyizm in https://github.com/eddyizm/tempo/pull/168 +* Fix album parse empty date field by @eddyizm in https://github.com/eddyizm/tempo/pull/171 +* fix: Include shuffle/repeat controls in f-droid build's media notific… by @le-firehawk in https://github.com/eddyizm/tempo/pull/174 +* fix: limits image size to prevent widget crash #172 by @eddyizm in https://github.com/eddyizm/tempo/pull/175 + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.17.0...v3.17.14 + +## [3.17.0](https://github.com/eddyizm/tempo/releases/tag/v3.17.0) (2025-10-10) +## What's Changed +* chore: adding screenshot and docs for 4 icons/buttons in player control by @eddyizm in https://github.com/eddyizm/tempo/pull/162 +* Update Polish translation by @skajmer in https://github.com/eddyizm/tempo/pull/160 +* feat: Make all objects in Tempo references for quick access by @le-firehawk in https://github.com/eddyizm/tempo/pull/158 +* fix: Glide module incorrectly encoding IPv6 addresses by @le-firehawk in https://github.com/eddyizm/tempo/pull/159 + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.16.6...v3.17.0 + +## [3.16.6](https://github.com/eddyizm/tempo/releases/tag/v3.16.6) (2025-10-08) +## What's Changed +* chore(i18n): Update Spanish translation by @jaime-grj in https://github.com/eddyizm/tempo/pull/151 +* fix: Re-add new equalizer settings that got lost by @jaime-grj in https://github.com/eddyizm/tempo/pull/153 +* chore: removed play variant by @eddyizm in https://github.com/eddyizm/tempo/pull/155 +* fix: updating release workflow to account for the 32/64 bit builds an… by @eddyizm in https://github.com/eddyizm/tempo/pull/156 +* feat: Show sampling rate and bit depth in downloads by @jaime-grj in https://github.com/eddyizm/tempo/pull/154 +* fix: Replace hardcoded strings in SettingsFragment by @jaime-grj in https://github.com/eddyizm/tempo/pull/152 + + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.16.0...v3.16.6 + +## [3.16.0](https://github.com/eddyizm/tempo/releases/tag/v3.16.0) (2025-10-07) +## What's Changed +* chore: add sha256 fingerprint for validation by @eddyizm in https://github.com/eddyizm/tempo/commit/3c58e6fbb2157a804853259dfadbbffe3b6793b5 +* fix: Prevent crash when getting artist radio and song list is null by @jaime-grj in https://github.com/eddyizm/tempo/pull/117 +* chore: Update French localization by @benoit-smith in https://github.com/eddyizm/tempo/pull/125 +* fix: Update search query validation to require at least 2 characters instead of 3 by @jaime-grj in https://github.com/eddyizm/tempo/pull/124 +* feat: download starred artists. by @eddyizm in https://github.com/eddyizm/tempo/pull/137 +* feat: Enable downloading of song lyrics for offline viewing by @le-firehawk in https://github.com/eddyizm/tempo/pull/99 +* fix: Lag during startup when local url is not available by @SinTan1729 in https://github.com/eddyizm/tempo/pull/110 +* chore: add link to discussion page in settings by @eddyizm in https://github.com/eddyizm/tempo/pull/143 +* feat: Notification heart rating by @eddyizm in https://github.com/eddyizm/tempo/pull/140 +* chore: Unify and update polish translation by @skajmer in https://github.com/eddyizm/tempo/pull/146 +* chore: added sha256 signing key for verification by @eddyizm in https://github.com/eddyizm/tempo/pull/147 +* feat: Support user-defined download directory for media by @le-firehawk in https://github.com/eddyizm/tempo/pull/21 +* feat: Added support for skipping duplicates by @SinTan1729 in https://github.com/eddyizm/tempo/pull/135 +* feat: Add home screen music playback widget and some updates in Turkish localization by @mucahit-kaya in https://github.com/eddyizm/tempo/pull/98 + +## New Contributors +* @SinTan1729 made their first contribution in https://github.com/eddyizm/tempo/pull/110 + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.15.0...v3.16.0 + +## [3.15.0](https://github.com/eddyizm/tempo/releases/tag/v3.15.0) (2025-09-23) +## What's Changed +* chore: Update French localization by @benoit-smith in https://github.com/eddyizm/tempo/pull/84 +* chore: Update RU locale by @ArchiDevil in https://github.com/eddyizm/tempo/pull/87 +* chore: Update Korean translations by @kongwoojin in https://github.com/eddyizm/tempo/pull/97 +* fix: only plays the first song on an album by @eddyizm in https://github.com/eddyizm/tempo/pull/81 +* fix: handle null and not crash when disconnecting chromecast by @eddyizm in https://github.com/eddyizm/tempo/pull/81 +* feat: Built-in audio equalizer by @jaime-grj in https://github.com/eddyizm/tempo/pull/94 +* fix: Resolve playback issues with live radio MPEG & HLS streams by @jaime-grj in https://github.com/eddyizm/tempo/pull/89 +* chore: Updates to polish translation by @skajmer in https://github.com/eddyizm/tempo/pull/105 +* feat: added 32bit build and debug build for testing. Removed unused f… by @eddyizm in https://github.com/eddyizm/tempo/pull/108 +* feat: Mark currently playing song with play/pause button by @jaime-grj in https://github.com/eddyizm/tempo/pull/107 +* fix: add listener to track playlist click/change by @eddyizm in https://github.com/eddyizm/tempo/pull/113 +* feat: Tap anywhere on the song item to toggle playback by @jaime-grj in https://github.com/eddyizm/tempo/pull/112 + +## New Contributors +* @ArchiDevil made their first contribution in https://github.com/eddyizm/tempo/pull/87 +* @kongwoojin made their first contribution in https://github.com/eddyizm/tempo/pull/97 + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.14.8...v3.15.0 + + +## [3.14.8](https://github.com/eddyizm/tempo/releases/tag/v3.14.8) (2025-08-30) +## What's Changed +* fix: Use correct SearchView widget to avoid crash in AlbumListPageFragment by @jaime-grj in https://github.com/eddyizm/tempo/pull/76 +* chore(i18n): Update Spanish (es-ES) and English translations by @jaime-grj in https://github.com/eddyizm/tempo/pull/77 +* style: Center subtitle text in empty_download_layout in fragment_download.xml when there is more than one line by @jaime-grj in https://github.com/eddyizm/tempo/pull/78 +* fix: Disable "sync starred tracks/albums" switches when Cancel is clicked in warning dialog, use proper view for "Sync starred albums" dialog by @jaime-grj in https://github.com/eddyizm/tempo/pull/79 +* bug fixes, chores, docs v3.14.8 by @eddyizm in https://github.com/eddyizm/tempo/pull/80 + + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.14.1...v3.14.8 + +## [3.14.1](https://github.com/eddyizm/tempo/releases/tag/v3.14.1) (2025-08-30) +## What's Changed +* feat: rating dialog added to album page by @eddyizm in https://github.com/eddyizm/tempo/pull/52 +* style: Add song rating bar in landscape player controller layout by @jaime-grj in https://github.com/eddyizm/tempo/pull/57 +* feat: setting to show/hide 5 star rating on playerview by @eddyizm in https://github.com/eddyizm/tempo/pull/59 +* chore: setting-to-hide-song-rating by @eddyizm in https://github.com/eddyizm/tempo/pull/60 +* fix: catches null value and prepares bundle appropriately adding sing… by @eddyizm in https://github.com/eddyizm/tempo/pull/64 +* fix: artist filtering in library view browse artist resolves #45 by @eddyizm in https://github.com/eddyizm/tempo/pull/69 +* chore: Update French localization by @benoit-smith in https://github.com/eddyizm/tempo/pull/70 +* feat: adds sync starred albums functionality #66 by @eddyizm in https://github.com/eddyizm/tempo/pull/73 + + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.13.0...v3.14.1 + +## [3.13.0](https://github.com/eddyizm/tempo/releases/tag/v3.13.0) (2025-08-23) +## What's Changed +* style: Change position and size of rating container by @jaime-grj in https://github.com/eddyizm/tempo/pull/44 +* feat: Add Turkish localization (values-tr) by @mucahit-kaya in https://github.com/eddyizm/tempo/pull/50 +* chore: adding a note/not fully baked label to the sync user play queue setting by @eddyizm in https://github.com/eddyizm/tempo/commit/8ed0a4642bd0cd637c65e3115142596331fa7ef7 +* fix: moved hardcoded italian save text to string template, updated with english and italian language xmls by @eddyizm in https://github.com/eddyizm/tempo/commit/26a5fb029a07752c9c0db0d08a89afd638772579 + + +## New Contributors +* @mucahit-kaya made their first contribution in https://github.com/eddyizm/tempo/pull/50 + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.12.0...v3.13.0 + +## [3.12.0](https://github.com/eddyizm/tempo/releases/tag/v3.12.0) (2025-08-15) +### What's Changed +* [chore]: add German translations for track info and home section strings (#29) by @BreadWare92 in https://github.com/eddyizm/tempo/pull/31 +* [chore]: increased "Offline mode" text size, changed its color in dark theme by @jaime-grj in https://github.com/eddyizm/tempo/pull/33 +* [chore]: Translations for sections by @skajmer in https://github.com/eddyizm/tempo/pull/30 +* [chore]: Update French localization by @benoit-smith in https://github.com/eddyizm/tempo/pull/36 +* [fix]: Show placeholder string in TrackInfoDialog fields when there is no data by @jaime-grj in https://github.com/eddyizm/tempo/pull/37 +* [feat]: added transcoding codec and bitrate info to PlayerControllerFragment, replace hardcoded strings by @jaime-grj in https://github.com/eddyizm/tempo/pull/38 +* [chore]: Update French localization by @benoit-smith in https://github.com/eddyizm/tempo/pull/39 +* [feat]: show rating on song view by @eddyizm in https://github.com/eddyizm/tempo/pull/40 + +### New Contributors +* @BreadWare92 made their first contribution in https://github.com/eddyizm/tempo/pull/31 +* @skajmer made their first contribution in https://github.com/eddyizm/tempo/pull/30 +* @benoit-smith made their first contribution in https://github.com/eddyizm/tempo/pull/36 + +**Full Changelog**: https://github.com/eddyizm/tempo/compare/v3.11.2...v3.12.0 + +## [3.11.2](https://github.com/eddyizm/tempo/releases/tag/v3.11.2) (2025-08-09) + + +([Full Changelog](https://github.com/eddyizm/tempo/compare/v3.10.0...eddyizm:tempo:v3.11.2?expand=1)) + +**Housekeeping:** + +- [Chore] Added change log. + +**Merged pull requests:** + +- [Fix] make hardcoded strings in home fragment dynamic [\#27](https://github.com/eddyizm/tempo/pull/22) ([jaime-grj](https://github.com/jaime-grj)) + +- [Fix] show "System default" language option, sort languages alphabetically, include country when showing language in settings [\#26](https://github.com/eddyizm/tempo/pull/26) ([jaime-grj ](https://github.com/jaime-grj)) + +- [Fix] check for IP connectivity instead of Internet access [\#25](https://github.com/eddyizm/tempo/pull/25) ([jaime-grj](https://github.com/jaime-grj)) + +- [Fix] hide unnecessary TextViews in AlbumPageFragment when there is no data, fixed incorrect album release date [\#24](https://github.com/eddyizm/tempo/pull/24) ([jaime-grj](https://github.com/jaime-grj)) + +- [Feat] show sampling rate and bit depth if available [\#22](https://github.com/eddyizm/tempo/pull/22) ([jaime-grj](https://github.com/jaime-grj)) + +- [Feat] Fix lyric scrolling during playback, keep screen on while viewing [\#20](https://github.com/eddyizm/tempo/pull/20) ([le-firehawk](https://github.com/le-firehawk)) + +## [3.10.0](https://github.com/eddyizm/tempo/releases/tag/v3.10.0) (2025-08-04) + +**Merged pull requests:** + +- [Fix] redirection to artist fragment on artist label click [\#379](https://github.com/CappielloAntonio/tempo/pull/379) +- [Fix] Player queue lag, limits [\#385](https://github.com/CappielloAntonio/tempo/pull/385) +- [Fix] crash when sorting albums with a null artist [\#389](https://github.com/CappielloAntonio/tempo/pull/389) +- [Feat] Display toast message after adding a song to a playlist [\#371](https://github.com/CappielloAntonio/tempo/pull/371) +- [Feat] Album add to playlist context menu item [\#367](https://github.com/CappielloAntonio/tempo/pull/367) +- [Feat] Store and retrieve replay and shuffle states in preferences [\#397](https://github.com/CappielloAntonio/tempo/pull/397) +- [Feat] Enhance Android media player notification window #400 + [\#400](https://github.com/CappielloAntonio/tempo/pull/400) +- [Chore] Spanish translation [\#374](https://github.com/CappielloAntonio/tempo/pull/374) +- [Chore] Polish translation [\#378](https://github.com/CappielloAntonio/tempo/pull/378) + +***This log is for this fork to detail updates since 3.9.0 from the main repo.*** \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 0ebc5a1..874a718 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,126 @@ -# tempus +

+ Tempus +

-Subsonic Audio Streaming Android \ No newline at end of file +--- + +

+ Access your music library on all your android devices +

+ +
+ + + + +
+ +

+ + +

+ + + +**Tempus** is an open-source and lightweight music client for Subsonic, designed and built natively for Android. It provides a seamless and intuitive music streaming experience, allowing you to access and play your Subsonic music library directly from your Android device. + +Tempus does not rely on magic algorithms to decide what you should listen to. Instead, the interface is built around your listening history, randomness, and optionally integrates with services like Last.fm to personalize your music experience. + +The project is a fork of [Tempo](#credits). + +**If you find Tempus useful, please consider starring the project on GitHub. It would mean a lot to me and help promote the app to a wider audience.** + +**Use the Github version of the app for full Android Auto and Chromecast support.** + +sha256 signing key fingerprint +`B7:85:01:B9:34:D0:4E:0A:CA:8D:94:AF:D6:72:6A:4D:1D:CE:65:79:7F:1D:41:71:0F:64:3C:29:00:EB:1D:1D` + +### Releases + +Please note the two variants in the release assets include release/debug and 32/64 bit flavors. + +`app-tempus` <- The github release with all the android auto/chromecast features + +`app-degoogled*` <- The izzyOnDroid release that goes without any of the google stuff. It is now available on izzyOnDroid (64bit) I am releasing the both 32/64bit apk's here on github for those who need a 32bit version. + +[CHANGELOG.md](CHANGELOG.md) + +## Usage + +[Documentation](USAGE.md) (work in progress) + +## Features +- **Subsonic Integration**: Tempus seamlessly integrates with your Subsonic server, providing you with easy access to your entire music collection on the go. +- **Sleek and Intuitive UI**: Enjoy a clean and user-friendly interface designed to enhance your music listening experience, tailored to your preferences and listening history. +- **Browse and Search**: Easily navigate through your music library using various browsing and searching options, including artists, albums, genres, playlists, decades and more. +- **Streaming and Offline Mode**: Stream music directly from your Subsonic server. Offline mode is currently under active development and may have limitations when using multiple servers. +- **Playlist Management**: Create, edit, and manage playlists to curate your perfect music collection. +- **Gapless Playback**: Experience uninterrupted playback with gapless listening mode. +- **Chromecast Support**: Stream your music to Chromecast devices. The support is currently in a rudimentary state. +- **Scrobbling Integration**: Optionally integrate Tempus with Last.fm or Listenbrainz.org to scrobble your played tracks, gather music insights, and further personalize your music recommendations, if supported by your Subsonic server. +- **Podcasts and Radio**: If your Subsonic server supports it, listen to podcasts and radio shows directly within Tempus, expanding your audio entertainment options. +- **Transcoding Support**: Activate transcoding of tracks on your Subsonic server, allowing you to set a transcoding profile for optimized streaming directly from the app. This feature requires support from your Subsonic server. +- **Android Auto Support**: Enjoy your favorite music on the go with full Android Auto integration, allowing you to seamlessly control and listen to your tracks directly from your mobile device while driving. +- **Multiple Libraries**: Tempus handles multi-library setups gracefully. They are displayed as Library folders. +- **Equalizer**: Option to use in app equalizer. +- **Widget**: New widget to keeping the basic controls on your screen at all times. +- **Available in 11 languages**: Currently in Chinese, French, German, Italian, Korean, Polish, Portuguese, Russion, Spanish and Turkish + +## Screenshot + +

+ Light theme +

+ +

+ + + + + + + +

+ +
+ +

+ Dark theme +

+ +

+ + + + + + + + +

+ +## Contributing + +Please fork and open PR's against the development branch. Make sure your PR builds successfully. + +If there is an UI change, please include a before/after screenshot and a short video/gif if that helps elaborating the fix/feature in the PR. + +Currently there are no tests but I would love to start on some unit tests. + +Not a hard requirement but any new feature/change should ideally include an update to the nacent documention. + +## Support + +[**Buy me a coffee**](https://ko-fi.com/eddyizm) +bitcoin: `3QVHSSCJvn6yXEcJ3A3cxYLMmbvFsrnUs5` + +## License + +Tempus is released under the [GNU General Public License v3.0](LICENSE). Feel free to modify, distribute, and use the app in accordance with the terms of the license. Contributions to the project are also welcome. + +## Credits +Thanks to the original repo/creator [CappielloAntonio](https://github.com/CappielloAntonio) (forked from v3.9.0) + +[Opensvg.org](https://opensvg.org) for the new turntable logo. \ No newline at end of file diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 0000000..05abee9 --- /dev/null +++ b/USAGE.md @@ -0,0 +1,183 @@ +# Tempus Usage Guide +[<- back home](README.md) + +## Table of Contents +- [Prerequisites](#prerequisites) +- [Getting Started](#getting-started) +- [Server Configuration](#server-configuration) +- [Main Features](#main-features) + +- [Navigation](#navigation) +- [Playback Controls](#playback-controls) +- [Favorites](#favorites) +- [Playlist Management](#playlist-management) +- [Android Auto](#android-auto) +- [Settings](#settings) +- [Troubleshooting](#troubleshooting) + +## Prerequisites + +**Important Notice**: This app is a Subsonic-compatible client and does not provide any music content itself. To use this application, you must have: + +- An active Subsonic API server (or compatible service) already set up +- Valid login credentials for your Subsonic server +- Music content uploaded and organized on your server + +### Verified backends +This app works with any service that implements the Subsonic API, including: +- [LMS - Lightweight Music Server](https://github.com/epoupon/lms) - *personal fave and my backend* +- [Navidrome](https://www.navidrome.org/) +- [Gonic](https://github.com/sentriz/gonic) +- [Ampache](https://github.com/ampache/ampache) +- [NextCloud Music](https://apps.nextcloud.com/apps/music) + + + + +## Getting Started + +### Installation +1. Download the APK from the [Releases](https://github.com/eddyizm/tempus/releases) section +2. Enable "Install from unknown sources" in your Android settings +3. Install the application + +### First Launch +1. Open the application +2. You will be prompted to configure your server connection +3. Grant necessary permissions for media playback and background operation + +## Server Configuration + +### Initial Setup +**IN PROGRESS** +1. Enter your server URL (e.g., `https://your-subsonic-server.com`) +2. Provide your username and password +3. Test the connection to ensure proper configuration + +### Advanced Settings +**TODO** + +## Main Features + +### Library View + +**Multi-library** + +Tempus handles multi-library setups gracefully. They are displayed as Library folders. + +However, if you want to limit or change libraries you could use a workaround, if your server supports it. + +You can create multiple users , one for each library, and save each of them in Tempus app. + +### Now Playing Screen + +On the main player control screen, tapping on the artwork will reveal a small collection of 4 buttons/icons. +

+ +

+ +*marked the icons with numbers for clarity* + +1. Downloads the track (there is a notification if the android screen but not a pop toast currently ) +2. Adds track to playlist - pops up playlist dialog. +3. Adds tracks to the queue via instant mix function + * TBD: what is the _instant mix function_? + * Uses [getSimilarSongs](https://opensubsonic.netlify.app/docs/endpoints/getsimilarsongs/) of OpenSubsonic API. + Which tracks to be mixed depends on the server implementation. For example, Navidrome gets 15 similar artists from LastFM, then 20 top songs from each. +4. Saves play queue (if the feature is enabled in the settings) + * if the setting is not enabled, it toggles a view of the lyrics if available (slides to the right) + +### Podcasts +If your server supports it - add a podcast rss feed +

+ +

+ +### Radio Stations +If your server supports it - add a internet radio station feed +

+ +

+ +## Navigation + +### Bottom Navigation Bar +**IN PROGRESS** +- **Home**: Recently played and server recommendations +- **Library**: Your server's complete music collection +- **Download**: Locally downloaded files from server + +## Playback Controls + +### Streaming Controls +**TODO** + +### Advanced Controls +**TODO** + +## Favorites + +### Favorites (aka heart aka star) to albums and artists +- Long pressing on an album gives you access to heart/unheart an album + +

+ +

+ +- Long pressing on an artist cover gets you the same access to to heart/unheart an album + +

+ +

+ + +## Playlist Management + +### Server Playlists +**TODO** + +### Creating Playlists +**TODO** + +## Settings + + +## Android Auto + +### Enabling on your head unit +- You have to enable Android Auto developer options, which are different from actual Android dev options. Then you have to enable "Unknown sources" in Android Auto, otherwise the app won't appear as it isn't downloaded from Play Store. (screenshots needed) + + +### Server Settings +**IN PROGRESS** +- Manage multiple server connections +- Configure sync intervals +- Set data usage limits for streaming + +### Audio Settings +**IN PROGRESS** +- Streaming quality settings +- Offline caching preferences + +### Appearance +**TODO** + +## Troubleshooting + +### Connection Issues + +**TODO** + +### Common Issues + +**TODO** + +### Support +For additional help: +- Question? Start a [Discussion](https://github.com/eddyizm/tempus/discussions) +- Open an [issue](https://github.com/eddyizm/tempus/issues) if you don't find a discussion solving your issue. +- Consult your Subsonic server's documentation + +--- + +*Note: This app requires a pre-existing Subsonic-compatible server with music content.* diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..3f3f577 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,133 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-parcelize' + +android { + compileSdk 35 + buildToolsVersion = '35.0.0' + + defaultConfig { + minSdkVersion 24 + targetSdk 35 + + versionCode 6 + versionName '4.2.4' + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' + + javaCompileOptions { + annotationProcessorOptions { + arguments += [ + "room.schemaLocation": "$projectDir/schemas".toString(), + "room.incremental" : "true" + ] + } + } + + } + + splits { + abi { + enable true + reset() + //noinspection ChromeOsAbiSupport + include 'armeabi-v7a', 'arm64-v8a' + universalApk false + } + } + + dependenciesInfo { + // Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid) + includeInApk = false + // Disables dependency metadata when building Android App Bundles (for Google Play) + includeInBundle = false + } + + flavorDimensions += "default" + + productFlavors { + tempus { + dimension = "default" + applicationId 'com.eddyizm.tempus' + } + + degoogled { + dimension = "default" + applicationId "com.eddyizm.degoogled.tempus" + } + + } + + buildTypes { + release { + shrinkResources true + minifyEnabled true + debuggable false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + + debug { + applicationIdSuffix ".debug" + debuggable true + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = "1.8" + } + + buildFeatures { + viewBinding true + buildConfig true + } + + namespace 'com.cappielloantonio.tempo' +} + +dependencies { + implementation files('../libs/lib-decoder-ffmpeg-release.aar') + + // AndroidX + implementation 'androidx.constraintlayout:constraintlayout:2.2.0' + implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0' + implementation 'androidx.preference:preference-ktx:1.2.1' + implementation 'androidx.navigation:navigation-fragment-ktx:2.8.6' + implementation 'androidx.navigation:navigation-ui-ktx:2.8.6' + implementation 'androidx.recyclerview:recyclerview:1.4.0' + implementation 'androidx.room:room-runtime:2.6.1' + implementation 'androidx.core:core-splashscreen:1.0.1' + implementation 'androidx.appcompat:appcompat:1.7.0' + + // Android Material + implementation 'com.google.android.material:material:1.10.0' + + // Glide + implementation 'com.github.bumptech.glide:glide:4.16.0' + implementation 'com.github.bumptech.glide:annotations:4.16.0' + + // Media3 + implementation 'androidx.media3:media3-session:1.8.0' + implementation 'androidx.media3:media3-common:1.8.0' + implementation 'androidx.media3:media3-exoplayer:1.8.0' + implementation 'androidx.media3:media3-ui:1.8.0' + implementation 'androidx.media3:media3-exoplayer-hls:1.8.0' + tempusImplementation 'androidx.media3:media3-cast:1.8.0' + + + annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' + annotationProcessor 'androidx.room:room-compiler:2.6.1' + + // Retrofit + implementation 'com.squareup.retrofit2:retrofit:2.11.0' + implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.14' + implementation 'com.squareup.retrofit2:converter-gson:2.11.0' +} +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..48b1f06 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,28 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +-keepattributes SourceFile, LineNumberTable +-keep public class * extends java.lang.Exception +-keep class retrofit2.** { *; } + +-keep class **.reflect.TypeToken { *; } +-keep class * extends **.reflect.TypeToken \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/1.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/1.json new file mode 100644 index 0000000..0ff270b --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/1.json @@ -0,0 +1,746 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "1f4e50f90f58fb9cb53c89747d142fd9", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1f4e50f90f58fb9cb53c89747d142fd9')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/10.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/10.json new file mode 100644 index 0000000..e039aed --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/10.json @@ -0,0 +1,1065 @@ +{ + "formatVersion": 1, + "database": { + "version": 10, + "identityHash": "58cb958cdb09f054c27673d1de7f26d0", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `local_address` TEXT, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "localAddress", + "columnName": "local_address", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, `timestamp` INTEGER)", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "playlist", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `name` TEXT, `duration` INTEGER NOT NULL, `coverArt` TEXT, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "coverArtId", + "columnName": "coverArt", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '58cb958cdb09f054c27673d1de7f26d0')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/11.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/11.json new file mode 100644 index 0000000..9febeba --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/11.json @@ -0,0 +1,1101 @@ +{ + "formatVersion": 1, + "database": { + "version": 11, + "identityHash": "cceefd0896d9f0e949a30b53dd682bee", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `sampling_rate` INTEGER, `bit_depth` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "samplingRate", + "columnName": "sampling_rate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitDepth", + "columnName": "bit_depth", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `local_address` TEXT, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "localAddress", + "columnName": "local_address", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `sampling_rate` INTEGER, `bit_depth` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "samplingRate", + "columnName": "sampling_rate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitDepth", + "columnName": "bit_depth", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `sampling_rate` INTEGER, `bit_depth` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "samplingRate", + "columnName": "sampling_rate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitDepth", + "columnName": "bit_depth", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, `timestamp` INTEGER)", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "playlist", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `name` TEXT, `duration` INTEGER NOT NULL, `coverArt` TEXT, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "coverArtId", + "columnName": "coverArt", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'cceefd0896d9f0e949a30b53dd682bee')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/12.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/12.json new file mode 100644 index 0000000..7797459 --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/12.json @@ -0,0 +1,1151 @@ +{ + "formatVersion": 1, + "database": { + "version": 12, + "identityHash": "2d26471ae15a1cdaf996261b72f81613", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `sampling_rate` INTEGER, `bit_depth` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "samplingRate", + "columnName": "sampling_rate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitDepth", + "columnName": "bit_depth", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `local_address` TEXT, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "localAddress", + "columnName": "local_address", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `sampling_rate` INTEGER, `bit_depth` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "samplingRate", + "columnName": "sampling_rate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitDepth", + "columnName": "bit_depth", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `sampling_rate` INTEGER, `bit_depth` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "samplingRate", + "columnName": "sampling_rate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitDepth", + "columnName": "bit_depth", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, `timestamp` INTEGER)", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "playlist", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `name` TEXT, `duration` INTEGER NOT NULL, `coverArt` TEXT, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "coverArtId", + "columnName": "coverArt", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "lyrics_cache", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`song_id` TEXT NOT NULL, `artist` TEXT, `title` TEXT, `lyrics` TEXT, `structured_lyrics` TEXT, `updated_at` INTEGER NOT NULL, PRIMARY KEY(`song_id`))", + "fields": [ + { + "fieldPath": "songId", + "columnName": "song_id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lyrics", + "columnName": "lyrics", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "structuredLyrics", + "columnName": "structured_lyrics", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "updatedAt", + "columnName": "updated_at", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "song_id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2d26471ae15a1cdaf996261b72f81613')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/2.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/2.json new file mode 100644 index 0000000..773c693 --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/2.json @@ -0,0 +1,790 @@ +{ + "formatVersion": 1, + "database": { + "version": 2, + "identityHash": "ff99e331b4c34a82c560588c4dd5735f", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ff99e331b4c34a82c560588c4dd5735f')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/3.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/3.json new file mode 100644 index 0000000..ef76d57 --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/3.json @@ -0,0 +1,797 @@ +{ + "formatVersion": 1, + "database": { + "version": 3, + "identityHash": "6ea111217793c58d54eabb1190dd92ec", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6ea111217793c58d54eabb1190dd92ec')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/4.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/4.json new file mode 100644 index 0000000..5356ab9 --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/4.json @@ -0,0 +1,997 @@ +{ + "formatVersion": 1, + "database": { + "version": 4, + "identityHash": "528d037bee0f0575f8e0670ae1b04e00", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '528d037bee0f0575f8e0670ae1b04e00')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/5.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/5.json new file mode 100644 index 0000000..e8e7e86 --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/5.json @@ -0,0 +1,1004 @@ +{ + "formatVersion": 1, + "database": { + "version": 5, + "identityHash": "0e65e1c3fb44d9dc04c9c6cf35b7ea58", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL DEFAULT 0, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0e65e1c3fb44d9dc04c9c6cf35b7ea58')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/6.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/6.json new file mode 100644 index 0000000..c6ccf4b --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/6.json @@ -0,0 +1,1016 @@ +{ + "formatVersion": 1, + "database": { + "version": 6, + "identityHash": "dff788fb3b6ff922a1f566a9752c2029", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER NOT NULL DEFAULT 0, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, PRIMARY KEY(`index`))", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'dff788fb3b6ff922a1f566a9752c2029')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/7.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/7.json new file mode 100644 index 0000000..a3286de --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/7.json @@ -0,0 +1,1021 @@ +{ + "formatVersion": 1, + "database": { + "version": 7, + "identityHash": "cca7b016c047d8fdc86dd6373f2fb173", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, `timestamp` INTEGER)", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'cca7b016c047d8fdc86dd6373f2fb173')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/8.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/8.json new file mode 100644 index 0000000..26ab81b --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/8.json @@ -0,0 +1,1021 @@ +{ + "formatVersion": 1, + "database": { + "version": 8, + "identityHash": "cca7b016c047d8fdc86dd6373f2fb173", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, `timestamp` INTEGER)", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'cca7b016c047d8fdc86dd6373f2fb173')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/9.json b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/9.json new file mode 100644 index 0000000..0bdcae2 --- /dev/null +++ b/app/schemas/com.cappielloantonio.tempo.database.AppDatabase/9.json @@ -0,0 +1,1027 @@ +{ + "formatVersion": 1, + "database": { + "version": 9, + "identityHash": "237a704eed556782438a6493deadaed7", + "entities": [ + { + "tableName": "queue", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `track_order` INTEGER NOT NULL, `last_play` INTEGER NOT NULL, `playing_changed` INTEGER NOT NULL, `stream_id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`track_order`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "trackOrder", + "columnName": "track_order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastPlay", + "columnName": "last_play", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "playingChanged", + "columnName": "playing_changed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "track_order" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "server", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `local_address` TEXT, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "serverId", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "localAddress", + "columnName": "local_address", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isLowSecurity", + "columnName": "low_security", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "false" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "recent_search", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`search` TEXT NOT NULL, PRIMARY KEY(`search`))", + "fields": [ + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "search" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "download", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `playlist_id` TEXT, `playlist_name` TEXT, `download_state` INTEGER NOT NULL DEFAULT 1, `download_uri` TEXT DEFAULT '', `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "playlistId", + "columnName": "playlist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "playlistName", + "columnName": "playlist_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "downloadState", + "columnName": "download_state", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "downloadUri", + "columnName": "download_uri", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "''" + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "chronology", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `server` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "server", + "columnName": "server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "favorite", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`timestamp` INTEGER NOT NULL, `songId` TEXT, `albumId` TEXT, `artistId` TEXT, `toStar` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))", + "fields": [ + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "songId", + "columnName": "songId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "albumId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artistId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "toStar", + "columnName": "toStar", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "timestamp" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "session_media_item", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`index` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` TEXT, `parent_id` TEXT, `is_dir` INTEGER NOT NULL, `title` TEXT, `album` TEXT, `artist` TEXT, `track` INTEGER, `year` INTEGER, `genre` TEXT, `cover_art_id` TEXT, `size` INTEGER, `content_type` TEXT, `suffix` TEXT, `transcoding_content_type` TEXT, `transcoded_suffix` TEXT, `duration` INTEGER, `bitrate` INTEGER, `path` TEXT, `is_video` INTEGER NOT NULL, `user_rating` INTEGER, `average_rating` REAL, `play_count` INTEGER, `disc_number` INTEGER, `created` INTEGER, `starred` INTEGER, `album_id` TEXT, `artist_id` TEXT, `type` TEXT, `bookmark_position` INTEGER, `original_width` INTEGER, `original_height` INTEGER, `stream_id` TEXT, `stream_url` TEXT, `timestamp` INTEGER)", + "fields": [ + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parentId", + "columnName": "parent_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDir", + "columnName": "is_dir", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "album", + "columnName": "album", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artist", + "columnName": "artist", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "track", + "columnName": "track", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "year", + "columnName": "year", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "genre", + "columnName": "genre", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverArtId", + "columnName": "cover_art_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "size", + "columnName": "size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "suffix", + "columnName": "suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedContentType", + "columnName": "transcoding_content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "transcodedSuffix", + "columnName": "transcoded_suffix", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bitrate", + "columnName": "bitrate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isVideo", + "columnName": "is_video", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userRating", + "columnName": "user_rating", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "averageRating", + "columnName": "average_rating", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "playCount", + "columnName": "play_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "discNumber", + "columnName": "disc_number", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "starred", + "columnName": "starred", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "albumId", + "columnName": "album_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "artistId", + "columnName": "artist_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookmarkPosition", + "columnName": "bookmark_position", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalWidth", + "columnName": "original_width", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "originalHeight", + "columnName": "original_height", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamUrl", + "columnName": "stream_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "index" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '237a704eed556782438a6493deadaed7')" + ] + } +} \ No newline at end of file diff --git a/app/src/degoogled/ic_launcher-playstore.png b/app/src/degoogled/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..8709829877d75448ec6f945c8962d9ff0226891c GIT binary patch literal 20899 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 + private lateinit var repeatCommands: List + private lateinit var networkCallback: CustomNetworkCallback + lateinit var equalizerManager: EqualizerManager + + private var customLayout = ImmutableList.of() + private val widgetUpdateHandler = Handler(Looper.getMainLooper()) + private var widgetUpdateScheduled = false + private val widgetUpdateRunnable = object : Runnable { + override fun run() { + if (!player.isPlaying) { + widgetUpdateScheduled = false + return + } + updateWidget() + widgetUpdateHandler.postDelayed(this, WIDGET_UPDATE_INTERVAL_MS) + } + } + + inner class LocalBinder : Binder() { + fun getEqualizerManager(): EqualizerManager { + return this@MediaService.equalizerManager + } + } + + private val binder = LocalBinder() + + companion object { + private const val CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON = + "android.media3.session.demo.SHUFFLE_ON" + private const val CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF = + "android.media3.session.demo.SHUFFLE_OFF" + private const val CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF = + "android.media3.session.demo.REPEAT_OFF" + private const val CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE = + "android.media3.session.demo.REPEAT_ONE" + private const val CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL = + "android.media3.session.demo.REPEAT_ALL" + const val ACTION_BIND_EQUALIZER = "com.cappielloantonio.tempo.service.BIND_EQUALIZER" + const val ACTION_EQUALIZER_UPDATED = "com.cappielloantonio.tempo.service.EQUALIZER_UPDATED" + } + + fun updateMediaItems() { + Log.d("MediaService", "update items"); + val n = player.mediaItemCount + val k = player.currentMediaItemIndex + val current = player.currentPosition + val items = (0 .. n-1).map{i -> MappingUtil.mapMediaItem(player.getMediaItemAt(i))} + player.clearMediaItems() + player.setMediaItems(items, k, current) + } + + inner class CustomNetworkCallback : ConnectivityManager.NetworkCallback() { + var wasWifi = false + + init { + val manager = getSystemService(ConnectivityManager::class.java) + val network = manager.activeNetwork + val capabilities = manager.getNetworkCapabilities(network) + if (capabilities != null) + wasWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + } + + override fun onCapabilitiesChanged(network : Network, networkCapabilities : NetworkCapabilities) { + val isWifi = networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + if (isWifi != wasWifi) { + wasWifi = isWifi + widgetUpdateHandler.post(Runnable { + updateMediaItems() + }) + } + } + } + + override fun onCreate() { + super.onCreate() + + initializeCustomCommands() + initializePlayer() + initializeMediaLibrarySession() + restorePlayerFromQueue() + initializePlayerListener() + initializeEqualizerManager() + initializeNetworkListener() + + setPlayer(player) + } + + override fun onGetSession(controllerInfo: ControllerInfo): MediaLibrarySession { + return mediaLibrarySession + } + + override fun onDestroy() { + releaseNetworkCallback() + equalizerManager.release() + stopWidgetUpdates() + releasePlayer() + super.onDestroy() + } + + override fun onBind(intent: Intent?): IBinder? { + // Check if the intent is for our custom equalizer binder + if (intent?.action == ACTION_BIND_EQUALIZER) { + return binder + } + // Otherwise, handle it as a normal MediaLibraryService connection + return super.onBind(intent) + } + + private inner class CustomMediaLibrarySessionCallback : MediaLibrarySession.Callback { + + override fun onConnect( + session: MediaSession, + controller: ControllerInfo + ): MediaSession.ConnectionResult { + val connectionResult = super.onConnect(session, controller) + val availableSessionCommands = connectionResult.availableSessionCommands.buildUpon() + + (shuffleCommands + repeatCommands).forEach { commandButton -> + commandButton.sessionCommand?.let { availableSessionCommands.add(it) } + } + + customLayout = buildCustomLayout(session.player) + + return MediaSession.ConnectionResult.AcceptedResultBuilder(session) + .setAvailableSessionCommands(availableSessionCommands.build()) + .setAvailablePlayerCommands(connectionResult.availablePlayerCommands) + .setCustomLayout(customLayout) + .build() + } + + override fun onPostConnect(session: MediaSession, controller: ControllerInfo) { + if (!customLayout.isEmpty() && controller.controllerVersion != 0) { + ignoreFuture(mediaLibrarySession.setCustomLayout(controller, customLayout)) + } + } + + fun buildCustomLayout(player: Player): ImmutableList { + val shuffle = shuffleCommands[if (player.shuffleModeEnabled) 1 else 0] + val repeat = when (player.repeatMode) { + Player.REPEAT_MODE_ONE -> repeatCommands[1] + Player.REPEAT_MODE_ALL -> repeatCommands[2] + else -> repeatCommands[0] + } + return ImmutableList.of(shuffle, repeat) + } + + override fun onCustomCommand( + session: MediaSession, + controller: ControllerInfo, + customCommand: SessionCommand, + args: Bundle + ): ListenableFuture { + when (customCommand.customAction) { + CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON -> player.shuffleModeEnabled = true + CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF -> player.shuffleModeEnabled = false + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF, + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL, + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE -> { + val nextMode = when (player.repeatMode) { + Player.REPEAT_MODE_ONE -> Player.REPEAT_MODE_ALL + Player.REPEAT_MODE_OFF -> Player.REPEAT_MODE_ONE + else -> Player.REPEAT_MODE_OFF + } + player.repeatMode = nextMode + } + } + + customLayout = librarySessionCallback.buildCustomLayout(player) + session.setCustomLayout(customLayout) + + return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS)) + } + + override fun onAddMediaItems( + mediaSession: MediaSession, + controller: ControllerInfo, + mediaItems: List + ): ListenableFuture> { + val updatedMediaItems = mediaItems.map { mediaItem -> + val mediaMetadata = mediaItem.mediaMetadata + + val newMetadata = mediaMetadata.buildUpon() + .setArtist( + if (mediaMetadata.artist != null) mediaMetadata.artist + else mediaMetadata.extras?.getString("uri") ?: "" + ) + .build() + + mediaItem.buildUpon() + .setUri(mediaItem.requestMetadata.mediaUri) + .setMediaMetadata(newMetadata) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .build() + } + return Futures.immediateFuture(updatedMediaItems) + } + } + + private fun initializeCustomCommands() { + shuffleCommands = listOf( + getShuffleCommandButton( + SessionCommand(CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON, Bundle.EMPTY) + ), + getShuffleCommandButton( + SessionCommand(CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF, Bundle.EMPTY) + ) + ) + + repeatCommands = listOf( + getRepeatCommandButton( + SessionCommand(CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF, Bundle.EMPTY) + ), + getRepeatCommandButton( + SessionCommand(CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE, Bundle.EMPTY) + ), + getRepeatCommandButton( + SessionCommand(CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL, Bundle.EMPTY) + ) + ) + + customLayout = ImmutableList.of(shuffleCommands[0], repeatCommands[0]) + } + + private fun initializePlayer() { + player = ExoPlayer.Builder(this) + .setRenderersFactory(getRenderersFactory()) + .setMediaSourceFactory(getMediaSourceFactory()) + .setAudioAttributes(AudioAttributes.DEFAULT, true) + .setHandleAudioBecomingNoisy(true) + .setWakeMode(C.WAKE_MODE_NETWORK) + .setLoadControl(initializeLoadControl()) + .build() + + player.shuffleModeEnabled = Preferences.isShuffleModeEnabled() + player.repeatMode = Preferences.getRepeatMode() + } + + private fun initializeEqualizerManager() { + equalizerManager = EqualizerManager() + val audioSessionId = player.audioSessionId + attachEqualizerIfPossible(audioSessionId) + } + + private fun initializeMediaLibrarySession() { + val sessionActivityPendingIntent = + TaskStackBuilder.create(this).run { + addNextIntent(Intent(this@MediaService, MainActivity::class.java)) + getPendingIntent(0, FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT) + } + + mediaLibrarySession = + MediaLibrarySession.Builder(this, player, librarySessionCallback) + .setSessionActivity(sessionActivityPendingIntent) + .build() + + if (!customLayout.isEmpty()) { + mediaLibrarySession.setCustomLayout(customLayout) + } + } + + private fun initializeNetworkListener() { + networkCallback = CustomNetworkCallback() + getSystemService(ConnectivityManager::class.java).registerDefaultNetworkCallback(networkCallback) + updateMediaItems() + } + + private fun restorePlayerFromQueue() { + if (player.mediaItemCount > 0) return + + val queueRepository = QueueRepository() + val storedQueue = queueRepository.media + if (storedQueue.isNullOrEmpty()) return + + val mediaItems = MappingUtil.mapMediaItems(storedQueue) + if (mediaItems.isEmpty()) return + + val lastIndex = try { + queueRepository.lastPlayedMediaIndex + } catch (_: Exception) { + 0 + }.coerceIn(0, mediaItems.size - 1) + + val lastPosition = try { + queueRepository.lastPlayedMediaTimestamp + } catch (_: Exception) { + 0L + }.let { if (it < 0L) 0L else it } + + player.setMediaItems(mediaItems, lastIndex, lastPosition) + player.prepare() + updateWidget() + } + + private fun initializePlayerListener() { + player.addListener(object : Player.Listener { + override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) { + if (mediaItem == null) return + + if (reason == Player.MEDIA_ITEM_TRANSITION_REASON_SEEK || reason == Player.MEDIA_ITEM_TRANSITION_REASON_AUTO) { + MediaManager.setLastPlayedTimestamp(mediaItem) + } + updateWidget() + } + + override fun onTracksChanged(tracks: Tracks) { + ReplayGainUtil.setReplayGain(player, tracks) + val currentMediaItem = player.currentMediaItem + if (currentMediaItem != null && currentMediaItem.mediaMetadata.extras != null) { + MediaManager.scrobble(currentMediaItem, false) + } + + if (player.currentMediaItemIndex + 1 == player.mediaItemCount) + MediaManager.continuousPlay(player.currentMediaItem) + } + + override fun onIsPlayingChanged(isPlaying: Boolean) { + if (!isPlaying) { + MediaManager.setPlayingPausedTimestamp( + player.currentMediaItem, + player.currentPosition + ) + } else { + MediaManager.scrobble(player.currentMediaItem, false) + } + if (isPlaying) { + scheduleWidgetUpdates() + } else { + stopWidgetUpdates() + } + updateWidget() + } + + override fun onPlaybackStateChanged(playbackState: Int) { + super.onPlaybackStateChanged(playbackState) + if (!player.hasNextMediaItem() && + playbackState == Player.STATE_ENDED && + player.mediaMetadata.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC + ) { + MediaManager.scrobble(player.currentMediaItem, true) + MediaManager.saveChronology(player.currentMediaItem) + } + updateWidget() + } + + override fun onPositionDiscontinuity( + oldPosition: Player.PositionInfo, + newPosition: Player.PositionInfo, + reason: Int + ) { + super.onPositionDiscontinuity(oldPosition, newPosition, reason) + + if (reason == Player.DISCONTINUITY_REASON_AUTO_TRANSITION) { + if (oldPosition.mediaItem?.mediaMetadata?.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC) { + MediaManager.scrobble(oldPosition.mediaItem, true) + MediaManager.saveChronology(oldPosition.mediaItem) + } + + if (newPosition.mediaItem?.mediaMetadata?.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC) { + MediaManager.setLastPlayedTimestamp(newPosition.mediaItem) + } + } + } + + override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) { + Preferences.setShuffleModeEnabled(shuffleModeEnabled) + customLayout = librarySessionCallback.buildCustomLayout(player) + mediaLibrarySession.setCustomLayout(customLayout) + } + + override fun onRepeatModeChanged(repeatMode: Int) { + Preferences.setRepeatMode(repeatMode) + customLayout = librarySessionCallback.buildCustomLayout(player) + mediaLibrarySession.setCustomLayout(customLayout) + } + + override fun onAudioSessionIdChanged(audioSessionId: Int) { + attachEqualizerIfPossible(audioSessionId) + } + }) + if (player.isPlaying) { + scheduleWidgetUpdates() + } + } + + private fun setPlayer(player: Player) { + mediaLibrarySession.player = player + } + + private fun releasePlayer() { + player.release() + mediaLibrarySession.release() + } + + private fun releaseNetworkCallback() { + getSystemService(ConnectivityManager::class.java).unregisterNetworkCallback(networkCallback) + } + + @SuppressLint("PrivateResource") + private fun getShuffleCommandButton(sessionCommand: SessionCommand): CommandButton { + val isOn = sessionCommand.customAction == CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON + return CommandButton.Builder() + .setDisplayName( + getString( + if (isOn) R.string.exo_controls_shuffle_on_description + else R.string.exo_controls_shuffle_off_description + ) + ) + .setSessionCommand(sessionCommand) + .setIconResId(if (isOn) R.drawable.exo_icon_shuffle_off else R.drawable.exo_icon_shuffle_on) + .build() + } + + @SuppressLint("PrivateResource") + private fun getRepeatCommandButton(sessionCommand: SessionCommand): CommandButton { + val icon = when (sessionCommand.customAction) { + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE -> R.drawable.exo_icon_repeat_one + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL -> R.drawable.exo_icon_repeat_all + else -> R.drawable.exo_icon_repeat_off + } + val description = when (sessionCommand.customAction) { + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE -> R.string.exo_controls_repeat_one_description + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL -> R.string.exo_controls_repeat_all_description + else -> R.string.exo_controls_repeat_off_description + } + return CommandButton.Builder() + .setDisplayName(getString(description)) + .setSessionCommand(sessionCommand) + .setIconResId(icon) + .build() + } + + private fun ignoreFuture(@Suppress("UNUSED_PARAMETER") customLayout: ListenableFuture) { + /* Do nothing. */ + } + + private fun initializeLoadControl(): DefaultLoadControl { + return DefaultLoadControl.Builder() + .setBufferDurationsMs( + (DefaultLoadControl.DEFAULT_MIN_BUFFER_MS * Preferences.getBufferingStrategy()).toInt(), + (DefaultLoadControl.DEFAULT_MAX_BUFFER_MS * Preferences.getBufferingStrategy()).toInt(), + DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS, + DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS + ) + .build() + } + + private fun updateWidget() { + val mi = player.currentMediaItem + val title = mi?.mediaMetadata?.title?.toString() + ?: mi?.mediaMetadata?.extras?.getString("title") + val artist = mi?.mediaMetadata?.artist?.toString() + ?: mi?.mediaMetadata?.extras?.getString("artist") + val album = mi?.mediaMetadata?.albumTitle?.toString() + ?: mi?.mediaMetadata?.extras?.getString("album") + val extras = mi?.mediaMetadata?.extras + val coverId = extras?.getString("coverArtId") + val songLink = extras?.getString("assetLinkSong") + ?: AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_SONG, extras?.getString("id")) + val albumLink = extras?.getString("assetLinkAlbum") + ?: AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ALBUM, extras?.getString("albumId")) + val artistLink = extras?.getString("assetLinkArtist") + ?: AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ARTIST, extras?.getString("artistId")) + val position = player.currentPosition.takeIf { it != C.TIME_UNSET } ?: 0L + val duration = player.duration.takeIf { it != C.TIME_UNSET } ?: 0L + WidgetUpdateManager.updateFromState( + this, + title ?: "", + artist ?: "", + album ?: "", + coverId, + player.isPlaying, + player.shuffleModeEnabled, + player.repeatMode, + position, + duration, + songLink, + albumLink, + artistLink + ) + } + + private fun scheduleWidgetUpdates() { + if (widgetUpdateScheduled) return + widgetUpdateHandler.postDelayed(widgetUpdateRunnable, WIDGET_UPDATE_INTERVAL_MS) + widgetUpdateScheduled = true + } + + private fun stopWidgetUpdates() { + if (!widgetUpdateScheduled) return + widgetUpdateHandler.removeCallbacks(widgetUpdateRunnable) + widgetUpdateScheduled = false + } + + private fun attachEqualizerIfPossible(audioSessionId: Int): Boolean { + if (audioSessionId == 0 || audioSessionId == -1) return false + val attached = equalizerManager.attachToSession(audioSessionId) + if (attached) { + val enabled = Preferences.isEqualizerEnabled() + equalizerManager.setEnabled(enabled) + val bands = equalizerManager.getNumberOfBands() + val savedLevels = Preferences.getEqualizerBandLevels(bands) + for (i in 0 until bands) { + equalizerManager.setBandLevel(i.toShort(), savedLevels[i]) + } + sendBroadcast(Intent(ACTION_EQUALIZER_UPDATED)) + } + return attached + } + + private fun getRenderersFactory() = DownloadUtil.buildRenderersFactory(this, false) + + private fun getMediaSourceFactory(): MediaSource.Factory = DynamicMediaSourceFactory(this) +} + +private const val WIDGET_UPDATE_INTERVAL_MS = 1000L diff --git a/app/src/degoogled/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java b/app/src/degoogled/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java new file mode 100644 index 0000000..2ad74c8 --- /dev/null +++ b/app/src/degoogled/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java @@ -0,0 +1,65 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentToolbarBinding; +import com.cappielloantonio.tempo.ui.activity.MainActivity; + +@UnstableApi +public class ToolbarFragment extends Fragment { + private static final String TAG = "ToolbarFragment"; + + private FragmentToolbarBinding bind; + private MainActivity activity; + + public ToolbarFragment() { + // Required empty public constructor + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.main_page_menu, menu); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentToolbarBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + return view; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_search) { + activity.navController.navigate(R.id.searchFragment); + return true; + } else if (item.getItemId() == R.id.action_settings) { + activity.navController.navigate(R.id.settingsFragment); + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/app/src/degoogled/java/com/cappielloantonio/tempo/util/Flavors.java b/app/src/degoogled/java/com/cappielloantonio/tempo/util/Flavors.java new file mode 100644 index 0000000..68d2350 --- /dev/null +++ b/app/src/degoogled/java/com/cappielloantonio/tempo/util/Flavors.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.util; + +import android.content.Context; + +public class Flavors { + public static void initializeCastContext(Context context) { + + } +} diff --git a/app/src/degoogled/res/drawable/ic_launcher_foreground.xml b/app/src/degoogled/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2f629d4 --- /dev/null +++ b/app/src/degoogled/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/degoogled/res/drawable/ic_splash_logo.xml b/app/src/degoogled/res/drawable/ic_splash_logo.xml new file mode 100644 index 0000000..cc4ea53 --- /dev/null +++ b/app/src/degoogled/res/drawable/ic_splash_logo.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/degoogled/res/menu/main_page_menu.xml b/app/src/degoogled/res/menu/main_page_menu.xml new file mode 100644 index 0000000..4016fef --- /dev/null +++ b/app/src/degoogled/res/menu/main_page_menu.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app/src/degoogled/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/degoogled/res/mipmap-hdpi/ic_launcher.webp b/app/src/degoogled/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..411c36159611662c42d4330fd76bd19690acc5e0 GIT binary patch literal 1676 zcmV;726OpRNk&G51^@t8MM6+kP&iC@1^@srN5Byf^@f0i;Qw)15D`gnCBUt}>D zGdBN;ZQFKb=Ro%V&szUmrL}F_DD9-P&C1CeJXO5l+P1Bx@`v|YLht(V+#6ST?(Xi9 zy^|CWB}p=EU8DQM_uOY(+s3nP+qV6#+5ZXP@;gB0!Ki#JKpqs8dXXn{UyE~X-K?&u zcJ5!t>BF1*SJDeSr+v;`dp3pLxq|z<~~YN(kl^zT1-w7Z;~!)+x=?At6Z?Eq%%9BB!$=bdFqFrH&Q zz0FE8{&%9MC)Z1@*yq>WvUt=lJn!7RWS_dc%r4D-W*|tE+jtJ>3k7WrM~VdR>(r%QA=-x`+c#-!TOsdiYRZLv4O zEC>e$>6+51yT4LF3!@L{?yhDtbI-Sz5vg`crkb3o7j(SZqjlQ-w^iqvVphg$%!0enC``1GkexLgdn`>R^Q&d<9(UGE*5 zXu8~Y33 zja~h&dcwk7Mf2N!=Yi#}Z zMF5s7HGSpw&r2z!9L$lcEo|OTkAR9;bYDY4lc|$x>kT^gjx(|0U{ZB`xrEQ-J-KpL z+$?ASHpEj00Lnz4(OhUhGjyJc?qhNOXZxuky}5W#%<`{N(Fjv&X_-6w#=6qV#a;%0 z6ZljMz;QF%eAxAKKu-+nN`IF8Y}z+Dtmni~>}Ck%Er;~4_d##>v1c1KrL)lQ1K>gG zKs5p1^3#UiLou*xC|{c_TbusYYb0&(D!xKV*pXHwfFiGlP~y=d;PmlRP4yIdy#QPQ zPf|s|uk^T~&rtO5H2ddXbh+nwTQ>NXpKw(NdV&B7{60eb`QLUv19A7N}%GgOwq!Lr7n$qpT4PB>FpMmH-lrC&2)f!SK8rT3& z?MOfqsY^R4YPE#J{q;=@)~l6r?cNSEspCv+=rEPaw)(ACDo_!gfDY6U3Ia<`Q{$-f zZ3&oUO1IosMsp#(x#*hv)@CX!w8vX(%(aCr;$qhb1*szTS&$xp9`puH2mm)va3eD`AwOxST$I zB$R|b=t1szy2llK1>pHLHVE5~nVE9L+dUb{vUb8OXh^sM7kq(tW&{9i`N`a2cXVn} zpAZ!qn;~jk!Hn2{Wkrm1{P;c2+{}qjib_*ZZRw?%%+*%QKEvE5!ZoEc@a9|{Ym9jv zbaOhJxuNbK`~NpRlXp3qVLJV8_a~#$$Owq>;WBnI@b=8+rzmFoT?oEDxm;V=n7Pa0 z%-a6H6Qy-HD&~PH@S3s=NK(SY5@*gou8P zdjFLt@+(_gbI}o0XVmAvJW;=eCXTC~v}`B(qp9PJ{>jM`63CkGNB)s*u@?^gugkM2 z?d`eR*+pMlJPmwlEj{KEg7BtT_quQ%!#D4e`Px; znMyS5sg|a}+5jX#1EIlnk3nVZJYPVx_-Ml}(120x&h|8~iG|rjbbm6@dA_UMh3|SW zw6BH$gn>-W`_>xow{N}QspWo$*8Pr7AMYHkoh0QDDFnzYBp?7{KpaRo{}cc}1^H1z W0&F#mESwZP=Zkj_Ea;;`E~f%=&1-`I literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/degoogled/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..fbbe2e15732644bc78d6ba06814e58f667f06088 GIT binary patch literal 3288 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 WUp5D5usZ1fpuM%V{e%8MBgFu**gYEn literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-mdpi/ic_launcher.webp b/app/src/degoogled/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..940d52f4302535d26183474c8fe346f5011aab34 GIT binary patch literal 1100 zcmV-S1he~6Nk&FQ1ONb6MM6+kP&iCC1ONapFTe{BuLrlbZPm(J=iKiCL`3vo6CF52 z{$#fSIg%vTO4aQ9TAn@*;QtNW(i(OeawJKLq^RoQnb#hpOef%JwSpY;O@-UowpC@} z?yi}2MiI0?1C&BLpUf@#1_1yvKo%$f86XSffZqMxZC&%Xt!{$+x4XGIKm#_M?)F#n zarh6mtXs|hGBUgQZ%-=D3J6jJ0s%@OC?!x7Qi!%C!D;zdq7fosqZC64L?sj;K`TKi zMXN@NMpf7-MFG`N0)#*$KnO5E5MZzp1_20D2xXue2vRUmJ&~h>ow4dzO>Gt{&HLYv zzyI|8*CeR#cZHZcE%TpJO$bYee+D5qpRCc;Dbdq0A$p}6=oM7U%Tz>qP*_NJ`SrV7t+Rg4{>zGERsNN9vl$cS-~RLS zqwsLOzid{+f7(_J=3CE?Ll8}N`uoj2+#hy8cHEBf>4ItbfVjOY4jhhUf0Bip8_K3D zwN04@10Ejy_C(Y6dQ6h!3ZQBmHnc8mO*sK}b$y?jD&Ddsb+uYik)NNSX#xI!J9P@6Ee4lsji2hH2 zP+95Sha=`#aUI9_ym#<_nz5>ogJ)&^+T3QNoT)!%a`fj8r7~;(;ayot~F(EFV zxr&_Af=*J%FQg{KYs@*aFA9Znr;-e$Sp`xJq-kZ7Iem)qYNjGHD9f3OOrz*ESWiTt zPoO5(ZFpCTsftXZ`0`oC*V)p{6qe4M0t27FdeVzdR;p)j3WT(`Ao9F}Mn}K-_Lz&&AH#%G#d$Q+$5WlSz+0G5~@C zf~mB7PpaGm%5tJ2ULB`M*4Q!1tC}LL|Fa|mX{PUFs)00@)A1I`>2dMQRV-^P zG?8$z+WFXY1B^LWoeOeR>zrM=V!6hYYdBN8sva&@uT`&M1E9X*4FI)nt?HtnUu;yP SCUf3M6e`?g3G*hrvIGG078%L_ literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/degoogled/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..dd79b42581a85683d164c256f3c07b9983ed356a GIT binary patch literal 2068 zcmV+v2|McwOGj=)qI+@Irxfn#5`7cLe$g~ABW5!Hf z<%}6;0e?9ZOHP?-0nU^_Y$QpMl>Xa!_>9w8wIE57Bq@?)Lz&@j!#wluv^a8!1YT89Vz1x%&T~cXNHV?Hm-FZQE`S zYumOrj(vI^$^UzPPyV-%3#dkJow|ASf2(b+=4cyn=5wab$&{{|-G1j!wKX@;2d-q> zrmd2`8`rjNTXSB*mL%D9D-E&`{$I`5Tr<~me z=2?z94lz%+RAXV|wK{!#z2d<08;=$RHen#XaB2pN%c^-*6_^6g)eFCme?mnxv>|nr zEN8{4F$p532-AO#1w>SLL}IDbfR5-~@ldBnf=t!^n#9xlGJfqq)V1`^Nj1|yG8O$J z4c<5DJ&V=;I~|effS}X@(qus@k&@FPe_a-$8XP4xbzZ!anmR8AT*>VuBAX79C9C%7 zute!gDXJ?~UcIbpz$yy1NiCLg-nX*i{$8Cxh16^tI`d@awQ~ZF_?I}x-e~x4#Ox7` z`~3ggTu0~)ADKyBPF8yYfWa*9WlCBk%xRBbq=gD$HY>@bB}+Qt*IY?;9a$d}Pg~H7 zfY$aDg9u=5DWz$TAEZ)Ih}&C^rCwt@&lEN_(fwJs570>=*0|c1e$if3BWqmo*offH zy@1{`uhExlTb3oRkhF1R4C!1NJ$W~%b;@LkV4Vy~xxB!AVOuc|;F{qXm7+~Egh{UJ zJH+YaDQag+Aa9fpcJu4MvLjgJ?cdYPJ=0SruMB2xbf&EIdZs4v_LS=jP^Dra*5q7=7E;KcndbmKz=_}q@B+9Jq;4&knvuZW;=?Ac3}&o#CM~trN>VAIt{p|G zV?xjMEPW-@3#0Hd2%k8`<0G8s8n7q$fucb3RG>f*Io(_;GDvUun03V9)|r=s8b>lE zrm&^2qk8Iyx`Ec1Ckn`mo(`uDRyXF_&I0F|8Wx6-w4fk>8)+eEoabsExs$74_C}+N zw}K^9pje39T8f5_Ry#_jH+@|Wovd!$QUv5FZNb6-k_zNWSm?0Q^E16WzL_>}ano)A zlVa?Y=V!BQYh$X0v+@YwyScHPDNBAH*MYByaxcfW{h4XsH+@$~=zhdAaH znzCZyQp;5Y1d>!BM}pHztHpg%zdw^9-)4t$n%}2fCavSl6A_k)t@Af*#4!`8qh9&Y z$Qq}M6f_K$?JgY|0EChL!{79#&%epY50k#PJ{ddv{Fxj_wlfK+5a=Xijo1Ah6=HZs z%a#v56itk?hY_0Sh(sV1f;Rj?<8fldLHeNAHhx*QRQ%qW!cn#-*{ z68oi5iQ_3fzU>D5nq+M+aWuv1Oi-S{9tPsumUz?Ctwn6Y1>5GSg-a7171VtI(mV(I z%AF0%ylPz-42mY*L)HSJL~Cn=0z?3!#nU}5Tr@sz59o;%j-(IsJW1G7Br$=7KZ>IY{~&@0N;Ke{;}U@7HQgoL-jOza@?=7DpIHe+L4iYI zXr@jYI`-~~lQMlKlLz1O9)6NI5UdU)06v2cbsag}+8Q-=c<0|bCQM<&1I z0JKEA;qxE$i}va2t)SIZ_PNYd$jv>e+RC0BHi&>xl{GV_FFJV&m`bH6vkkyR>0U81 zsi1-a55w|vdInmUrlknVms#*zRXwuwcmB-07E)klqYM~bUDqqr#+0Ins))nFfTr%h z3viwssL#lgdTRF00fX@S%A&!MK*vVxK`;EMCHF;awbWx&UO`g|KpNK6D+&cOUw)C6 zIz;YV(kWrq^BXyPdSF+}zf$iU0}v;qXEgcy-)|R>(8=N=GhIDFQ@;QFQdD{YAoGdh zQUGF?97WsoJ9!2g=SI>coFp?1^J8%uNQ&QWkCm{}w_cS3u!gw19z2vghact*aQD3{ z<>Wj77C%I<(ez9lOGR0H2my=@IST93)ik_aifoVKq9xH@Ch6U^i*eNw?HrYFdkVc^nWC!q0h9C-NDTXCnZI8>U20V+#2ZVWvHpaRfuFL@Z+Xq5Or2?79Hn&BJ( literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-xhdpi/ic_launcher.webp b/app/src/degoogled/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..f502e427f3155c71c54beb6f9c66296826ca6f04 GIT binary patch literal 2246 zcmV;%2s!ssNk&G#2mkZY zNVe^MDm>ZA$Fpo(Z8Pe#bCWS3+O}=FiC*u^Ise`J>Nd7*+jdghwypk802x_N1ymiN zCAe>Xm`o%^lS$ZAz!3EVR{xKL<*w4XmB=^0Fi7-PP#vIY@&ks}7BpJd=w72Yjb4AC zKH|q$XHHxvlaRMGsV*jsjx-9}n1T$qv0O$yrG?%KFi{UTmd1{^X@B|B*dM095?pg_ zTfdpqec+Nw1hd6$%ziWdACTe^jrpFW(C#V;*hfWxXWHDR==3b^M1ce`N)6@zTY=0_zi+e%B@q*|6n+c^In#8tKqbkbh2z%$S?@% zZq;a?R?f91X=}xLrewEXtlzq5W2IX92p0^Zx?LsGz1Qg4ty)rMDca?nORfJU)_?oF zTdYpOUwF`q{(1@0dA|Q+UI4(G#INod{rys8(5;*I2^b}9zq`$GB$&Y12^JZteYCGc zWw6NlQIG4B-jB?(PNZJmoB8n|Q0GH<&#d=*^>c0~otwGw7V%7BWFlid!@ln=iU|Qf zW)wB-ytSzLD_Hx3%OUD-(SE0msCLl*Y2P!|CQBV=zRjFCo{@H?AO_LqiZSu zoVS}TWj!-@>6B0POl4#eV?D$FUMy(~rVH~-S7EP505cL~BP61%ggyWPt(g6Wl#ps4liyh2Xw}~qiL5QxEZ|FgzX719BcQYdIuJhp z-Pr5z#c{oPs+792kv9-F_alG|&!^~GO8V~r_ydSS06>5vY~T&4J{%p8R6BnN!*S2twNJy6ez-=_V>tX+V$$arz zIInb5>dn)>9335|nx<)I{H!WoR{(umiX{NxP3)}W1K2)!N+4d8%%xokZNL=n)* zcL9j}c~h}*mWO=-_%WvJW#e?El_$t=3XA9uTxaH^K zXZ@$2E_ynOTY7#H(BGsiKz{&$vn$op_?j!GR1rb_1EOdk0K|Mfw~!6^`1rLe!4Hr? zK=e5PtS!~4G9t66?30)DElNz1%I<*pk9#rwJRjh`alluI9=*%%?i*ND=biol3mZk% z3+%8~F&JP7MD!$JCc=}6=;YNp00ip%OAUgG*_txVH(tM;`Fm%P^>PT7?9@c=A|lEJ zJnm)KuPxIqGqYLNPyfF9c9|{cUQe)O{Ja1{2%>?J1OWs(9Ih?ht}wGv(vEuE`1adA z?E*`8S-EB*zz{eS4buNBG;)_QbN@m8p%u1p%;Tm(RLhc*wYSf?oH1XT^me`0m1EMr zUYx+p+@qdYg5Pgvd|z$FlB8s9bM=?``fGB=D!@0CYZekdZeJDgGnxNCZYk@TnQbZ4 z%-`E@=V(tUX)DWe)U3bzx$0AL+9JZ-QqtEfh2GdFHAMYYDpdVR-6#Ke@w!%$jvZPR z06d}Ov{sH`IiWP+`nH*<~|);&H-h~KT;mHhx?TLy6N1s9VTVxrhOCl**3S%EA;y& zrxOGTnBy$oJQB>2U#FI=qs^>I@n{O(hHn;<~KlZjM`YVfj+nTCl zClK>d5?}%7%}H5N(AaN9|K+gkVxNVw%*yat;sc-rGCb|cT)n8#pK%Fl?9WBDK3V!V z0RUlBYzBNMSsY2;s5 zI6~zA==s%;MGycAfM5@N8&Cph0gM19^xFb%7 literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/degoogled/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..40a9c5a345b701703912537d1d897a6ec0888dfa GIT binary patch literal 4516 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 U;le5gUbryzm`jTosAf@80TnD{ivR!s literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/degoogled/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..0b8153647f1712325796596ae2b08f2608b6a3c9 GIT binary patch literal 6902 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⩔#chWY+e-nFSbgRq@kXEt&-*AT6on`8lbc*L%*d z77yCJJ4p$GC)A(*?{IJ4A^p>5#Q*q_$iM#rJwMzQZT)*IdH?*!YC`-^jegGVm8pOD zGdKk@ZYe5VGZRL5(WTkBvFS{~6o7q9`Ha7UUy3CfbWao=#Mny0C;3tT_YhytYDrZg zac#Sb(O(zb5{3CHA+6WYQ#bm}1kB($e)0YRSj~S{_cmD~?sIm_`JM(YTURZfXSRVy znjYwLtBp;orUB*voLa{Z{1ujn_V`U&$sKRM3Yr^Bo;DZ(uvze`{^>?SWy?dRt*WK- zT4U6CrUk}|$^-l8QwK``E-~GAKN~g6c=sOCx9nGMfZ8<8uv5=p^6aDARnfRyV|NB% zH?Ot#NYm}8S=PIEk-p`=c@xyeL>+TlbI^!iH8z{g$K=ldtY0#sbhZOxR`B5+Oq?Kf zKf2;~uY=f68mi}wmz+M><8sLjvEol}<0la_FKB5|%Kmf1`=@fI zm3?>}WCsuLu9|TZJ>s;$1g&hmaQuv%3v%UI zyf|e-ek$*;vJ&o+1$mG!F3ljb_SgJxiNad`rXGM%V{ioE72Zxs*FXi+0;=TjsB&ky zN@q#39dZSqKH#b04YNrrJA0?a^@!!YVU;zOblbx{SEKQwJ-| z8s1BC|F>o#r(;5rEtA}qfSc;7W%E59Gi#;;j=As}Q(RR!(*~F9CN*~LL6(Kj0m@?2 z4AS#Z_M|ygu+KDCQ6q2x;M20|W`7HCX$dhy&U!e>u8R<#iLP=0R$T%3hE}JKpb5V3 zp-EK^0ROIkQx5q|H7;9iW3aCQ5D?xjO-pbJ8)vU(Rqp@<*PN@?=2Arh&0ba97@S^Y z`Vbje`u5vSLHGA>QTjPOhKSYH3D%=HH|CX6Q9x{8<(tJe~Ny()E&?!1$_Vge+q*eM!nk>kx zYDqCoTW_ZavDqgqs#Dks1RDU|YflT@0C+cmpysW##2DEpz}s(Ge9W+^tOgMBrQdk% zas^v~MDel9FW3m&vKv6aFjKeg)-Sj$jkZoRMAy9r5Saa37c3u}>xA32cYX2(;6HfJ zJ@=iSpb4yZh>4^F_B`l0`L3@Gchap6fGGgShTsjrZ@xVzhe!YV`+NdQ^Lh`&eMaKrlr)$K3gz19H-Q}%rIRU(}noX(*&OptMic+ z#D~i0IX$KcUX%10c-GDs)z+)bCj@+DBSc1R3tQUTXOdg(kuy5n%`pg80Wdt$b2S8C z&urQIH7n)B#&pnpW?!X!_8&B<%9{<_K+lBFb)>Ua1x=5dbWR1JckMU2Y3ITL=DsdM z{l8j<&z|* z+l>F?zJFA@WzeN7(`1kLOxO@S&XZF&HolvuL{;qtS!bWwuC4#jRS#p*!cUUSQ^u#! zUeRUYP*sm-v-Sa;_ky)mXbrPEZROSH0pKh?SS>@w1&WzFYL ziis|@50mk1E^CY~yy}T}bDrvQ8|pQ?GxypfUTPZP|G|Z`hk--%ycAw4yW2eK^AU3# zz~`gC^s~Diyz267*aj7T@Rlys@7lRWz2+^Mf7T23YY3hbUbS#q5IsQ6&CNz8+8EBh9V1F@w}N(k#l2ELA^VvL??@sZZ0`av1q4G%i>ArB9md z;8%a(xt?z08bD~F$MXWa>36~6x_V?Jut9y@S&Poou_1V|>4jIDFHt9rwz6KEFg!`7;f9?_V09MyHy?q90A7^kNAW8z`4tbJsvjH03v3)=s&+6a|WofW5}KthOThYv3H-vqSs8=`t0bt ztpD{F4Iu21uEynF_1Gu=f|_nUSWjKOVuwe99dPNaBj?&j8nGJy*XRF&6HfyIw&eL> zkH^!86t<8 literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/degoogled/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..d8ed1497df1e1df3b7a89c9e0baf3b37f3d56ad2 GIT binary patch literal 4442 zcmV-g5vA@@Nk&Fe5dZ*JMM6+kP&iCR5dZ)$zrZgL6^G)sZ5(O;vD2>pBVq!$(3$I5 zrT}Y7jyKU+G+m&q7Q_|lGFhq0Up<(Du~*Wz|Id)^ylWS)!*|u$~ZKIT# z+c#!z%~C#I%q*FinfY8@-A1ASfMqLXYr1yHzI*BUrdqRYKijr#8*C!mc0%-k2Zjpj zXa;290YOve^(d3Ir9(q6rMGW!&+y!TQkXIf80hhT-SOdtOi@b9Y&+|3@h9UUH6df z(;2n6Gm?Sa$hKW8S_zN=mX?-=@Ubw-0WwhY);jkMB{z~J)wb%vS*Ut`pQk?wRdN7q zq3_67q}&2P;LbU=ZQHhO<=4KtC2z_9VC#0;n%8V2TK)N5NNgl2lAKlBw0q3>AGFXm z%|?MRJO$!h6i5W|gmo-8~auwPWiXo|+i&pBOO7sM7t< zb?z_NJf+EahuZbpUEF0mK0j0P`T0dAYdoo4uVERjIa~vrlV(iuJeAa()J9{CGC+{i zn+N<#KXWp$P^IZZfKW}t8uM+G^Gf!pHvOLm0BCvR(+4JU!+g4~^T;#0{;qrjRfJ{FQ6 zG<%DWh3E&3xfC$>!%E_L1AsM8puU`2+q=455{l!AUk z=IVrm!+lYgcOtEy35vSBcW;);xI$jtf!iBG!Afe`1-jw3M!P4Cw@+58J>F;U*C}`f z)?K1jLk;VBd^V6ka(@iCdSwPN7Y!xsf>iAl(H6HtAHD@fh@LjRCUtAc{T70bluFe3 zbXT-ETeQL~z7`0oJ=v$01E6sAD+XXdmStUakO3+w5m~C^t_cbZM%1)u%UjthBVH$> z6jZv=4u7$1Hj%YER3qm@Cdf*O;yxggx`12drT+c)W&b1JG)1YE15 zT15x8QFznp2mYBimh;0TCn(P-toni)mz@;(_un7d$u}QKh zyGks{DplQXDAFqC>{4Yp1f`LK8t@_A!gX~;0Up+Y*T3X z7Dh;)O^d{76*-6^c{FGEfrlLzryz#NI2$g84GdqFN zU~@;U1c7D6s}c?OFj1SUwBlFA;x>jP^^T?NtlFLmd*|ks2oh)++0{MCd4N*T zP%x^CKAyUpx8Y(ZdEu4U5<(uWuwzWE$C*Qgl8RMrRyIwYbm<9w05Dge~#U6%t|l2%A?7BU@23hpE<)5@q#ZdufopG>l=S zDXR07A?awzAGAq=ZC{^VC&HAdyA}tKULp&^G{*o`O=)mDNgeQ!PPiL_|k;nPT2nTn?!g*WjPGG(nbbDS&|bV=-}JaJ`bmzUry(eWO%-aaADek&=qq^FqanI>GbJD2}vk|-FjJ00H(bk zPXfhnQ-~NM+mtf1pvzR7gfgjGBE9I8%{?wT939PRmLPDx+wJ*8crcuZ7q7?^b;|%M z;#MV?980)7mvDLEzyIRR&k2_vB^>TUnUhMSDO$eQgZP)ZL7E5%2x$I~aQ&*u^l06d z2j8|oe{zq{=llO$uBRT@ zj&W^w^nwVBN>VDxYnbH+@Z=~B+5w$rI*1c@asqW4Cyd4Gg~wM}(1^wK&vrV$M|>{o zbT8tKj=^KYO8yLbW(a25;!Mtr)$?OtKZo;_qSK1MZ{nTHY5MPns;{d;V92lz+Z=uf z68qoZ5)^&cCX`ydNY>i~{bE@wqZm{3?*1nH93v|Wp zA~K=>15TNLI9?3VD9yoXlp>zwIAmS!5YC$C7U3P#lc+18JBrMWh2Hcqap`EMrv&&* z`_P1mQ{Z*KAjnQQeW?<;rjum++$^Ujg*Z{jHW4n~IpzK_ah=v6!)cZz1d}ZdGK63_ zX8#L+@qr20l;9E_u~vC40XlQh6m4;bOyCH4e<>4x;=^^bM58qE_qGpvF;4t_I5gvn z1s4ksXBB}dd5XTcF&6xMN8-UQMtD@=H(iIC^mJ&!H+}wN0*1uBoNP|P%aiZL2n!z5 zioES`qkqD?tkByY!7+^qcP|mf%XLrr!VdT*Ok<>_f3~c8LUbtR*lGz$+Gnd6QYeIR zf^S|#zIa?wje^gLS50BWg(eo;+x!Y}V}5dHemL~do!#i4tbT>1f3YMKvBFK=>p3?| zFgj$-$s}O8Q?6n^W=J6j6z9&RWRG@TJ23=?7_JN>bW%Xh!N?nS*|H+gkPC;|e_;lv zf4OD^gfLXN-G_B0VY%ygv4DZivpz;cskQ%!wt``Df!@72)a{@VCIjCN~KWk!7w6j zURd!es1&TgMe)#CZvS}bZum8aCj>j&7Lb=`Ki zfT0RjR88=yF7gzdh~i7xUbO?U$FfXT$u84GzKeU(0p~E>ajDwNC_=%>8gypKoQ|tA zDnTWB23184ioAM6>Pd%DMUwzw;Sk2KMP1%86a5gjoW!Tp%a1_3hMidyGJ0T`{Wpm$ zNfna_ut*{+~+#@!aWbSef_7S<@XB@q6pvWkOA02 zmgPqp_ZD17B|td5_1n7-(7sz+L5rbi&R$U;cqel@tXlJwl)S9vc#AA|*<7lo1X03<+#YHD%%DBfBCj9i3p=)_7}wQrO&J(dIDXiwc6}5D z$Jxp27k!iEwRELEloIdBlkXLMej_NbNZtI?p4Oa#V*5aF?M?d26s!auM?0%8`XtMK zgyK``K@I7`G_6JJlNgq^wV=EfM=90AFQ&+{eCIY4p6i0ehv+J+)VVV zA_tYzl1iCbN0rkPHeT%UA;f<$aiE=%pcXY05V1DzDQn39%?0A4)=ki8G?Vx^*%~D$ zfaMQIM<+h+o@$1Q6F{QkMIO3`o39ZcH&5ehyXh=9C)LYN_5qW#>apF1uZU00V#C;<9a? zyjojjpVN`!Ff0HO0MV<=sBv!oU=)Y3xBe`=j*iGY5QzXF2p}u~kXo3}8Kt0@XMO<4 z4giEJ2mnH6g1Elf?z4P6lVqihX5Iiu?c9Q5A&Bq0$yzH8#T~Z8qW_zdG}}sR?&`Y$ zBw)~50stuh1sV0M$hh1a?D0TO+GP12pm;>2MMD4(3=laxqyglvwPqkIg&Wv&ZR;${ z|IOXqXM^@qpc1=h@0T3D(5er2C1Hwrmx4**3`~ z;2TfEvy)|(wdc4FP!CW(dPG1~WEo`%5D$}-&j0^vc~OqQ9GD)UH#?@sMgNY#55KmRzIP} z;-N7L8cN$FpwdS;|FW)o-17%T*Z=xg!^m0gKasB>(^b literal 0 HcmV?d00001 diff --git a/app/src/degoogled/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/degoogled/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1a6a93a778febbc5e27d7acc118324e991ef61ad GIT binary patch literal 9442 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 + + #626A75 + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b8d72d8 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..b0867796f14287908860f809a5706cd06dcf5317 GIT binary patch literal 20726 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 getLastPlayed(String server, int count); + + @Query("SELECT * FROM chronology WHERE timestamp >= :endDate AND timestamp < :startDate AND server == :server GROUP BY id ORDER BY COUNT(id) DESC LIMIT 20") + LiveData> getAllFrom(long startDate, long endDate, String server); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(Chronology chronologyObject); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/DownloadDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/DownloadDao.java new file mode 100644 index 0000000..a2d49f6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/DownloadDao.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.Download; + +import java.util.List; + +@Dao +public interface DownloadDao { + @Query("SELECT * FROM download WHERE download_state = 1 ORDER BY artist, album, disc_number, track ASC") + LiveData> getAll(); + + @Query("SELECT * FROM download WHERE download_state = 1 ORDER BY artist, album, disc_number, track ASC") + List getAllSync(); + + @Query("SELECT * FROM download WHERE id = :id") + Download getOne(String id); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(Download download); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insertAll(List downloads); + + @Query("UPDATE download SET download_state = 1 WHERE id = :id") + void update(String id); + + @Query("DELETE FROM download WHERE id = :id") + void delete(String id); + + @Query("DELETE FROM download WHERE id IN (:ids)") + void deleteByIds(List ids); + + @Query("DELETE FROM download") + void deleteAll(); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/FavoriteDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/FavoriteDao.java new file mode 100644 index 0000000..ec6ae68 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/FavoriteDao.java @@ -0,0 +1,26 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.Favorite; + +import java.util.List; + +@Dao +public interface FavoriteDao { + @Query("SELECT * FROM favorite") + List getAll(); + + @Insert(onConflict = OnConflictStrategy.IGNORE) + void insert(Favorite favorite); + + @Delete + void delete(Favorite favorite); + + @Query("DELETE FROM favorite") + void deleteAll(); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/LyricsDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/LyricsDao.java new file mode 100644 index 0000000..89d0d58 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/LyricsDao.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.LyricsCache; + +@Dao +public interface LyricsDao { + @Query("SELECT * FROM lyrics_cache WHERE song_id = :songId") + LyricsCache getOne(String songId); + + @Query("SELECT * FROM lyrics_cache WHERE song_id = :songId") + LiveData observeOne(String songId); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(LyricsCache lyricsCache); + + @Query("DELETE FROM lyrics_cache WHERE song_id = :songId") + void delete(String songId); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/PlaylistDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/PlaylistDao.java new file mode 100644 index 0000000..52e025d --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/PlaylistDao.java @@ -0,0 +1,27 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.subsonic.models.Playlist; + +import java.util.List; + +@Dao +public interface PlaylistDao { + // @Query("SELECT * FROM playlist WHERE server=:serverId") + // LiveData> getAll(String serverId); + + @Query("SELECT * FROM playlist") + LiveData> getAll(); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(Playlist playlist); + + @Delete + void delete(Playlist playlist); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/QueueDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/QueueDao.java new file mode 100644 index 0000000..4c507b2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/QueueDao.java @@ -0,0 +1,44 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.Queue; + +import java.util.List; + +@Dao +public interface QueueDao { + @Query("SELECT * FROM queue") + LiveData> getAll(); + + @Query("SELECT * FROM queue") + List getAllSimple(); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(Queue songQueueObject); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insertAll(List songQueueObjects); + + @Query("DELETE FROM queue WHERE queue.track_order=:position") + void delete(int position); + + @Query("DELETE FROM queue") + void deleteAll(); + + @Query("SELECT COUNT(*) FROM queue") + int count(); + + @Query("UPDATE queue SET last_play=:timestamp WHERE id=:id") + void setLastPlay(String id, long timestamp); + + @Query("UPDATE queue SET playing_changed=:timestamp WHERE id=:id") + void setPlayingChanged(String id, long timestamp); + + @Query("SELECT * FROM queue ORDER BY last_play DESC LIMIT 1") + Queue getLastPlayed(); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/RecentSearchDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/RecentSearchDao.java new file mode 100644 index 0000000..b1bd6c0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/RecentSearchDao.java @@ -0,0 +1,23 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.RecentSearch; + +import java.util.List; + +@Dao +public interface RecentSearchDao { + @Query("SELECT * FROM recent_search ORDER BY search DESC") + List getRecent(); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(RecentSearch search); + + @Delete + void delete(RecentSearch search); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/ServerDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/ServerDao.java new file mode 100644 index 0000000..b4a6bbc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/ServerDao.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.Server; + +import java.util.List; + +@Dao +public interface ServerDao { + @Query("SELECT * FROM server") + LiveData> getAll(); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(Server server); + + @Delete + void delete(Server server); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/database/dao/SessionMediaItemDao.java b/app/src/main/java/com/cappielloantonio/tempo/database/dao/SessionMediaItemDao.java new file mode 100644 index 0000000..a3f415a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/database/dao/SessionMediaItemDao.java @@ -0,0 +1,29 @@ +package com.cappielloantonio.tempo.database.dao; + +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import com.cappielloantonio.tempo.model.Queue; +import com.cappielloantonio.tempo.model.SessionMediaItem; + +import java.util.List; + +@Dao +public interface SessionMediaItemDao { + @Query("SELECT * FROM session_media_item WHERE id = :id") + SessionMediaItem get(String id); + + @Query("SELECT * FROM session_media_item WHERE timestamp = :timestamp") + List get(long timestamp); + + @Insert(onConflict = OnConflictStrategy.IGNORE) + void insert(SessionMediaItem sessionMediaItem); + + @Insert(onConflict = OnConflictStrategy.IGNORE) + void insertAll(List sessionMediaItems); + + @Query("DELETE FROM session_media_item") + void deleteAll(); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/Github.java b/app/src/main/java/com/cappielloantonio/tempo/github/Github.java new file mode 100644 index 0000000..f0b0de4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/Github.java @@ -0,0 +1,29 @@ +package com.cappielloantonio.tempo.github; + +import com.cappielloantonio.tempo.github.api.release.ReleaseClient; + +public class Github { + private static final String OWNER = "eddyizm"; + private static final String REPO = "Tempus"; + private ReleaseClient releaseClient; + + public ReleaseClient getReleaseClient() { + if (releaseClient == null) { + releaseClient = new ReleaseClient(this); + } + + return releaseClient; + } + + public String getUrl() { + return "https://api.github.com/"; + } + + public static String getOwner() { + return OWNER; + } + + public static String getRepo() { + return REPO; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/GithubRetrofitClient.kt b/app/src/main/java/com/cappielloantonio/tempo/github/GithubRetrofitClient.kt new file mode 100644 index 0000000..b9d1035 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/GithubRetrofitClient.kt @@ -0,0 +1,30 @@ +package com.cappielloantonio.tempo.github + +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +class GithubRetrofitClient(github: Github) { + var retrofit: Retrofit + + init { + retrofit = Retrofit.Builder() + .baseUrl(github.url) + .addConverterFactory(GsonConverterFactory.create()) + .client(getOkHttpClient()) + .build() + } + + private fun getOkHttpClient(): OkHttpClient { + return OkHttpClient.Builder() + .addInterceptor(getHttpLoggingInterceptor()) + .build() + } + + private fun getHttpLoggingInterceptor(): HttpLoggingInterceptor { + val loggingInterceptor = HttpLoggingInterceptor() + loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY) + return loggingInterceptor + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseClient.java b/app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseClient.java new file mode 100644 index 0000000..9bcf410 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseClient.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.github.api.release; + +import android.util.Log; + +import com.cappielloantonio.tempo.github.Github; +import com.cappielloantonio.tempo.github.GithubRetrofitClient; +import com.cappielloantonio.tempo.github.models.LatestRelease; + +import retrofit2.Call; + +public class ReleaseClient { + private static final String TAG = "ReleaseClient"; + + private final ReleaseService releaseService; + + public ReleaseClient(Github github) { + this.releaseService = new GithubRetrofitClient(github).getRetrofit().create(ReleaseService.class); + } + + public Call getLatestRelease() { + Log.d(TAG, "getLatestRelease()"); + return releaseService.getLatestRelease(Github.getOwner(), Github.getRepo()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseService.java b/app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseService.java new file mode 100644 index 0000000..be6faf3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/api/release/ReleaseService.java @@ -0,0 +1,12 @@ +package com.cappielloantonio.tempo.github.api.release; + +import com.cappielloantonio.tempo.github.models.LatestRelease; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Path; + +public interface ReleaseService { + @GET("repos/{owner}/{repo}/releases/latest") + Call getLatestRelease(@Path("owner") String owner, @Path("repo") String repo); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/models/Assets.kt b/app/src/main/java/com/cappielloantonio/tempo/github/models/Assets.kt new file mode 100644 index 0000000..6e815a7 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/models/Assets.kt @@ -0,0 +1,34 @@ +package com.cappielloantonio.tempo.github.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +data class Assets( + @SerializedName("url") + var url: String? = null, + @SerializedName("id") + var id: Int? = null, + @SerializedName("node_id") + var nodeId: String? = null, + @SerializedName("name") + var name: String? = null, + @SerializedName("label") + var label: String? = null, + @SerializedName("uploader") + var uploader: Uploader? = Uploader(), + @SerializedName("content_type") + var contentType: String? = null, + @SerializedName("state") + var state: String? = null, + @SerializedName("size") + var size: Int? = null, + @SerializedName("download_count") + var downloadCount: Int? = null, + @SerializedName("created_at") + var createdAt: String? = null, + @SerializedName("updated_at") + var updatedAt: String? = null, + @SerializedName("browser_download_url") + var browserDownloadUrl: String? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/models/Author.kt b/app/src/main/java/com/cappielloantonio/tempo/github/models/Author.kt new file mode 100644 index 0000000..996da2d --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/models/Author.kt @@ -0,0 +1,44 @@ +package com.cappielloantonio.tempo.github.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +data class Author( + @SerializedName("login") + var login: String? = null, + @SerializedName("id") + var id: Int? = null, + @SerializedName("node_id") + var nodeId: String? = null, + @SerializedName("avatar_url") + var avatarUrl: String? = null, + @SerializedName("gravatar_id") + var gravatarId: String? = null, + @SerializedName("url") + var url: String? = null, + @SerializedName("html_url") + var htmlUrl: String? = null, + @SerializedName("followers_url") + var followersUrl: String? = null, + @SerializedName("following_url") + var followingUrl: String? = null, + @SerializedName("gists_url") + var gistsUrl: String? = null, + @SerializedName("starred_url") + var starredUrl: String? = null, + @SerializedName("subscriptions_url") + var subscriptionsUrl: String? = null, + @SerializedName("organizations_url") + var organizationsUrl: String? = null, + @SerializedName("repos_url") + var reposUrl: String? = null, + @SerializedName("events_url") + var eventsUrl: String? = null, + @SerializedName("received_events_url") + var receivedEventsUrl: String? = null, + @SerializedName("type") + var type: String? = null, + @SerializedName("site_admin") + var siteAdmin: Boolean? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/models/LatestRelease.kt b/app/src/main/java/com/cappielloantonio/tempo/github/models/LatestRelease.kt new file mode 100644 index 0000000..ae4a8ec --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/models/LatestRelease.kt @@ -0,0 +1,46 @@ +package com.cappielloantonio.tempo.github.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +data class LatestRelease( + @SerializedName("url") + var url: String? = null, + @SerializedName("assets_url") + var assetsUrl: String? = null, + @SerializedName("upload_url") + var uploadUrl: String? = null, + @SerializedName("html_url") + var htmlUrl: String? = null, + @SerializedName("id") + var id: Int? = null, + @SerializedName("author") + var author: Author? = Author(), + @SerializedName("node_id") + var nodeId: String? = null, + @SerializedName("tag_name") + var tagName: String? = null, + @SerializedName("target_commitish") + var targetCommitish: String? = null, + @SerializedName("name") + var name: String? = null, + @SerializedName("draft") + var draft: Boolean? = null, + @SerializedName("prerelease") + var prerelease: Boolean? = null, + @SerializedName("created_at") + var createdAt: String? = null, + @SerializedName("published_at") + var publishedAt: String? = null, + @SerializedName("assets") + var assets: ArrayList = arrayListOf(), + @SerializedName("tarball_url") + var tarballUrl: String? = null, + @SerializedName("zipball_url") + var zipballUrl: String? = null, + @SerializedName("body") + var body: String? = null, + @SerializedName("reactions") + var reactions: Reactions? = Reactions() +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/models/Reactions.kt b/app/src/main/java/com/cappielloantonio/tempo/github/models/Reactions.kt new file mode 100644 index 0000000..21f3f90 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/models/Reactions.kt @@ -0,0 +1,28 @@ +package com.cappielloantonio.tempo.github.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +data class Reactions( + @SerializedName("url") + var url: String? = null, + @SerializedName("total_count") + var totalCount: Int? = null, + @SerializedName("+1") + var like: Int? = null, + @SerializedName("-1") + var dislike: Int? = null, + @SerializedName("laugh") + var laugh: Int? = null, + @SerializedName("hooray") + var hooray: Int? = null, + @SerializedName("confused") + var confused: Int? = null, + @SerializedName("heart") + var heart: Int? = null, + @SerializedName("rocket") + var rocket: Int? = null, + @SerializedName("eyes") + var eyes: Int? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/models/Uploader.kt b/app/src/main/java/com/cappielloantonio/tempo/github/models/Uploader.kt new file mode 100644 index 0000000..e0c74ec --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/models/Uploader.kt @@ -0,0 +1,44 @@ +package com.cappielloantonio.tempo.github.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +data class Uploader( + @SerializedName("login") + var login: String? = null, + @SerializedName("id") + var id: Int? = null, + @SerializedName("node_id") + var nodeId: String? = null, + @SerializedName("avatar_url") + var avatarUrl: String? = null, + @SerializedName("gravatar_id") + var gravatarId: String? = null, + @SerializedName("url") + var url: String? = null, + @SerializedName("html_url") + var htmlUrl: String? = null, + @SerializedName("followers_url") + var followersUrl: String? = null, + @SerializedName("following_url") + var followingUrl: String? = null, + @SerializedName("gists_url") + var gistsUrl: String? = null, + @SerializedName("starred_url") + var starredUrl: String? = null, + @SerializedName("subscriptions_url") + var subscriptionsUrl: String? = null, + @SerializedName("organizations_url") + var organizationsUrl: String? = null, + @SerializedName("repos_url") + var reposUrl: String? = null, + @SerializedName("events_url") + var eventsUrl: String? = null, + @SerializedName("received_events_url") + var receivedEventsUrl: String? = null, + @SerializedName("type") + var type: String? = null, + @SerializedName("site_admin") + var siteAdmin: Boolean? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/github/utils/UpdateUtil.java b/app/src/main/java/com/cappielloantonio/tempo/github/utils/UpdateUtil.java new file mode 100644 index 0000000..a4e61fb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/github/utils/UpdateUtil.java @@ -0,0 +1,32 @@ +package com.cappielloantonio.tempo.github.utils; + +import com.cappielloantonio.tempo.BuildConfig; +import com.cappielloantonio.tempo.github.models.LatestRelease; + +public class UpdateUtil { + + public static boolean showUpdateDialog(LatestRelease release) { + if (release.getTagName() == null) return false; + String remoteTag = release.getTagName().replaceAll("^\\D+", ""); + + try { + String[] local = BuildConfig.VERSION_NAME.split("\\."); + String[] remote = remoteTag.split("\\."); + + for (int i = 0; i < local.length; i++) { + int localPart = Integer.parseInt(local[i]); + int remotePart = Integer.parseInt(remote[i]); + + if (localPart > remotePart) { + return false; + } else if (localPart < remotePart) { + return true; + } + } + } catch (Exception exception) { + return false; + } + + return false; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideModule.java b/app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideModule.java new file mode 100644 index 0000000..ccbffb2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideModule.java @@ -0,0 +1,32 @@ +package com.cappielloantonio.tempo.glide; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.annotation.GlideModule; +import com.bumptech.glide.load.DecodeFormat; +import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory; +import com.bumptech.glide.Registry; +import com.bumptech.glide.module.AppGlideModule; +import com.bumptech.glide.request.RequestOptions; +import com.cappielloantonio.tempo.util.Preferences; + +import java.io.InputStream; + +@GlideModule +public class CustomGlideModule extends AppGlideModule { + @Override + public void applyOptions(@NonNull Context context, GlideBuilder builder) { + int diskCacheSize = Preferences.getImageCacheSize() * 1024 * 1024; + builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "cache", diskCacheSize)); + builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_RGB_565)); + } + + @Override + public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { + registry.replace(String.class, InputStream.class, new IPv6StringLoader.Factory()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideRequest.java b/app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideRequest.java new file mode 100644 index 0000000..a6e650e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/glide/CustomGlideRequest.java @@ -0,0 +1,150 @@ +package com.cappielloantonio.tempo.glide; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.util.Log; + +import androidx.annotation.Nullable; +import androidx.appcompat.content.res.AppCompatResources; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.RequestBuilder; +import com.bumptech.glide.RequestManager; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.bitmap.CenterCrop; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; +import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.signature.ObjectKey; +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.util.Util; +import com.google.android.material.elevation.SurfaceColors; + +import java.util.Map; + +public class CustomGlideRequest { + private static final String TAG = "CustomGlideRequest"; + + public static final int CORNER_RADIUS = Preferences.isCornerRoundingEnabled() ? Preferences.getRoundedCornerSize() : 1; + + public static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL; + + public enum ResourceType { + Unknown, + Album, + Artist, + Folder, + Directory, + Playlist, + Podcast, + Radio, + Song, + } + + public static RequestOptions createRequestOptions(Context context, String item, ResourceType type) { + return new RequestOptions() + .placeholder(new ColorDrawable(SurfaceColors.SURFACE_5.getColor(context))) + .fallback(getPlaceholder(context, type)) + .error(getPlaceholder(context, type)) + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .signature(new ObjectKey(item != null ? item : 0)) + .transform(new CenterCrop(), new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)); + } + + @Nullable + private static Drawable getPlaceholder(Context context, ResourceType type) { + switch (type) { + case Album: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_album); + case Artist: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_artist); + case Folder: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_folder); + case Directory: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_directory); + case Playlist: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_playlist); + case Podcast: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_podcast); + case Radio: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_radio); + case Song: + return AppCompatResources.getDrawable(context, R.drawable.ic_placeholder_song); + default: + case Unknown: + return new ColorDrawable(SurfaceColors.SURFACE_5.getColor(context)); + } + } + + public static String createUrl(String item, int size) { + Map params = App.getSubsonicClientInstance(false).getParams(); + + StringBuilder uri = new StringBuilder(); + + uri.append(App.getSubsonicClientInstance(false).getUrl()); + uri.append("getCoverArt"); + + if (params.containsKey("u") && params.get("u") != null) + uri.append("?u=").append(Util.encode(params.get("u"))); + if (params.containsKey("p") && params.get("p") != null) + uri.append("&p=").append(params.get("p")); + if (params.containsKey("s") && params.get("s") != null) + uri.append("&s=").append(params.get("s")); + if (params.containsKey("t") && params.get("t") != null) + uri.append("&t=").append(params.get("t")); + if (params.containsKey("v") && params.get("v") != null) + uri.append("&v=").append(params.get("v")); + if (params.containsKey("c") && params.get("c") != null) + uri.append("&c=").append(params.get("c")); + if (size != -1) + uri.append("&size=").append(size); + + uri.append("&id=").append(item); + + Log.d(TAG, "createUrl() " + uri); + + return uri.toString(); + } + + public static void loadAlbumArtBitmap(Context context, + String coverId, + int size, + CustomTarget target) { + String url = createUrl(coverId, size); + Glide.with(context) + .asBitmap() + .load(url) + .apply(createRequestOptions(context, coverId, ResourceType.Album)) + .into(target); + } + + public static class Builder { + private final RequestManager requestManager; + private String item; + + private Builder(Context context, String item, ResourceType type) { + this.requestManager = Glide.with(context); + + if (item != null && !Preferences.isDataSavingMode()) { + this.item = createUrl(item, Preferences.getImageSize()); + } + + requestManager.applyDefaultRequestOptions(createRequestOptions(context, item, type)); + } + + public static Builder from(Context context, String item, ResourceType type) { + return new Builder(context, item, type); + } + + public RequestBuilder build() { + return requestManager + .load(item) + .transition(DrawableTransitionOptions.withCrossFade()); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/glide/IPv6StringLoader.java b/app/src/main/java/com/cappielloantonio/tempo/glide/IPv6StringLoader.java new file mode 100644 index 0000000..85307ac --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/glide/IPv6StringLoader.java @@ -0,0 +1,110 @@ +package com.cappielloantonio.tempo.glide; + +import androidx.annotation.NonNull; + +import com.bumptech.glide.Priority; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.Options; +import com.bumptech.glide.load.data.DataFetcher; +import com.bumptech.glide.load.model.ModelLoader; +import com.bumptech.glide.load.model.ModelLoaderFactory; +import com.bumptech.glide.load.model.MultiModelLoaderFactory; +import com.bumptech.glide.signature.ObjectKey; + +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +public class IPv6StringLoader implements ModelLoader { + private static final int DEFAULT_TIMEOUT_MS = 2500; + + @Override + public boolean handles(@NonNull String model) { + return model.startsWith("http://") || model.startsWith("https://"); + } + + @Override + public LoadData buildLoadData(@NonNull String model, int width, int height, @NonNull Options options) { + if (!handles(model)) { + return null; + } + return new LoadData<>(new ObjectKey(model), new IPv6StreamFetcher(model)); + } + + private static class IPv6StreamFetcher implements DataFetcher { + private final String model; + private InputStream stream; + private HttpURLConnection connection; + + IPv6StreamFetcher(String model) { + this.model = model; + } + + @Override + public void loadData(@NonNull Priority priority, @NonNull DataCallback callback) { + try { + URL url = new URL(model); + connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(DEFAULT_TIMEOUT_MS); + connection.setReadTimeout(DEFAULT_TIMEOUT_MS); + connection.setUseCaches(true); + connection.setDoInput(true); + connection.connect(); + + if (connection.getResponseCode() / 100 != 2) { + callback.onLoadFailed(new IOException("Request failed with status code: " + connection.getResponseCode())); + return; + } + + stream = connection.getInputStream(); + callback.onDataReady(stream); + } catch (IOException e) { + callback.onLoadFailed(e); + } + } + + @Override + public void cleanup() { + if (stream != null) { + try { + stream.close(); + } catch (IOException ignored) { + } + } + if (connection != null) { + connection.disconnect(); + } + } + + @Override + public void cancel() { + // HttpURLConnection does not provide a direct cancel mechanism. + } + + @NonNull + @Override + public Class getDataClass() { + return InputStream.class; + } + + @NonNull + @Override + public DataSource getDataSource() { + return DataSource.REMOTE; + } + } + + public static class Factory implements ModelLoaderFactory { + @NonNull + @Override + public ModelLoader build(@NonNull MultiModelLoaderFactory multiFactory) { + return new IPv6StringLoader(); + } + + @Override + public void teardown() { + // No-op + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/ThemeHelper.java b/app/src/main/java/com/cappielloantonio/tempo/helper/ThemeHelper.java new file mode 100644 index 0000000..d10392b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/ThemeHelper.java @@ -0,0 +1,35 @@ +package com.cappielloantonio.tempo.helper; + +import android.os.Build; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatDelegate; + +public class ThemeHelper { + private static final String TAG = "ThemeHelper"; + + public static final String LIGHT_MODE = "light"; + public static final String DARK_MODE = "dark"; + public static final String DEFAULT_MODE = "default"; + + public static void applyTheme(@NonNull String themePref) { + switch (themePref) { + case LIGHT_MODE: { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + break; + } + case DARK_MODE: { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); + break; + } + default: { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY); + } + break; + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/CustomLinearSnapHelper.java b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/CustomLinearSnapHelper.java new file mode 100644 index 0000000..4d045d0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/CustomLinearSnapHelper.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.helper.recyclerview; + +import android.view.View; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.LinearSnapHelper; +import androidx.recyclerview.widget.RecyclerView; + +public class CustomLinearSnapHelper extends LinearSnapHelper { + @Override + public View findSnapView(RecyclerView.LayoutManager layoutManager) { + if (layoutManager instanceof LinearLayoutManager) { + LinearLayoutManager linearLayoutManager = (LinearLayoutManager) layoutManager; + if (!needToDoSnap(linearLayoutManager)) { + return null; + } + } + return super.findSnapView(layoutManager); + } + + public boolean needToDoSnap(LinearLayoutManager linearLayoutManager) { + return linearLayoutManager.findFirstCompletelyVisibleItemPosition() != 0 && linearLayoutManager.findLastCompletelyVisibleItemPosition() != linearLayoutManager.getItemCount() - 1; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/DotsIndicatorDecoration.java b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/DotsIndicatorDecoration.java new file mode 100644 index 0000000..0dcf9c9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/DotsIndicatorDecoration.java @@ -0,0 +1,116 @@ +package com.cappielloantonio.tempo.helper.recyclerview; + +import android.content.res.Resources; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.ColorInt; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.jetbrains.annotations.NotNull; + +public class DotsIndicatorDecoration extends RecyclerView.ItemDecoration { + private static final String TAG = "DotsIndicatorDecoration"; + + private final int indicatorHeight; + private final int indicatorItemPadding; + private final int radius; + + private final Paint inactivePaint = new Paint(); + private final Paint activePaint = new Paint(); + + public DotsIndicatorDecoration(int radius, int padding, int indicatorHeight, @ColorInt int colorInactive, @ColorInt int colorActive) { + float strokeWidth = Resources.getSystem().getDisplayMetrics().density * 1; + this.radius = radius; + + inactivePaint.setStrokeCap(Paint.Cap.ROUND); + inactivePaint.setStrokeWidth(strokeWidth); + inactivePaint.setStyle(Paint.Style.STROKE); + inactivePaint.setAntiAlias(true); + inactivePaint.setColor(colorInactive); + + activePaint.setStrokeCap(Paint.Cap.ROUND); + activePaint.setStrokeWidth(strokeWidth); + activePaint.setStyle(Paint.Style.FILL); + activePaint.setAntiAlias(true); + activePaint.setColor(colorActive); + + this.indicatorItemPadding = padding; + this.indicatorHeight = indicatorHeight; + } + + @Override + public void onDrawOver(@NotNull Canvas c, @NotNull RecyclerView parent, @NotNull RecyclerView.State state) { + super.onDrawOver(c, parent, state); + + if (parent.getAdapter() == null) return; + + int itemCount = (int) Math.ceil((double) parent.getAdapter().getItemCount() / 5); + + if (itemCount <= 1) { + return; + } + + // center horizontally, calculate width and subtract half from center + float totalLength = this.radius * 2 * itemCount; + float paddingBetweenItems = Math.max(0, itemCount - 1) * indicatorItemPadding; + float indicatorTotalWidth = totalLength + paddingBetweenItems; + float indicatorStartX = (parent.getWidth() - indicatorTotalWidth) / 2f; + + // center vertically in the allotted space + float indicatorPosY = parent.getHeight() - indicatorHeight - (float) indicatorItemPadding / 4; + + drawInactiveDots(c, indicatorStartX, indicatorPosY, itemCount); + + final int activePosition; + + if (parent.getLayoutManager() instanceof GridLayoutManager) { + activePosition = ((GridLayoutManager) parent.getLayoutManager()).findFirstVisibleItemPosition(); + } else if (parent.getLayoutManager() instanceof LinearLayoutManager) { + activePosition = ((LinearLayoutManager) parent.getLayoutManager()).findFirstVisibleItemPosition(); + } else { + // not supported layout manager + return; + } + + if (activePosition == RecyclerView.NO_POSITION) { + return; + } + + // find offset of active page if the user is scrolling + final View activeChild = parent.getLayoutManager().findViewByPosition(activePosition); + if (activeChild == null) { + return; + } + + drawActiveDot(c, indicatorStartX, indicatorPosY, activePosition); + } + + private void drawInactiveDots(Canvas c, float indicatorStartX, float indicatorPosY, int itemCount) { + // width of item indicator including padding + final float itemWidth = this.radius * 2 + indicatorItemPadding; + + float start = indicatorStartX + radius; + for (int i = 0; i < itemCount; i++) { + c.drawCircle(start, indicatorPosY, radius, inactivePaint); + start += itemWidth; + } + } + + private void drawActiveDot(Canvas c, float indicatorStartX, float indicatorPosY, int highlightPosition) { + // width of item indicator including padding + final float itemWidth = this.radius * 2 + indicatorItemPadding; + float highlightStart = (float) Math.ceil(indicatorStartX + radius + itemWidth * highlightPosition / 5); + c.drawCircle(highlightStart, indicatorPosY, radius, activePaint); + } + + @Override + public void getItemOffsets(@NotNull Rect outRect, @NotNull View view, @NotNull RecyclerView parent, @NotNull RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + outRect.bottom = indicatorHeight; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/FastScrollbar.java b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/FastScrollbar.java new file mode 100644 index 0000000..d479813 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/FastScrollbar.java @@ -0,0 +1,197 @@ +package com.cappielloantonio.tempo.helper.recyclerview; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.content.Context; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.IdRes; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +public class FastScrollbar extends LinearLayout { + private static final int BUBBLE_ANIMATION_DURATION = 100; + private static final int TRACK_SNAP_RANGE = 5; + + private TextView bubble; + private View handle; + private RecyclerView recyclerView; + private int height; + private boolean isInitialized = false; + private ObjectAnimator currentAnimator = null; + + private final RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull final RecyclerView recyclerView, final int dx, final int dy) { + updateBubbleAndHandlePosition(); + } + }; + + public interface BubbleTextGetter { + String getTextToShowInBubble(int pos); + } + + public FastScrollbar(final Context context, final AttributeSet attrs, final int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context); + } + + public FastScrollbar(final Context context) { + super(context); + init(context); + } + + public FastScrollbar(final Context context, final AttributeSet attrs) { + super(context, attrs); + init(context); + } + + protected void init(Context context) { + if (isInitialized) return; + isInitialized = true; + setOrientation(HORIZONTAL); + setClipChildren(false); + } + + public void setViewsToUse(@LayoutRes int layoutResId, @IdRes int bubbleResId, @IdRes int handleResId) { + final LayoutInflater inflater = LayoutInflater.from(getContext()); + inflater.inflate(layoutResId, this, true); + bubble = findViewById(bubbleResId); + if (bubble != null) bubble.setVisibility(INVISIBLE); + handle = findViewById(handleResId); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + height = h; + updateBubbleAndHandlePosition(); + } + + @Override + public boolean onTouchEvent(@NonNull MotionEvent event) { + final int action = event.getAction(); + switch (action) { + case MotionEvent.ACTION_DOWN: + if (event.getX() < handle.getX() - ViewCompat.getPaddingStart(handle)) return false; + if (currentAnimator != null) currentAnimator.cancel(); + if (bubble != null && bubble.getVisibility() == INVISIBLE) showBubble(); + handle.setSelected(true); + case MotionEvent.ACTION_MOVE: + final float y = event.getY(); + setBubbleAndHandlePosition(y); + setRecyclerViewPosition(y); + return true; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + handle.setSelected(false); + hideBubble(); + return true; + } + return super.onTouchEvent(event); + } + + public void setRecyclerView(final RecyclerView recyclerView) { + if (this.recyclerView != recyclerView) { + if (this.recyclerView != null) + this.recyclerView.removeOnScrollListener(onScrollListener); + this.recyclerView = recyclerView; + if (this.recyclerView == null) return; + recyclerView.addOnScrollListener(onScrollListener); + } + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (recyclerView != null) { + recyclerView.removeOnScrollListener(onScrollListener); + recyclerView = null; + } + } + + private void setRecyclerViewPosition(float y) { + if (recyclerView != null) { + final int itemCount = recyclerView.getAdapter().getItemCount(); + float proportion; + if (handle.getY() == 0) proportion = 0f; + else if (handle.getY() + handle.getHeight() >= height - TRACK_SNAP_RANGE) + proportion = 1f; + else proportion = y / (float) height; + final int targetPos = getValueInRange(0, itemCount - 1, (int) (proportion * (float) itemCount)); + ((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(targetPos, 0); + final String bubbleText = ((BubbleTextGetter) recyclerView.getAdapter()).getTextToShowInBubble(targetPos); + if (bubble != null) { + bubble.setText(bubbleText); + if (TextUtils.isEmpty(bubbleText)) { + hideBubble(); + } else if (bubble.getVisibility() == View.INVISIBLE) { + showBubble(); + } + } + } + } + + private int getValueInRange(int min, int max, int value) { + int minimum = Math.max(min, value); + return Math.min(minimum, max); + } + + private void updateBubbleAndHandlePosition() { + if (bubble == null || handle.isSelected()) return; + + final int verticalScrollOffset = recyclerView.computeVerticalScrollOffset(); + final int verticalScrollRange = recyclerView.computeVerticalScrollRange(); + float proportion = (float) verticalScrollOffset / ((float) verticalScrollRange - height); + setBubbleAndHandlePosition(height * proportion); + } + + private void setBubbleAndHandlePosition(float y) { + final int handleHeight = handle.getHeight(); + handle.setY(getValueInRange(0, height - handleHeight, (int) (y - handleHeight / 2))); + if (bubble != null) { + int bubbleHeight = bubble.getHeight(); + bubble.setY(getValueInRange(0, height - bubbleHeight - handleHeight / 2, (int) (y - bubbleHeight))); + } + } + + private void showBubble() { + if (bubble == null) return; + bubble.setVisibility(VISIBLE); + if (currentAnimator != null) currentAnimator.cancel(); + currentAnimator = ObjectAnimator.ofFloat(bubble, "alpha", 0f, 1f).setDuration(BUBBLE_ANIMATION_DURATION); + currentAnimator.start(); + } + + private void hideBubble() { + if (bubble == null) return; + if (currentAnimator != null) currentAnimator.cancel(); + currentAnimator = ObjectAnimator.ofFloat(bubble, "alpha", 1f, 0f).setDuration(BUBBLE_ANIMATION_DURATION); + currentAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + bubble.setVisibility(INVISIBLE); + currentAnimator = null; + } + + @Override + public void onAnimationCancel(Animator animation) { + super.onAnimationCancel(animation); + bubble.setVisibility(INVISIBLE); + currentAnimator = null; + } + }); + currentAnimator.start(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/GridItemDecoration.java b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/GridItemDecoration.java new file mode 100644 index 0000000..71f5479 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/GridItemDecoration.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.helper.recyclerview; + +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +public class GridItemDecoration extends RecyclerView.ItemDecoration { + private final int spanCount; + private final int spacing; + private final boolean includeEdge; + + public GridItemDecoration(int spanCount, int spacing, boolean includeEdge) { + this.spanCount = spanCount; + this.spacing = spacing; + this.includeEdge = includeEdge; + } + + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, RecyclerView parent, @NonNull RecyclerView.State state) { + int position = parent.getChildAdapterPosition(view); // item position + int column = position % spanCount; // item column + + if (includeEdge) { + outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing) + outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing) + + if (position < spanCount) { // top edge + outRect.top = spacing; + } + outRect.bottom = spacing; // item bottom + } else { + outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing) + outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f / spanCount) * spacing) + if (position >= spanCount) { + outRect.top = spacing; // item top + } + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/NestedScrollableHost.kt b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/NestedScrollableHost.kt new file mode 100644 index 0000000..b2fdba2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/NestedScrollableHost.kt @@ -0,0 +1,88 @@ +package com.cappielloantonio.tempo.helper.recyclerview + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import android.view.ViewConfiguration +import android.widget.FrameLayout +import androidx.viewpager2.widget.ViewPager2 +import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL +import kotlin.math.absoluteValue +import kotlin.math.sign + +class NestedScrollableHost : FrameLayout { + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + private var touchSlop = 0 + private var initialX = 0f + private var initialY = 0f + private val parentViewPager: ViewPager2? + get() { + var v: View? = parent as? View + while (v != null && v !is ViewPager2) { + v = v.parent as? View + } + return v as? ViewPager2 + } + + private val child: View? get() = if (childCount > 0) getChildAt(0) else null + + init { + touchSlop = ViewConfiguration.get(context).scaledTouchSlop + } + + private fun canChildScroll(orientation: Int, delta: Float): Boolean { + val direction = -delta.sign.toInt() + return when (orientation) { + 0 -> child?.canScrollHorizontally(direction) ?: false + 1 -> child?.canScrollVertically(direction) ?: false + else -> throw IllegalArgumentException() + } + } + + override fun onInterceptTouchEvent(e: MotionEvent): Boolean { + handleInterceptTouchEvent(e) + return super.onInterceptTouchEvent(e) + } + + private fun handleInterceptTouchEvent(e: MotionEvent) { + val orientation = parentViewPager?.orientation ?: return + + // Early return if child can't scroll in same direction as parent + if (!canChildScroll(orientation, -1f) && !canChildScroll(orientation, 1f)) { + return + } + + if (e.action == MotionEvent.ACTION_DOWN) { + initialX = e.x + initialY = e.y + parent.requestDisallowInterceptTouchEvent(true) + } else if (e.action == MotionEvent.ACTION_MOVE) { + val dx = e.x - initialX + val dy = e.y - initialY + val isVpHorizontal = orientation == ORIENTATION_HORIZONTAL + + // assuming ViewPager2 touch-slop is 2x touch-slop of child + val scaledDx = dx.absoluteValue * if (isVpHorizontal) .5f else 1f + val scaledDy = dy.absoluteValue * if (isVpHorizontal) 1f else .5f + + if (scaledDx > touchSlop || scaledDy > touchSlop) { + if (isVpHorizontal == (scaledDy > scaledDx)) { + // Gesture is perpendicular, allow all parents to intercept + parent.requestDisallowInterceptTouchEvent(false) + } else { + // Gesture is parallel, query child if movement in that direction is possible + if (canChildScroll(orientation, if (isVpHorizontal) dx else dy)) { + // Child can scroll, disallow all parents to intercept + parent.requestDisallowInterceptTouchEvent(true) + } else { + // Child cannot scroll, allow all parents to intercept + parent.requestDisallowInterceptTouchEvent(false) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/PaginationScrollListener.java b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/PaginationScrollListener.java new file mode 100644 index 0000000..2e1c8f4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/PaginationScrollListener.java @@ -0,0 +1,33 @@ +package com.cappielloantonio.tempo.helper.recyclerview; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + + +public abstract class PaginationScrollListener extends RecyclerView.OnScrollListener { + private final LinearLayoutManager layoutManager; + + protected PaginationScrollListener(LinearLayoutManager layoutManager) { + this.layoutManager = layoutManager; + } + + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + + int visibleItemCount = layoutManager.getChildCount(); + int totalItemCount = layoutManager.getItemCount(); + int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); + + if (!isLoading()) { + if (firstVisibleItemPosition >= 0 && (visibleItemCount + firstVisibleItemPosition) >= (totalItemCount / 4 * 3)) { + loadMoreItems(); + } + } + } + + protected abstract void loadMoreItems(); + + public abstract boolean isLoading(); +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/SquareLayout.java b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/SquareLayout.java new file mode 100644 index 0000000..3437e49 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/helper/recyclerview/SquareLayout.java @@ -0,0 +1,28 @@ +package com.cappielloantonio.tempo.helper.recyclerview; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.RelativeLayout; + +public class SquareLayout extends RelativeLayout { + public SquareLayout(Context context) { + super(context); + } + + public SquareLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SquareLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public SquareLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, widthMeasureSpec); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java new file mode 100644 index 0000000..d65695c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java @@ -0,0 +1,35 @@ +package com.cappielloantonio.tempo.interfaces; + + +import android.os.Bundle; + +import androidx.annotation.Keep; + +@Keep +public interface ClickCallback { + default void onMediaClick(Bundle bundle) {} + default void onMediaLongClick(Bundle bundle) {} + default void onAlbumClick(Bundle bundle) {} + default void onAlbumLongClick(Bundle bundle) {} + default void onArtistClick(Bundle bundle) {} + default void onArtistLongClick(Bundle bundle) {} + default void onGenreClick(Bundle bundle) {} + default void onPlaylistClick(Bundle bundle) {} + default void onPlaylistLongClick(Bundle bundle) {} + default void onYearClick(Bundle bundle) {} + default void onServerClick(Bundle bundle) {} + default void onServerLongClick(Bundle bundle) {} + default void onPodcastEpisodeClick(Bundle bundle) {} + default void onPodcastEpisodeAltClick(Bundle bundle) {} + default void onPodcastEpisodeLongClick(Bundle bundle) {} + default void onPodcastChannelClick(Bundle bundle) {} + default void onPodcastChannelLongClick(Bundle bundle) {} + default void onInternetRadioStationClick(Bundle bundle) {} + default void onInternetRadioStationLongClick(Bundle bundle) {} + default void onMusicFolderClick(Bundle bundle) {} + default void onMusicDirectoryClick(Bundle bundle) {} + default void onMusicIndexClick(Bundle bundle) {} + default void onDownloadGroupLongClick(Bundle bundle) {} + default void onShareClick(Bundle bundle) {} + default void onShareLongClick(Bundle bundle) {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/DecadesCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/DecadesCallback.java new file mode 100644 index 0000000..531114e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/DecadesCallback.java @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep +public interface DecadesCallback { + default void onLoadYear(int year) {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/DialogClickCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/DialogClickCallback.java new file mode 100644 index 0000000..adc3937 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/DialogClickCallback.java @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.interfaces; + + +import androidx.annotation.Keep; + +@Keep +public interface DialogClickCallback { + default void onPositiveClick() {} + + default void onNegativeClick() {} + + default void onNeutralClick() {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaCallback.java new file mode 100644 index 0000000..23fb6c5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaCallback.java @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +import java.util.List; + +@Keep +public interface MediaCallback { + default void onError(Exception exception) {} + default void onLoadMedia(List media) {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaIndexCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaIndexCallback.java new file mode 100644 index 0000000..6a236e5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/MediaIndexCallback.java @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep +public interface MediaIndexCallback { + default void onRecovery(int index) {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/PlaylistCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/PlaylistCallback.java new file mode 100644 index 0000000..73caf6d --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/PlaylistCallback.java @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep +public interface PlaylistCallback { + default void onDismiss() {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/PodcastCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/PodcastCallback.java new file mode 100644 index 0000000..fde54e3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/PodcastCallback.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep + +public interface PodcastCallback { + default void onDismiss() {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/RadioCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/RadioCallback.java new file mode 100644 index 0000000..42bcea8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/RadioCallback.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep + +public interface RadioCallback { + default void onDismiss() {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/ScanCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/ScanCallback.java new file mode 100644 index 0000000..6260743 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/ScanCallback.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep +public interface ScanCallback { + default void onError(Exception exception) {} + default void onSuccess(boolean isScanning, long count) {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/StarCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/StarCallback.java new file mode 100644 index 0000000..a5bb177 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/StarCallback.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep +public interface StarCallback { + default void onError() {} + default void onSuccess() {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/SystemCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/SystemCallback.java new file mode 100644 index 0000000..dc0b008 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/SystemCallback.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.interfaces; + +import androidx.annotation.Keep; + +@Keep +public interface SystemCallback { + default void onError(Exception exception) {} + default void onSuccess(String password, String token, String salt) {} +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/Chronology.kt b/app/src/main/java/com/cappielloantonio/tempo/model/Chronology.kt new file mode 100644 index 0000000..a3b142e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/Chronology.kt @@ -0,0 +1,59 @@ +package com.cappielloantonio.tempo.model + +import androidx.annotation.Keep +import androidx.media3.common.MediaItem +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.cappielloantonio.tempo.subsonic.models.Child +import com.cappielloantonio.tempo.util.Preferences +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +@Entity(tableName = "chronology") +class Chronology( + @PrimaryKey override val id: String, + @ColumnInfo(name = "timestamp") + var timestamp: Long = System.currentTimeMillis(), + @ColumnInfo(name = "server") + var server: String? = null, +) : Child(id) { + constructor(mediaItem: MediaItem) : this(mediaItem.mediaMetadata.extras!!.getString("id")!!) { + parentId = mediaItem.mediaMetadata.extras!!.getString("parentId") + isDir = mediaItem.mediaMetadata.extras!!.getBoolean("isDir") + title = mediaItem.mediaMetadata.extras!!.getString("title") + album = mediaItem.mediaMetadata.extras!!.getString("album") + artist = mediaItem.mediaMetadata.extras!!.getString("artist") + track = mediaItem.mediaMetadata.extras!!.getInt("track") + year = mediaItem.mediaMetadata.extras!!.getInt("year") + genre = mediaItem.mediaMetadata.extras!!.getString("genre") + coverArtId = mediaItem.mediaMetadata.extras!!.getString("coverArtId") + size = mediaItem.mediaMetadata.extras!!.getLong("size") + contentType = mediaItem.mediaMetadata.extras!!.getString("contentType") + suffix = mediaItem.mediaMetadata.extras!!.getString("suffix") + transcodedContentType = mediaItem.mediaMetadata.extras!!.getString("transcodedContentType") + transcodedSuffix = mediaItem.mediaMetadata.extras!!.getString("transcodedSuffix") + duration = mediaItem.mediaMetadata.extras!!.getInt("duration") + bitrate = mediaItem.mediaMetadata.extras!!.getInt("bitrate") + samplingRate = mediaItem.mediaMetadata.extras!!.getInt("samplingRate") + bitDepth = mediaItem.mediaMetadata.extras!!.getInt("bitDepth") + path = mediaItem.mediaMetadata.extras!!.getString("path") + isVideo = mediaItem.mediaMetadata.extras!!.getBoolean("isVideo") + userRating = mediaItem.mediaMetadata.extras!!.getInt("userRating") + averageRating = mediaItem.mediaMetadata.extras!!.getDouble("averageRating") + playCount = mediaItem.mediaMetadata.extras!!.getLong("playCount") + discNumber = mediaItem.mediaMetadata.extras!!.getInt("discNumber") + created = Date(mediaItem.mediaMetadata.extras!!.getLong("created")) + starred = Date(mediaItem.mediaMetadata.extras!!.getLong("starred")) + albumId = mediaItem.mediaMetadata.extras!!.getString("albumId") + artistId = mediaItem.mediaMetadata.extras!!.getString("artistId") + type = mediaItem.mediaMetadata.extras!!.getString("type") + bookmarkPosition = mediaItem.mediaMetadata.extras!!.getLong("bookmarkPosition") + originalWidth = mediaItem.mediaMetadata.extras!!.getInt("originalWidth") + originalHeight = mediaItem.mediaMetadata.extras!!.getInt("originalHeight") + server = Preferences.getServerId() + timestamp = Date().time + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/Download.kt b/app/src/main/java/com/cappielloantonio/tempo/model/Download.kt new file mode 100644 index 0000000..0c54e1c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/Download.kt @@ -0,0 +1,64 @@ +package com.cappielloantonio.tempo.model + +import androidx.annotation.Keep +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.cappielloantonio.tempo.subsonic.models.Child +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +@Entity(tableName = "download") +class Download( + @PrimaryKey override val id: String, + @ColumnInfo(name = "playlist_id") + var playlistId: String? = null, + @ColumnInfo(name = "playlist_name") + var playlistName: String? = null, + @ColumnInfo(name = "download_state", defaultValue = "1") + var downloadState: Int = 0, + @ColumnInfo(name = "download_uri", defaultValue = "") + var downloadUri: String? = null, +) : Child(id) { + constructor(child: Child) : this(child.id) { + parentId = child.parentId + isDir = child.isDir + title = child.title + album = child.album + artist = child.artist + track = child.track + year = child.year + genre = child.genre + coverArtId = child.coverArtId + size = child.size + contentType = child.contentType + suffix = child.suffix + transcodedContentType = child.transcodedContentType + transcodedSuffix = child.transcodedSuffix + duration = child.duration + bitrate = child.bitrate + samplingRate = child.samplingRate + bitDepth = child.bitDepth + path = child.path + isVideo = child.isVideo + userRating = child.userRating + averageRating = child.averageRating + playCount = child.playCount + discNumber = child.discNumber + created = child.created + starred = child.starred + albumId = child.albumId + artistId = child.artistId + type = child.type + bookmarkPosition = child.bookmarkPosition + originalWidth = child.originalWidth + originalHeight = child.originalHeight + } +} + +@Keep +data class DownloadStack( + var id: String, + var view: String?, +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/Favorite.kt b/app/src/main/java/com/cappielloantonio/tempo/model/Favorite.kt new file mode 100644 index 0000000..d5bbb8c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/Favorite.kt @@ -0,0 +1,32 @@ +package com.cappielloantonio.tempo.model + +import android.os.Parcelable +import androidx.annotation.Keep +import androidx.annotation.Nullable +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +@Entity(tableName = "favorite") +data class Favorite( + @PrimaryKey + @ColumnInfo(name = "timestamp") + var timestamp: Long, + + @ColumnInfo(name = "songId") + val songId: String?, + + @ColumnInfo(name = "albumId") + val albumId: String?, + + @ColumnInfo(name = "artistId") + val artistId: String?, + + @ColumnInfo(name = "toStar") + val toStar: Boolean, +) : Parcelable { + override fun toString(): String = (songId ?: "null") + (albumId ?: "null") + (artistId ?: "null") +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/HomeSector.kt b/app/src/main/java/com/cappielloantonio/tempo/model/HomeSector.kt new file mode 100644 index 0000000..79ca435 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/HomeSector.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.model + +import androidx.annotation.Keep + +@Keep +data class HomeSector( + val id: String, + val sectorTitle: String, + var isVisible: Boolean, + val order: Int, +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/LyricsCache.kt b/app/src/main/java/com/cappielloantonio/tempo/model/LyricsCache.kt new file mode 100644 index 0000000..3c437e2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/LyricsCache.kt @@ -0,0 +1,25 @@ +package com.cappielloantonio.tempo.model + +import androidx.annotation.Keep +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import kotlin.jvm.JvmOverloads + +@Keep +@Entity(tableName = "lyrics_cache") +data class LyricsCache @JvmOverloads constructor( + @PrimaryKey + @ColumnInfo(name = "song_id") + var songId: String, + @ColumnInfo(name = "artist") + var artist: String? = null, + @ColumnInfo(name = "title") + var title: String? = null, + @ColumnInfo(name = "lyrics") + var lyrics: String? = null, + @ColumnInfo(name = "structured_lyrics") + var structuredLyrics: String? = null, + @ColumnInfo(name = "updated_at") + var updatedAt: Long = System.currentTimeMillis() +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/Queue.kt b/app/src/main/java/com/cappielloantonio/tempo/model/Queue.kt new file mode 100644 index 0000000..8784017 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/Queue.kt @@ -0,0 +1,59 @@ +package com.cappielloantonio.tempo.model + +import androidx.annotation.Keep +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.cappielloantonio.tempo.subsonic.models.Child +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +@Entity(tableName = "queue") +class Queue( + override val id: String, + @PrimaryKey + @ColumnInfo(name = "track_order") + var trackOrder: Int = 0, + @ColumnInfo(name = "last_play") + var lastPlay: Long = 0, + @ColumnInfo(name = "playing_changed") + var playingChanged: Long = 0, + @ColumnInfo(name = "stream_id") + var streamId: String? = null, +) : Child(id) { + constructor(child: Child) : this(child.id) { + parentId = child.parentId + isDir = child.isDir + title = child.title + album = child.album + artist = child.artist + track = child.track + year = child.year + genre = child.genre + coverArtId = child.coverArtId + size = child.size + contentType = child.contentType + suffix = child.suffix + transcodedContentType = child.transcodedContentType + transcodedSuffix = child.transcodedSuffix + duration = child.duration + bitrate = child.bitrate + samplingRate = child.samplingRate + bitDepth = child.bitDepth + path = child.path + isVideo = child.isVideo + userRating = child.userRating + averageRating = child.averageRating + playCount = child.playCount + discNumber = child.discNumber + created = child.created + starred = child.starred + albumId = child.albumId + artistId = child.artistId + type = child.type + bookmarkPosition = child.bookmarkPosition + originalWidth = child.originalWidth + originalHeight = child.originalHeight + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/RecentSearch.kt b/app/src/main/java/com/cappielloantonio/tempo/model/RecentSearch.kt new file mode 100644 index 0000000..6004a31 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/RecentSearch.kt @@ -0,0 +1,17 @@ +package com.cappielloantonio.tempo.model + +import android.os.Parcelable +import androidx.annotation.Keep +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +@Entity(tableName = "recent_search") +data class RecentSearch( + @PrimaryKey + @ColumnInfo(name = "search") + var search: String +) : Parcelable diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/ReplayGain.kt b/app/src/main/java/com/cappielloantonio/tempo/model/ReplayGain.kt new file mode 100644 index 0000000..0d46961 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/ReplayGain.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.model + +import androidx.annotation.Keep + +@Keep +data class ReplayGain( + var trackGain: Float = 0f, + var albumGain: Float = 0f, +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/Server.kt b/app/src/main/java/com/cappielloantonio/tempo/model/Server.kt new file mode 100644 index 0000000..78bfa6e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/Server.kt @@ -0,0 +1,39 @@ +package com.cappielloantonio.tempo.model + +import android.os.Parcelable +import androidx.annotation.Keep +import androidx.annotation.Nullable +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +@Entity(tableName = "server") +data class Server( + @PrimaryKey + @ColumnInfo(name = "id") + val serverId: String, + + @ColumnInfo(name = "server_name") + val serverName: String, + + @ColumnInfo(name = "username") + val username: String, + + @ColumnInfo(name = "password") + val password: String, + + @ColumnInfo(name = "address") + val address: String, + + @ColumnInfo(name = "local_address") + val localAddress: String?, + + @ColumnInfo(name = "timestamp") + val timestamp: Long, + + @ColumnInfo(name = "low_security", defaultValue = "false") + val isLowSecurity: Boolean +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/model/SessionMediaItem.kt b/app/src/main/java/com/cappielloantonio/tempo/model/SessionMediaItem.kt new file mode 100644 index 0000000..60d641c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/model/SessionMediaItem.kt @@ -0,0 +1,289 @@ +package com.cappielloantonio.tempo.model + +import android.net.Uri +import android.os.Bundle +import androidx.annotation.Keep +import androidx.media3.common.HeartRating +import androidx.media3.common.MediaItem +import androidx.media3.common.MediaItem.RequestMetadata +import androidx.media3.common.MediaMetadata +import androidx.media3.common.MimeTypes +import androidx.media3.common.util.UnstableApi +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.cappielloantonio.tempo.glide.CustomGlideRequest +import com.cappielloantonio.tempo.subsonic.models.Child +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode +import com.cappielloantonio.tempo.util.Constants +import com.cappielloantonio.tempo.util.MusicUtil +import com.cappielloantonio.tempo.util.Preferences.getImageSize +import java.util.Date + +@UnstableApi +@Keep +@Entity(tableName = "session_media_item") +class SessionMediaItem() { + @PrimaryKey(autoGenerate = true) + @ColumnInfo(name = "index") + var index: Int = 0 + + @ColumnInfo(name = "id") + var id: String? = null + + @ColumnInfo(name = "parent_id") + var parentId: String? = null + + @ColumnInfo(name = "is_dir") + var isDir: Boolean = false + + @ColumnInfo + var title: String? = null + + @ColumnInfo + var album: String? = null + + @ColumnInfo + var artist: String? = null + + @ColumnInfo + var track: Int? = null + + @ColumnInfo + var year: Int? = null + + @ColumnInfo + var genre: String? = null + + @ColumnInfo(name = "cover_art_id") + var coverArtId: String? = null + + @ColumnInfo + var size: Long? = null + + @ColumnInfo(name = "content_type") + var contentType: String? = null + + @ColumnInfo + var suffix: String? = null + + @ColumnInfo("transcoding_content_type") + var transcodedContentType: String? = null + + @ColumnInfo(name = "transcoded_suffix") + var transcodedSuffix: String? = null + + @ColumnInfo + var duration: Int? = null + + @ColumnInfo("bitrate") + var bitrate: Int? = null + + @ColumnInfo + var path: String? = null + + @ColumnInfo(name = "is_video") + var isVideo: Boolean = false + + @ColumnInfo(name = "user_rating") + var userRating: Int? = null + + @ColumnInfo(name = "average_rating") + var averageRating: Double? = null + + @ColumnInfo(name = "play_count") + var playCount: Long? = null + + @ColumnInfo(name = "disc_number") + var discNumber: Int? = null + + @ColumnInfo + var created: Date? = null + + @ColumnInfo + var starred: Date? = null + + @ColumnInfo(name = "album_id") + var albumId: String? = null + + @ColumnInfo(name = "artist_id") + var artistId: String? = null + + @ColumnInfo + var type: String? = null + + @ColumnInfo(name = "bookmark_position") + var bookmarkPosition: Long? = null + + @ColumnInfo(name = "original_width") + var originalWidth: Int? = null + + @ColumnInfo(name = "original_height") + var originalHeight: Int? = null + + @ColumnInfo(name = "stream_id") + var streamId: String? = null + + @ColumnInfo(name = "stream_url") + var streamUrl: String? = null + + @ColumnInfo(name = "timestamp") + var timestamp: Long? = null + + constructor(child: Child) : this() { + id = child.id + parentId = child.parentId + isDir = child.isDir + title = child.title + album = child.album + artist = child.artist + track = child.track + year = child.year + genre = child.genre + coverArtId = child.coverArtId + size = child.size + contentType = child.contentType + suffix = child.suffix + transcodedContentType = child.transcodedContentType + transcodedSuffix = child.transcodedSuffix + duration = child.duration + bitrate = child.bitrate + path = child.path + isVideo = child.isVideo + userRating = child.userRating + averageRating = child.averageRating + playCount = child.playCount + discNumber = child.discNumber + created = child.created + starred = child.starred + albumId = child.albumId + artistId = child.artistId + type = Constants.MEDIA_TYPE_MUSIC + bookmarkPosition = child.bookmarkPosition + originalWidth = child.originalWidth + originalHeight = child.originalHeight + } + + constructor(podcastEpisode: PodcastEpisode) : this() { + id = podcastEpisode.id + parentId = podcastEpisode.parentId + isDir = podcastEpisode.isDir + title = podcastEpisode.title + album = podcastEpisode.album + artist = podcastEpisode.artist + year = podcastEpisode.year + genre = podcastEpisode.genre + coverArtId = podcastEpisode.coverArtId + size = podcastEpisode.size + contentType = podcastEpisode.contentType + suffix = podcastEpisode.suffix + duration = podcastEpisode.duration + bitrate = podcastEpisode.bitrate + path = podcastEpisode.path + isVideo = podcastEpisode.isVideo + created = podcastEpisode.created + artistId = podcastEpisode.artistId + streamId = podcastEpisode.streamId + type = Constants.MEDIA_TYPE_PODCAST + } + + constructor(internetRadioStation: InternetRadioStation) : this() { + id = internetRadioStation.id + title = internetRadioStation.name + streamUrl = internetRadioStation.streamUrl + type = Constants.MEDIA_TYPE_RADIO + } + + fun getMediaItem(): MediaItem { + val uri: Uri = getStreamUri() + val artworkUri = Uri.parse(CustomGlideRequest.createUrl(coverArtId, getImageSize())) + + val bundle = Bundle() + bundle.putString("id", id) + bundle.putString("parentId", parentId) + bundle.putBoolean("isDir", isDir) + bundle.putString("title", title) + bundle.putString("album", album) + bundle.putString("artist", artist) + bundle.putInt("track", track ?: 0) + bundle.putInt("year", year ?: 0) + bundle.putString("genre", genre) + bundle.putString("coverArtId", coverArtId) + bundle.putLong("size", size ?: 0) + bundle.putString("contentType", contentType) + bundle.putString("suffix", suffix) + bundle.putString("transcodedContentType", transcodedContentType) + bundle.putString("transcodedSuffix", transcodedSuffix) + bundle.putInt("duration", duration ?: 0) + bundle.putInt("bitrate", bitrate ?: 0) + bundle.putString("path", path) + bundle.putBoolean("isVideo", isVideo) + bundle.putInt("userRating", userRating ?: 0) + bundle.putDouble("averageRating", averageRating ?: .0) + bundle.putLong("playCount", playCount ?: 0) + bundle.putInt("discNumber", discNumber ?: 0) + bundle.putLong("created", created?.time ?: 0) + bundle.putLong("starred", starred?.time ?: 0) + bundle.putString("albumId", albumId) + bundle.putString("artistId", artistId) + bundle.putString("type", Constants.MEDIA_TYPE_MUSIC) + bundle.putLong("bookmarkPosition", bookmarkPosition ?: 0) + bundle.putInt("originalWidth", originalWidth ?: 0) + bundle.putInt("originalHeight", originalHeight ?: 0) + bundle.putString("uri", uri.toString()) + + return MediaItem.Builder() + .setMediaId(id!!) + .setMediaMetadata( + MediaMetadata.Builder() + .setTitle(title) + .setTrackNumber(track ?: 0) + .setDiscNumber(discNumber ?: 0) + .setReleaseYear(year ?: 0) + .setAlbumTitle(album) + .setArtist(artist) + .setArtworkUri(artworkUri) + .setUserRating(HeartRating(starred != null)) + .setSupportedCommands( + listOf( + Constants.CUSTOM_COMMAND_TOGGLE_HEART_ON, + Constants.CUSTOM_COMMAND_TOGGLE_HEART_OFF + ) + ) + .setExtras(bundle) + .setIsBrowsable(false) + .setIsPlayable(true) + .build() + ) + .setRequestMetadata( + RequestMetadata.Builder() + .setMediaUri(uri) + .setExtras(bundle) + .build() + ) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(uri) + .build() + } + + private fun getStreamUri(): Uri { + return when (type) { + Constants.MEDIA_TYPE_MUSIC -> { + MusicUtil.getStreamUri(id) + } + + Constants.MEDIA_TYPE_PODCAST -> { + MusicUtil.getStreamUri(streamId) + } + + Constants.MEDIA_TYPE_RADIO -> { + Uri.parse(streamUrl) + } + + else -> { + MusicUtil.getStreamUri(id) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/AlbumRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/AlbumRepository.java new file mode 100644 index 0000000..bcc358b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/AlbumRepository.java @@ -0,0 +1,301 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; +import android.util.Log; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.interfaces.DecadesCallback; +import com.cappielloantonio.tempo.interfaces.MediaCallback; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.AlbumInfo; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class AlbumRepository { + public MutableLiveData> getAlbums(String type, int size, Integer fromYear, Integer toYear) { + MutableLiveData> listLiveAlbums = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getAlbumList2(type, size, 0, fromYear, toYear) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() + && response.body() != null + && response.body().getSubsonicResponse().getAlbumList2() != null + && response.body().getSubsonicResponse().getAlbumList2().getAlbums() != null) { + + listLiveAlbums.setValue(response.body().getSubsonicResponse().getAlbumList2().getAlbums()); + } else { + Log.e("AlbumRepository", "API Error on getAlbums. HTTP Code: " + response.code()); + listLiveAlbums.setValue(new ArrayList<>()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + Log.e("AlbumRepository", "Network Failure on getAlbums: " + t.getMessage()); + listLiveAlbums.setValue(new ArrayList<>()); + } + }); + + return listLiveAlbums; + } + + public MutableLiveData> getStarredAlbums(boolean random, int size) { + MutableLiveData> starredAlbums = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getStarred2() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null) { + List albums = response.body().getSubsonicResponse().getStarred2().getAlbums(); + + if (albums != null) { + if (random) { + Collections.shuffle(albums); + starredAlbums.setValue(albums.subList(0, Math.min(size, albums.size()))); + } else { + starredAlbums.setValue(albums); + } + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return starredAlbums; + } + + public void setRating(String id, int rating) { + App.getSubsonicClientInstance(false) + .getMediaAnnotationClient() + .setRating(id, rating) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public MutableLiveData> getAlbumTracks(String id) { + MutableLiveData> albumTracks = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getAlbum(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + List tracks = new ArrayList<>(); + + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbum() != null) { + if (response.body().getSubsonicResponse().getAlbum().getSongs() != null) { + tracks.addAll(response.body().getSubsonicResponse().getAlbum().getSongs()); + } + } + + albumTracks.setValue(tracks); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return albumTracks; + } + + public MutableLiveData> getArtistAlbums(String id) { + MutableLiveData> artistsAlbum = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null && response.body().getSubsonicResponse().getArtist().getAlbums() != null) { + List albums = response.body().getSubsonicResponse().getArtist().getAlbums(); + albums.sort(Comparator.comparing(AlbumID3::getYear)); + Collections.reverse(albums); + artistsAlbum.setValue(albums); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return artistsAlbum; + } + + public MutableLiveData getAlbum(String id) { + MutableLiveData album = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getAlbum(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbum() != null) { + album.setValue(response.body().getSubsonicResponse().getAlbum()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return album; + } + + public MutableLiveData getAlbumInfo(String id) { + MutableLiveData albumInfo = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getAlbumInfo2(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumInfo() != null) { + albumInfo.setValue(response.body().getSubsonicResponse().getAlbumInfo()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return albumInfo; + } + + public void getInstantMix(AlbumID3 album, int count, MediaCallback callback) { + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getSimilarSongs2(album.getId(), count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + List songs = new ArrayList<>(); + + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null) { + songs.addAll(response.body().getSubsonicResponse().getSimilarSongs2().getSongs()); + } + + callback.onLoadMedia(songs); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onLoadMedia(new ArrayList<>()); + } + }); + } + + public MutableLiveData> getDecades() { + MutableLiveData> decades = new MutableLiveData<>(); + + getFirstAlbum(new DecadesCallback() { + @Override + public void onLoadYear(int first) { + getLastAlbum(new DecadesCallback() { + @Override + public void onLoadYear(int last) { + if (first != -1 && last != -1) { + List decadeList = new ArrayList(); + + int startDecade = first - (first % 10); + int lastDecade = last - (last % 10); + + while (startDecade <= lastDecade) { + decadeList.add(startDecade); + startDecade = startDecade + 10; + } + + decades.setValue(decadeList); + } + } + }); + } + }); + + return decades; + } + + private void getFirstAlbum(DecadesCallback callback) { + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getAlbumList2("byYear", 1, 0, 1900, Calendar.getInstance().get(Calendar.YEAR)) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null && response.body().getSubsonicResponse().getAlbumList2().getAlbums() != null && !response.body().getSubsonicResponse().getAlbumList2().getAlbums().isEmpty()) { + callback.onLoadYear(response.body().getSubsonicResponse().getAlbumList2().getAlbums().get(0).getYear()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onLoadYear(-1); + } + }); + } + + private void getLastAlbum(DecadesCallback callback) { + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getAlbumList2("byYear", 1, 0, Calendar.getInstance().get(Calendar.YEAR), 1900) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null && response.body().getSubsonicResponse().getAlbumList2().getAlbums() != null) { + if (!response.body().getSubsonicResponse().getAlbumList2().getAlbums().isEmpty() && !response.body().getSubsonicResponse().getAlbumList2().getAlbums().isEmpty()) { + callback.onLoadYear(response.body().getSubsonicResponse().getAlbumList2().getAlbums().get(0).getYear()); + } else { + callback.onLoadYear(-1); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onLoadYear(-1); + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/ArtistRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/ArtistRepository.java new file mode 100644 index 0000000..5bea391 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/ArtistRepository.java @@ -0,0 +1,387 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; +import android.util.Log; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistInfo2; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.IndexID3; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class ArtistRepository { + private final AlbumRepository albumRepository; + + public ArtistRepository() { + this.albumRepository = new AlbumRepository(); + } + + public void getArtistAllSongs(String artistId, ArtistSongsCallback callback) { + Log.d("ArtistSync", "Getting albums for artist: " + artistId); + + // Get the artist info first, which contains the albums + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(artistId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && + response.body().getSubsonicResponse().getArtist() != null && + response.body().getSubsonicResponse().getArtist().getAlbums() != null) { + + List albums = response.body().getSubsonicResponse().getArtist().getAlbums(); + Log.d("ArtistSync", "Got albums directly: " + albums.size()); + + if (!albums.isEmpty()) { + fetchAllAlbumSongsWithCallback(albums, callback); + } else { + Log.d("ArtistSync", "No albums found in artist response"); + callback.onSongsCollected(new ArrayList<>()); + } + } else { + Log.d("ArtistSync", "Failed to get artist info"); + callback.onSongsCollected(new ArrayList<>()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + Log.d("ArtistSync", "Error getting artist info: " + t.getMessage()); + callback.onSongsCollected(new ArrayList<>()); + } + }); + } + + private void fetchAllAlbumSongsWithCallback(List albums, ArtistSongsCallback callback) { + if (albums == null || albums.isEmpty()) { + Log.d("ArtistSync", "No albums to process"); + callback.onSongsCollected(new ArrayList<>()); + return; + } + + List allSongs = new ArrayList<>(); + AtomicInteger remainingAlbums = new AtomicInteger(albums.size()); + Log.d("ArtistSync", "Processing " + albums.size() + " albums"); + + for (AlbumID3 album : albums) { + Log.d("ArtistSync", "Getting tracks for album: " + album.getName()); + MutableLiveData> albumTracks = albumRepository.getAlbumTracks(album.getId()); + albumTracks.observeForever(songs -> { + Log.d("ArtistSync", "Got " + (songs != null ? songs.size() : 0) + " songs from album"); + if (songs != null) { + allSongs.addAll(songs); + } + albumTracks.removeObservers(null); + + int remaining = remainingAlbums.decrementAndGet(); + Log.d("ArtistSync", "Remaining albums: " + remaining); + + if (remaining == 0) { + Log.d("ArtistSync", "All albums processed. Total songs: " + allSongs.size()); + callback.onSongsCollected(allSongs); + } + }); + } + } + + public interface ArtistSongsCallback { + void onSongsCollected(List songs); + } + + public MutableLiveData> getStarredArtists(boolean random, int size) { + MutableLiveData> starredArtists = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getStarred2() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null) { + List artists = response.body().getSubsonicResponse().getStarred2().getArtists(); + + if (artists != null) { + if (!random) { + getArtistInfo(artists, starredArtists); + } else { + Collections.shuffle(artists); + getArtistInfo(artists.subList(0, Math.min(size, artists.size())), starredArtists); + } + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return starredArtists; + } + + public MutableLiveData> getArtists(boolean random, int size) { + MutableLiveData> listLiveArtists = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtists() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + List artists = new ArrayList<>(); + + if(response.body().getSubsonicResponse().getArtists() != null && response.body().getSubsonicResponse().getArtists().getIndices() != null) { + for (IndexID3 index : response.body().getSubsonicResponse().getArtists().getIndices()) { + if(index != null && index.getArtists() != null) { + artists.addAll(index.getArtists()); + } + } + } + + if (random) { + Collections.shuffle(artists); + getArtistInfo(artists.subList(0, artists.size() / size > 0 ? size : artists.size()), listLiveArtists); + } else { + listLiveArtists.setValue(artists); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + } + }); + + return listLiveArtists; + } + + /* + * Method that returns essential artist information (cover, album number, etc.) + */ + public void getArtistInfo(List artists, MutableLiveData> list) { + List liveArtists = list.getValue(); + if (liveArtists == null) liveArtists = new ArrayList<>(); + list.setValue(liveArtists); + + for (ArtistID3 artist : artists) { + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(artist.getId()) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) { + addToMutableLiveData(list, response.body().getSubsonicResponse().getArtist()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + } + + public MutableLiveData getArtistInfo(String id) { + MutableLiveData artist = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) { + artist.setValue(response.body().getSubsonicResponse().getArtist()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return artist; + } + + public MutableLiveData getArtistFullInfo(String id) { + MutableLiveData artistFullInfo = new MutableLiveData<>(null); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtistInfo2(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtistInfo2() != null) { + artistFullInfo.setValue(response.body().getSubsonicResponse().getArtistInfo2()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return artistFullInfo; + } + + public void setRating(String id, int rating) { + App.getSubsonicClientInstance(false) + .getMediaAnnotationClient() + .setRating(id, rating) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public MutableLiveData getArtist(String id) { + MutableLiveData artist = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) { + artist.setValue(response.body().getSubsonicResponse().getArtist()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return artist; + } + + public MutableLiveData> getInstantMix(ArtistID3 artist, int count) { + MutableLiveData> instantMix = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getSimilarSongs2(artist.getId(), count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null) { + instantMix.setValue(response.body().getSubsonicResponse().getSimilarSongs2().getSongs()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return instantMix; + } + + public MutableLiveData> getRandomSong(ArtistID3 artist, int count) { + MutableLiveData> randomSongs = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(artist.getId()) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && + response.body().getSubsonicResponse().getArtist() != null && + response.body().getSubsonicResponse().getArtist().getAlbums() != null) { + + List albums = response.body().getSubsonicResponse().getArtist().getAlbums(); + Log.d("ArtistRepository", "Got albums directly: " + albums.size()); + if (albums.isEmpty()) { + Log.d("ArtistRepository", "No albums found in artist response"); + return; + } + + Collections.shuffle(albums); + int[] counts = albums.stream().mapToInt(AlbumID3::getSongCount).toArray(); + Arrays.parallelPrefix(counts, Integer::sum); + int albumLimit = 0; + int multiplier = 4; // get more than the limit so we can shuffle them + while (albumLimit < albums.size() && counts[albumLimit] < count * multiplier) + albumLimit++; + Log.d("ArtistRepository", String.format("Retaining %d/%d albums", albumLimit, albums.size())); + + fetchAllAlbumSongsWithCallback(albums.stream().limit(albumLimit).collect(Collectors.toList()), songs -> { + Collections.shuffle(songs); + randomSongs.setValue(songs.stream().limit(count).collect(Collectors.toList())); + }); + } else { + Log.d("ArtistRepository", "Failed to get artist info"); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + Log.d("ArtistRepository", "Error getting artist info: " + t.getMessage()); + } + }); + + return randomSongs; + } + + public MutableLiveData> getTopSongs(String artistName, int count) { + MutableLiveData> topSongs = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getTopSongs(artistName, count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getTopSongs() != null && response.body().getSubsonicResponse().getTopSongs().getSongs() != null) { + topSongs.setValue(response.body().getSubsonicResponse().getTopSongs().getSongs()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return topSongs; + } + + private void addToMutableLiveData(MutableLiveData> liveData, ArtistID3 artist) { + List liveArtists = liveData.getValue(); + if (liveArtists != null) liveArtists.add(artist); + liveData.setValue(liveArtists); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/AutomotiveRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/AutomotiveRepository.java new file mode 100644 index 0000000..fe24d81 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/AutomotiveRepository.java @@ -0,0 +1,1027 @@ +package com.cappielloantonio.tempo.repository; + + +import android.net.Uri; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Observer; +import androidx.media3.common.MediaItem; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.LibraryResult; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.ChronologyDao; +import com.cappielloantonio.tempo.database.dao.SessionMediaItemDao; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.model.Chronology; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.model.SessionMediaItem; +import com.cappielloantonio.tempo.service.DownloaderManager; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.Artist; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Directory; +import com.cappielloantonio.tempo.subsonic.models.Index; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; +import com.cappielloantonio.tempo.subsonic.models.MusicFolder; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.common.collect.ImmutableList; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class AutomotiveRepository { + private final SessionMediaItemDao sessionMediaItemDao = AppDatabase.getInstance().sessionMediaItemDao(); + private final ChronologyDao chronologyDao = AppDatabase.getInstance().chronologyDao(); + + public ListenableFuture>> getAlbums(String prefix, String type, int size) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getAlbumList2(type, size, 0, null, null) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null && response.body().getSubsonicResponse().getAlbumList2().getAlbums() != null) { + List albums = response.body().getSubsonicResponse().getAlbumList2().getAlbums(); + + List mediaItems = new ArrayList<>(); + + for (AlbumID3 album : albums) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(album.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(album.getName()) + .setAlbumTitle(album.getName()) + .setArtist(album.getArtist()) + .setGenre(album.getGenre()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_ALBUM) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + album.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getStarredSongs() { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getStarred2() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null && response.body().getSubsonicResponse().getStarred2().getSongs() != null) { + List songs = response.body().getSubsonicResponse().getStarred2().getSongs(); + + setChildrenMetadata(songs); + + List mediaItems = MappingUtil.mapMediaItems(songs); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getRandomSongs(int count) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getRandomSongs(100, null, null) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getRandomSongs() != null && response.body().getSubsonicResponse().getRandomSongs().getSongs() != null) { + List songs = response.body().getSubsonicResponse().getRandomSongs().getSongs(); + + setChildrenMetadata(songs); + + List mediaItems = MappingUtil.mapMediaItems(songs); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getRecentlyPlayedSongs(String server, int count) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + chronologyDao.getLastPlayed(server, count).observeForever(new Observer>() { + @Override + public void onChanged(List chronology) { + if (chronology != null && !chronology.isEmpty()) { + List songs = new ArrayList<>(chronology); + + setChildrenMetadata(songs); + + List mediaItems = MappingUtil.mapMediaItems(songs); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + + chronologyDao.getLastPlayed(server, count).removeObserver(this); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getStarredAlbums(String prefix) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getStarred2() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null && response.body().getSubsonicResponse().getStarred2().getAlbums() != null) { + List albums = response.body().getSubsonicResponse().getStarred2().getAlbums(); + + List mediaItems = new ArrayList<>(); + + for (AlbumID3 album : albums) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(album.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(album.getName()) + .setArtist(album.getArtist()) + .setGenre(album.getGenre()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_ALBUM) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + album.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getStarredArtists(String prefix) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getStarred2() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null && response.body().getSubsonicResponse().getStarred2().getArtists() != null) { + List artists = response.body().getSubsonicResponse().getStarred2().getArtists(); + + Collections.shuffle(artists); + + List mediaItems = new ArrayList<>(); + + for (ArtistID3 artist : artists) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(artist.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(artist.getName()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_PLAYLIST) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + artist.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getMusicFolders(String prefix) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getMusicFolders() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getMusicFolders() != null && response.body().getSubsonicResponse().getMusicFolders().getMusicFolders() != null) { + List musicFolders = response.body().getSubsonicResponse().getMusicFolders().getMusicFolders(); + + List mediaItems = new ArrayList<>(); + + for (MusicFolder musicFolder : musicFolders) { + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(musicFolder.getName()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_FOLDER_MIXED) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + musicFolder.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getIndexes(String prefix, String id) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getIndexes(id, null) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getIndexes() != null) { + List mediaItems = new ArrayList<>(); + + if (response.body().getSubsonicResponse().getIndexes().getIndices() != null) { + List indices = response.body().getSubsonicResponse().getIndexes().getIndices(); + + for (Index index : indices) { + if (index.getArtists() != null) { + for (Artist artist : index.getArtists()) { + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(artist.getName()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_ARTIST) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + artist.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + } + } + } + + if (response.body().getSubsonicResponse().getIndexes().getChildren() != null) { + List children = response.body().getSubsonicResponse().getIndexes().getChildren(); + + for (Child song : children) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(song.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(song.getTitle()) + .setAlbumTitle(song.getAlbum()) + .setArtist(song.getArtist()) + .setIsBrowsable(false) + .setIsPlayable(true) + .setMediaType(MediaMetadata.MEDIA_TYPE_MUSIC) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + song.getId()) + .setMediaMetadata(mediaMetadata) + .setUri(MusicUtil.getStreamUri(song.getId())) + .build(); + + mediaItems.add(mediaItem); + } + + setChildrenMetadata(children); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getDirectories(String prefix, String id) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getMusicDirectory(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getDirectory() != null && response.body().getSubsonicResponse().getDirectory().getChildren() != null) { + Directory directory = response.body().getSubsonicResponse().getDirectory(); + + List mediaItems = new ArrayList<>(); + + for (Child child : directory.getChildren()) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(child.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(child.getTitle()) + .setIsBrowsable(child.isDir()) + .setIsPlayable(!child.isDir()) + .setMediaType(MediaMetadata.MEDIA_TYPE_FOLDER_MIXED) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(child.isDir() ? prefix + child.getId() : child.getId()) + .setMediaMetadata(mediaMetadata) + .setUri(!child.isDir() ? MusicUtil.getStreamUri(child.getId()) : Uri.parse("")) + .build(); + + mediaItems.add(mediaItem); + } + + setChildrenMetadata(directory.getChildren().stream().filter(child -> !child.isDir()).collect(Collectors.toList())); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getPlaylists(String prefix) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .getPlaylists() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlaylists() != null && response.body().getSubsonicResponse().getPlaylists().getPlaylists() != null) { + List playlists = response.body().getSubsonicResponse().getPlaylists().getPlaylists(); + + List mediaItems = new ArrayList<>(); + + for (Playlist playlist : playlists) { + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(playlist.getName()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_PLAYLIST) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + playlist.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getNewestPodcastEpisodes(int count) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getPodcastClient() + .getNewestPodcasts(count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getNewestPodcasts() != null && response.body().getSubsonicResponse().getNewestPodcasts().getEpisodes() != null) { + List episodes = response.body().getSubsonicResponse().getNewestPodcasts().getEpisodes(); + + List mediaItems = new ArrayList<>(); + + for (PodcastEpisode episode : episodes) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(episode.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(episode.getTitle()) + .setIsBrowsable(false) + .setIsPlayable(true) + .setMediaType(MediaMetadata.MEDIA_TYPE_PODCAST_EPISODE) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(episode.getId()) + .setMediaMetadata(mediaMetadata) + .setUri(MusicUtil.getStreamUri(episode.getStreamId())) + .build(); + + mediaItems.add(mediaItem); + } + + setPodcastEpisodesMetadata(episodes); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getInternetRadioStations() { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getInternetRadioClient() + .getInternetRadioStations() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getInternetRadioStations() != null && response.body().getSubsonicResponse().getInternetRadioStations().getInternetRadioStations() != null) { + + List radioStations = response.body().getSubsonicResponse().getInternetRadioStations().getInternetRadioStations(); + + List mediaItems = new ArrayList<>(); + + for (InternetRadioStation radioStation : radioStations) { + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(radioStation.getName()) + .setIsBrowsable(false) + .setIsPlayable(true) + .setMediaType(MediaMetadata.MEDIA_TYPE_RADIO_STATION) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(radioStation.getId()) + .setMediaMetadata(mediaMetadata) + .setUri(radioStation.getStreamUrl()) + .build(); + + mediaItems.add(mediaItem); + } + + setInternetRadioStationsMetadata(radioStations); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getAlbumTracks(String id) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getAlbum(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbum() != null && response.body().getSubsonicResponse().getAlbum().getSongs() != null) { + List tracks = response.body().getSubsonicResponse().getAlbum().getSongs(); + + setChildrenMetadata(tracks); + + List mediaItems = MappingUtil.mapMediaItems(tracks); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } else { + listenableFuture.set(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getArtistAlbum(String prefix, String id) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null && response.body().getSubsonicResponse().getArtist().getAlbums() != null) { + List albums = response.body().getSubsonicResponse().getArtist().getAlbums(); + + List mediaItems = new ArrayList<>(); + + for (AlbumID3 album : albums) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(album.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(album.getName()) + .setAlbumTitle(album.getName()) + .setArtist(album.getArtist()) + .setGenre(album.getGenre()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_ALBUM) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(prefix + album.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getPlaylistSongs(String id) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .getPlaylist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlaylist() != null && response.body().getSubsonicResponse().getPlaylist().getEntries() != null) { + List tracks = response.body().getSubsonicResponse().getPlaylist().getEntries(); + + setChildrenMetadata(tracks); + + List mediaItems = MappingUtil.mapMediaItems(tracks); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> getMadeForYou(String id, int count) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getSimilarSongs2(id, count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null && response.body().getSubsonicResponse().getSimilarSongs2().getSongs() != null) { + List tracks = response.body().getSubsonicResponse().getSimilarSongs2().getSongs(); + + setChildrenMetadata(tracks); + + List mediaItems = MappingUtil.mapMediaItems(tracks); + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + public ListenableFuture>> search(String query, String albumPrefix, String artistPrefix) { + final SettableFuture>> listenableFuture = SettableFuture.create(); + + App.getSubsonicClientInstance(false) + .getSearchingClient() + .search3(query, 20, 20, 20) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSearchResult3() != null) { + List mediaItems = new ArrayList<>(); + + if (response.body().getSubsonicResponse().getSearchResult3().getArtists() != null) { + for (ArtistID3 artist : response.body().getSubsonicResponse().getSearchResult3().getArtists()) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(artist.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(artist.getName()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_PLAYLIST) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(artistPrefix + artist.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + } + + if (response.body().getSubsonicResponse().getSearchResult3().getAlbums() != null) { + for (AlbumID3 album : response.body().getSubsonicResponse().getSearchResult3().getAlbums()) { + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(album.getCoverArtId(), Preferences.getImageSize())); + + MediaMetadata mediaMetadata = new MediaMetadata.Builder() + .setTitle(album.getName()) + .setAlbumTitle(album.getName()) + .setArtist(album.getArtist()) + .setGenre(album.getGenre()) + .setIsBrowsable(true) + .setIsPlayable(false) + .setMediaType(MediaMetadata.MEDIA_TYPE_ALBUM) + .setArtworkUri(artworkUri) + .build(); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(albumPrefix + album.getId()) + .setMediaMetadata(mediaMetadata) + .setUri("") + .build(); + + mediaItems.add(mediaItem); + } + } + + if (response.body().getSubsonicResponse().getSearchResult3().getSongs() != null) { + List tracks = response.body().getSubsonicResponse().getSearchResult3().getSongs(); + setChildrenMetadata(tracks); + mediaItems.addAll(MappingUtil.mapMediaItems(tracks)); + } + + LibraryResult> libraryResult = LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), null); + + listenableFuture.set(libraryResult); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + listenableFuture.setException(t); + } + }); + + return listenableFuture; + } + + @OptIn(markerClass = UnstableApi.class) + public void setChildrenMetadata(List children) { + long timestamp = System.currentTimeMillis(); + ArrayList sessionMediaItems = new ArrayList<>(); + + for (Child child : children) { + SessionMediaItem sessionMediaItem = new SessionMediaItem(child); + sessionMediaItem.setTimestamp(timestamp); + sessionMediaItems.add(sessionMediaItem); + } + + InsertAllThreadSafe insertAll = new InsertAllThreadSafe(sessionMediaItemDao, sessionMediaItems); + Thread thread = new Thread(insertAll); + thread.start(); + } + + @OptIn(markerClass = UnstableApi.class) + public void setPodcastEpisodesMetadata(List podcastEpisodes) { + long timestamp = System.currentTimeMillis(); + ArrayList sessionMediaItems = new ArrayList<>(); + + for (PodcastEpisode podcastEpisode : podcastEpisodes) { + SessionMediaItem sessionMediaItem = new SessionMediaItem(podcastEpisode); + sessionMediaItem.setTimestamp(timestamp); + sessionMediaItems.add(sessionMediaItem); + } + + InsertAllThreadSafe insertAll = new InsertAllThreadSafe(sessionMediaItemDao, sessionMediaItems); + Thread thread = new Thread(insertAll); + thread.start(); + } + + @OptIn(markerClass = UnstableApi.class) + public void setInternetRadioStationsMetadata(List internetRadioStations) { + long timestamp = System.currentTimeMillis(); + ArrayList sessionMediaItems = new ArrayList<>(); + + for (InternetRadioStation internetRadioStation : internetRadioStations) { + SessionMediaItem sessionMediaItem = new SessionMediaItem(internetRadioStation); + sessionMediaItem.setTimestamp(timestamp); + sessionMediaItems.add(sessionMediaItem); + } + + InsertAllThreadSafe insertAll = new InsertAllThreadSafe(sessionMediaItemDao, sessionMediaItems); + Thread thread = new Thread(insertAll); + thread.start(); + } + + public SessionMediaItem getSessionMediaItem(String id) { + SessionMediaItem sessionMediaItem = null; + + GetMediaItemThreadSafe getMediaItemThreadSafe = new GetMediaItemThreadSafe(sessionMediaItemDao, id); + Thread thread = new Thread(getMediaItemThreadSafe); + thread.start(); + + try { + thread.join(); + sessionMediaItem = getMediaItemThreadSafe.getSessionMediaItem(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return sessionMediaItem; + } + + public List getMetadatas(long timestamp) { + List mediaItems = Collections.emptyList(); + + GetMediaItemsThreadSafe getMediaItemsThreadSafe = new GetMediaItemsThreadSafe(sessionMediaItemDao, timestamp); + Thread thread = new Thread(getMediaItemsThreadSafe); + thread.start(); + + try { + thread.join(); + mediaItems = getMediaItemsThreadSafe.getMediaItems(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return mediaItems; + } + + public void deleteMetadata() { + DeleteAllThreadSafe delete = new DeleteAllThreadSafe(sessionMediaItemDao); + Thread thread = new Thread(delete); + thread.start(); + } + + private static class GetMediaItemThreadSafe implements Runnable { + private final SessionMediaItemDao sessionMediaItemDao; + private final String id; + + private SessionMediaItem sessionMediaItem; + + public GetMediaItemThreadSafe(SessionMediaItemDao sessionMediaItemDao, String id) { + this.sessionMediaItemDao = sessionMediaItemDao; + this.id = id; + } + + @Override + public void run() { + sessionMediaItem = sessionMediaItemDao.get(id); + } + + public SessionMediaItem getSessionMediaItem() { + return sessionMediaItem; + } + } + + @OptIn(markerClass = UnstableApi.class) + private static class GetMediaItemsThreadSafe implements Runnable { + private final SessionMediaItemDao sessionMediaItemDao; + private final Long timestamp; + private final List mediaItems = new ArrayList<>(); + + public GetMediaItemsThreadSafe(SessionMediaItemDao sessionMediaItemDao, Long timestamp) { + this.sessionMediaItemDao = sessionMediaItemDao; + this.timestamp = timestamp; + } + + @Override + public void run() { + List sessionMediaItems = sessionMediaItemDao.get(timestamp); + sessionMediaItems.forEach(sessionMediaItem -> mediaItems.add(sessionMediaItem.getMediaItem())); + } + + public List getMediaItems() { + return mediaItems; + } + } + + private static class InsertAllThreadSafe implements Runnable { + private final SessionMediaItemDao sessionMediaItemDao; + private final List sessionMediaItems; + + public InsertAllThreadSafe(SessionMediaItemDao sessionMediaItemDao, List sessionMediaItems) { + this.sessionMediaItemDao = sessionMediaItemDao; + this.sessionMediaItems = sessionMediaItems; + } + + @Override + public void run() { + sessionMediaItemDao.insertAll(sessionMediaItems); + } + } + + private static class DeleteAllThreadSafe implements Runnable { + private final SessionMediaItemDao sessionMediaItemDao; + + public DeleteAllThreadSafe(SessionMediaItemDao sessionMediaItemDao) { + this.sessionMediaItemDao = sessionMediaItemDao; + } + + @Override + public void run() { + sessionMediaItemDao.deleteAll(); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/ChronologyRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/ChronologyRepository.java new file mode 100644 index 0000000..8c9420c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/ChronologyRepository.java @@ -0,0 +1,39 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.ChronologyDao; +import com.cappielloantonio.tempo.model.Chronology; + +import java.util.Calendar; +import java.util.List; + +public class ChronologyRepository { + private final ChronologyDao chronologyDao = AppDatabase.getInstance().chronologyDao(); + + public LiveData> getChronology(String server, long start, long end) { + return chronologyDao.getAllFrom(start, end, server); + } + + public void insert(Chronology item) { + InsertThreadSafe insert = new InsertThreadSafe(chronologyDao, item); + Thread thread = new Thread(insert); + thread.start(); + } + + private static class InsertThreadSafe implements Runnable { + private final ChronologyDao chronologyDao; + private final Chronology item; + + public InsertThreadSafe(ChronologyDao chronologyDao, Chronology item) { + this.chronologyDao = chronologyDao; + this.item = item; + } + + @Override + public void run() { + chronologyDao.insert(item); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/DirectoryRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/DirectoryRepository.java new file mode 100644 index 0000000..31e96ba --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/DirectoryRepository.java @@ -0,0 +1,89 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.Directory; +import com.cappielloantonio.tempo.subsonic.models.Indexes; +import com.cappielloantonio.tempo.subsonic.models.MusicFolder; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class DirectoryRepository { + private static final String TAG = "DirectoryRepository"; + + public MutableLiveData> getMusicFolders() { + MutableLiveData> liveMusicFolders = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getMusicFolders() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getMusicFolders() != null) { + liveMusicFolders.setValue(response.body().getSubsonicResponse().getMusicFolders().getMusicFolders()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return liveMusicFolders; + } + + public MutableLiveData getIndexes(String musicFolderId, Long ifModifiedSince) { + MutableLiveData liveIndexes = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getIndexes(musicFolderId, ifModifiedSince) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getIndexes() != null) { + liveIndexes.setValue(response.body().getSubsonicResponse().getIndexes()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return liveIndexes; + } + + public MutableLiveData getMusicDirectory(String id) { + MutableLiveData liveMusicDirectory = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getMusicDirectory(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getDirectory() != null) { + liveMusicDirectory.setValue(response.body().getSubsonicResponse().getDirectory()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + t.printStackTrace(); + } + }); + + return liveMusicDirectory; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/DownloadRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/DownloadRepository.java new file mode 100644 index 0000000..1d8c935 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/DownloadRepository.java @@ -0,0 +1,213 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.DownloadDao; +import com.cappielloantonio.tempo.database.dao.FavoriteDao; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.model.Favorite; + +import java.util.ArrayList; +import java.util.List; + +public class DownloadRepository { + private final DownloadDao downloadDao = AppDatabase.getInstance().downloadDao(); + + public LiveData> getLiveDownload() { + return downloadDao.getAll(); + } + + public List getAllDownloads() { + GetAllDownloadsThreadSafe getDownloads = new GetAllDownloadsThreadSafe(downloadDao); + Thread thread = new Thread(getDownloads); + thread.start(); + + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return getDownloads.getDownloads(); + } + + public Download getDownload(String id) { + Download download = null; + + GetDownloadThreadSafe getDownloadThreadSafe = new GetDownloadThreadSafe(downloadDao, id); + Thread thread = new Thread(getDownloadThreadSafe); + thread.start(); + + try { + thread.join(); + download = getDownloadThreadSafe.getDownload(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return download; + } + + private static class GetAllDownloadsThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private List downloads; + + public GetAllDownloadsThreadSafe(DownloadDao downloadDao) { + this.downloadDao = downloadDao; + } + + @Override + public void run() { + downloads = downloadDao.getAllSync(); + } + + public List getDownloads() { + return downloads; + } + } + + private static class GetDownloadThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private final String id; + private Download download; + + public GetDownloadThreadSafe(DownloadDao downloadDao, String id) { + this.downloadDao = downloadDao; + this.id = id; + } + + @Override + public void run() { + download = downloadDao.getOne(id); + } + + public Download getDownload() { + return download; + } + } + + public void insert(Download download) { + InsertThreadSafe insert = new InsertThreadSafe(downloadDao, download); + Thread thread = new Thread(insert); + thread.start(); + } + + private static class InsertThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private final Download download; + + public InsertThreadSafe(DownloadDao downloadDao, Download download) { + this.downloadDao = downloadDao; + this.download = download; + } + + @Override + public void run() { + downloadDao.insert(download); + } + } + + public void update(String id) { + UpdateThreadSafe update = new UpdateThreadSafe(downloadDao, id); + Thread thread = new Thread(update); + thread.start(); + } + + private static class UpdateThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private final String id; + + public UpdateThreadSafe(DownloadDao downloadDao, String id) { + this.downloadDao = downloadDao; + this.id = id; + } + + @Override + public void run() { + downloadDao.update(id); + } + } + + public void insertAll(List downloads) { + InsertAllThreadSafe insertAll = new InsertAllThreadSafe(downloadDao, downloads); + Thread thread = new Thread(insertAll); + thread.start(); + } + + private static class InsertAllThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private final List downloads; + + public InsertAllThreadSafe(DownloadDao downloadDao, List downloads) { + this.downloadDao = downloadDao; + this.downloads = downloads; + } + + @Override + public void run() { + downloadDao.insertAll(downloads); + } + } + + public void deleteAll() { + DeleteAllThreadSafe deleteAll = new DeleteAllThreadSafe(downloadDao); + Thread thread = new Thread(deleteAll); + thread.start(); + } + + private static class DeleteAllThreadSafe implements Runnable { + private final DownloadDao downloadDao; + + public DeleteAllThreadSafe(DownloadDao downloadDao) { + this.downloadDao = downloadDao; + } + + @Override + public void run() { + downloadDao.deleteAll(); + } + } + + public void delete(String id) { + DeleteThreadSafe delete = new DeleteThreadSafe(downloadDao, id); + Thread thread = new Thread(delete); + thread.start(); + } + + public void delete(List ids) { + DeleteMultipleThreadSafe delete = new DeleteMultipleThreadSafe(downloadDao, ids); + Thread thread = new Thread(delete); + thread.start(); + } + + private static class DeleteThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private final String id; + + public DeleteThreadSafe(DownloadDao downloadDao, String id) { + this.downloadDao = downloadDao; + this.id = id; + } + + @Override + public void run() { + downloadDao.delete(id); + } + } + + private static class DeleteMultipleThreadSafe implements Runnable { + private final DownloadDao downloadDao; + private final List ids; + + public DeleteMultipleThreadSafe(DownloadDao downloadDao, List ids) { + this.downloadDao = downloadDao; + this.ids = ids; + } + + @Override + public void run() { + downloadDao.deleteByIds(ids); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/FavoriteRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/FavoriteRepository.java new file mode 100644 index 0000000..2510d77 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/FavoriteRepository.java @@ -0,0 +1,140 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.FavoriteDao; +import com.cappielloantonio.tempo.interfaces.StarCallback; +import com.cappielloantonio.tempo.model.Favorite; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class FavoriteRepository { + private final FavoriteDao favoriteDao = AppDatabase.getInstance().favoriteDao(); + + public void star(String id, String albumId, String artistId, StarCallback starCallback) { + App.getSubsonicClientInstance(false) + .getMediaAnnotationClient() + .star(id, albumId, artistId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful()) { + starCallback.onSuccess(); + } else { + starCallback.onError(); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + starCallback.onError(); + } + }); + } + + public void unstar(String id, String albumId, String artistId, StarCallback starCallback) { + App.getSubsonicClientInstance(false) + .getMediaAnnotationClient() + .unstar(id, albumId, artistId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful()) { + starCallback.onSuccess(); + } else { + starCallback.onError(); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + starCallback.onError(); + } + }); + } + + public List getFavorites() { + List favorites = new ArrayList<>(); + + GetAllThreadSafe getAllThreadSafe = new GetAllThreadSafe(favoriteDao); + Thread thread = new Thread(getAllThreadSafe); + thread.start(); + + try { + thread.join(); + favorites = getAllThreadSafe.getFavorites(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return favorites; + } + + private static class GetAllThreadSafe implements Runnable { + private final FavoriteDao favoriteDao; + private List favorites = new ArrayList<>(); + + public GetAllThreadSafe(FavoriteDao favoriteDao) { + this.favoriteDao = favoriteDao; + } + + @Override + public void run() { + favorites = favoriteDao.getAll(); + } + + public List getFavorites() { + return favorites; + } + } + + public void starLater(String id, String albumId, String artistId, boolean toStar) { + InsertThreadSafe insert = new InsertThreadSafe(favoriteDao, new Favorite(System.currentTimeMillis(), id, albumId, artistId, toStar)); + Thread thread = new Thread(insert); + thread.start(); + } + + private static class InsertThreadSafe implements Runnable { + private final FavoriteDao favoriteDao; + private final Favorite favorite; + + public InsertThreadSafe(FavoriteDao favoriteDao, Favorite favorite) { + this.favoriteDao = favoriteDao; + this.favorite = favorite; + } + + @Override + public void run() { + favoriteDao.insert(favorite); + } + } + + public void delete(Favorite favorite) { + DeleteThreadSafe delete = new DeleteThreadSafe(favoriteDao, favorite); + Thread thread = new Thread(delete); + thread.start(); + } + + private static class DeleteThreadSafe implements Runnable { + private final FavoriteDao favoriteDao; + private final Favorite favorite; + + public DeleteThreadSafe(FavoriteDao favoriteDao, Favorite favorite) { + this.favoriteDao = favoriteDao; + this.favorite = favorite; + } + + @Override + public void run() { + favoriteDao.delete(favorite); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/GenreRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/GenreRepository.java new file mode 100644 index 0000000..4e6addb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/GenreRepository.java @@ -0,0 +1,57 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.Genre; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class GenreRepository { + public MutableLiveData> getGenres(boolean random, int size) { + MutableLiveData> genres = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getGenres() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse() != null && response.body().getSubsonicResponse().getGenres() != null) { + List genreList = response.body().getSubsonicResponse().getGenres().getGenres(); + + if (genreList == null || genreList.isEmpty()) { + genres.setValue(Collections.emptyList()); + return; + } + + if (random) { + Collections.shuffle(genreList); + } + + if (size != -1) { + genres.setValue(genreList.subList(0, Math.min(size, genreList.size()))); + } else { + genres.setValue(genreList.stream().sorted(Comparator.comparing(Genre::getGenre)).collect(Collectors.toList())); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return genres; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/LyricsRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/LyricsRepository.java new file mode 100644 index 0000000..fb7a05a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/LyricsRepository.java @@ -0,0 +1,92 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.LyricsDao; +import com.cappielloantonio.tempo.model.LyricsCache; + +public class LyricsRepository { + private final LyricsDao lyricsDao = AppDatabase.getInstance().lyricsDao(); + + public LyricsCache getLyrics(String songId) { + GetLyricsThreadSafe getLyricsThreadSafe = new GetLyricsThreadSafe(lyricsDao, songId); + Thread thread = new Thread(getLyricsThreadSafe); + thread.start(); + + try { + thread.join(); + return getLyricsThreadSafe.getLyrics(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return null; + } + + public LiveData observeLyrics(String songId) { + return lyricsDao.observeOne(songId); + } + + public void insert(LyricsCache lyricsCache) { + InsertThreadSafe insert = new InsertThreadSafe(lyricsDao, lyricsCache); + Thread thread = new Thread(insert); + thread.start(); + } + + public void delete(String songId) { + DeleteThreadSafe delete = new DeleteThreadSafe(lyricsDao, songId); + Thread thread = new Thread(delete); + thread.start(); + } + + private static class GetLyricsThreadSafe implements Runnable { + private final LyricsDao lyricsDao; + private final String songId; + private LyricsCache lyricsCache; + + public GetLyricsThreadSafe(LyricsDao lyricsDao, String songId) { + this.lyricsDao = lyricsDao; + this.songId = songId; + } + + @Override + public void run() { + lyricsCache = lyricsDao.getOne(songId); + } + + public LyricsCache getLyrics() { + return lyricsCache; + } + } + + private static class InsertThreadSafe implements Runnable { + private final LyricsDao lyricsDao; + private final LyricsCache lyricsCache; + + public InsertThreadSafe(LyricsDao lyricsDao, LyricsCache lyricsCache) { + this.lyricsDao = lyricsDao; + this.lyricsCache = lyricsCache; + } + + @Override + public void run() { + lyricsDao.insert(lyricsCache); + } + } + + private static class DeleteThreadSafe implements Runnable { + private final LyricsDao lyricsDao; + private final String songId; + + public DeleteThreadSafe(LyricsDao lyricsDao, String songId) { + this.lyricsDao = lyricsDao; + this.songId = songId; + } + + @Override + public void run() { + lyricsDao.delete(songId); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/OpenRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/OpenRepository.java new file mode 100644 index 0000000..8621603 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/OpenRepository.java @@ -0,0 +1,37 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.LyricsList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class OpenRepository { + public MutableLiveData getLyricsBySongId(String id) { + MutableLiveData lyricsList = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getOpenClient() + .getLyricsBySongId(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getLyricsList() != null) { + lyricsList.setValue(response.body().getSubsonicResponse().getLyricsList()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return lyricsList; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java new file mode 100644 index 0000000..66d0a18 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java @@ -0,0 +1,229 @@ +package com.cappielloantonio.tempo.repository; + +import static android.provider.Settings.System.getString; + +import android.provider.Settings; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.PlaylistDao; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Playlist; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class PlaylistRepository { + @androidx.media3.common.util.UnstableApi + private final PlaylistDao playlistDao = AppDatabase.getInstance().playlistDao(); + public MutableLiveData> getPlaylists(boolean random, int size) { + MutableLiveData> listLivePlaylists = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .getPlaylists() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlaylists() != null && response.body().getSubsonicResponse().getPlaylists().getPlaylists() != null) { + List playlists = response.body().getSubsonicResponse().getPlaylists().getPlaylists(); + + if (random) { + Collections.shuffle(playlists); + listLivePlaylists.setValue(playlists.subList(0, Math.min(playlists.size(), size))); + } else { + listLivePlaylists.setValue(playlists); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + } + }); + + return listLivePlaylists; + } + + public MutableLiveData> getPlaylistSongs(String id) { + MutableLiveData> listLivePlaylistSongs = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .getPlaylist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlaylist() != null) { + List songs = response.body().getSubsonicResponse().getPlaylist().getEntries(); + listLivePlaylistSongs.setValue(songs); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + } + }); + + return listLivePlaylistSongs; + } + + public MutableLiveData getPlaylist(String id) { + MutableLiveData playlistLiveData = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .getPlaylist(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() + && response.body() != null + && response.body().getSubsonicResponse().getPlaylist() != null) { + playlistLiveData.setValue(response.body().getSubsonicResponse().getPlaylist()); + } else { + playlistLiveData.setValue(null); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + playlistLiveData.setValue(null); + } + }); + + return playlistLiveData; + } + + public void addSongToPlaylist(String playlistId, ArrayList songsId) { + if (songsId.isEmpty()) { + Toast.makeText(App.getContext(), App.getContext().getString(R.string.playlist_chooser_dialog_toast_all_skipped), Toast.LENGTH_SHORT).show(); + } else{ + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .updatePlaylist(playlistId, null, true, songsId, null) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + Toast.makeText(App.getContext(), App.getContext().getString(R.string.playlist_chooser_dialog_toast_add_success), Toast.LENGTH_SHORT).show(); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + Toast.makeText(App.getContext(), App.getContext().getString(R.string.playlist_chooser_dialog_toast_add_failure), Toast.LENGTH_SHORT).show(); + } + }); + } + } + + public void createPlaylist(String playlistId, String name, ArrayList songsId) { + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .createPlaylist(playlistId, name, songsId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void updatePlaylist(String playlistId, String name, ArrayList songsId) { + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .deletePlaylist(playlistId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + createPlaylist(null, name, songsId); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void deletePlaylist(String playlistId) { + App.getSubsonicClientInstance(false) + .getPlaylistClient() + .deletePlaylist(playlistId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + @androidx.media3.common.util.UnstableApi + public LiveData> getPinnedPlaylists() { + return playlistDao.getAll(); + } + + @androidx.media3.common.util.UnstableApi + public void insert(Playlist playlist) { + InsertThreadSafe insert = new InsertThreadSafe(playlistDao, playlist); + Thread thread = new Thread(insert); + thread.start(); + } + + @androidx.media3.common.util.UnstableApi + public void delete(Playlist playlist) { + DeleteThreadSafe delete = new DeleteThreadSafe(playlistDao, playlist); + Thread thread = new Thread(delete); + thread.start(); + } + + private static class InsertThreadSafe implements Runnable { + private final PlaylistDao playlistDao; + private final Playlist playlist; + + public InsertThreadSafe(PlaylistDao playlistDao, Playlist playlist) { + this.playlistDao = playlistDao; + this.playlist = playlist; + } + + @Override + public void run() { + playlistDao.insert(playlist); + } + } + + private static class DeleteThreadSafe implements Runnable { + private final PlaylistDao playlistDao; + private final Playlist playlist; + + public DeleteThreadSafe(PlaylistDao playlistDao, Playlist playlist) { + this.playlistDao = playlistDao; + this.playlist = playlist; + } + + @Override + public void run() { + playlistDao.delete(playlist); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java new file mode 100644 index 0000000..edfbbcc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java @@ -0,0 +1,153 @@ +package com.cappielloantonio.tempo.repository; + +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class PodcastRepository { + private static final String TAG = "PodcastRepository"; + + public MutableLiveData> getPodcastChannels(boolean includeEpisodes, String channelId) { + MutableLiveData> livePodcastChannel = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getPodcastClient() + .getPodcasts(includeEpisodes, channelId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPodcasts() != null) { + livePodcastChannel.setValue(response.body().getSubsonicResponse().getPodcasts().getChannels()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return livePodcastChannel; + } + + public MutableLiveData> getNewestPodcastEpisodes(int count) { + MutableLiveData> liveNewestPodcastEpisodes = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getPodcastClient() + .getNewestPodcasts(count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getNewestPodcasts() != null) { + liveNewestPodcastEpisodes.setValue(response.body().getSubsonicResponse().getNewestPodcasts().getEpisodes()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return liveNewestPodcastEpisodes; + } + + public void refreshPodcasts() { + App.getSubsonicClientInstance(false) + .getPodcastClient() + .refreshPodcasts() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void createPodcastChannel(String url) { + App.getSubsonicClientInstance(false) + .getPodcastClient() + .createPodcastChannel(url) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void deletePodcastChannel(String channelId) { + App.getSubsonicClientInstance(false) + .getPodcastClient() + .deletePodcastChannel(channelId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void deletePodcastEpisode(String episodeId) { + App.getSubsonicClientInstance(false) + .getPodcastClient() + .deletePodcastEpisode(episodeId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void downloadPodcastEpisode(String episodeId) { + App.getSubsonicClientInstance(false) + .getPodcastClient() + .downloadPodcastEpisode(episodeId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/QueueRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/QueueRepository.java new file mode 100644 index 0000000..6b3d625 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/QueueRepository.java @@ -0,0 +1,378 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.QueueDao; +import com.cappielloantonio.tempo.model.Queue; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.PlayQueue; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class QueueRepository { + private static final String TAG = "QueueRepository"; + + private final QueueDao queueDao = AppDatabase.getInstance().queueDao(); + + public LiveData> getLiveQueue() { + return queueDao.getAll(); + } + + public List getMedia() { + List media = new ArrayList<>(); + + GetMediaThreadSafe getMedia = new GetMediaThreadSafe(queueDao); + Thread thread = new Thread(getMedia); + thread.start(); + + try { + thread.join(); + media = getMedia.getMedia().stream() + .map(Child.class::cast) + .collect(Collectors.toList()); + + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return media; + } + + public MutableLiveData getPlayQueue() { + MutableLiveData playQueue = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBookmarksClient() + .getPlayQueue() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlayQueue() != null) { + playQueue.setValue(response.body().getSubsonicResponse().getPlayQueue()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + playQueue.setValue(null); + } + }); + + return playQueue; + } + + public void savePlayQueue(List ids, String current, long position) { + App.getSubsonicClientInstance(false) + .getBookmarksClient() + .savePlayQueue(ids, current, position) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void insert(Child media, boolean reset, int afterIndex) { + try { + List mediaList = new ArrayList<>(); + + if (!reset) { + GetMediaThreadSafe getMediaThreadSafe = new GetMediaThreadSafe(queueDao); + Thread getMediaThread = new Thread(getMediaThreadSafe); + getMediaThread.start(); + getMediaThread.join(); + + mediaList = getMediaThreadSafe.getMedia(); + } + + Queue queueItem = new Queue(media); + mediaList.add(afterIndex, queueItem); + + for (int i = 0; i < mediaList.size(); i++) { + mediaList.get(i).setTrackOrder(i); + } + + Thread delete = new Thread(new DeleteAllThreadSafe(queueDao)); + delete.start(); + delete.join(); + + Thread insertAll = new Thread(new InsertAllThreadSafe(queueDao, mediaList)); + insertAll.start(); + insertAll.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + private boolean isMediaInQueue(List queue, Child media) { + if (queue == null || media == null) return false; + + return queue.stream().anyMatch(queueItem -> + queueItem != null && media.getId() != null && + queueItem.getId().equals(media.getId()) + ); + } + + public void insertAll(List toAdd, boolean reset, int afterIndex) { + try { + List media = new ArrayList<>(); + + if (!reset) { + GetMediaThreadSafe getMediaThreadSafe = new GetMediaThreadSafe(queueDao); + Thread getMediaThread = new Thread(getMediaThreadSafe); + getMediaThread.start(); + getMediaThread.join(); + + media = getMediaThreadSafe.getMedia(); + } + + List filteredToAdd = toAdd; + final List finalMedia = media; + filteredToAdd = toAdd.stream() + .filter(child -> !isMediaInQueue(finalMedia, child)) + .collect(Collectors.toList()); + + for (int i = 0; i < filteredToAdd.size(); i++) { + Queue queueItem = new Queue(filteredToAdd.get(i)); + media.add(afterIndex + i, queueItem); + } + + for (int i = 0; i < media.size(); i++) { + media.get(i).setTrackOrder(i); + } + + Thread delete = new Thread(new DeleteAllThreadSafe(queueDao)); + delete.start(); + delete.join(); + + Thread insertAll = new Thread(new InsertAllThreadSafe(queueDao, media)); + insertAll.start(); + insertAll.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public void delete(int position) { + DeleteThreadSafe delete = new DeleteThreadSafe(queueDao, position); + Thread thread = new Thread(delete); + thread.start(); + } + + public void deleteAll() { + DeleteAllThreadSafe deleteAll = new DeleteAllThreadSafe(queueDao); + Thread thread = new Thread(deleteAll); + thread.start(); + } + + public int count() { + int count = 0; + + CountThreadSafe countThread = new CountThreadSafe(queueDao); + Thread thread = new Thread(countThread); + thread.start(); + + try { + thread.join(); + count = countThread.getCount(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return count; + } + + public void setLastPlayedTimestamp(String id) { + SetLastPlayedTimestampThreadSafe timestamp = new SetLastPlayedTimestampThreadSafe(queueDao, id); + Thread thread = new Thread(timestamp); + thread.start(); + } + + public void setPlayingPausedTimestamp(String id, long ms) { + SetPlayingPausedTimestampThreadSafe timestamp = new SetPlayingPausedTimestampThreadSafe(queueDao, id, ms); + Thread thread = new Thread(timestamp); + thread.start(); + } + + public int getLastPlayedMediaIndex() { + int index = 0; + + GetLastPlayedMediaThreadSafe getLastPlayedMediaThreadSafe = new GetLastPlayedMediaThreadSafe(queueDao); + Thread thread = new Thread(getLastPlayedMediaThreadSafe); + thread.start(); + + try { + thread.join(); + Queue lastMediaPlayed = getLastPlayedMediaThreadSafe.getQueueItem(); + index = lastMediaPlayed.getTrackOrder(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return index; + } + + public long getLastPlayedMediaTimestamp() { + long timestamp = 0; + + GetLastPlayedMediaThreadSafe getLastPlayedMediaThreadSafe = new GetLastPlayedMediaThreadSafe(queueDao); + Thread thread = new Thread(getLastPlayedMediaThreadSafe); + thread.start(); + + try { + thread.join(); + Queue lastMediaPlayed = getLastPlayedMediaThreadSafe.getQueueItem(); + timestamp = lastMediaPlayed.getPlayingChanged(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return timestamp; + } + + private static class GetMediaThreadSafe implements Runnable { + private final QueueDao queueDao; + private List media; + + public GetMediaThreadSafe(QueueDao queueDao) { + this.queueDao = queueDao; + } + + @Override + public void run() { + media = queueDao.getAllSimple(); + } + + public List getMedia() { + return media; + } + } + + private static class InsertAllThreadSafe implements Runnable { + private final QueueDao queueDao; + private final List media; + + public InsertAllThreadSafe(QueueDao queueDao, List media) { + this.queueDao = queueDao; + this.media = media; + } + + @Override + public void run() { + queueDao.insertAll(media); + } + } + + private static class DeleteThreadSafe implements Runnable { + private final QueueDao queueDao; + private final int position; + + public DeleteThreadSafe(QueueDao queueDao, int position) { + this.queueDao = queueDao; + this.position = position; + } + + @Override + public void run() { + queueDao.delete(position); + } + } + + private static class DeleteAllThreadSafe implements Runnable { + private final QueueDao queueDao; + + public DeleteAllThreadSafe(QueueDao queueDao) { + this.queueDao = queueDao; + } + + @Override + public void run() { + queueDao.deleteAll(); + } + } + + private static class CountThreadSafe implements Runnable { + private final QueueDao queueDao; + private int count = 0; + + public CountThreadSafe(QueueDao queueDao) { + this.queueDao = queueDao; + } + + @Override + public void run() { + count = queueDao.count(); + } + + public int getCount() { + return count; + } + } + + private static class SetLastPlayedTimestampThreadSafe implements Runnable { + private final QueueDao queueDao; + private final String mediaId; + + public SetLastPlayedTimestampThreadSafe(QueueDao queueDao, String mediaId) { + this.queueDao = queueDao; + this.mediaId = mediaId; + } + + @Override + public void run() { + queueDao.setLastPlay(mediaId, System.currentTimeMillis()); + } + } + + private static class SetPlayingPausedTimestampThreadSafe implements Runnable { + private final QueueDao queueDao; + private final String mediaId; + private final long ms; + + public SetPlayingPausedTimestampThreadSafe(QueueDao queueDao, String mediaId, long ms) { + this.queueDao = queueDao; + this.mediaId = mediaId; + this.ms = ms; + } + + @Override + public void run() { + queueDao.setPlayingChanged(mediaId, ms); + } + } + + private static class GetLastPlayedMediaThreadSafe implements Runnable { + private final QueueDao queueDao; + private Queue lastMediaPlayed; + + public GetLastPlayedMediaThreadSafe(QueueDao queueDao) { + this.queueDao = queueDao; + } + + @Override + public void run() { + lastMediaPlayed = queueDao.getLastPlayed(); + } + + public Queue getQueueItem() { + return lastMediaPlayed; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/RadioRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/RadioRepository.java new file mode 100644 index 0000000..9ad8a11 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/RadioRepository.java @@ -0,0 +1,91 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class RadioRepository { + public MutableLiveData> getInternetRadioStations() { + MutableLiveData> radioStation = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getInternetRadioClient() + .getInternetRadioStations() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getInternetRadioStations() != null && response.body().getSubsonicResponse().getInternetRadioStations().getInternetRadioStations() != null) { + radioStation.setValue(response.body().getSubsonicResponse().getInternetRadioStations().getInternetRadioStations()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return radioStation; + } + + public void createInternetRadioStation(String name, String streamURL, String homepageURL) { + App.getSubsonicClientInstance(false) + .getInternetRadioClient() + .createInternetRadioStation(streamURL, name, homepageURL) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void updateInternetRadioStation(String id, String name, String streamURL, String homepageURL) { + App.getSubsonicClientInstance(false) + .getInternetRadioClient() + .updateInternetRadioStation(id, streamURL, name, homepageURL) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void deleteInternetRadioStation(String id) { + App.getSubsonicClientInstance(false) + .getInternetRadioClient() + .deleteInternetRadioStation(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/ScanRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/ScanRepository.java new file mode 100644 index 0000000..5beb4c6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/ScanRepository.java @@ -0,0 +1,58 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.interfaces.ScanCallback; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; +import retrofit2.Callback; + +public class ScanRepository { + public void startScan(ScanCallback callback) { + App.getSubsonicClientInstance(false) + .getMediaLibraryScanningClient() + .startScan() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse() != null) { + if (response.body().getSubsonicResponse().getError() != null) { + callback.onError(new Exception(response.body().getSubsonicResponse().getError().getMessage())); + } else if (response.body().getSubsonicResponse().getScanStatus() != null) { + callback.onSuccess(response.body().getSubsonicResponse().getScanStatus().isScanning(), response.body().getSubsonicResponse().getScanStatus().getCount()); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onError(new Exception(t.getMessage())); + } + }); + } + + public void getScanStatus(ScanCallback callback) { + App.getSubsonicClientInstance(false) + .getMediaLibraryScanningClient() + .startScan() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse() != null) { + if (response.body().getSubsonicResponse().getError() != null) { + callback.onError(new Exception(response.body().getSubsonicResponse().getError().getMessage())); + } else if (response.body().getSubsonicResponse().getScanStatus() != null) { + callback.onSuccess(response.body().getSubsonicResponse().getScanStatus().isScanning(), response.body().getSubsonicResponse().getScanStatus().getCount()); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onError(new Exception(t.getMessage())); + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/SearchingRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/SearchingRepository.java new file mode 100644 index 0000000..b52315a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/SearchingRepository.java @@ -0,0 +1,196 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.RecentSearchDao; +import com.cappielloantonio.tempo.model.RecentSearch; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.SearchResult2; +import com.cappielloantonio.tempo.subsonic.models.SearchResult3; + +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class SearchingRepository { + private final RecentSearchDao recentSearchDao = AppDatabase.getInstance().recentSearchDao(); + + public MutableLiveData search2(String query) { + MutableLiveData result = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSearchingClient() + .search3(query, 20, 20, 20) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + result.setValue(response.body().getSubsonicResponse().getSearchResult2()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return result; + } + + public MutableLiveData search3(String query) { + MutableLiveData result = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSearchingClient() + .search3(query, 20, 20, 20) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + result.setValue(response.body().getSubsonicResponse().getSearchResult3()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return result; + } + + public MutableLiveData> getSuggestions(String query) { + MutableLiveData> suggestions = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSearchingClient() + .search3(query, 5, 5, 5) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + List newSuggestions = new ArrayList(); + + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSearchResult3() != null) { + if (response.body().getSubsonicResponse().getSearchResult3().getArtists() != null) { + for (ArtistID3 artistID3 : response.body().getSubsonicResponse().getSearchResult3().getArtists()) { + newSuggestions.add(artistID3.getName()); + } + } + + if (response.body().getSubsonicResponse().getSearchResult3().getAlbums() != null) { + for (AlbumID3 albumID3 : response.body().getSubsonicResponse().getSearchResult3().getAlbums()) { + newSuggestions.add(albumID3.getName()); + } + } + + if (response.body().getSubsonicResponse().getSearchResult3().getSongs() != null) { + for (Child song : response.body().getSubsonicResponse().getSearchResult3().getSongs()) { + newSuggestions.add(song.getTitle()); + } + } + + LinkedHashSet hashSet = new LinkedHashSet<>(newSuggestions); + ArrayList suggestionsWithoutDuplicates = new ArrayList<>(hashSet); + + suggestions.setValue(suggestionsWithoutDuplicates); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return suggestions; + } + + public void insert(RecentSearch recentSearch) { + InsertThreadSafe insert = new InsertThreadSafe(recentSearchDao, recentSearch); + Thread thread = new Thread(insert); + thread.start(); + } + + public void delete(RecentSearch recentSearch) { + DeleteThreadSafe delete = new DeleteThreadSafe(recentSearchDao, recentSearch); + Thread thread = new Thread(delete); + thread.start(); + } + + public List getRecentSearchSuggestion() { + List recent = new ArrayList<>(); + + RecentThreadSafe suggestionsThread = new RecentThreadSafe(recentSearchDao); + Thread thread = new Thread(suggestionsThread); + thread.start(); + + try { + thread.join(); + recent = suggestionsThread.getRecent(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return recent; + } + + private static class DeleteThreadSafe implements Runnable { + private final RecentSearchDao recentSearchDao; + private final RecentSearch recentSearch; + + public DeleteThreadSafe(RecentSearchDao recentSearchDao, RecentSearch recentSearch) { + this.recentSearchDao = recentSearchDao; + this.recentSearch = recentSearch; + } + + @Override + public void run() { + recentSearchDao.delete(recentSearch); + } + } + + private static class InsertThreadSafe implements Runnable { + private final RecentSearchDao recentSearchDao; + private final RecentSearch recentSearch; + + public InsertThreadSafe(RecentSearchDao recentSearchDao, RecentSearch recentSearch) { + this.recentSearchDao = recentSearchDao; + this.recentSearch = recentSearch; + } + + @Override + public void run() { + recentSearchDao.insert(recentSearch); + } + } + + private static class RecentThreadSafe implements Runnable { + private final RecentSearchDao recentSearchDao; + private List recent = new ArrayList<>(); + + public RecentThreadSafe(RecentSearchDao recentSearchDao) { + this.recentSearchDao = recentSearchDao; + } + + @Override + public void run() { + recent = recentSearchDao.getRecent(); + } + + public List getRecent() { + return recent; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/ServerRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/ServerRepository.java new file mode 100644 index 0000000..8907c5f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/ServerRepository.java @@ -0,0 +1,61 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.database.AppDatabase; +import com.cappielloantonio.tempo.database.dao.ServerDao; +import com.cappielloantonio.tempo.model.Server; + +import java.util.List; + +public class ServerRepository { + private static final String TAG = "QueueRepository"; + + private final ServerDao serverDao = AppDatabase.getInstance().serverDao(); + + public LiveData> getLiveServer() { + return serverDao.getAll(); + } + + public void insert(Server server) { + InsertThreadSafe insert = new InsertThreadSafe(serverDao, server); + Thread thread = new Thread(insert); + thread.start(); + } + + public void delete(Server server) { + DeleteThreadSafe delete = new DeleteThreadSafe(serverDao, server); + Thread thread = new Thread(delete); + thread.start(); + } + + private static class InsertThreadSafe implements Runnable { + private final ServerDao serverDao; + private final Server server; + + public InsertThreadSafe(ServerDao serverDao, Server server) { + this.serverDao = serverDao; + this.server = server; + } + + @Override + public void run() { + serverDao.insert(server); + } + } + + private static class DeleteThreadSafe implements Runnable { + private final ServerDao serverDao; + private final Server server; + + public DeleteThreadSafe(ServerDao serverDao, Server server) { + this.serverDao = serverDao; + this.server = server; + } + + @Override + public void run() { + serverDao.delete(server); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/SharingRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/SharingRepository.java new file mode 100644 index 0000000..9c53183 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/SharingRepository.java @@ -0,0 +1,99 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.Share; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class SharingRepository { + public MutableLiveData> getShares() { + MutableLiveData> shares = new MutableLiveData<>(new ArrayList<>()); + + App.getSubsonicClientInstance(false) + .getSharingClient() + .getShares() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getShares() != null && response.body().getSubsonicResponse().getShares().getShares() != null) { + shares.setValue(response.body().getSubsonicResponse().getShares().getShares()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return shares; + } + + public MutableLiveData createShare(String id, String description, Long expires) { + MutableLiveData share = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSharingClient() + .createShare(id, description, expires) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getShares() != null && response.body().getSubsonicResponse().getShares().getShares() != null && response.body().getSubsonicResponse().getShares().getShares().get(0) != null) { + share.setValue(response.body().getSubsonicResponse().getShares().getShares().get(0)); + } else { + share.setValue(null); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + share.setValue(null); + } + }); + + return share; + } + + public void updateShare(String id, String description, Long expires) { + App.getSubsonicClientInstance(false) + .getSharingClient() + .updateShare(id, description, expires) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void deleteShare(String id) { + App.getSubsonicClientInstance(false) + .getSharingClient() + .deleteShare(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/SongRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/SongRepository.java new file mode 100644 index 0000000..a40b3c9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/SongRepository.java @@ -0,0 +1,260 @@ +package com.cappielloantonio.tempo.repository; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class SongRepository { + private static final String TAG = "SongRepository"; + + public MutableLiveData> getStarredSongs(boolean random, int size) { + MutableLiveData> starredSongs = new MutableLiveData<>(Collections.emptyList()); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getStarred2() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null) { + List songs = response.body().getSubsonicResponse().getStarred2().getSongs(); + + if (songs != null) { + if (!random) { + starredSongs.setValue(songs); + } else { + Collections.shuffle(songs); + starredSongs.setValue(songs.subList(0, Math.min(size, songs.size()))); + } + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return starredSongs; + } + + public MutableLiveData> getInstantMix(String id, int count) { + MutableLiveData> instantMix = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getSimilarSongs2(id, count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null) { + instantMix.setValue(response.body().getSubsonicResponse().getSimilarSongs2().getSongs()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + instantMix.setValue(null); + } + }); + + return instantMix; + } + + public MutableLiveData> getRandomSample(int number, Integer fromYear, Integer toYear) { + MutableLiveData> randomSongsSample = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getRandomSongs(number, fromYear, toYear) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + List songs = new ArrayList<>(); + + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getRandomSongs() != null && response.body().getSubsonicResponse().getRandomSongs().getSongs() != null) { + songs.addAll(response.body().getSubsonicResponse().getRandomSongs().getSongs()); + } + + randomSongsSample.setValue(songs); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return randomSongsSample; + } + + public MutableLiveData> getRandomSampleWithGenre(int number, Integer fromYear, Integer toYear, String genre) { + MutableLiveData> randomSongsSample = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getRandomSongs(number, fromYear, toYear, genre) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + List songs = new ArrayList<>(); + + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getRandomSongs() != null && response.body().getSubsonicResponse().getRandomSongs().getSongs() != null) { + songs.addAll(response.body().getSubsonicResponse().getRandomSongs().getSongs()); + } + + randomSongsSample.setValue(songs); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return randomSongsSample; + } + + public void scrobble(String id, boolean submission) { + App.getSubsonicClientInstance(false) + .getMediaAnnotationClient() + .scrobble(id, submission) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public void setRating(String id, int rating) { + App.getSubsonicClientInstance(false) + .getMediaAnnotationClient() + .setRating(id, rating) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } + + public MutableLiveData> getSongsByGenre(String id, int page) { + MutableLiveData> songsByGenre = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getSongsByGenre(id, 100, 100 * page) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSongsByGenre() != null) { + songsByGenre.setValue(response.body().getSubsonicResponse().getSongsByGenre().getSongs()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return songsByGenre; + } + + public MutableLiveData> getSongsByGenres(ArrayList genresId) { + MutableLiveData> songsByGenre = new MutableLiveData<>(); + + for (String id : genresId) + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getSongsByGenre(id, 500, 0) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + List songs = new ArrayList<>(); + + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSongsByGenre() != null) { + songs.addAll(response.body().getSubsonicResponse().getSongsByGenre().getSongs()); + } + + songsByGenre.setValue(songs); + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return songsByGenre; + } + + public MutableLiveData getSong(String id) { + MutableLiveData song = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getSong(id) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + song.setValue(response.body().getSubsonicResponse().getSong()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return song; + } + + public MutableLiveData getSongLyrics(Child song) { + MutableLiveData lyrics = new MutableLiveData<>(null); + + App.getSubsonicClientInstance(false) + .getMediaRetrievalClient() + .getLyrics(song.getArtist(), song.getTitle()) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getLyrics() != null) { + lyrics.setValue(response.body().getSubsonicResponse().getLyrics().getValue()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return lyrics; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java new file mode 100644 index 0000000..1e0a37e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java @@ -0,0 +1,123 @@ +package com.cappielloantonio.tempo.repository; + +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.github.models.LatestRelease; +import com.cappielloantonio.tempo.interfaces.SystemCallback; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.OpenSubsonicExtension; +import com.cappielloantonio.tempo.subsonic.models.ResponseStatus; +import com.cappielloantonio.tempo.subsonic.models.SubsonicResponse; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class SystemRepository { + public void checkUserCredential(SystemCallback callback) { + App.getSubsonicClientInstance(false) + .getSystemClient() + .ping() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { + if (response.body() != null) { + if (response.body().getSubsonicResponse().getStatus().equals(ResponseStatus.FAILED)) { + callback.onError(new Exception(response.body().getSubsonicResponse().getError().getCode() + " - " + response.body().getSubsonicResponse().getError().getMessage())); + } else if (response.body().getSubsonicResponse().getStatus().equals(ResponseStatus.OK)) { + String password = response.raw().request().url().queryParameter("p"); + String token = response.raw().request().url().queryParameter("t"); + String salt = response.raw().request().url().queryParameter("s"); + callback.onSuccess(password, token, salt); + } else { + callback.onError(new Exception("Empty response")); + } + } else { + callback.onError(new Exception(String.valueOf(response.code()))); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onError(new Exception(t.getMessage())); + } + }); + } + + public MutableLiveData ping() { + MutableLiveData pingResult = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSystemClient() + .ping() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + pingResult.postValue(response.body().getSubsonicResponse()); + } else { + pingResult.postValue(null); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + pingResult.postValue(null); + } + }); + + return pingResult; + } + + public MutableLiveData> getOpenSubsonicExtensions() { + MutableLiveData> extensionsResult = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSystemClient() + .getOpenSubsonicExtensions() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + extensionsResult.postValue(response.body().getSubsonicResponse().getOpenSubsonicExtensions()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + extensionsResult.postValue(null); + } + }); + + return extensionsResult; + } + + public MutableLiveData checkTempoUpdate() { + MutableLiveData latestRelease = new MutableLiveData<>(); + + App.getGithubClientInstance() + .getReleaseClient() + .getLatestRelease() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + latestRelease.postValue(response.body()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + latestRelease.postValue(null); + } + }); + + return latestRelease; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/DownloaderManager.java b/app/src/main/java/com/cappielloantonio/tempo/service/DownloaderManager.java new file mode 100644 index 0000000..3a695fe --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/service/DownloaderManager.java @@ -0,0 +1,148 @@ +package com.cappielloantonio.tempo.service; + +import static androidx.media3.common.util.Assertions.checkNotNull; + +import android.content.Context; + +import androidx.annotation.Nullable; +import androidx.media3.common.MediaItem; +import androidx.media3.common.util.Log; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.common.util.Util; +import androidx.media3.datasource.DataSource; +import androidx.media3.exoplayer.offline.Download; +import androidx.media3.exoplayer.offline.DownloadCursor; +import androidx.media3.exoplayer.offline.DownloadHelper; +import androidx.media3.exoplayer.offline.DownloadIndex; +import androidx.media3.exoplayer.offline.DownloadManager; +import androidx.media3.exoplayer.offline.DownloadRequest; +import androidx.media3.exoplayer.offline.DownloadService; + +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.util.DownloadUtil; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; + +@UnstableApi +public class DownloaderManager { + private static final String TAG = "DownloaderManager"; + + private final Context context; + private final DataSource.Factory dataSourceFactory; + private final DownloadIndex downloadIndex; + + private static HashMap downloads; + + public DownloaderManager(Context context, DataSource.Factory dataSourceFactory, DownloadManager downloadManager) { + this.context = context.getApplicationContext(); + this.dataSourceFactory = dataSourceFactory; + + downloads = new HashMap<>(); + downloadIndex = downloadManager.getDownloadIndex(); + + loadDownloads(); + } + + private DownloadRequest buildDownloadRequest(MediaItem mediaItem) { + return DownloadHelper + .forMediaItem( + context, + mediaItem, + DownloadUtil.buildRenderersFactory(context, false), + dataSourceFactory) + .getDownloadRequest(Util.getUtf8Bytes(checkNotNull(mediaItem.mediaId))) + .copyWithId(mediaItem.mediaId); + } + + public boolean isDownloaded(String mediaId) { + @Nullable Download download = downloads.get(mediaId); + return download != null && download.state != Download.STATE_FAILED; + } + + public boolean isDownloaded(MediaItem mediaItem) { + return isDownloaded(mediaItem.mediaId); + } + + public boolean areDownloaded(List mediaItems) { + return mediaItems.stream().anyMatch(this::isDownloaded); + } + + public void download(MediaItem mediaItem, com.cappielloantonio.tempo.model.Download download) { + download.setDownloadUri(mediaItem.requestMetadata.mediaUri.toString()); + + DownloadService.sendAddDownload(context, DownloaderService.class, buildDownloadRequest(mediaItem), false); + insertDatabase(download); + } + + public void download(List mediaItems, List downloads) { + for (int counter = 0; counter < mediaItems.size(); counter++) { + download(mediaItems.get(counter), downloads.get(counter)); + } + } + + public void remove(MediaItem mediaItem, com.cappielloantonio.tempo.model.Download download) { + DownloadService.sendRemoveDownload(context, DownloaderService.class, buildDownloadRequest(mediaItem).id, false); + deleteDatabase(download.getId()); + downloads.remove(download.getId()); + } + + public void remove(List mediaItems, List downloads) { + for (int counter = 0; counter < mediaItems.size(); counter++) { + remove(mediaItems.get(counter), downloads.get(counter)); + } + } + + public void removeAll() { + DownloadService.sendRemoveAllDownloads(context, DownloaderService.class, false); + deleteAllDatabase(); + DownloadUtil.eraseDownloadFolder(context); + } + + private void loadDownloads() { + try (DownloadCursor loadedDownloads = downloadIndex.getDownloads()) { + while (loadedDownloads.moveToNext()) { + Download download = loadedDownloads.getDownload(); + downloads.put(download.request.id, download); + } + } catch (IOException e) { + Log.w(TAG, "Failed to query downloads", e); + } + } + + public static String getDownloadNotificationMessage(String id) { + com.cappielloantonio.tempo.model.Download download = getDownloadRepository().getDownload(id); + return download != null ? download.getTitle() : null; + } + + public static void updateRequestDownload(Download download) { + updateDatabase(download.request.id); + downloads.put(download.request.id, download); + } + + public static void removeRequestDownload(Download download) { + deleteDatabase(download.request.id); + downloads.remove(download.request.id); + } + + private static DownloadRepository getDownloadRepository() { + return new DownloadRepository(); + } + + private static void insertDatabase(com.cappielloantonio.tempo.model.Download download) { + getDownloadRepository().insert(download); + } + + private static void deleteDatabase(String id) { + getDownloadRepository().delete(id); + } + + private static void deleteAllDatabase() { + getDownloadRepository().deleteAll(); + } + + private static void updateDatabase(String id) { + getDownloadRepository().update(id); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/DownloaderService.java b/app/src/main/java/com/cappielloantonio/tempo/service/DownloaderService.java new file mode 100644 index 0000000..b34daf3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/service/DownloaderService.java @@ -0,0 +1,115 @@ +package com.cappielloantonio.tempo.service; + +import android.app.Notification; +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.media3.common.util.NotificationUtil; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.exoplayer.offline.Download; +import androidx.media3.exoplayer.offline.DownloadManager; +import androidx.media3.exoplayer.offline.DownloadNotificationHelper; +import androidx.media3.exoplayer.scheduler.PlatformScheduler; +import androidx.media3.exoplayer.scheduler.Requirements; +import androidx.media3.exoplayer.scheduler.Scheduler; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.util.DownloadUtil; + +import java.util.List; + +@UnstableApi +public class DownloaderService extends androidx.media3.exoplayer.offline.DownloadService { + + private static final int JOB_ID = 1; + private static final int FOREGROUND_NOTIFICATION_ID = 1; + + public DownloaderService() { + super(FOREGROUND_NOTIFICATION_ID, DEFAULT_FOREGROUND_NOTIFICATION_UPDATE_INTERVAL, DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID, R.string.exo_download_notification_channel_name, 0); + } + + @NonNull + @Override + protected DownloadManager getDownloadManager() { + DownloadManager downloadManager = DownloadUtil.getDownloadManager(this); + DownloadNotificationHelper downloadNotificationHelper = DownloadUtil.getDownloadNotificationHelper(this); + downloadManager.addListener(new TerminalStateNotificationHelper(this, downloadNotificationHelper, FOREGROUND_NOTIFICATION_ID + 1)); + return downloadManager; + } + + @NonNull + @Override + protected Scheduler getScheduler() { + return new PlatformScheduler(this, JOB_ID); + } + + @NonNull + @Override + protected Notification getForegroundNotification(@NonNull List downloads, @Requirements.RequirementFlags int notMetRequirements) { + return DownloadUtil.getDownloadNotificationHelper(this).buildProgressNotification(this, R.drawable.ic_download, null, null, downloads, notMetRequirements); + } + + private static final class TerminalStateNotificationHelper implements DownloadManager.Listener { + private final Context context; + private final DownloadNotificationHelper notificationHelper; + + private final Notification successfulDownloadGroupNotification; + private final Notification failedDownloadGroupNotification; + + private final int successfulDownloadGroupNotificationId; + private final int failedDownloadGroupNotificationId; + + private int nextNotificationId; + + public TerminalStateNotificationHelper(Context context, DownloadNotificationHelper notificationHelper, int firstNotificationId) { + this.context = context.getApplicationContext(); + this.notificationHelper = notificationHelper; + nextNotificationId = firstNotificationId; + + successfulDownloadGroupNotification = DownloadUtil.buildGroupSummaryNotification( + this.context, + DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID, + DownloadUtil.DOWNLOAD_NOTIFICATION_SUCCESSFUL_GROUP, + R.drawable.ic_check_circle, + "Downloads completed" + ); + + failedDownloadGroupNotification = DownloadUtil.buildGroupSummaryNotification( + this.context, + DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID, + DownloadUtil.DOWNLOAD_NOTIFICATION_FAILED_GROUP, + R.drawable.ic_error, + "Downloads failed" + ); + + successfulDownloadGroupNotificationId = nextNotificationId++; + failedDownloadGroupNotificationId = nextNotificationId++; + } + + @Override + public void onDownloadChanged(@NonNull DownloadManager downloadManager, Download download, @Nullable Exception finalException) { + Notification notification; + + if (download.state == Download.STATE_COMPLETED) { + notification = notificationHelper.buildDownloadCompletedNotification(context, R.drawable.ic_check_circle, null, DownloaderManager.getDownloadNotificationMessage(download.request.id)); + notification = Notification.Builder.recoverBuilder(context, notification).setGroup(DownloadUtil.DOWNLOAD_NOTIFICATION_SUCCESSFUL_GROUP).build(); + NotificationUtil.setNotification(this.context, successfulDownloadGroupNotificationId, successfulDownloadGroupNotification); + DownloaderManager.updateRequestDownload(download); + } else if (download.state == Download.STATE_FAILED) { + notification = notificationHelper.buildDownloadFailedNotification(context, R.drawable.ic_error, null, DownloaderManager.getDownloadNotificationMessage(download.request.id)); + notification = Notification.Builder.recoverBuilder(context, notification).setGroup(DownloadUtil.DOWNLOAD_NOTIFICATION_FAILED_GROUP).build(); + NotificationUtil.setNotification(this.context, failedDownloadGroupNotificationId, failedDownloadGroupNotification); + } else { + return; + } + + NotificationUtil.setNotification(context, nextNotificationId++, notification); + } + + @Override + public void onDownloadRemoved(@NonNull DownloadManager downloadManager, Download download) { + DownloaderManager.removeRequestDownload(download); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/EqualizerManager.kt b/app/src/main/java/com/cappielloantonio/tempo/service/EqualizerManager.kt new file mode 100644 index 0000000..9d8489e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/service/EqualizerManager.kt @@ -0,0 +1,47 @@ +package com.cappielloantonio.tempo.service + +import android.media.audiofx.Equalizer + +class EqualizerManager { + + private var equalizer: Equalizer? = null + + fun attachToSession(audioSessionId: Int): Boolean { + release() + if (audioSessionId != 0 && audioSessionId != -1) { + try { + equalizer = Equalizer(0, audioSessionId).apply { + enabled = true + } + return true + } catch (e: Exception) { + // Some devices may not support Equalizer or audio session may be invalid + equalizer = null + } + } + return false + } + + fun setBandLevel(band: Short, level: Short) { + equalizer?.setBandLevel(band, level) + } + + fun getNumberOfBands(): Short = equalizer?.numberOfBands ?: 0 + + fun getBandLevelRange(): ShortArray? = equalizer?.bandLevelRange + + fun getCenterFreq(band: Short): Int? = + equalizer?.getCenterFreq(band)?.div(1000) + + fun getBandLevel(band: Short): Short? = + equalizer?.getBandLevel(band) + + fun setEnabled(enabled: Boolean) { + equalizer?.enabled = enabled + } + + fun release() { + equalizer?.release() + equalizer = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java new file mode 100644 index 0000000..f7cd8a3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java @@ -0,0 +1,485 @@ +package com.cappielloantonio.tempo.service; + +import android.content.ComponentName; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.Observer; +import androidx.media3.common.MediaItem; +import androidx.media3.common.Player; +import androidx.media3.common.Timeline; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.interfaces.MediaIndexCallback; +import com.cappielloantonio.tempo.model.Chronology; +import com.cappielloantonio.tempo.repository.ChronologyRepository; +import com.cappielloantonio.tempo.repository.QueueRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.lang.ref.WeakReference; +import java.util.List; +import java.util.concurrent.ExecutionException; + +public class MediaManager { + private static final String TAG = "MediaManager"; + private static WeakReference attachedBrowserRef = new WeakReference<>(null); + + public static void registerPlaybackObserver( + ListenableFuture browserFuture, + PlaybackViewModel playbackViewModel + ) { + if (browserFuture == null) return; + + Futures.addCallback(browserFuture, new FutureCallback() { + @Override + public void onSuccess(MediaBrowser browser) { + MediaBrowser current = attachedBrowserRef.get(); + if (current != browser) { + browser.addListener(new Player.Listener() { + @Override + public void onEvents(@NonNull Player player, @NonNull Player.Events events) { + if (events.contains(Player.EVENT_MEDIA_ITEM_TRANSITION) + || events.contains(Player.EVENT_PLAY_WHEN_READY_CHANGED) + || events.contains(Player.EVENT_PLAYBACK_STATE_CHANGED)) { + + String mediaId = player.getCurrentMediaItem() != null + ? player.getCurrentMediaItem().mediaId + : null; + + boolean playing = player.getPlaybackState() == Player.STATE_READY + && player.getPlayWhenReady(); + + playbackViewModel.update(mediaId, playing); + } + } + }); + + String mediaId = browser.getCurrentMediaItem() != null + ? browser.getCurrentMediaItem().mediaId + : null; + boolean playing = browser.getPlaybackState() == Player.STATE_READY && browser.getPlayWhenReady(); + playbackViewModel.update(mediaId, playing); + + attachedBrowserRef = new WeakReference<>(browser); + } else { + String mediaId = browser.getCurrentMediaItem() != null + ? browser.getCurrentMediaItem().mediaId + : null; + boolean playing = browser.getPlaybackState() == Player.STATE_READY && browser.getPlayWhenReady(); + playbackViewModel.update(mediaId, playing); + } + } + + @Override + public void onFailure(@NonNull Throwable t) { + Log.e(TAG, "Failed to get MediaBrowser instance", t); + } + }, MoreExecutors.directExecutor()); + } + + public static void onBrowserReleased(@Nullable MediaBrowser released) { + MediaBrowser attached = attachedBrowserRef.get(); + if (attached == released) { + attachedBrowserRef.clear(); + } + } + + public static void reset(ListenableFuture mediaBrowserListenableFuture) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + if (mediaBrowserListenableFuture.get().isPlaying()) { + mediaBrowserListenableFuture.get().pause(); + } + + mediaBrowserListenableFuture.get().stop(); + mediaBrowserListenableFuture.get().clearMediaItems(); + clearDatabase(); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void hide(ListenableFuture mediaBrowserListenableFuture) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + if (mediaBrowserListenableFuture.get().isPlaying()) { + mediaBrowserListenableFuture.get().pause(); + } + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void check(ListenableFuture mediaBrowserListenableFuture) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + if (mediaBrowserListenableFuture.get().getMediaItemCount() < 1) { + List media = getQueueRepository().getMedia(); + if (media != null && media.size() >= 1) { + init(mediaBrowserListenableFuture, media); + } + } + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void init(ListenableFuture mediaBrowserListenableFuture, List media) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().clearMediaItems(); + mediaBrowserListenableFuture.get().setMediaItems(MappingUtil.mapMediaItems(media)); + mediaBrowserListenableFuture.get().seekTo(getQueueRepository().getLastPlayedMediaIndex(), getQueueRepository().getLastPlayedMediaTimestamp()); + mediaBrowserListenableFuture.get().prepare(); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void startQueue(ListenableFuture mediaBrowserListenableFuture, List media, int startIndex) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + MediaBrowser browser = mediaBrowserListenableFuture.get(); + browser.clearMediaItems(); + browser.setMediaItems(MappingUtil.mapMediaItems(media)); + browser.prepare(); + + Player.Listener timelineListener = new Player.Listener() { + @Override + public void onTimelineChanged(Timeline timeline, int reason) { + int itemCount = browser.getMediaItemCount(); + if (itemCount > 0 && startIndex >= 0 && startIndex < itemCount) { + browser.seekTo(startIndex, 0); + browser.play(); + browser.removeListener(this); + } + } + }; + browser.addListener(timelineListener); + + enqueueDatabase(media, true, 0); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void startQueue(ListenableFuture mediaBrowserListenableFuture, Child media) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().clearMediaItems(); + mediaBrowserListenableFuture.get().setMediaItem(MappingUtil.mapMediaItem(media)); + mediaBrowserListenableFuture.get().prepare(); + mediaBrowserListenableFuture.get().play(); + enqueueDatabase(media, true, 0); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void playDownloadedMediaItem(ListenableFuture mediaBrowserListenableFuture, MediaItem mediaItem) { + if (mediaBrowserListenableFuture != null && mediaItem != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + mediaBrowser.clearMediaItems(); + mediaBrowser.setMediaItem(mediaItem); + mediaBrowser.prepare(); + mediaBrowser.play(); + clearDatabase(); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void startRadio(ListenableFuture mediaBrowserListenableFuture, InternetRadioStation internetRadioStation) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().clearMediaItems(); + mediaBrowserListenableFuture.get().setMediaItem(MappingUtil.mapInternetRadioStation(internetRadioStation)); + mediaBrowserListenableFuture.get().prepare(); + mediaBrowserListenableFuture.get().play(); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void startPodcast(ListenableFuture mediaBrowserListenableFuture, PodcastEpisode podcastEpisode) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().clearMediaItems(); + mediaBrowserListenableFuture.get().setMediaItem(MappingUtil.mapMediaItem(podcastEpisode)); + mediaBrowserListenableFuture.get().prepare(); + mediaBrowserListenableFuture.get().play(); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void enqueue(ListenableFuture mediaBrowserListenableFuture, List media, boolean playImmediatelyAfter) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + if (playImmediatelyAfter && mediaBrowserListenableFuture.get().getNextMediaItemIndex() != -1) { + enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getNextMediaItemIndex()); + mediaBrowserListenableFuture.get().addMediaItems(mediaBrowserListenableFuture.get().getNextMediaItemIndex(), MappingUtil.mapMediaItems(media)); + } else { + enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getMediaItemCount()); + mediaBrowserListenableFuture.get().addMediaItems(MappingUtil.mapMediaItems(media)); + } + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void enqueue(ListenableFuture mediaBrowserListenableFuture, Child media, boolean playImmediatelyAfter) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + if (playImmediatelyAfter && mediaBrowserListenableFuture.get().getNextMediaItemIndex() != -1) { + enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getNextMediaItemIndex()); + mediaBrowserListenableFuture.get().addMediaItem(mediaBrowserListenableFuture.get().getNextMediaItemIndex(), MappingUtil.mapMediaItem(media)); + } else { + enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getMediaItemCount()); + mediaBrowserListenableFuture.get().addMediaItem(MappingUtil.mapMediaItem(media)); + } + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void shuffle(ListenableFuture mediaBrowserListenableFuture, List media, int startIndex, int endIndex) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().removeMediaItems(startIndex, endIndex + 1); + mediaBrowserListenableFuture.get().addMediaItems(MappingUtil.mapMediaItems(media).subList(startIndex, endIndex + 1)); + swapDatabase(media); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void swap(ListenableFuture mediaBrowserListenableFuture, List media, int from, int to) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().moveMediaItem(from, to); + swapDatabase(media); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void remove(ListenableFuture mediaBrowserListenableFuture, List media, int toRemove) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + if (mediaBrowserListenableFuture.get().getMediaItemCount() > 1 && mediaBrowserListenableFuture.get().getCurrentMediaItemIndex() != toRemove) { + mediaBrowserListenableFuture.get().removeMediaItem(toRemove); + removeDatabase(media, toRemove); + } else { + removeDatabase(media, -1); + } + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void removeRange(ListenableFuture mediaBrowserListenableFuture, List media, int fromItem, int toItem) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + mediaBrowserListenableFuture.get().removeMediaItems(fromItem, toItem); + removeRangeDatabase(media, fromItem, toItem); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void getCurrentIndex(ListenableFuture mediaBrowserListenableFuture, MediaIndexCallback callback) { + if (mediaBrowserListenableFuture != null) { + mediaBrowserListenableFuture.addListener(() -> { + try { + if (mediaBrowserListenableFuture.isDone()) { + callback.onRecovery(mediaBrowserListenableFuture.get().getCurrentMediaItemIndex()); + } + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + } + + public static void setLastPlayedTimestamp(MediaItem mediaItem) { + if (mediaItem != null) getQueueRepository().setLastPlayedTimestamp(mediaItem.mediaId); + } + + public static void setPlayingPausedTimestamp(MediaItem mediaItem, long ms) { + if (mediaItem != null) + getQueueRepository().setPlayingPausedTimestamp(mediaItem.mediaId, ms); + } + + public static void scrobble(MediaItem mediaItem, boolean submission) { + if (mediaItem != null && Preferences.isScrobblingEnabled()) { + getSongRepository().scrobble(mediaItem.mediaMetadata.extras.getString("id"), submission); + } + } + + @OptIn(markerClass = UnstableApi.class) + public static void continuousPlay(MediaItem mediaItem) { + if (mediaItem != null && Preferences.isContinuousPlayEnabled() && Preferences.isInstantMixUsable()) { + Preferences.setLastInstantMix(); + + LiveData> instantMix = getSongRepository().getInstantMix(mediaItem.mediaId, 10); + instantMix.observeForever(new Observer>() { + @Override + public void onChanged(List media) { + if (media != null) { + ListenableFuture mediaBrowserListenableFuture = new MediaBrowser.Builder( + App.getContext(), + new SessionToken(App.getContext(), new ComponentName(App.getContext(), MediaService.class)) + ).buildAsync(); + + enqueue(mediaBrowserListenableFuture, media, true); + } + + instantMix.removeObserver(this); + } + }); + } + } + + public static void saveChronology(MediaItem mediaItem) { + if (mediaItem != null) { + getChronologyRepository().insert(new Chronology(mediaItem)); + } + } + + private static QueueRepository getQueueRepository() { + return new QueueRepository(); + } + + private static SongRepository getSongRepository() { + return new SongRepository(); + } + + private static ChronologyRepository getChronologyRepository() { + return new ChronologyRepository(); + } + + private static void enqueueDatabase(List media, boolean reset, int afterIndex) { + getQueueRepository().insertAll(media, reset, afterIndex); + } + + private static void enqueueDatabase(Child media, boolean reset, int afterIndex) { + getQueueRepository().insert(media, reset, afterIndex); + } + + private static void swapDatabase(List media) { + getQueueRepository().insertAll(media, true, 0); + } + + private static void removeDatabase(List media, int toRemove) { + if (toRemove != -1) { + media.remove(toRemove); + getQueueRepository().insertAll(media, true, 0); + } + } + + private static void removeRangeDatabase(List media, int fromItem, int toItem) { + List toRemove = media.subList(fromItem, toItem); + + media.removeAll(toRemove); + + getQueueRepository().insertAll(media, true, 0); + } + + public static void clearDatabase() { + getQueueRepository().deleteAll(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/RetrofitClient.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/RetrofitClient.kt new file mode 100644 index 0000000..3f9868b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/RetrofitClient.kt @@ -0,0 +1,66 @@ +package com.cappielloantonio.tempo.subsonic + +import com.cappielloantonio.tempo.App +import com.cappielloantonio.tempo.subsonic.utils.CacheUtil +import com.cappielloantonio.tempo.subsonic.utils.EmptyDateTypeAdapter +import com.google.gson.GsonBuilder +import okhttp3.Cache +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import java.util.Date +import java.util.concurrent.TimeUnit + +class RetrofitClient(subsonic: Subsonic) { + var retrofit: Retrofit + + init { + val gson = GsonBuilder() + .registerTypeAdapter(Date::class.java, EmptyDateTypeAdapter()) + .setLenient() + .create() + + retrofit = Retrofit.Builder() + .baseUrl(subsonic.url) + .addConverterFactory(GsonConverterFactory.create(gson)) + .client(getOkHttpClient()) + .build() + } + + private fun getOkHttpClient(): OkHttpClient { + val cacheUtil = CacheUtil(60, 60 * 60 * 24 * 30) + + // BrowsingClient 60 + // MediaAnnotationClient 0 + // MediaLibraryScanningClient 0 + // MediaRetrievalClient 0 + // PlaylistClient 0 + // PodcastClient 60 + // SearchClient 60 + // SystemClient 60 + // AlbumSongListClient 60 + + return OkHttpClient.Builder() + .callTimeout(2, TimeUnit.MINUTES) + .connectTimeout(20, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .addInterceptor(getHttpLoggingInterceptor()) + .addInterceptor(cacheUtil.offlineInterceptor) + // .addNetworkInterceptor(cacheUtil.onlineInterceptor) + .cache(getCache()) + .build() + } + + private fun getHttpLoggingInterceptor(): HttpLoggingInterceptor { + val loggingInterceptor = HttpLoggingInterceptor() + loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY) + return loggingInterceptor + } + + private fun getCache(): Cache { + val cacheSize = 10 * 1024 * 1024 + return Cache(App.getContext().cacheDir, cacheSize.toLong()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/Subsonic.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/Subsonic.java new file mode 100644 index 0000000..de4b36b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/Subsonic.java @@ -0,0 +1,162 @@ +package com.cappielloantonio.tempo.subsonic; + +import com.cappielloantonio.tempo.subsonic.api.albumsonglist.AlbumSongListClient; +import com.cappielloantonio.tempo.subsonic.api.bookmarks.BookmarksClient; +import com.cappielloantonio.tempo.subsonic.api.browsing.BrowsingClient; +import com.cappielloantonio.tempo.subsonic.api.internetradio.InternetRadioClient; +import com.cappielloantonio.tempo.subsonic.api.mediaannotation.MediaAnnotationClient; +import com.cappielloantonio.tempo.subsonic.api.medialibraryscanning.MediaLibraryScanningClient; +import com.cappielloantonio.tempo.subsonic.api.mediaretrieval.MediaRetrievalClient; +import com.cappielloantonio.tempo.subsonic.api.open.OpenClient; +import com.cappielloantonio.tempo.subsonic.api.playlist.PlaylistClient; +import com.cappielloantonio.tempo.subsonic.api.podcast.PodcastClient; +import com.cappielloantonio.tempo.subsonic.api.searching.SearchingClient; +import com.cappielloantonio.tempo.subsonic.api.sharing.SharingClient; +import com.cappielloantonio.tempo.subsonic.api.system.SystemClient; +import com.cappielloantonio.tempo.subsonic.base.Version; + +import java.util.HashMap; +import java.util.Map; + +public class Subsonic { + private static final Version API_MAX_VERSION = Version.of("1.15.0"); + + private final Version apiVersion = API_MAX_VERSION; + private final SubsonicPreferences preferences; + + private SystemClient systemClient; + private BrowsingClient browsingClient; + private MediaRetrievalClient mediaRetrievalClient; + private PlaylistClient playlistClient; + private SearchingClient searchingClient; + private AlbumSongListClient albumSongListClient; + private MediaAnnotationClient mediaAnnotationClient; + private PodcastClient podcastClient; + private MediaLibraryScanningClient mediaLibraryScanningClient; + private BookmarksClient bookmarksClient; + private InternetRadioClient internetRadioClient; + private SharingClient sharingClient; + private OpenClient openClient; + + public Subsonic(SubsonicPreferences preferences) { + this.preferences = preferences; + } + + public Version getApiVersion() { + return apiVersion; + } + + public SystemClient getSystemClient() { + if (systemClient == null) { + systemClient = new SystemClient(this); + } + return systemClient; + } + + public BrowsingClient getBrowsingClient() { + if (browsingClient == null) { + browsingClient = new BrowsingClient(this); + } + return browsingClient; + } + + public MediaRetrievalClient getMediaRetrievalClient() { + if (mediaRetrievalClient == null) { + mediaRetrievalClient = new MediaRetrievalClient(this); + } + return mediaRetrievalClient; + } + + public PlaylistClient getPlaylistClient() { + if (playlistClient == null) { + playlistClient = new PlaylistClient(this); + } + return playlistClient; + } + + public SearchingClient getSearchingClient() { + if (searchingClient == null) { + searchingClient = new SearchingClient(this); + } + return searchingClient; + } + + public AlbumSongListClient getAlbumSongListClient() { + if (albumSongListClient == null) { + albumSongListClient = new AlbumSongListClient(this); + } + return albumSongListClient; + } + + public MediaAnnotationClient getMediaAnnotationClient() { + if (mediaAnnotationClient == null) { + mediaAnnotationClient = new MediaAnnotationClient(this); + } + return mediaAnnotationClient; + } + + public PodcastClient getPodcastClient() { + if (podcastClient == null) { + podcastClient = new PodcastClient(this); + } + return podcastClient; + } + + public MediaLibraryScanningClient getMediaLibraryScanningClient() { + if (mediaLibraryScanningClient == null) { + mediaLibraryScanningClient = new MediaLibraryScanningClient(this); + } + return mediaLibraryScanningClient; + } + + public BookmarksClient getBookmarksClient() { + if (bookmarksClient == null) { + bookmarksClient = new BookmarksClient(this); + } + return bookmarksClient; + } + + public InternetRadioClient getInternetRadioClient() { + if (internetRadioClient == null) { + internetRadioClient = new InternetRadioClient(this); + } + return internetRadioClient; + } + + public SharingClient getSharingClient() { + if (sharingClient == null) { + sharingClient = new SharingClient(this); + } + return sharingClient; + } + + public OpenClient getOpenClient() { + if (openClient == null) { + openClient = new OpenClient(this); + } + return openClient; + } + + public String getUrl() { + String url = preferences.getServerUrl() + "/rest/"; + return url.replace("//rest", "/rest"); + } + + public Map getParams() { + Map params = new HashMap<>(); + params.put("u", preferences.getUsername()); + + if (preferences.getAuthentication().getPassword() != null) + params.put("p", preferences.getAuthentication().getPassword()); + if (preferences.getAuthentication().getSalt() != null) + params.put("s", preferences.getAuthentication().getSalt()); + if (preferences.getAuthentication().getToken() != null) + params.put("t", preferences.getAuthentication().getToken()); + + params.put("v", getApiVersion().getVersionString()); + params.put("c", preferences.getClientName()); + params.put("f", "json"); + + return params; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/SubsonicPreferences.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/SubsonicPreferences.java new file mode 100644 index 0000000..6d300c3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/SubsonicPreferences.java @@ -0,0 +1,86 @@ +package com.cappielloantonio.tempo.subsonic; + +import com.cappielloantonio.tempo.subsonic.utils.StringUtil; + +import java.util.UUID; + +public class SubsonicPreferences { + private String serverUrl; + private String username; + private String clientName = "Tempus"; + private SubsonicAuthentication authentication; + + public String getServerUrl() { + return serverUrl; + } + + public String getUsername() { + return username; + } + + public String getClientName() { + return clientName; + } + + public SubsonicAuthentication getAuthentication() { + return authentication; + } + + public void setServerUrl(String serverUrl) { + this.serverUrl = serverUrl; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setClientName(String clientName) { + this.clientName = clientName; + } + + public void setAuthentication(String password, String token, String salt, boolean isLowSecurity) { + if (password != null) { + this.authentication = new SubsonicAuthentication(password, isLowSecurity); + } + + if (token != null && salt != null) { + this.authentication = new SubsonicAuthentication(token, salt); + } + } + + public static class SubsonicAuthentication { + private String password; + private String salt; + private String token; + + public SubsonicAuthentication(String password, boolean isLowSecurity) { + if (isLowSecurity) { + this.password = password; + } else { + update(password); + } + } + + public SubsonicAuthentication(String token, String salt) { + this.token = token; + this.salt = salt; + } + + public String getPassword() { + return password; + } + + public String getSalt() { + return salt; + } + + public String getToken() { + return token; + } + + void update(String password) { + this.salt = UUID.randomUUID().toString(); + this.token = StringUtil.tokenize(password + salt); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListClient.java new file mode 100644 index 0000000..0a799d4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListClient.java @@ -0,0 +1,61 @@ +package com.cappielloantonio.tempo.subsonic.api.albumsonglist; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class AlbumSongListClient { + private static final String TAG = "BrowsingClient"; + + private final Subsonic subsonic; + private final AlbumSongListService albumSongListService; + + public AlbumSongListClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.albumSongListService = new RetrofitClient(subsonic).getRetrofit().create(AlbumSongListService.class); + } + + public Call getAlbumList(String type, int size, int offset) { + Log.d(TAG, "getAlbumList()"); + return albumSongListService.getAlbumList(subsonic.getParams(), type, size, offset); + } + + public Call getAlbumList2(String type, int size, int offset, Integer fromYear, Integer toYear) { + Log.d(TAG, "getAlbumList2()"); + return albumSongListService.getAlbumList2(subsonic.getParams(), type, size, offset, fromYear, toYear); + } + + public Call getRandomSongs(int size, Integer fromYear, Integer toYear) { + Log.d(TAG, "getRandomSongs()"); + return albumSongListService.getRandomSongs(subsonic.getParams(), size, fromYear, toYear); + } + + public Call getRandomSongs(int size, Integer fromYear, Integer toYear, String genre) { + Log.d(TAG, "getRandomSongs()"); + return albumSongListService.getRandomSongs(subsonic.getParams(), size, fromYear, toYear, genre); + } + + public Call getSongsByGenre(String genre, int count, int offset) { + Log.d(TAG, "getSongsByGenre()"); + return albumSongListService.getSongsByGenre(subsonic.getParams(), genre, count, offset); + } + + public Call getNowPlaying() { + Log.d(TAG, "getNowPlaying()"); + return albumSongListService.getNowPlaying(subsonic.getParams()); + } + + public Call getStarred() { + Log.d(TAG, "getStarred()"); + return albumSongListService.getStarred(subsonic.getParams()); + } + + public Call getStarred2() { + Log.d(TAG, "getStarred2()"); + return albumSongListService.getStarred2(subsonic.getParams()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListService.java new file mode 100644 index 0000000..e0d8995 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/albumsonglist/AlbumSongListService.java @@ -0,0 +1,36 @@ +package com.cappielloantonio.tempo.subsonic.api.albumsonglist; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface AlbumSongListService { + @GET("getAlbumList") + Call getAlbumList(@QueryMap Map params, @Query("type") String type, @Query("size") int size, @Query("offset") int offset); + + @GET("getAlbumList2") + Call getAlbumList2(@QueryMap Map params, @Query("type") String type, @Query("size") int size, @Query("offset") int offset, @Query("fromYear") Integer fromYear, @Query("toYear") Integer toYear); + + @GET("getRandomSongs") + Call getRandomSongs(@QueryMap Map params, @Query("size") int size, @Query("fromYear") Integer fromYear, @Query("toYear") Integer toYear); + + @GET("getRandomSongs") + Call getRandomSongs(@QueryMap Map params, @Query("size") int size, @Query("fromYear") Integer fromYear, @Query("toYear") Integer toYear, @Query("genre") String genre); + + @GET("getSongsByGenre") + Call getSongsByGenre(@QueryMap Map params, @Query("genre") String genre, @Query("count") int count, @Query("offset") int offset); + + @GET("getNowPlaying") + Call getNowPlaying(@QueryMap Map params); + + @GET("getStarred") + Call getStarred(@QueryMap Map params); + + @GET("getStarred2") + Call getStarred2(@QueryMap Map params); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksClient.java new file mode 100644 index 0000000..d04ab33 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksClient.java @@ -0,0 +1,33 @@ +package com.cappielloantonio.tempo.subsonic.api.bookmarks; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.List; + +import retrofit2.Call; + +public class BookmarksClient { + private static final String TAG = "BookmarksClient"; + + private final Subsonic subsonic; + private final BookmarksService bookmarksService; + + public BookmarksClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.bookmarksService = new RetrofitClient(subsonic).getRetrofit().create(BookmarksService.class); + } + + public Call getPlayQueue() { + Log.d(TAG, "getPlayQueue()"); + return bookmarksService.getPlayQueue(subsonic.getParams()); + } + + public Call savePlayQueue(List ids, String current, long position) { + Log.d(TAG, "savePlayQueue()"); + return bookmarksService.savePlayQueue(subsonic.getParams(), ids, current, position); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksService.java new file mode 100644 index 0000000..18b622e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/bookmarks/BookmarksService.java @@ -0,0 +1,19 @@ +package com.cappielloantonio.tempo.subsonic.api.bookmarks; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.List; +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface BookmarksService { + @GET("getPlayQueue") + Call getPlayQueue(@QueryMap Map params); + + @GET("savePlayQueue") + Call savePlayQueue(@QueryMap Map params, @Query("id") List ids, @Query("current") String current, @Query("position") long position); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingClient.java new file mode 100644 index 0000000..7f95021 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingClient.java @@ -0,0 +1,106 @@ +package com.cappielloantonio.tempo.subsonic.api.browsing; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class BrowsingClient { + private static final String TAG = "BrowsingClient"; + + private final Subsonic subsonic; + private final BrowsingService browsingService; + + public BrowsingClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.browsingService = new RetrofitClient(subsonic).getRetrofit().create(BrowsingService.class); + } + + public Call getMusicFolders() { + Log.d(TAG, "getMusicFolders()"); + return browsingService.getMusicFolders(subsonic.getParams()); + } + + public Call getIndexes(String musicFolderId, Long ifModifiedSince) { + Log.d(TAG, "getIndexes()"); + return browsingService.getIndexes(subsonic.getParams(), musicFolderId, ifModifiedSince); + } + + public Call getMusicDirectory(String id) { + Log.d(TAG, "getMusicDirectory()"); + return browsingService.getMusicDirectory(subsonic.getParams(), id); + } + + public Call getGenres() { + Log.d(TAG, "getGenres()"); + return browsingService.getGenres(subsonic.getParams()); + } + + public Call getArtists() { + Log.d(TAG, "getArtists()"); + return browsingService.getArtists(subsonic.getParams()); + } + + public Call getArtist(String id) { + Log.d(TAG, "getArtist()"); + return browsingService.getArtist(subsonic.getParams(), id); + } + + public Call getAlbum(String id) { + Log.d(TAG, "getAlbum()"); + return browsingService.getAlbum(subsonic.getParams(), id); + } + + public Call getSong(String id) { + Log.d(TAG, "getSong()"); + return browsingService.getSong(subsonic.getParams(), id); + } + + public Call getVideos() { + Log.d(TAG, "getVideos()"); + return browsingService.getVideos(subsonic.getParams()); + } + + public Call getVideoInfo(String id) { + Log.d(TAG, "getVideoInfo()"); + return browsingService.getVideoInfo(subsonic.getParams(), id); + } + + public Call getArtistInfo(String id) { + Log.d(TAG, "getArtistInfo()"); + return browsingService.getArtistInfo(subsonic.getParams(), id); + } + + public Call getArtistInfo2(String id) { + Log.d(TAG, "getArtistInfo2()"); + return browsingService.getArtistInfo2(subsonic.getParams(), id); + } + + public Call getAlbumInfo(String id) { + Log.d(TAG, "getAlbumInfo()"); + return browsingService.getAlbumInfo(subsonic.getParams(), id); + } + + public Call getAlbumInfo2(String id) { + Log.d(TAG, "getAlbumInfo2()"); + return browsingService.getAlbumInfo2(subsonic.getParams(), id); + } + + public Call getSimilarSongs(String id, int count) { + Log.d(TAG, "getSimilarSongs()"); + return browsingService.getSimilarSongs(subsonic.getParams(), id, count); + } + + public Call getSimilarSongs2(String id, int limit) { + Log.d(TAG, "getSimilarSongs2()"); + return browsingService.getSimilarSongs2(subsonic.getParams(), id, limit); + } + + public Call getTopSongs(String artist, int count) { + Log.d(TAG, "getTopSongs()"); + return browsingService.getTopSongs(subsonic.getParams(), artist, count); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingService.java new file mode 100644 index 0000000..ecfd4df --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/browsing/BrowsingService.java @@ -0,0 +1,63 @@ +package com.cappielloantonio.tempo.subsonic.api.browsing; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface BrowsingService { + @GET("getMusicFolders") + Call getMusicFolders(@QueryMap Map params); + + @GET("getIndexes") + Call getIndexes(@QueryMap Map params, @Query("musicFolderId") String musicFolderId, @Query("ifModifiedSince") Long ifModifiedSince); + + @GET("getMusicDirectory") + Call getMusicDirectory(@QueryMap Map params, @Query("id") String id); + + @GET("getGenres") + Call getGenres(@QueryMap Map params); + + @GET("getArtists") + Call getArtists(@QueryMap Map params); + + @GET("getArtist") + Call getArtist(@QueryMap Map params, @Query("id") String id); + + @GET("getAlbum") + Call getAlbum(@QueryMap Map params, @Query("id") String id); + + @GET("getSong") + Call getSong(@QueryMap Map params, @Query("id") String id); + + @GET("getVideos") + Call getVideos(@QueryMap Map params); + + @GET("getVideoInfo") + Call getVideoInfo(@QueryMap Map params, @Query("id") String id); + + @GET("getArtistInfo") + Call getArtistInfo(@QueryMap Map params, @Query("id") String id); + + @GET("getArtistInfo2") + Call getArtistInfo2(@QueryMap Map params, @Query("id") String id); + + @GET("getAlbumInfo") + Call getAlbumInfo(@QueryMap Map params, @Query("id") String id); + + @GET("getAlbumInfo2") + Call getAlbumInfo2(@QueryMap Map params, @Query("id") String id); + + @GET("getSimilarSongs") + Call getSimilarSongs(@QueryMap Map params, @Query("id") String id, @Query("count") int count); + + @GET("getSimilarSongs2") + Call getSimilarSongs2(@QueryMap Map params, @Query("id") String id, @Query("count") int count); + + @GET("getTopSongs") + Call getTopSongs(@QueryMap Map params, @Query("artist") String artist, @Query("count") int count); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioClient.java new file mode 100644 index 0000000..b83a656 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioClient.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.subsonic.api.internetradio; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class InternetRadioClient { + private static final String TAG = "InternetRadioClient"; + + private final Subsonic subsonic; + private final InternetRadioService internetRadioService; + + public InternetRadioClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.internetRadioService = new RetrofitClient(subsonic).getRetrofit().create(InternetRadioService.class); + } + + public Call getInternetRadioStations() { + Log.d(TAG, "getInternetRadioStations()"); + return internetRadioService.getInternetRadioStations(subsonic.getParams()); + } + + public Call createInternetRadioStation(String streamUrl, String name, String homepageUrl) { + Log.d(TAG, "createInternetRadioStation()"); + return internetRadioService.createInternetRadioStation(subsonic.getParams(), streamUrl, name, homepageUrl); + } + + public Call updateInternetRadioStation(String id, String streamUrl, String name, String homepageUrl) { + Log.d(TAG, "updateInternetRadioStation()"); + return internetRadioService.updateInternetRadioStation(subsonic.getParams(), id, streamUrl, name, homepageUrl); + } + + public Call deleteInternetRadioStation(String id) { + Log.d(TAG, "deleteInternetRadioStation()"); + return internetRadioService.deleteInternetRadioStation(subsonic.getParams(), id); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioService.java new file mode 100644 index 0000000..f244dc2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/internetradio/InternetRadioService.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.subsonic.api.internetradio; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface InternetRadioService { + @GET("getInternetRadioStations") + Call getInternetRadioStations(@QueryMap Map params); + + @GET("createInternetRadioStation") + Call createInternetRadioStation(@QueryMap Map params, @Query("streamUrl") String streamUrl, @Query("name") String name, @Query("homepageUrl") String homepageUrl); + + @GET("updateInternetRadioStation") + Call updateInternetRadioStation(@QueryMap Map params, @Query("id") String id, @Query("streamUrl") String streamUrl, @Query("name") String name, @Query("homepageUrl") String homepageUrl); + + @GET("deleteInternetRadioStation") + Call deleteInternetRadioStation(@QueryMap Map params, @Query("id") String id); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationClient.java new file mode 100644 index 0000000..c229aa8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationClient.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.subsonic.api.mediaannotation; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class MediaAnnotationClient { + private static final String TAG = "MediaAnnotationClient"; + + private final Subsonic subsonic; + private final MediaAnnotationService mediaAnnotationService; + + public MediaAnnotationClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.mediaAnnotationService = new RetrofitClient(subsonic).getRetrofit().create(MediaAnnotationService.class); + } + + public Call star(String id, String albumId, String artistId) { + Log.d(TAG, "star()"); + return mediaAnnotationService.star(subsonic.getParams(), id, albumId, artistId); + } + + public Call unstar(String id, String albumId, String artistId) { + Log.d(TAG, "unstar()"); + return mediaAnnotationService.unstar(subsonic.getParams(), id, albumId, artistId); + } + + public Call setRating(String id, int rating) { + Log.d(TAG, "setRating()"); + return mediaAnnotationService.setRating(subsonic.getParams(), id, rating); + } + + public Call scrobble(String id, boolean submission) { + Log.d(TAG, "scrobble()"); + return mediaAnnotationService.scrobble(subsonic.getParams(), id, submission); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationService.java new file mode 100644 index 0000000..65c20e9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaannotation/MediaAnnotationService.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.subsonic.api.mediaannotation; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface MediaAnnotationService { + @GET("star") + Call star(@QueryMap Map params, @Query("id") String id, @Query("albumId") String albumId, @Query("artistId") String artistId); + + @GET("unstar") + Call unstar(@QueryMap Map params, @Query("id") String id, @Query("albumId") String albumId, @Query("artistId") String artistId); + + @GET("setRating") + Call setRating(@QueryMap Map params, @Query("id") String id, @Query("rating") int rating); + + @GET("scrobble") + Call scrobble(@QueryMap Map params, @Query("id") String id, @Query("submission") Boolean submission); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java new file mode 100644 index 0000000..f448515 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java @@ -0,0 +1,31 @@ +package com.cappielloantonio.tempo.subsonic.api.medialibraryscanning; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class MediaLibraryScanningClient { + private static final String TAG = "MediaLibraryScanningClient"; + + private final Subsonic subsonic; + private final MediaLibraryScanningService mediaLibraryScanningService; + + public MediaLibraryScanningClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.mediaLibraryScanningService = new RetrofitClient(subsonic).getRetrofit().create(MediaLibraryScanningService.class); + } + + public Call startScan() { + Log.d(TAG, "startScan()"); + return mediaLibraryScanningService.startScan(subsonic.getParams()); + } + + public Call getScanStatus() { + Log.d(TAG, "getScanStatus()"); + return mediaLibraryScanningService.getScanStatus(subsonic.getParams()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningService.java new file mode 100644 index 0000000..9d9403f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/medialibraryscanning/MediaLibraryScanningService.java @@ -0,0 +1,17 @@ +package com.cappielloantonio.tempo.subsonic.api.medialibraryscanning; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.QueryMap; + +public interface MediaLibraryScanningService { + @GET("startScan") + Call startScan(@QueryMap Map params); + + @GET("getScanStatus") + Call getScanStatus(@QueryMap Map params); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalClient.java new file mode 100644 index 0000000..742a77d --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalClient.java @@ -0,0 +1,36 @@ +package com.cappielloantonio.tempo.subsonic.api.mediaretrieval; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class MediaRetrievalClient { + private static final String TAG = "MediaRetrievalClient"; + + private final Subsonic subsonic; + private final MediaRetrievalService mediaRetrievalService; + + public MediaRetrievalClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.mediaRetrievalService = new RetrofitClient(subsonic).getRetrofit().create(MediaRetrievalService.class); + } + + public Call stream(String id, Integer maxBitRate, String format) { + Log.d(TAG, "stream()"); + return mediaRetrievalService.stream(subsonic.getParams(), id, maxBitRate, format); + } + + public Call download(String id) { + Log.d(TAG, "download()"); + return mediaRetrievalService.download(subsonic.getParams(), id); + } + + public Call getLyrics(String artist, String title) { + Log.d(TAG, "getLyrics()"); + return mediaRetrievalService.getLyrics(subsonic.getParams(), artist, title); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalService.java new file mode 100644 index 0000000..04e7a89 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/mediaretrieval/MediaRetrievalService.java @@ -0,0 +1,21 @@ +package com.cappielloantonio.tempo.subsonic.api.mediaretrieval; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface MediaRetrievalService { + @GET("stream") + Call stream(@QueryMap Map params, @Query("id") String id, @Query("maxBitRate") Integer maxBitRate, @Query("format") String format); + + @GET("download") + Call download(@QueryMap Map params, @Query("id") String id); + + @GET("getLyrics") + Call getLyrics(@QueryMap Map params, @Query("artist") String artist, @Query("title") String title); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenClient.java new file mode 100644 index 0000000..b37b03b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenClient.java @@ -0,0 +1,26 @@ +package com.cappielloantonio.tempo.subsonic.api.open; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class OpenClient { + private static final String TAG = "OpenClient"; + + private final Subsonic subsonic; + private final OpenService openService; + + public OpenClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.openService = new RetrofitClient(subsonic).getRetrofit().create(OpenService.class); + } + + public Call getLyricsBySongId(String id) { + Log.d(TAG, "getLyricsBySongId()"); + return openService.getLyricsBySongId(subsonic.getParams(), id); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenService.java new file mode 100644 index 0000000..3122a97 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/open/OpenService.java @@ -0,0 +1,15 @@ +package com.cappielloantonio.tempo.subsonic.api.open; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface OpenService { + @GET("getLyricsBySongId") + Call getLyricsBySongId(@QueryMap Map params, @Query("id") String id); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistClient.java new file mode 100644 index 0000000..98d319e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistClient.java @@ -0,0 +1,48 @@ +package com.cappielloantonio.tempo.subsonic.api.playlist; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.ArrayList; + +import retrofit2.Call; + +public class PlaylistClient { + private static final String TAG = "BrowsingClient"; + + private final Subsonic subsonic; + private final PlaylistService playlistService; + + public PlaylistClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.playlistService = new RetrofitClient(subsonic).getRetrofit().create(PlaylistService.class); + } + + public Call getPlaylists() { + Log.d(TAG, "getPlaylists()"); + return playlistService.getPlaylists(subsonic.getParams()); + } + + public Call getPlaylist(String id) { + Log.d(TAG, "getPlaylist()"); + return playlistService.getPlaylist(subsonic.getParams(), id); + } + + public Call createPlaylist(String playlistId, String name, ArrayList songsId) { + Log.d(TAG, "createPlaylist()"); + return playlistService.createPlaylist(subsonic.getParams(), playlistId, name, songsId); + } + + public Call updatePlaylist(String playlistId, String name, boolean isPublic, ArrayList songIdToAdd, ArrayList songIndexToRemove) { + Log.d(TAG, "updatePlaylist()"); + return playlistService.updatePlaylist(subsonic.getParams(), playlistId, name, isPublic, songIdToAdd, songIndexToRemove); + } + + public Call deletePlaylist(String id) { + Log.d(TAG, "deletePlaylist()"); + return playlistService.deletePlaylist(subsonic.getParams(), id); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistService.java new file mode 100644 index 0000000..51f8d48 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/playlist/PlaylistService.java @@ -0,0 +1,28 @@ +package com.cappielloantonio.tempo.subsonic.api.playlist; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.ArrayList; +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface PlaylistService { + @GET("getPlaylists") + Call getPlaylists(@QueryMap Map params); + + @GET("getPlaylist") + Call getPlaylist(@QueryMap Map params, @Query("id") String id); + + @GET("createPlaylist") + Call createPlaylist(@QueryMap Map params, @Query("playlistId") String playlistId, @Query("name") String name, @Query("songId") ArrayList songsId); + + @GET("updatePlaylist") + Call updatePlaylist(@QueryMap Map params, @Query("playlistId") String playlistId, @Query("name") String name, @Query("public") boolean isPublic, @Query("songIdToAdd") ArrayList songIdToAdd, @Query("songIndexToRemove") ArrayList songIndexToRemove); + + @GET("deletePlaylist") + Call deletePlaylist(@QueryMap Map params, @Query("id") String id); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java new file mode 100644 index 0000000..ca7fab8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java @@ -0,0 +1,56 @@ +package com.cappielloantonio.tempo.subsonic.api.podcast; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class PodcastClient { + private static final String TAG = "PodcastClient"; + + private final Subsonic subsonic; + private final PodcastService podcastService; + + public PodcastClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.podcastService = new RetrofitClient(subsonic).getRetrofit().create(PodcastService.class); + } + + public Call getPodcasts(boolean includeEpisodes, String channelId) { + Log.d(TAG, "getPodcasts()"); + return podcastService.getPodcasts(subsonic.getParams(), includeEpisodes, channelId); + } + + public Call getNewestPodcasts(int count) { + Log.d(TAG, "getNewestPodcasts()"); + return podcastService.getNewestPodcasts(subsonic.getParams(), count); + } + + public Call refreshPodcasts() { + Log.d(TAG, "refreshPodcasts()"); + return podcastService.refreshPodcasts(subsonic.getParams()); + } + + public Call createPodcastChannel(String url) { + Log.d(TAG, "createPodcastChannel()"); + return podcastService.createPodcastChannel(subsonic.getParams(), url); + } + + public Call deletePodcastChannel(String channelId) { + Log.d(TAG, "deletePodcastChannel()"); + return podcastService.deletePodcastChannel(subsonic.getParams(), channelId); + } + + public Call deletePodcastEpisode(String episodeId) { + Log.d(TAG, "deletePodcastEpisode()"); + return podcastService.deletePodcastEpisode(subsonic.getParams(), episodeId); + } + + public Call downloadPodcastEpisode(String episodeId) { + Log.d(TAG, "downloadPodcastEpisode()"); + return podcastService.downloadPodcastEpisode(subsonic.getParams(), episodeId); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java new file mode 100644 index 0000000..be819f8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java @@ -0,0 +1,33 @@ +package com.cappielloantonio.tempo.subsonic.api.podcast; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface PodcastService { + @GET("getPodcasts") + Call getPodcasts(@QueryMap Map params, @Query("includeEpisodes") boolean includeEpisodes, @Query("id") String id); + + @GET("getNewestPodcasts") + Call getNewestPodcasts(@QueryMap Map params, @Query("count") int count); + + @GET("refreshPodcasts") + Call refreshPodcasts(@QueryMap Map params); + + @GET("createPodcastChannel") + Call createPodcastChannel(@QueryMap Map params, @Query("url") String url); + + @GET("deletePodcastChannel") + Call deletePodcastChannel(@QueryMap Map params, @Query("id") String id); + + @GET("deletePodcastEpisode") + Call deletePodcastEpisode(@QueryMap Map params, @Query("id") String id); + + @GET("downloadPodcastEpisode") + Call downloadPodcastEpisode(@QueryMap Map params, @Query("id") String id); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingClient.java new file mode 100644 index 0000000..f494104 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingClient.java @@ -0,0 +1,31 @@ +package com.cappielloantonio.tempo.subsonic.api.searching; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class SearchingClient { + private static final String TAG = "BrowsingClient"; + + private final Subsonic subsonic; + private final SearchingService searchingService; + + public SearchingClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.searchingService = new RetrofitClient(subsonic).getRetrofit().create(SearchingService.class); + } + + public Call search2(String query, int songCount, int albumCount, int artistCount) { + Log.d(TAG, "search2()"); + return searchingService.search2(subsonic.getParams(), query, songCount, albumCount, artistCount); + } + + public Call search3(String query, int songCount, int albumCount, int artistCount) { + Log.d(TAG, "search3()"); + return searchingService.search3(subsonic.getParams(), query, songCount, albumCount, artistCount); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingService.java new file mode 100644 index 0000000..d8dc149 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/searching/SearchingService.java @@ -0,0 +1,18 @@ +package com.cappielloantonio.tempo.subsonic.api.searching; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface SearchingService { + @GET("search2") + Call search2(@QueryMap Map params, @Query("query") String query, @Query("songCount") int songCount, @Query("albumCount") int albumCount, @Query("artistCount") int artistCount); + + @GET("search3") + Call search3(@QueryMap Map params, @Query("query") String query, @Query("songCount") int songCount, @Query("albumCount") int albumCount, @Query("artistCount") int artistCount); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingClient.java new file mode 100644 index 0000000..a406036 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingClient.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.subsonic.api.sharing; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import retrofit2.Call; + +public class SharingClient { + private static final String TAG = "BrowsingClient"; + + private final Subsonic subsonic; + private final SharingService sharingService; + + public SharingClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.sharingService = new RetrofitClient(subsonic).getRetrofit().create(SharingService.class); + } + + public Call getShares() { + Log.d(TAG, "getShares()"); + return sharingService.getShares(subsonic.getParams()); + } + + public Call createShare(String id, String description, Long expires) { + Log.d(TAG, "createShare()"); + return sharingService.createShare(subsonic.getParams(), id, description, expires); + } + + public Call updateShare(String id, String description, Long expires) { + Log.d(TAG, "updateShare()"); + return sharingService.updateShare(subsonic.getParams(), id, description, expires); + } + + public Call deleteShare(String id) { + Log.d(TAG, "deleteShare()"); + return sharingService.deleteShare(subsonic.getParams(), id); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingService.java new file mode 100644 index 0000000..0a18f33 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/sharing/SharingService.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.subsonic.api.sharing; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + +public interface SharingService { + @GET("getShares") + Call getShares(@QueryMap Map params); + + @GET("createShare") + Call createShare(@QueryMap Map params, @Query("id") String id, @Query("description") String description, @Query("expires") Long expires); + + @GET("updateShare") + Call updateShare(@QueryMap Map params, @Query("id") String id, @Query("description") String description, @Query("expires") Long expires); + + @GET("deleteShare") + Call deleteShare(@QueryMap Map params, @Query("id") String id); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java new file mode 100644 index 0000000..c5227da --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java @@ -0,0 +1,47 @@ +package com.cappielloantonio.tempo.subsonic.api.system; + +import android.util.Log; + +import com.cappielloantonio.tempo.subsonic.RetrofitClient; +import com.cappielloantonio.tempo.subsonic.Subsonic; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.util.Preferences; + +import java.util.concurrent.TimeUnit; + +import retrofit2.Call; + +public class SystemClient { + private static final String TAG = "SystemClient"; + + private final Subsonic subsonic; + private final SystemService systemService; + + public SystemClient(Subsonic subsonic) { + this.subsonic = subsonic; + this.systemService = new RetrofitClient(subsonic).getRetrofit().create(SystemService.class); + } + + public Call ping() { + Log.d(TAG, "ping()"); + Call pingCall = systemService.ping(subsonic.getParams()); + if (Preferences.isInUseServerAddressLocal()) { + pingCall.timeout() + .timeout(1, TimeUnit.SECONDS); + } else { + pingCall.timeout() + .timeout(3, TimeUnit.SECONDS); + } + return pingCall; + } + + public Call getLicense() { + Log.d(TAG, "getLicense()"); + return systemService.getLicense(subsonic.getParams()); + } + + public Call getOpenSubsonicExtensions() { + Log.d(TAG, "getOpenSubsonicExtensions()"); + return systemService.getOpenSubsonicExtensions(subsonic.getParams()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java new file mode 100644 index 0000000..bc0f4c9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java @@ -0,0 +1,20 @@ +package com.cappielloantonio.tempo.subsonic.api.system; + +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; + +import java.util.Map; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.QueryMap; + +public interface SystemService { + @GET("ping") + Call ping(@QueryMap Map params); + + @GET("getLicense") + Call getLicense(@QueryMap Map params); + + @GET("getOpenSubsonicExtensions") + Call getOpenSubsonicExtensions(@QueryMap Map params); +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/base/ApiResponse.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/base/ApiResponse.kt new file mode 100644 index 0000000..7874520 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/base/ApiResponse.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.base + +import androidx.annotation.Keep +import com.cappielloantonio.tempo.subsonic.models.SubsonicResponse +import com.google.gson.annotations.SerializedName + +@Keep +class ApiResponse { + @SerializedName("subsonic-response") + lateinit var subsonicResponse: SubsonicResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/base/Version.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/base/Version.java new file mode 100644 index 0000000..04659cd --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/base/Version.java @@ -0,0 +1,59 @@ +package com.cappielloantonio.tempo.subsonic.base; + +import androidx.annotation.NonNull; + +public class Version implements Comparable { + + private static final String VERSION_PATTERN = "\\d+(\\.\\d+)*"; + private final String versionString; + + public static Version of(String versionString) { + return new Version(versionString); + } + + private Version(String versionString) { + if (versionString == null || !versionString.matches(VERSION_PATTERN)) { + throw new IllegalArgumentException("Invalid version format"); + } + this.versionString = versionString; + } + + public String getVersionString() { + return versionString; + } + + public boolean isLowerThan(Version version) { + return compareTo(version) < 0; + } + + @Override + public int compareTo(Version that) { + if (that == null) { + return 1; + } + + String[] thisParts = this.getVersionString().split("\\."); + String[] thatParts = that.getVersionString().split("\\."); + + int length = Math.max(thisParts.length, thatParts.length); + + for (int i = 0; i < length; i++) { + int thisPart = i < thisParts.length ? Integer.parseInt(thisParts[i]) : 0; + int thatPart = i < thatParts.length ? Integer.parseInt(thatParts[i]) : 0; + + if (thisPart < thatPart) { + return -1; + } + if (thisPart > thatPart) { + return 1; + } + } + return 0; + } + + @NonNull + @Override + public String toString() { + return versionString; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumID3.kt new file mode 100644 index 0000000..95c67da --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumID3.kt @@ -0,0 +1,39 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +open class AlbumID3( + var id: String? = null, + var name: String? = null, + var artist: String? = null, + var artistId: String? = null, + @SerializedName("coverArt") + var coverArtId: String? = null, + var songCount: Int? = 0, + var duration: Int? = 0, + var playCount: Long? = 0, + var created: Date? = null, + var starred: Date? = null, + var year: Int = 0, + var genre: String? = null, + var played: Date? = Date(0), + var userRating: Int? = 0, + var recordLabels: List? = null, + var musicBrainzId: String? = null, + var genres: List? = null, + var artists: List? = null, + var displayArtist: String? = null, + var releaseTypes: List? = null, + var moods: List? = null, + var sortName: String? = null, + var originalReleaseDate: ItemDate? = null, + var releaseDate: ItemDate? = null, + var isCompilation: Boolean? = null, + var discTitles: List? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumInfo.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumInfo.kt new file mode 100644 index 0000000..79c32cd --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumInfo.kt @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class AlbumInfo { + var notes: String? = null + var musicBrainzId: String? = null + var lastFmUrl: String? = null + var smallImageUrl: String? = null + var mediumImageUrl: String? = null + var largeImageUrl: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList.kt new file mode 100644 index 0000000..f167f0e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class AlbumList { + var albums: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList2.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList2.kt new file mode 100644 index 0000000..a4d68ed --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumList2.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class AlbumList2 { + @SerializedName("album") + var albums: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumWithSongsID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumWithSongsID3.kt new file mode 100644 index 0000000..8498e77 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AlbumWithSongsID3.kt @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class AlbumWithSongsID3( + @SerializedName("song") + var songs: List? = null, +) : AlbumID3(), Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Artist.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Artist.kt new file mode 100644 index 0000000..22aa527 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Artist.kt @@ -0,0 +1,16 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +class Artist( + var id: String? = null, + var name: String? = null, + var starred: Date? = null, + var userRating: Int? = null, + var averageRating: Double? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistID3.kt new file mode 100644 index 0000000..ccf4ee7 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistID3.kt @@ -0,0 +1,18 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +open class ArtistID3( + var id: String? = null, + var name: String? = null, + @SerializedName("coverArt") + var coverArtId: String? = null, + var albumCount: Int = 0, + var starred: Date? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo.kt new file mode 100644 index 0000000..21f7a9f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class ArtistInfo : ArtistInfoBase() { + var similarArtists: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo2.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo2.kt new file mode 100644 index 0000000..3aa2da5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfo2.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import java.util.* + +@Keep +class ArtistInfo2 : ArtistInfoBase() { + @SerializedName("similarArtist") + var similarArtists: List? = emptyList() +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfoBase.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfoBase.kt new file mode 100644 index 0000000..46b8f89 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistInfoBase.kt @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +open class ArtistInfoBase { + var biography: String? = null + var musicBrainzId: String? = null + var lastFmUrl: String? = null + var smallImageUrl: String? = null + var mediumImageUrl: String? = null + var largeImageUrl: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistWithAlbumsID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistWithAlbumsID3.kt new file mode 100644 index 0000000..2e21e11 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistWithAlbumsID3.kt @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class ArtistWithAlbumsID3( + @SerializedName("album") + var albums: List? = null, +) : ArtistID3(), Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistsID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistsID3.kt new file mode 100644 index 0000000..341ab28 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ArtistsID3.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class ArtistsID3 { + @SerializedName("index") + var indices: List? = null + var ignoredArticles: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AudioTrack.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AudioTrack.kt new file mode 100644 index 0000000..536e3d4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/AudioTrack.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class AudioTrack { + var id: String? = null + var name: String? = null + var languageCode: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmark.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmark.kt new file mode 100644 index 0000000..cd9ef41 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmark.kt @@ -0,0 +1,14 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import java.util.* + +@Keep +class Bookmark { + var entry: Child? = null + var position: Long = 0 + var username: String? = null + var comment: String? = null + var created: Date? = null + var changed: Date? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmarks.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmarks.kt new file mode 100644 index 0000000..41c6874 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Bookmarks.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Bookmarks { + var bookmarks: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Captions.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Captions.kt new file mode 100644 index 0000000..ef0ecba --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Captions.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Captions { + var id: String? = null + var name: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessage.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessage.kt new file mode 100644 index 0000000..873dde3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessage.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class ChatMessage { + var username: String? = null + var time: Long = 0 + var message: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessages.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessages.kt new file mode 100644 index 0000000..42002b1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ChatMessages.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class ChatMessages { + var chatMessages: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Child.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Child.kt new file mode 100644 index 0000000..15057cf --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Child.kt @@ -0,0 +1,88 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import androidx.room.ColumnInfo +import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize +import java.util.* + +@Keep +@Parcelize +open class Child( + @PrimaryKey + @ColumnInfo(name = "id") + open val id: String, + @ColumnInfo(name = "parent_id") + @SerializedName("parent") + var parentId: String? = null, + @ColumnInfo(name = "is_dir") + var isDir: Boolean = false, + @ColumnInfo + var title: String? = null, + @ColumnInfo + var album: String? = null, + @ColumnInfo + var artist: String? = null, + @ColumnInfo + var track: Int? = null, + @ColumnInfo + var year: Int? = null, + @ColumnInfo + @SerializedName("genre") + var genre: String? = null, + @ColumnInfo(name = "cover_art_id") + @SerializedName("coverArt") + var coverArtId: String? = null, + @ColumnInfo + var size: Long? = null, + @ColumnInfo(name = "content_type") + var contentType: String? = null, + @ColumnInfo + var suffix: String? = null, + @ColumnInfo("transcoding_content_type") + var transcodedContentType: String? = null, + @ColumnInfo(name = "transcoded_suffix") + var transcodedSuffix: String? = null, + @ColumnInfo + var duration: Int? = null, + @ColumnInfo("bitrate") + @SerializedName("bitRate") + var bitrate: Int? = null, + @ColumnInfo("sampling_rate") + @SerializedName("samplingRate") + var samplingRate: Int? = null, + @ColumnInfo("bit_depth") + @SerializedName("bitDepth") + var bitDepth: Int? = null, + @ColumnInfo + var path: String? = null, + @ColumnInfo(name = "is_video") + @SerializedName("isVideo") + var isVideo: Boolean = false, + @ColumnInfo(name = "user_rating") + var userRating: Int? = null, + @ColumnInfo(name = "average_rating") + var averageRating: Double? = null, + @ColumnInfo(name = "play_count") + var playCount: Long? = null, + @ColumnInfo(name = "disc_number") + var discNumber: Int? = null, + @ColumnInfo + var created: Date? = null, + @ColumnInfo + var starred: Date? = null, + @ColumnInfo(name = "album_id") + var albumId: String? = null, + @ColumnInfo(name = "artist_id") + var artistId: String? = null, + @ColumnInfo + var type: String? = null, + @ColumnInfo(name = "bookmark_position") + var bookmarkPosition: Long? = null, + @ColumnInfo(name = "original_width") + var originalWidth: Int? = null, + @ColumnInfo(name = "original_height") + var originalHeight: Int? = null +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Directory.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Directory.kt new file mode 100644 index 0000000..f189589 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Directory.kt @@ -0,0 +1,22 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +class Directory( + @SerializedName("child") + var children: List? = null, + var id: String? = null, + @SerializedName("parent") + var parentId: String? = null, + var name: String? = null, + var starred: Date? = null, + var userRating: Int? = null, + var averageRating: Double? = null, + var playCount: Long? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/DiscTitle.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/DiscTitle.kt new file mode 100644 index 0000000..32caa8c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/DiscTitle.kt @@ -0,0 +1,12 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +open class DiscTitle( + var disc: Int? = null, + var title: String? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Error.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Error.kt new file mode 100644 index 0000000..f50b8c4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Error.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Error { + var code: Int? = null + var message: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ErrorCode.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ErrorCode.kt new file mode 100644 index 0000000..7dbacf3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ErrorCode.kt @@ -0,0 +1,18 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class ErrorCode(val value: Int) { + companion object { + var GENERIC_ERROR = 0 + var REQUIRED_PARAMETER_MISSING = 10 + var INCOMPATIBLE_VERSION_CLIENT = 20 + var INCOMPATIBLE_VERSION_SERVER = 30 + var WRONG_USERNAME_OR_PASSWORD = 40 + var TOKEN_AUTHENTICATION_NOT_SUPPORTED = 41 + var USER_NOT_AUTHORIZED = 50 + var TRIAL_PERIOD_OVER = 60 + var DATA_NOT_FOUND = 70 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genre.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genre.kt new file mode 100644 index 0000000..1db88c4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genre.kt @@ -0,0 +1,15 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class Genre( + @SerializedName("value") + var genre: String? = null, + var songCount: Int = 0, + var albumCount: Int = 0, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genres.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genres.kt new file mode 100644 index 0000000..5a0ff7f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Genres.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Genres { + @SerializedName("genre") + var genres: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Index.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Index.kt new file mode 100644 index 0000000..1a25b2d --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Index.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Index { + @SerializedName("artist") + var artists: List? = null + var name: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/IndexID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/IndexID3.kt new file mode 100644 index 0000000..9879191 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/IndexID3.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class IndexID3 { + @SerializedName("artist") + var artists: List? = null + var name: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Indexes.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Indexes.kt new file mode 100644 index 0000000..fa3d8ef --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Indexes.kt @@ -0,0 +1,14 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Indexes { + var shortcuts: List? = null + @SerializedName("index") + var indices: List? = null + var children: List? = null + var lastModified: Long = 0 + var ignoredArticles: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStation.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStation.kt new file mode 100644 index 0000000..07f00c5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStation.kt @@ -0,0 +1,14 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class InternetRadioStation( + var id: String? = null, + var name: String? = null, + var streamUrl: String? = null, + var homePageUrl: String? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStations.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStations.kt new file mode 100644 index 0000000..16577f6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/InternetRadioStations.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class InternetRadioStations { + @SerializedName("internetRadioStation") + var internetRadioStations: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemDate.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemDate.kt new file mode 100644 index 0000000..385b7fd --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemDate.kt @@ -0,0 +1,33 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Locale + +@Keep +@Parcelize +open class ItemDate( + var year: Int? = null, + var month: Int? = null, + var day: Int? = null, +) : Parcelable { + fun getFormattedDate(): String? { + if (year == null && month == null && day == null) return null + + val calendar = Calendar.getInstance() + val dateFormat = if (month == null && day == null) { + SimpleDateFormat("yyyy", Locale.getDefault()) + } else if (day == null) { + SimpleDateFormat("MMMM yyyy", Locale.getDefault()) + } else { + SimpleDateFormat("MMMM dd, yyyy", Locale.getDefault()) + } + + calendar.set(year ?: 0, month ?: 1, day ?: 1) + + return dateFormat.format(calendar.time) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemGenre.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemGenre.kt new file mode 100644 index 0000000..971809f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ItemGenre.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +open class ItemGenre( + var name: String? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxPlaylist.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxPlaylist.kt new file mode 100644 index 0000000..76efa3d --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxPlaylist.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class JukeboxPlaylist : JukeboxStatus() { + var entries: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxStatus.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxStatus.kt new file mode 100644 index 0000000..9efb4dc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/JukeboxStatus.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +open class JukeboxStatus { + var currentIndex = 0 + var isPlaying = false + var gain = 0f + var position: Int? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/License.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/License.kt new file mode 100644 index 0000000..4868ceb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/License.kt @@ -0,0 +1,12 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import java.util.* + +@Keep +class License { + var isValid = false + var email: String? = null + var licenseExpires: Date? = null + var trialExpires: Date? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Line.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Line.kt new file mode 100644 index 0000000..1809091 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Line.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Line { + var start: Int? = null + lateinit var value: String +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Lyrics.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Lyrics.kt new file mode 100644 index 0000000..c01d4b9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Lyrics.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Lyrics { + var value: String? = null + var artist: String? = null + var title: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/LyricsList.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/LyricsList.kt new file mode 100644 index 0000000..9c3b65e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/LyricsList.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class LyricsList { + var structuredLyrics: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MediaType.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MediaType.kt new file mode 100644 index 0000000..0d950fb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MediaType.kt @@ -0,0 +1,15 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class MediaType { + var value: String? = null + + companion object { + var MUSIC = "music" + var PODCAST = "podcast" + var AUDIOBOOK = "audiobook" + var VIDEO = "video" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolder.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolder.kt new file mode 100644 index 0000000..e31bf7c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolder.kt @@ -0,0 +1,12 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class MusicFolder( + var id: String? = null, + var name: String? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolders.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolders.kt new file mode 100644 index 0000000..3d2d123 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/MusicFolders.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class MusicFolders { + @SerializedName("musicFolder") + var musicFolders: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NewestPodcasts.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NewestPodcasts.kt new file mode 100644 index 0000000..9850220 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NewestPodcasts.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class NewestPodcasts { + @SerializedName("episode") + var episodes: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlaying.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlaying.kt new file mode 100644 index 0000000..532566c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlaying.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class NowPlaying { + var entries: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlayingEntry.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlayingEntry.kt new file mode 100644 index 0000000..bd69808 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/NowPlayingEntry.kt @@ -0,0 +1,16 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class NowPlayingEntry( + @SerializedName("_id") + override val id: String, + var username: String? = null, + var minutesAgo: Int = 0, + var playerId: Int = 0, + var playerName: String? = null, +) : Child(id) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/OpenSubsonicExtension.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/OpenSubsonicExtension.kt new file mode 100644 index 0000000..dd170c8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/OpenSubsonicExtension.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class OpenSubsonicExtension { + var name: String? = null + var versions: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlayQueue.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlayQueue.kt new file mode 100644 index 0000000..1143fa8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlayQueue.kt @@ -0,0 +1,16 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import java.util.* + +@Keep +class PlayQueue { + @SerializedName("entry") + var entries: List? = null + var current: String? = null + var position: Long? = null + var username: String? = null + var changed: Date? = null + var changedBy: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlist.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlist.kt new file mode 100644 index 0000000..926c239 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlist.kt @@ -0,0 +1,72 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Ignore +import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +@Entity(tableName = "playlist") +open class Playlist( + @PrimaryKey + @ColumnInfo(name = "id") + open var id: String, + @ColumnInfo(name = "name") + var name: String? = null, + @ColumnInfo(name = "duration") + var duration: Long = 0, + @ColumnInfo(name = "coverArt") + var coverArtId: String? = null, +) : Parcelable { + @Ignore + @IgnoredOnParcel + var comment: String? = null + @Ignore + @IgnoredOnParcel + var owner: String? = null + @Ignore + @IgnoredOnParcel + @SerializedName("public") + var isUniversal: Boolean? = null + @Ignore + @IgnoredOnParcel + var songCount: Int = 0 + @Ignore + @IgnoredOnParcel + var created: Date? = null + @Ignore + @IgnoredOnParcel + var changed: Date? = null + @Ignore + @IgnoredOnParcel + var allowedUsers: List? = null + @Ignore + constructor( + id: String, + name: String?, + comment: String?, + owner: String?, + isUniversal: Boolean?, + songCount: Int, + duration: Long, + created: Date?, + changed: Date?, + coverArtId: String?, + allowedUsers: List?, + ) : this(id, name, duration, coverArtId) { + this.comment = comment + this.owner = owner + this.isUniversal = isUniversal + this.songCount = songCount + this.created = created + this.changed = changed + this.allowedUsers = allowedUsers + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlaylistWithSongs.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlaylistWithSongs.kt new file mode 100644 index 0000000..350dcbd --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PlaylistWithSongs.kt @@ -0,0 +1,15 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class PlaylistWithSongs( + @SerializedName("_id") + override var id: String, + @SerializedName("entry") + var entries: List? = null, +) : Playlist(id), Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlists.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlists.kt new file mode 100644 index 0000000..34079c7 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Playlists.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Playlists( + @SerializedName("playlist") + var playlists: List? = null, +) \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastChannel.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastChannel.kt new file mode 100644 index 0000000..b4d124f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastChannel.kt @@ -0,0 +1,23 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class PodcastChannel( + @SerializedName("episode") + var episodes: List? = null, + var id: String? = null, + var url: String? = null, + var title: String? = null, + var description: String? = null, + @SerializedName("coverArt") + var coverArtId: String? = null, + var originalImageUrl: String? = null, + var status: String? = null, + var errorMessage: String? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastEpisode.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastEpisode.kt new file mode 100644 index 0000000..fc3fab2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastEpisode.kt @@ -0,0 +1,40 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize +import java.util.* + +@Keep +@Parcelize +class PodcastEpisode( + var id: String? = null, + @SerializedName("parent") + var parentId: String? = null, + var isDir: Boolean = false, + var title: String? = null, + var album: String? = null, + var artist: String? = null, + var year: Int? = null, + var genre: String? = null, + @SerializedName("coverArt") + var coverArtId: String? = null, + var size: Long? = null, + var contentType: String? = null, + var suffix: String? = null, + var duration: Int? = null, + @SerializedName("bitRate") + var bitrate: Int? = null, + var path: String? = null, + var isVideo: Boolean = false, + var created: Date? = null, + var artistId: String? = null, + var type: String? = null, + var streamId: String? = null, + var channelId: String? = null, + var description: String? = null, + var status: String? = null, + var publishDate: Date? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastStatus.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastStatus.kt new file mode 100644 index 0000000..f0f7c66 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/PodcastStatus.kt @@ -0,0 +1,17 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class PodcastStatus { + var value: String? = null + + companion object { + var NEW = "new" + var DOWNLOADING = "downloading" + var COMPLETED = "completed" + var ERROR = "error" + var DELETED = "deleted" + var SKIPPED = "skipped" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Podcasts.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Podcasts.kt new file mode 100644 index 0000000..d09f9fd --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Podcasts.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Podcasts { + @SerializedName("channel") + var channels: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/RecordLabel.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/RecordLabel.kt new file mode 100644 index 0000000..52531d9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/RecordLabel.kt @@ -0,0 +1,12 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +open class RecordLabel( + var name: String? = null, +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ResponseStatus.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ResponseStatus.kt new file mode 100644 index 0000000..9e6b36c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ResponseStatus.kt @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class ResponseStatus(val value: String) { + companion object { + @JvmField + var OK = "ok" + @JvmField + var FAILED = "failed" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ScanStatus.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ScanStatus.kt new file mode 100644 index 0000000..c9735f0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/ScanStatus.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class ScanStatus { + var isScanning = false + var count: Long? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult.kt new file mode 100644 index 0000000..f7b772a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class SearchResult { + var matches: List? = null + var offset = 0 + var totalHits = 0 +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult2.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult2.kt new file mode 100644 index 0000000..66a9560 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult2.kt @@ -0,0 +1,14 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class SearchResult2 { + @SerializedName("artist") + var artists: List? = null + @SerializedName("album") + var albums: List? = null + @SerializedName("song") + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult3.kt new file mode 100644 index 0000000..4a1ae32 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SearchResult3.kt @@ -0,0 +1,14 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class SearchResult3 { + @SerializedName("artist") + var artists: List? = null + @SerializedName("album") + var albums: List? = null + @SerializedName("song") + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Share.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Share.kt new file mode 100644 index 0000000..986e4b5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Share.kt @@ -0,0 +1,23 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize +import java.util.Date + +@Keep +@Parcelize +data class Share( + @SerializedName("entry") + var entries: List? = null, + var id: String? = null, + var url: String? = null, + var description: String? = null, + var username: String? = null, + var created: Date? = null, + var expires: Date? = null, + var lastVisited: Date? = null, + var visitCount: Int = 0 +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Shares.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Shares.kt new file mode 100644 index 0000000..4c0f30e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Shares.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Shares { + @SerializedName("share") + var shares: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarArtistID3.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarArtistID3.kt new file mode 100644 index 0000000..7275ea0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarArtistID3.kt @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.subsonic.models + +import android.os.Parcelable +import androidx.annotation.Keep +import kotlinx.parcelize.Parcelize + +@Keep +@Parcelize +class SimilarArtistID3 : ArtistID3(), Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs.kt new file mode 100644 index 0000000..d9bb205 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class SimilarSongs { + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs2.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs2.kt new file mode 100644 index 0000000..ccce209 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SimilarSongs2.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class SimilarSongs2 { + @SerializedName("song") + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Songs.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Songs.kt new file mode 100644 index 0000000..43744f5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Songs.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Songs { + @SerializedName("song") + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred.kt new file mode 100644 index 0000000..2900786 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Starred { + var artists: List? = null + var albums: List? = null + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred2.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred2.kt new file mode 100644 index 0000000..0a94b03 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Starred2.kt @@ -0,0 +1,14 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class Starred2 { + @SerializedName("artist") + var artists: List? = null + @SerializedName("album") + var albums: List? = null + @SerializedName("song") + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/StructuredLyrics.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/StructuredLyrics.kt new file mode 100644 index 0000000..d77b2e0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/StructuredLyrics.kt @@ -0,0 +1,13 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class StructuredLyrics { + var displayArtist: String? = null + var displayTitle: String? = null + var lang: String? = null + var offset: Int = 0 + var synced: Boolean = false + var line: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SubsonicResponse.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SubsonicResponse.kt new file mode 100644 index 0000000..f886f55 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/SubsonicResponse.kt @@ -0,0 +1,57 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class SubsonicResponse { + var error: Error? = null + var scanStatus: ScanStatus? = null + var topSongs: TopSongs? = null + var similarSongs2: SimilarSongs2? = null + var similarSongs: SimilarSongs? = null + var artistInfo2: ArtistInfo2? = null + var artistInfo: ArtistInfo? = null + var albumInfo: AlbumInfo? = null + var starred2: Starred2? = null + var starred: Starred? = null + var shares: Shares? = null + var playQueue: PlayQueue? = null + var bookmarks: Bookmarks? = null + var internetRadioStations: InternetRadioStations? = null + var newestPodcasts: NewestPodcasts? = null + var podcasts: Podcasts? = null + var lyrics: Lyrics? = null + var songsByGenre: Songs? = null + var randomSongs: Songs? = null + var albumList2: AlbumList2? = null + var albumList: AlbumList? = null + var chatMessages: ChatMessages? = null + var user: User? = null + var users: Users? = null + var license: License? = null + var jukeboxPlaylist: JukeboxPlaylist? = null + var jukeboxStatus: JukeboxStatus? = null + var playlist: PlaylistWithSongs? = null + var playlists: Playlists? = null + var searchResult3: SearchResult3? = null + var searchResult2: SearchResult2? = null + var searchResult: SearchResult? = null + var nowPlaying: NowPlaying? = null + var videoInfo: VideoInfo? = null + var videos: Videos? = null + var song: Child? = null + var album: AlbumWithSongsID3? = null + var artist: ArtistWithAlbumsID3? = null + var artists: ArtistsID3? = null + var genres: Genres? = null + var directory: Directory? = null + var indexes: Indexes? = null + var musicFolders: MusicFolders? = null + var status: String? = null + var version: String? = null + var type: String? = null + var serverVersion: String? = null + var openSubsonic: Boolean? = null + var openSubsonicExtensions: List? = null + var lyricsList: LyricsList? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/TopSongs.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/TopSongs.kt new file mode 100644 index 0000000..076c7e4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/TopSongs.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +class TopSongs { + @SerializedName("song") + var songs: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/User.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/User.kt new file mode 100644 index 0000000..261c0e3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/User.kt @@ -0,0 +1,26 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep +import java.util.* + +@Keep +class User { + var folders: List? = null + var username: String? = null + var email: String? = null + var isScrobblingEnabled = false + var maxBitRate: Int? = null + var isAdminRole = false + var isSettingsRole = false + var isDownloadRole = false + var isUploadRole = false + var isPlaylistRole = false + var isCoverArtRole = false + var isCommentRole = false + var isPodcastRole = false + var isStreamRole = false + var isJukeboxRole = false + var isShareRole = false + var isVideoConversionRole = false + var avatarLastChanged: Date? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Users.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Users.kt new file mode 100644 index 0000000..c6de9fc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Users.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Users { + var users: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoConversion.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoConversion.kt new file mode 100644 index 0000000..4e106fa --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoConversion.kt @@ -0,0 +1,10 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class VideoConversion { + var id: String? = null + var bitRate: Int? = null + var audioTrackId: Int? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoInfo.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoInfo.kt new file mode 100644 index 0000000..5ec9e87 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/VideoInfo.kt @@ -0,0 +1,11 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class VideoInfo { + var captions: List? = null + var audioTracks: List? = null + var conversions: List? = null + var id: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Videos.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Videos.kt new file mode 100644 index 0000000..e9b772c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/models/Videos.kt @@ -0,0 +1,8 @@ +package com.cappielloantonio.tempo.subsonic.models + +import androidx.annotation.Keep + +@Keep +class Videos { + var videos: List? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/CacheUtil.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/CacheUtil.java new file mode 100644 index 0000000..69dc9dd --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/CacheUtil.java @@ -0,0 +1,73 @@ +package com.cappielloantonio.tempo.subsonic.utils; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; + +import com.cappielloantonio.tempo.App; + +import okhttp3.Interceptor; +import okhttp3.Request; + +public class CacheUtil { + private int maxAge; // 60 seconds + private int maxStale; // 60 * 60 * 24 * 30 = 30 days (60 seconds * 60 minutes * 24 hours * 30 days) + + public CacheUtil(int maxAge, int maxStale) { + this.maxAge = maxAge; + this.maxStale = maxStale; + } + + public Interceptor onlineInterceptor = chain -> { + okhttp3.Response response = chain.proceed(chain.request()); + return response.newBuilder() + .header("Cache-Control", "public, max-age=" + maxAge) + .removeHeader("Pragma") + .build(); + }; + + public Interceptor offlineInterceptor = chain -> { + Request request = chain.request(); + if (!isConnected()) { + request = request.newBuilder() + .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale) + .removeHeader("Pragma") + .build(); + } + return chain.proceed(request); + }; + + + private boolean isConnected() { + ConnectivityManager connectivityManager = (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + if (connectivityManager == null) { + return false; + } + + Network network = connectivityManager.getActiveNetwork(); + if (network == null) { + return false; + } + + NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network); + if (capabilities == null) { + return false; + } + + boolean hasInternet = capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); + if (!hasInternet) { + return false; + } + + boolean hasAppropriateTransport = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) + || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET); + if (!hasAppropriateTransport) { + return false; + } + + return true; + } + +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/EmptyDateTypeAdapter.kt b/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/EmptyDateTypeAdapter.kt new file mode 100644 index 0000000..bcdd5ee --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/EmptyDateTypeAdapter.kt @@ -0,0 +1,42 @@ +package com.cappielloantonio.tempo.subsonic.utils + +import com.google.gson.JsonDeserializationContext +import com.google.gson.JsonDeserializer +import com.google.gson.JsonElement +import com.google.gson.JsonParseException +import java.lang.reflect.Type +import java.text.ParseException +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale +import java.util.TimeZone + +// This adapter handles Date objects, returning null if the JSON string is empty or unparsable. +class EmptyDateTypeAdapter : JsonDeserializer { + + // Define the date formats expected from the Subsonic server. + private val dateFormats: List = listOf( + SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US).apply { timeZone = TimeZone.getTimeZone("UTC") }, + SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US).apply { timeZone = TimeZone.getTimeZone("UTC") }, + SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US).apply { timeZone = TimeZone.getTimeZone("UTC") } + ) + + @Throws(JsonParseException::class) + override fun deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): Date? { + val jsonString = json.asString.trim() + + if (jsonString.isEmpty()) { + return null + } + + for (format in dateFormats) { + try { + return format.parse(jsonString) + } catch (e: ParseException) { + // Ignore and try the next format + } + } + + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/StringUtil.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/StringUtil.java new file mode 100644 index 0000000..d62aecf --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/utils/StringUtil.java @@ -0,0 +1,28 @@ +package com.cappielloantonio.tempo.subsonic.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class StringUtil { + public static String tokenize(String s) { + final String MD5 = "MD5"; + try { + MessageDigest digest = java.security.MessageDigest.getInstance(MD5); + digest.update(s.getBytes()); + byte[] messageDigest = digest.digest(); + + StringBuilder hexString = new StringBuilder(); + for (byte aMessageDigest : messageDigest) { + StringBuilder h = new StringBuilder(Integer.toHexString(0xFF & aMessageDigest)); + while (h.length() < 2) { + h.insert(0, "0"); + } + hexString.append(h); + } + return hexString.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return ""; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java new file mode 100644 index 0000000..156805a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java @@ -0,0 +1,556 @@ +package com.cappielloantonio.tempo.ui.activity; + +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.splashscreen.SplashScreen; +import androidx.fragment.app.FragmentManager; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaItem; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.Player; +import androidx.media3.common.MimeTypes; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.NavController; +import androidx.navigation.fragment.NavHostFragment; +import androidx.navigation.ui.NavigationUI; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.BuildConfig; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.broadcast.receiver.ConnectivityStatusBroadcastReceiver; +import com.cappielloantonio.tempo.databinding.ActivityMainBinding; +import com.cappielloantonio.tempo.github.utils.UpdateUtil; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.ui.activity.base.BaseActivity; +import com.cappielloantonio.tempo.ui.dialog.ConnectionAlertDialog; +import com.cappielloantonio.tempo.ui.dialog.GithubTempoUpdateDialog; +import com.cappielloantonio.tempo.ui.dialog.ServerUnreachableDialog; +import com.cappielloantonio.tempo.ui.fragment.PlayerBottomSheetFragment; +import com.cappielloantonio.tempo.util.AssetLinkNavigator; +import com.cappielloantonio.tempo.util.AssetLinkUtil; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.MainViewModel; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.color.DynamicColors; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.Objects; +import java.util.concurrent.ExecutionException; + +@UnstableApi +public class MainActivity extends BaseActivity { + private static final String TAG = "MainActivityLogs"; + + public ActivityMainBinding bind; + private MainViewModel mainViewModel; + + private FragmentManager fragmentManager; + private NavHostFragment navHostFragment; + private BottomNavigationView bottomNavigationView; + public NavController navController; + private BottomSheetBehavior bottomSheetBehavior; + private AssetLinkNavigator assetLinkNavigator; + private AssetLinkUtil.AssetLink pendingAssetLink; + + ConnectivityStatusBroadcastReceiver connectivityStatusBroadcastReceiver; + private Intent pendingDownloadPlaybackIntent; + + @Override + protected void onCreate(Bundle savedInstanceState) { + SplashScreen.installSplashScreen(this); + DynamicColors.applyToActivityIfAvailable(this); + + super.onCreate(savedInstanceState); + + bind = ActivityMainBinding.inflate(getLayoutInflater()); + View view = bind.getRoot(); + setContentView(view); + + mainViewModel = new ViewModelProvider(this).get(MainViewModel.class); + assetLinkNavigator = new AssetLinkNavigator(this); + + connectivityStatusBroadcastReceiver = new ConnectivityStatusBroadcastReceiver(this); + connectivityStatusReceiverManager(true); + + init(); + checkConnectionType(); + getOpenSubsonicExtensions(); + checkTempoUpdate(); + + maybeSchedulePlaybackIntent(getIntent()); + } + + @Override + protected void onStart() { + super.onStart(); + pingServer(); + initService(); + consumePendingPlaybackIntent(); + } + + @Override + protected void onResume() { + super.onResume(); + pingServer(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + connectivityStatusReceiverManager(false); + bind = null; + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + setIntent(intent); + maybeSchedulePlaybackIntent(intent); + consumePendingPlaybackIntent(); + } + + @Override + public void onBackPressed() { + if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) + collapseBottomSheetDelayed(); + else + super.onBackPressed(); + } + + public void init() { + fragmentManager = getSupportFragmentManager(); + + initBottomSheet(); + initNavigation(); + + if (Preferences.getPassword() != null || (Preferences.getToken() != null && Preferences.getSalt() != null)) { + goFromLogin(); + } else { + goToLogin(); + } + } + + // BOTTOM SHEET/NAVIGATION + private void initBottomSheet() { + bottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.player_bottom_sheet)); + bottomSheetBehavior.addBottomSheetCallback(bottomSheetCallback); + fragmentManager.beginTransaction().replace(R.id.player_bottom_sheet, new PlayerBottomSheetFragment(), "PlayerBottomSheet").commit(); + + checkBottomSheetAfterStateChanged(); + } + + public void setBottomSheetInPeek(Boolean isVisible) { + if (isVisible) { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } else { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + } + } + + public void setBottomSheetVisibility(boolean visibility) { + if (visibility) { + findViewById(R.id.player_bottom_sheet).setVisibility(View.VISIBLE); + } else { + findViewById(R.id.player_bottom_sheet).setVisibility(View.GONE); + } + } + + private void checkBottomSheetAfterStateChanged() { + final Handler handler = new Handler(); + final Runnable runnable = () -> setBottomSheetInPeek(mainViewModel.isQueueLoaded()); + handler.postDelayed(runnable, 100); + } + + public void collapseBottomSheetDelayed() { + final Handler handler = new Handler(); + final Runnable runnable = () -> bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + handler.postDelayed(runnable, 100); + } + + public void expandBottomSheet() { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } + + public void setBottomSheetDraggableState(Boolean isDraggable) { + bottomSheetBehavior.setDraggable(isDraggable); + } + + private final BottomSheetBehavior.BottomSheetCallback bottomSheetCallback = + new BottomSheetBehavior.BottomSheetCallback() { + int navigationHeight; + + @Override + public void onStateChanged(@NonNull View view, int state) { + PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); + + switch (state) { + case BottomSheetBehavior.STATE_HIDDEN: + resetMusicSession(); + break; + case BottomSheetBehavior.STATE_COLLAPSED: + if (playerBottomSheetFragment != null) + playerBottomSheetFragment.goBackToFirstPage(); + break; + case BottomSheetBehavior.STATE_SETTLING: + case BottomSheetBehavior.STATE_EXPANDED: + case BottomSheetBehavior.STATE_DRAGGING: + case BottomSheetBehavior.STATE_HALF_EXPANDED: + break; + } + } + + @Override + public void onSlide(@NonNull View view, float slideOffset) { + animateBottomSheet(slideOffset); + animateBottomNavigation(slideOffset, navigationHeight); + } + }; + + private void animateBottomSheet(float slideOffset) { + PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); + if (playerBottomSheetFragment != null) { + float condensedSlideOffset = Math.max(0.0f, Math.min(0.2f, slideOffset - 0.2f)) / 0.2f; + playerBottomSheetFragment.getPlayerHeader().setAlpha(1 - condensedSlideOffset); + playerBottomSheetFragment.getPlayerHeader().setVisibility(condensedSlideOffset > 0.99 ? View.GONE : View.VISIBLE); + } + } + + private void animateBottomNavigation(float slideOffset, int navigationHeight) { + if (slideOffset < 0) return; + + if (navigationHeight == 0) { + navigationHeight = bind.bottomNavigation.getHeight(); + } + + float slideY = navigationHeight - navigationHeight * (1 - slideOffset); + + bind.bottomNavigation.setTranslationY(slideY); + } + + private void initNavigation() { + bottomNavigationView = findViewById(R.id.bottom_navigation); + navHostFragment = (NavHostFragment) fragmentManager.findFragmentById(R.id.nav_host_fragment); + navController = Objects.requireNonNull(navHostFragment).getNavController(); + + /* + * In questo modo intercetto il cambio schermata tramite navbar e se il bottom sheet è aperto, + * lo chiudo + */ + navController.addOnDestinationChangedListener((controller, destination, arguments) -> { + if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED && ( + destination.getId() == R.id.homeFragment || + destination.getId() == R.id.libraryFragment || + destination.getId() == R.id.downloadFragment) + ) { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + }); + + NavigationUI.setupWithNavController(bottomNavigationView, navController); + } + + public void setBottomNavigationBarVisibility(boolean visibility) { + if (visibility) { + bottomNavigationView.setVisibility(View.VISIBLE); + } else { + bottomNavigationView.setVisibility(View.GONE); + } + } + + private void initService() { + MediaManager.check(getMediaBrowserListenableFuture()); + + getMediaBrowserListenableFuture().addListener(() -> { + try { + getMediaBrowserListenableFuture().get().addListener(new Player.Listener() { + @Override + public void onIsPlayingChanged(boolean isPlaying) { + if (isPlaying && bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) { + setBottomSheetInPeek(true); + } + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + + private void goToLogin() { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + setBottomNavigationBarVisibility(false); + setBottomSheetVisibility(false); + + if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.landingFragment) { + navController.navigate(R.id.action_landingFragment_to_loginFragment); + } else if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.settingsFragment) { + navController.navigate(R.id.action_settingsFragment_to_loginFragment); + } else if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.homeFragment) { + navController.navigate(R.id.action_homeFragment_to_loginFragment); + } + } + + private void goToHome() { + bottomNavigationView.setVisibility(View.VISIBLE); + + if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.landingFragment) { + navController.navigate(R.id.action_landingFragment_to_homeFragment); + } else if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.loginFragment) { + navController.navigate(R.id.action_loginFragment_to_homeFragment); + } + } + + public void goFromLogin() { + setBottomSheetInPeek(mainViewModel.isQueueLoaded()); + goToHome(); + consumePendingAssetLink(); + } + + public void openAssetLink(@NonNull AssetLinkUtil.AssetLink assetLink) { + openAssetLink(assetLink, true); + } + + public void openAssetLink(@NonNull AssetLinkUtil.AssetLink assetLink, boolean collapsePlayer) { + if (!isUserAuthenticated()) { + pendingAssetLink = assetLink; + return; + } + if (collapsePlayer) { + setBottomSheetInPeek(true); + } + if (assetLinkNavigator != null) { + assetLinkNavigator.open(assetLink); + } + } + + public void quit() { + resetUserSession(); + resetMusicSession(); + resetViewModel(); + goToLogin(); + } + + private void resetUserSession() { + Preferences.setServerId(null); + Preferences.setSalt(null); + Preferences.setToken(null); + Preferences.setPassword(null); + Preferences.setServer(null); + Preferences.setLocalAddress(null); + Preferences.setUser(null); + + // TODO Enter all settings to be reset + Preferences.setOpenSubsonic(false); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_100); + Preferences.setSkipSilenceMode(false); + Preferences.setDataSavingMode(false); + Preferences.setStarredSyncEnabled(false); + Preferences.setStarredAlbumsSyncEnabled(false); + } + + private void resetMusicSession() { + MediaManager.reset(getMediaBrowserListenableFuture()); + } + + private void hideMusicSession() { + MediaManager.hide(getMediaBrowserListenableFuture()); + } + + private void resetViewModel() { + this.getViewModelStore().clear(); + } + + // CONNECTION + private void connectivityStatusReceiverManager(boolean isActive) { + if (isActive) { + IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); + registerReceiver(connectivityStatusBroadcastReceiver, filter); + } else { + unregisterReceiver(connectivityStatusBroadcastReceiver); + } + } + + private void pingServer() { + if (Preferences.getToken() == null) return; + + if (Preferences.isInUseServerAddressLocal()) { + mainViewModel.ping().observe(this, subsonicResponse -> { + if (subsonicResponse == null) { + Preferences.setServerSwitchableTimer(); + Preferences.switchInUseServerAddress(); + App.refreshSubsonicClient(); + pingServer(); + resetView(); + } else { + Preferences.setOpenSubsonic(subsonicResponse.getOpenSubsonic() != null && subsonicResponse.getOpenSubsonic()); + } + }); + } else { + if (Preferences.isServerSwitchable()) { + Preferences.setServerSwitchableTimer(); + Preferences.switchInUseServerAddress(); + App.refreshSubsonicClient(); + pingServer(); + resetView(); + } else { + mainViewModel.ping().observe(this, subsonicResponse -> { + if (subsonicResponse == null) { + if (Preferences.showServerUnreachableDialog()) { + ServerUnreachableDialog dialog = new ServerUnreachableDialog(); + dialog.show(getSupportFragmentManager(), null); + } + } else { + Preferences.setOpenSubsonic(subsonicResponse.getOpenSubsonic() != null && subsonicResponse.getOpenSubsonic()); + } + }); + } + } + } + + private void resetView() { + resetViewModel(); + int id = Objects.requireNonNull(navController.getCurrentDestination()).getId(); + navController.popBackStack(id, true); + navController.navigate(id); + } + + private void getOpenSubsonicExtensions() { + if (Preferences.getToken() != null) { + mainViewModel.getOpenSubsonicExtensions().observe(this, openSubsonicExtensions -> { + if (openSubsonicExtensions != null) { + Preferences.setOpenSubsonicExtensions(openSubsonicExtensions); + } + }); + } + } + + private void checkTempoUpdate() { + if (BuildConfig.FLAVOR.equals("tempus") && Preferences.isGithubUpdateEnabled() && Preferences.showTempusUpdateDialog()) { + mainViewModel.checkTempoUpdate().observe(this, latestRelease -> { + if (latestRelease != null && UpdateUtil.showUpdateDialog(latestRelease)) { + GithubTempoUpdateDialog dialog = new GithubTempoUpdateDialog(latestRelease); + dialog.show(getSupportFragmentManager(), null); + } + }); + } + } + + private void checkConnectionType() { + if (Preferences.isWifiOnly()) { + ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); + + if (networkInfo != null && networkInfo.getType() != ConnectivityManager.TYPE_WIFI) { + ConnectionAlertDialog dialog = new ConnectionAlertDialog(); + dialog.show(getSupportFragmentManager(), null); + } + } + } + + private void maybeSchedulePlaybackIntent(Intent intent) { + if (intent == null) return; + if (Constants.ACTION_PLAY_EXTERNAL_DOWNLOAD.equals(intent.getAction()) + || intent.hasExtra(Constants.EXTRA_DOWNLOAD_URI)) { + pendingDownloadPlaybackIntent = new Intent(intent); + } + handleAssetLinkIntent(intent); + } + + private void consumePendingPlaybackIntent() { + if (pendingDownloadPlaybackIntent == null) return; + Intent intent = pendingDownloadPlaybackIntent; + pendingDownloadPlaybackIntent = null; + playDownloadedMedia(intent); + } + + private void handleAssetLinkIntent(Intent intent) { + AssetLinkUtil.AssetLink assetLink = AssetLinkUtil.parse(intent); + if (assetLink == null) { + return; + } + if (!isUserAuthenticated()) { + pendingAssetLink = assetLink; + intent.setData(null); + return; + } + if (assetLinkNavigator != null) { + assetLinkNavigator.open(assetLink); + } + intent.setData(null); + } + + private boolean isUserAuthenticated() { + return Preferences.getPassword() != null + || (Preferences.getToken() != null && Preferences.getSalt() != null); + } + + private void consumePendingAssetLink() { + if (pendingAssetLink == null || assetLinkNavigator == null) { + return; + } + assetLinkNavigator.open(pendingAssetLink); + pendingAssetLink = null; + } + + private void playDownloadedMedia(Intent intent) { + String uriString = intent.getStringExtra(Constants.EXTRA_DOWNLOAD_URI); + if (TextUtils.isEmpty(uriString)) { + return; + } + + Uri uri = Uri.parse(uriString); + String mediaId = intent.getStringExtra(Constants.EXTRA_DOWNLOAD_MEDIA_ID); + if (TextUtils.isEmpty(mediaId)) { + mediaId = uri.toString(); + } + + String title = intent.getStringExtra(Constants.EXTRA_DOWNLOAD_TITLE); + String artist = intent.getStringExtra(Constants.EXTRA_DOWNLOAD_ARTIST); + String album = intent.getStringExtra(Constants.EXTRA_DOWNLOAD_ALBUM); + int duration = intent.getIntExtra(Constants.EXTRA_DOWNLOAD_DURATION, 0); + + Bundle extras = new Bundle(); + extras.putString("id", mediaId); + extras.putString("title", title); + extras.putString("artist", artist); + extras.putString("album", album); + extras.putString("uri", uri.toString()); + extras.putString("type", Constants.MEDIA_TYPE_MUSIC); + extras.putInt("duration", duration); + + MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder() + .setExtras(extras) + .setIsBrowsable(false) + .setIsPlayable(true); + + if (!TextUtils.isEmpty(title)) metadataBuilder.setTitle(title); + if (!TextUtils.isEmpty(artist)) metadataBuilder.setArtist(artist); + if (!TextUtils.isEmpty(album)) metadataBuilder.setAlbumTitle(album); + + MediaItem mediaItem = new MediaItem.Builder() + .setMediaId(mediaId) + .setMediaMetadata(metadataBuilder.build()) + .setUri(uri) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setRequestMetadata(new MediaItem.RequestMetadata.Builder() + .setMediaUri(uri) + .setExtras(extras) + .build()) + .build(); + + MediaManager.playDownloadedMediaItem(getMediaBrowserListenableFuture(), mediaItem); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java new file mode 100644 index 0000000..9eaa2c3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java @@ -0,0 +1,112 @@ +package com.cappielloantonio.tempo.ui.activity.base; + +import android.Manifest; +import android.content.ComponentName; +import android.content.pm.PackageManager; +import android.os.Build; +import android.os.Bundle; +import android.os.PowerManager; +import android.view.WindowManager; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.exoplayer.offline.DownloadService; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.service.DownloaderService; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.dialog.BatteryOptimizationDialog; +import com.cappielloantonio.tempo.util.Flavors; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.elevation.SurfaceColors; +import com.google.common.util.concurrent.ListenableFuture; + +@UnstableApi +public class BaseActivity extends AppCompatActivity { + private static final String TAG = "BaseActivity"; + + private ListenableFuture mediaBrowserListenableFuture; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Flavors.initializeCastContext(this); + initializeDownloader(); + checkBatteryOptimization(); + checkPermission(); + checkAlwaysOnDisplay(); + } + + @Override + protected void onStart() { + super.onStart(); + setNavigationBarColor(); + initializeBrowser(); + } + + @Override + protected void onStop() { + releaseBrowser(); + super.onStop(); + } + + private void checkBatteryOptimization() { + if (detectBatteryOptimization() && Preferences.askForOptimization()) { + showBatteryOptimizationDialog(); + } + } + + private void checkPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.POST_NOTIFICATIONS}, 101); + } + } + } + + private void checkAlwaysOnDisplay() { + if (Preferences.isDisplayAlwaysOn()) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + private boolean detectBatteryOptimization() { + String packageName = getPackageName(); + PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); + return !powerManager.isIgnoringBatteryOptimizations(packageName); + } + + private void showBatteryOptimizationDialog() { + BatteryOptimizationDialog dialog = new BatteryOptimizationDialog(); + dialog.show(getSupportFragmentManager(), null); + } + + private void initializeBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(this, new SessionToken(this, new ComponentName(this, MediaService.class))).buildAsync(); + } + + private void releaseBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + public ListenableFuture getMediaBrowserListenableFuture() { + return mediaBrowserListenableFuture; + } + + private void initializeDownloader() { + try { + DownloadService.start(this, DownloaderService.class); + } catch (IllegalStateException e) { + DownloadService.startForeground(this, DownloaderService.class); + } + } + + private void setNavigationBarColor() { + getWindow().setNavigationBarColor(SurfaceColors.getColorForElevation(this, 8)); + getWindow().setStatusBarColor(SurfaceColors.getColorForElevation(this, 0)); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumAdapter.java new file mode 100644 index 0000000..498bf23 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumAdapter.java @@ -0,0 +1,95 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryAlbumBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class AlbumAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List albums; + + public AlbumAdapter(ClickCallback click) { + this.click = click; + this.albums = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryAlbumBinding view = ItemLibraryAlbumBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + AlbumID3 album = albums.get(position); + + holder.item.albumNameLabel.setText(album.getName()); + holder.item.artistNameLabel.setText(album.getArtist()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), album.getCoverArtId(), CustomGlideRequest.ResourceType.Album) + .build() + .into(holder.item.albumCoverImageView); + } + + @Override + public int getItemCount() { + return albums.size(); + } + + public AlbumID3 getItem(int position) { + return albums.get(position); + } + + public void setItems(List albums) { + this.albums = albums; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryAlbumBinding item; + + ViewHolder(ItemLibraryAlbumBinding item) { + super(item.getRoot()); + + this.item = item; + + item.albumNameLabel.setSelected(true); + item.artistNameLabel.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumArtistPageOrSimilarAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumArtistPageOrSimilarAdapter.java new file mode 100644 index 0000000..4230340 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumArtistPageOrSimilarAdapter.java @@ -0,0 +1,95 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryArtistPageOrSimilarAlbumBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class AlbumArtistPageOrSimilarAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List albums; + + public AlbumArtistPageOrSimilarAdapter(ClickCallback click) { + this.click = click; + this.albums = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryArtistPageOrSimilarAlbumBinding view = ItemLibraryArtistPageOrSimilarAlbumBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + AlbumID3 album = albums.get(position); + + holder.item.albumNameLabel.setText(album.getName()); + holder.item.artistNameLabel.setText(album.getArtist()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), album.getCoverArtId(), CustomGlideRequest.ResourceType.Album) + .build() + .into(holder.item.artistPageAlbumCoverImageView); + } + + @Override + public int getItemCount() { + return albums.size(); + } + + public AlbumID3 getItem(int position) { + return albums.get(position); + } + + public void setItems(List albums) { + this.albums = albums; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryArtistPageOrSimilarAlbumBinding item; + + ViewHolder(ItemLibraryArtistPageOrSimilarAlbumBinding item) { + super(item.getRoot()); + + this.item = item; + + item.albumNameLabel.setSelected(true); + item.artistNameLabel.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java new file mode 100644 index 0000000..e2d0563 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java @@ -0,0 +1,207 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryCatalogueAlbumBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +public class AlbumCatalogueAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + private String currentFilter; + private boolean showArtist; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(albumsFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + currentFilter = filterPattern; + + for (AlbumID3 item : albumsFull) { + if (item.getName().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + albums = (List) results.values; + notifyDataSetChanged(); + } + }; + + private List albums; + private List albumsFull; + + public AlbumCatalogueAdapter(ClickCallback click, boolean showArtist) { + this.click = click; + this.albums = Collections.emptyList(); + this.albumsFull = Collections.emptyList(); + this.currentFilter = ""; + this.showArtist = showArtist; + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryCatalogueAlbumBinding view = ItemLibraryCatalogueAlbumBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + AlbumID3 album = albums.get(position); + + holder.item.albumNameLabel.setText(album.getName()); + holder.item.artistNameLabel.setText(album.getArtist()); + holder.item.artistNameLabel.setVisibility(showArtist ? View.VISIBLE : View.GONE); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), album.getCoverArtId(), CustomGlideRequest.ResourceType.Album) + .build() + .into(holder.item.albumCatalogueCoverImageView); + } + + @Override + public int getItemCount() { + return albums.size(); + } + + public AlbumID3 getItem(int position) { + return albums.get(position); + } + + public void setItems(List albums) { + this.albumsFull = new ArrayList<>(albums); + filtering.filter(currentFilter); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public Filter getFilter() { + return filtering; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryCatalogueAlbumBinding item; + + ViewHolder(ItemLibraryCatalogueAlbumBinding item) { + super(item.getRoot()); + + this.item = item; + + item.albumNameLabel.setSelected(true); + item.artistNameLabel.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumLongClick(bundle); + + return true; + } + } + + public void setItemsWithoutFilter(List albums) { + this.albumsFull = new ArrayList<>(albums); + this.albums = new ArrayList<>(albums); + notifyDataSetChanged(); + } + + public void sort(String order) { + if (albums == null) return; + + switch (order) { + case Constants.ALBUM_ORDER_BY_NAME: + albums.sort(Comparator.comparing( + album -> album.getName() != null ? album.getName() : "", + String.CASE_INSENSITIVE_ORDER + )); + break; + case Constants.ALBUM_ORDER_BY_ARTIST: + albums.sort(Comparator.comparing( + album -> album.getArtist() != null ? album.getArtist() : "", + String.CASE_INSENSITIVE_ORDER + )); + break; + case Constants.ALBUM_ORDER_BY_YEAR: + albums.sort(Comparator.comparing(AlbumID3::getYear)); + break; + case Constants.ALBUM_ORDER_BY_RANDOM: + Collections.shuffle(albums); + break; + case Constants.ALBUM_ORDER_BY_RECENTLY_ADDED: + albums.sort(Comparator.comparing( + album -> album.getCreated() != null ? album.getCreated() : new Date(0), + Comparator.nullsLast(Date::compareTo) + )); + Collections.reverse(albums); + break; + case Constants.ALBUM_ORDER_BY_RECENTLY_PLAYED: + albums.sort(Comparator.comparing( + album -> album.getPlayed() != null ? album.getPlayed() : new Date(0), + Comparator.nullsLast(Date::compareTo) + )); + Collections.reverse(albums); + break; + case Constants.ALBUM_ORDER_BY_MOST_PLAYED: + albums.sort(Comparator.comparing( + album -> album.getPlayCount() != null ? album.getPlayCount() : 0L + )); + Collections.reverse(albums); + break; + } + + notifyDataSetChanged(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumHorizontalAdapter.java new file mode 100644 index 0000000..f19eae9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumHorizontalAdapter.java @@ -0,0 +1,161 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHorizontalAlbumBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class AlbumHorizontalAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + private final boolean isOffline; + + private List albumsFull; + private List albums; + private String currentFilter; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(albumsFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + currentFilter = filterPattern; + + for (AlbumID3 item : albumsFull) { + if (item.getName().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + albums = (List) results.values; + notifyDataSetChanged(); + } + }; + + public AlbumHorizontalAdapter(ClickCallback click, boolean isOffline) { + this.click = click; + this.isOffline = isOffline; + this.albums = Collections.emptyList(); + this.albumsFull = Collections.emptyList(); + this.currentFilter = ""; + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalAlbumBinding view = ItemHorizontalAlbumBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + AlbumID3 album = albums.get(position); + + holder.item.albumTitleTextView.setText(album.getName()); + holder.item.albumArtistTextView.setText(album.getArtist()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), album.getCoverArtId(), CustomGlideRequest.ResourceType.Album) + .build() + .into(holder.item.albumCoverImageView); + } + + @Override + public int getItemCount() { + return albums.size(); + } + + public void setItems(List albums) { + this.albumsFull = albums != null ? albums : Collections.emptyList(); + filtering.filter(currentFilter); + notifyDataSetChanged(); + } + + @Override + public Filter getFilter() { + return filtering; + } + + public AlbumID3 getItem(int id) { + return albums.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalAlbumBinding item; + + ViewHolder(ItemHorizontalAlbumBinding item) { + super(item.getRoot()); + + this.item = item; + + item.albumTitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.albumMoreButton.setOnClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition())); + + click.onAlbumLongClick(bundle); + + return true; + } + } + + public void sort(String order) { + switch (order) { + case Constants.ALBUM_ORDER_BY_NAME: + albums.sort(Comparator.comparing(AlbumID3::getName)); + break; + case Constants.ALBUM_ORDER_BY_MOST_RECENTLY_STARRED: + albums.sort(Comparator.comparing(AlbumID3::getStarred, Comparator.nullsLast(Comparator.reverseOrder()))); + break; + case Constants.ALBUM_ORDER_BY_LEAST_RECENTLY_STARRED: + albums.sort(Comparator.comparing(AlbumID3::getStarred, Comparator.nullsLast(Comparator.naturalOrder()))); + + break; + } + + notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistAdapter.java new file mode 100644 index 0000000..44e8402 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistAdapter.java @@ -0,0 +1,111 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryArtistBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +@UnstableApi +public class ArtistAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + private final boolean mix; + private final boolean bestOf; + + private List artists; + + public ArtistAdapter(ClickCallback click, Boolean mix, Boolean bestOf) { + this.click = click; + this.mix = mix; + this.bestOf = bestOf; + this.artists = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryArtistBinding view = ItemLibraryArtistBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ArtistID3 artist = artists.get(position); + + holder.item.artistNameLabel.setText(artist.getName()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), artist.getCoverArtId(), CustomGlideRequest.ResourceType.Artist) + .build() + .into(holder.item.artistCoverImageView); + } + + @Override + public int getItemCount() { + return artists.size(); + } + + public ArtistID3 getItem(int position) { + return artists.get(position); + } + + public void setItems(List artists) { + this.artists = artists; + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryArtistBinding item; + + ViewHolder(ItemLibraryArtistBinding item) { + super(item.getRoot()); + + this.item = item; + + item.artistNameLabel.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + bundle.putBoolean(Constants.MEDIA_MIX, mix); + bundle.putBoolean(Constants.MEDIA_BEST_OF, bestOf); + + click.onArtistClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistCatalogueAdapter.java new file mode 100644 index 0000000..b1defe4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistCatalogueAdapter.java @@ -0,0 +1,161 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryCatalogueArtistBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class ArtistCatalogueAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(artistFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + + for (ArtistID3 item : artistFull) { + if (item.getName().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + artists.clear(); + if (results.count > 0) artists.addAll((List) results.values); + notifyDataSetChanged(); + } + }; + + private List artists; + private List artistFull; + + public ArtistCatalogueAdapter(ClickCallback click) { + this.click = click; + this.artists = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryCatalogueArtistBinding view = ItemLibraryCatalogueArtistBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ArtistID3 artist = artists.get(position); + + holder.item.artistNameLabel.setText(artist.getName()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), artist.getCoverArtId(), CustomGlideRequest.ResourceType.Artist) + .build() + .into(holder.item.artistCatalogueCoverImageView); + } + + @Override + public int getItemCount() { + return artists.size(); + } + + public ArtistID3 getItem(int position) { + return artists.get(position); + } + + public void setItems(List artists) { + this.artists = artists; + this.artistFull = new ArrayList<>(artists); + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public Filter getFilter() { + return filtering; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryCatalogueArtistBinding item; + + ViewHolder(ItemLibraryCatalogueArtistBinding item) { + super(item.getRoot()); + + this.item = item; + + item.artistNameLabel.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistLongClick(bundle); + + return true; + } + } + + public void sort(String order) { + switch (order) { + case Constants.ARTIST_ORDER_BY_NAME: + artists.sort(Comparator.comparing(ArtistID3::getName)); + break; + case Constants.ARTIST_ORDER_BY_RANDOM: + Collections.shuffle(artists); + break; + case Constants.ARTIST_ORDER_BY_ALBUM_COUNT: + artists.sort(Comparator.comparing(ArtistID3::getAlbumCount).reversed()); + break; + } + + notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistHorizontalAdapter.java new file mode 100644 index 0000000..85b6fd6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistHorizontalAdapter.java @@ -0,0 +1,175 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHorizontalArtistBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class ArtistHorizontalAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + + private List artistsFull; + private List artists; + private String currentFilter; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(artistsFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + currentFilter = filterPattern; + + for (ArtistID3 item : artistsFull) { + if (item.getName().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + artists = (List) results.values; + notifyDataSetChanged(); + } + }; + + public ArtistHorizontalAdapter(ClickCallback click) { + this.click = click; + this.artists = Collections.emptyList(); + this.artistsFull = Collections.emptyList(); + this.currentFilter = ""; + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalArtistBinding view = ItemHorizontalArtistBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ArtistID3 artist = artists.get(position); + + holder.item.artistNameTextView.setText(artist.getName()); + + if (artist.getAlbumCount() > 0) { + holder.item.artistInfoTextView.setText("Album count: " + artist.getAlbumCount()); + } else { + holder.item.artistInfoTextView.setVisibility(View.GONE); + } + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), artist.getCoverArtId(), CustomGlideRequest.ResourceType.Artist) + .build() + .into(holder.item.artistCoverImageView); + } + + @Override + public int getItemCount() { + return artists.size(); + } + + public void setItems(List artists) { + this.artistsFull = artists != null ? artists : Collections.emptyList(); + filtering.filter(currentFilter); + notifyDataSetChanged(); + } + + @Override + public Filter getFilter() { + return filtering; + } + + public ArtistID3 getItem(int id) { + return artists.get(id); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalArtistBinding item; + + ViewHolder(ItemHorizontalArtistBinding item) { + super(item.getRoot()); + + this.item = item; + + item.artistNameTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.artistMoreButton.setOnClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistLongClick(bundle); + + return true; + } + } + + public void sort(String order) { + switch (order) { + case Constants.ARTIST_ORDER_BY_NAME: + artists.sort(Comparator.comparing(ArtistID3::getName)); + break; + case Constants.ARTIST_ORDER_BY_MOST_RECENTLY_STARRED: + artists.sort(Comparator.comparing(ArtistID3::getStarred, Comparator.nullsLast(Comparator.reverseOrder()))); + break; + case Constants.ARTIST_ORDER_BY_LEAST_RECENTLY_STARRED: + artists.sort(Comparator.comparing(ArtistID3::getStarred, Comparator.nullsLast(Comparator.naturalOrder()))); + + break; + } + + notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistSimilarAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistSimilarAdapter.java new file mode 100644 index 0000000..4e8dffe --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ArtistSimilarAdapter.java @@ -0,0 +1,103 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibrarySimilarArtistBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.SimilarArtistID3; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class ArtistSimilarAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List artists; + + public ArtistSimilarAdapter(ClickCallback click) { + this.click = click; + this.artists = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibrarySimilarArtistBinding view = ItemLibrarySimilarArtistBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + SimilarArtistID3 artist = artists.get(position); + + holder.item.artistNameLabel.setText(artist.getName()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), artist.getCoverArtId(), CustomGlideRequest.ResourceType.Artist) + .build() + .into(holder.item.similarArtistCoverImageView); + } + + @Override + public int getItemCount() { + return artists.size(); + } + + public SimilarArtistID3 getItem(int position) { + return artists.get(position); + } + + public void setItems(List artists) { + this.artists = artists; + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibrarySimilarArtistBinding item; + + ViewHolder(ItemLibrarySimilarArtistBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.artistNameLabel.setSelected(true); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition())); + + click.onArtistLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DiscoverSongAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DiscoverSongAdapter.java new file mode 100644 index 0000000..c9b21d8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DiscoverSongAdapter.java @@ -0,0 +1,108 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.view.animation.AccelerateDecelerateInterpolator; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHomeDiscoverSongBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class DiscoverSongAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List songs; + + public DiscoverSongAdapter(ClickCallback click) { + this.click = click; + this.songs = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeDiscoverSongBinding view = ItemHomeDiscoverSongBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Child song = songs.get(position); + + holder.item.titleDiscoverSongLabel.setText(song.getTitle()); + holder.item.albumDiscoverSongLabel.setText(song.getAlbum()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.discoverSongCoverImageView); + } + + @Override + public void onViewAttachedToWindow(@NonNull ViewHolder holder) { + super.onViewAttachedToWindow(holder); + startAnimation(holder); + } + + @Override + public int getItemCount() { + return songs.size(); + } + + public void setItems(List songs) { + this.songs = songs; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomeDiscoverSongBinding item; + + ViewHolder(ItemHomeDiscoverSongBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + + itemView.setOnLongClickListener(v -> { + onLongClick(); + return true; + }); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition())); + bundle.putBoolean(Constants.MEDIA_MIX, true); + + click.onMediaClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition())); + click.onMediaLongClick(bundle); + return true; + } + } + + private void startAnimation(ViewHolder holder) { + holder.item.discoverSongCoverImageView.animate() + .setDuration(20000) + .setStartDelay(10) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .scaleX(1.4f) + .scaleY(1.4f) + .start(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DownloadHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DownloadHorizontalAdapter.java new file mode 100644 index 0000000..ff06f27 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/DownloadHorizontalAdapter.java @@ -0,0 +1,355 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemHorizontalDownloadBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Util; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +@UnstableApi +public class DownloadHorizontalAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private String view; + private String filterKey; + private String filterValue; + + private List songs; + private List shuffling; + private List grouped; + + public DownloadHorizontalAdapter(ClickCallback click) { + this.click = click; + this.view = Constants.DOWNLOAD_TYPE_TRACK; + this.songs = Collections.emptyList(); + this.grouped = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalDownloadBinding view = ItemHorizontalDownloadBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + switch (view) { + case Constants.DOWNLOAD_TYPE_TRACK: + initTrackLayout(holder, position); + break; + case Constants.DOWNLOAD_TYPE_ALBUM: + initAlbumLayout(holder, position); + break; + case Constants.DOWNLOAD_TYPE_ARTIST: + initArtistLayout(holder, position); + break; + case Constants.DOWNLOAD_TYPE_GENRE: + initGenreLayout(holder, position); + break; + case Constants.DOWNLOAD_TYPE_YEAR: + initYearLayout(holder, position); + break; + } + } + + @Override + public int getItemCount() { + return grouped.size(); + } + + public void setItems(String view, String filterKey, String filterValue, List songs) { + this.view = filterValue != null ? view : filterKey; + this.filterKey = filterKey; + this.filterValue = filterValue; + + this.songs = songs; + this.grouped = groupSong(songs); + this.shuffling = shufflingSong(new ArrayList<>(songs)); + + notifyDataSetChanged(); + } + + public Child getItem(int id) { + return grouped.get(id); + } + + public List getShuffling() { + return shuffling; + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + private List groupSong(List songs) { + switch (view) { + case Constants.DOWNLOAD_TYPE_TRACK: + return filterSong(filterKey, filterValue, songs.stream().filter(song -> Objects.nonNull(song.getId())).filter(Util.distinctByKey(Child::getId)).collect(Collectors.toList())); + case Constants.DOWNLOAD_TYPE_ALBUM: + return filterSong(filterKey, filterValue, songs.stream().filter(song -> Objects.nonNull(song.getAlbumId())).filter(Util.distinctByKey(Child::getAlbumId)).collect(Collectors.toList())); + case Constants.DOWNLOAD_TYPE_ARTIST: + return filterSong(filterKey, filterValue, songs.stream().filter(song -> Objects.nonNull(song.getArtistId())).filter(Util.distinctByKey(Child::getArtistId)).collect(Collectors.toList())); + case Constants.DOWNLOAD_TYPE_GENRE: + return filterSong(filterKey, filterValue, songs.stream().filter(song -> Objects.nonNull(song.getGenre())).filter(Util.distinctByKey(Child::getGenre)).collect(Collectors.toList())); + case Constants.DOWNLOAD_TYPE_YEAR: + return filterSong(filterKey, filterValue, songs.stream().filter(song -> Objects.nonNull(song.getYear())).filter(Util.distinctByKey(Child::getYear)).collect(Collectors.toList())); + } + + return Collections.emptyList(); + } + + private List filterSong(String filterKey, String filterValue, List songs) { + if (filterValue != null) { + switch (filterKey) { + case Constants.DOWNLOAD_TYPE_TRACK: + return songs.stream().filter(child -> child.getId().equals(filterValue)).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_ALBUM: + return songs.stream().filter(child -> Objects.equals(child.getAlbumId(), filterValue)).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_GENRE: + return songs.stream().filter(child -> Objects.equals(child.getGenre(), filterValue)).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_YEAR: + return songs.stream().filter(child -> Objects.equals(child.getYear(), Integer.valueOf(filterValue))).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_ARTIST: + return songs.stream().filter(child -> Objects.equals(child.getArtistId(), filterValue)).collect(Collectors.toList()); + } + } + + return songs; + } + + private List shufflingSong(List songs) { + if (filterValue == null) { + return songs; + } + + switch (filterKey) { + case Constants.DOWNLOAD_TYPE_TRACK: + return songs.stream().filter(child -> child.getId().equals(filterValue)).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_ALBUM: + return songs.stream().filter(child -> Objects.equals(child.getAlbumId(), filterValue)).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_GENRE: + return songs.stream().filter(child -> Objects.equals(child.getGenre(), filterValue)).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_YEAR: + return songs.stream().filter(child -> Objects.equals(child.getYear(), Integer.valueOf(filterValue))).collect(Collectors.toList()); + case Constants.DOWNLOAD_TYPE_ARTIST: + return songs.stream().filter(child -> Objects.equals(child.getArtistId(), filterValue)).collect(Collectors.toList()); + default: + return songs; + } + } + + private String countSong(String filterKey, String filterValue, List songs) { + if (filterValue != null) { + switch (filterKey) { + case Constants.DOWNLOAD_TYPE_TRACK: + return String.valueOf(songs.stream().filter(child -> child.getId().equals(filterValue)).count()); + case Constants.DOWNLOAD_TYPE_ALBUM: + return String.valueOf(songs.stream().filter(child -> Objects.equals(child.getAlbumId(), filterValue)).count()); + case Constants.DOWNLOAD_TYPE_GENRE: + return String.valueOf(songs.stream().filter(child -> Objects.equals(child.getGenre(), filterValue)).count()); + case Constants.DOWNLOAD_TYPE_YEAR: + return String.valueOf(songs.stream().filter(child -> Objects.equals(child.getYear(), Integer.valueOf(filterValue))).count()); + case Constants.DOWNLOAD_TYPE_ARTIST: + return String.valueOf(songs.stream().filter(child -> Objects.equals(child.getArtistId(), filterValue)).count()); + } + } + + return "0"; + } + + private void initTrackLayout(ViewHolder holder, int position) { + Child song = grouped.get(position); + + holder.item.downloadedItemTitleTextView.setText(song.getTitle()); + holder.item.downloadedItemSubtitleTextView.setText( + holder.itemView.getContext().getString( + R.string.song_subtitle_formatter, + song.getArtist(), + MusicUtil.getReadableDurationString(song.getDuration(), false), + MusicUtil.getReadableAudioQualityString(song) + ) + ); + + holder.item.downloadedItemPreTextView.setText(song.getAlbum()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.itemCoverImageView); + + holder.item.itemCoverImageView.setVisibility(View.VISIBLE); + holder.item.downloadedItemMoreButton.setVisibility(View.VISIBLE); + holder.item.divider.setVisibility(View.VISIBLE); + + if (position > 0 && grouped.get(position - 1) != null && !Objects.equals(grouped.get(position - 1).getAlbum(), grouped.get(position).getAlbum())) { + holder.item.divider.setPadding(0, (int) holder.itemView.getContext().getResources().getDimension(R.dimen.downloaded_item_padding), 0, 0); + } else { + if (position > 0) holder.item.divider.setVisibility(View.GONE); + } + } + + private void initAlbumLayout(ViewHolder holder, int position) { + Child song = grouped.get(position); + + holder.item.downloadedItemTitleTextView.setText(song.getAlbum()); + holder.item.downloadedItemSubtitleTextView.setText(holder.itemView.getContext().getString(R.string.download_item_single_subtitle_formatter, countSong(Constants.DOWNLOAD_TYPE_ALBUM, song.getAlbumId(), songs))); + holder.item.downloadedItemPreTextView.setText(song.getArtist()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.itemCoverImageView); + + holder.item.itemCoverImageView.setVisibility(View.VISIBLE); + holder.item.downloadedItemMoreButton.setVisibility(View.VISIBLE); + holder.item.divider.setVisibility(View.VISIBLE); + + if (position > 0 && grouped.get(position - 1) != null && !Objects.equals(grouped.get(position - 1).getArtist(), grouped.get(position).getArtist())) { + holder.item.divider.setPadding(0, (int) holder.itemView.getContext().getResources().getDimension(R.dimen.downloaded_item_padding), 0, 0); + } else { + if (position > 0) holder.item.divider.setVisibility(View.GONE); + } + } + + private void initArtistLayout(ViewHolder holder, int position) { + Child song = grouped.get(position); + + holder.item.downloadedItemTitleTextView.setText(song.getArtist()); + holder.item.downloadedItemSubtitleTextView.setText(holder.itemView.getContext().getString(R.string.download_item_single_subtitle_formatter, countSong(Constants.DOWNLOAD_TYPE_ARTIST, song.getArtistId(), songs))); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.itemCoverImageView); + + holder.item.itemCoverImageView.setVisibility(View.VISIBLE); + holder.item.downloadedItemMoreButton.setVisibility(View.VISIBLE); + holder.item.divider.setVisibility(View.GONE); + } + + private void initGenreLayout(ViewHolder holder, int position) { + Child song = grouped.get(position); + + holder.item.downloadedItemTitleTextView.setText(song.getGenre()); + holder.item.downloadedItemSubtitleTextView.setText(holder.itemView.getContext().getString(R.string.download_item_single_subtitle_formatter, countSong(Constants.DOWNLOAD_TYPE_GENRE, song.getGenre(), songs))); + + holder.item.itemCoverImageView.setVisibility(View.GONE); + holder.item.downloadedItemMoreButton.setVisibility(View.VISIBLE); + holder.item.divider.setVisibility(View.GONE); + } + + private void initYearLayout(ViewHolder holder, int position) { + Child song = grouped.get(position); + + holder.item.downloadedItemTitleTextView.setText(String.valueOf(song.getYear())); + holder.item.downloadedItemSubtitleTextView.setText(holder.itemView.getContext().getString(R.string.download_item_single_subtitle_formatter, countSong(Constants.DOWNLOAD_TYPE_YEAR, song.getYear().toString(), songs))); + + holder.item.itemCoverImageView.setVisibility(View.GONE); + holder.item.downloadedItemMoreButton.setVisibility(View.VISIBLE); + holder.item.divider.setVisibility(View.GONE); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalDownloadBinding item; + + ViewHolder(ItemHorizontalDownloadBinding item) { + super(item.getRoot()); + + this.item = item; + + item.downloadedItemTitleTextView.setSelected(true); + item.downloadedItemSubtitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.downloadedItemMoreButton.setOnClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + + switch (view) { + case Constants.DOWNLOAD_TYPE_TRACK: + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(grouped)); + bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition()); + click.onMediaClick(bundle); + break; + case Constants.DOWNLOAD_TYPE_ALBUM: + bundle.putString(Constants.DOWNLOAD_TYPE_ALBUM, grouped.get(getBindingAdapterPosition()).getAlbumId()); + click.onAlbumClick(bundle); + break; + case Constants.DOWNLOAD_TYPE_ARTIST: + bundle.putString(Constants.DOWNLOAD_TYPE_ARTIST, grouped.get(getBindingAdapterPosition()).getArtistId()); + click.onArtistClick(bundle); + break; + case Constants.DOWNLOAD_TYPE_GENRE: + bundle.putString(Constants.DOWNLOAD_TYPE_GENRE, grouped.get(getBindingAdapterPosition()).getGenre()); + click.onGenreClick(bundle); + break; + case Constants.DOWNLOAD_TYPE_YEAR: + bundle.putString(Constants.DOWNLOAD_TYPE_YEAR, grouped.get(getBindingAdapterPosition()).getYear().toString()); + click.onYearClick(bundle); + break; + } + } + + private boolean onLongClick() { + ArrayList filteredSongs = new ArrayList<>(); + + Bundle bundle = new Bundle(); + + switch (view) { + case Constants.DOWNLOAD_TYPE_TRACK: + filteredSongs.add(grouped.get(getBindingAdapterPosition())); + break; + case Constants.DOWNLOAD_TYPE_ALBUM: + filteredSongs.addAll(filterSong(Constants.DOWNLOAD_TYPE_ALBUM, grouped.get(getBindingAdapterPosition()).getAlbumId(), songs)); + break; + case Constants.DOWNLOAD_TYPE_ARTIST: + filteredSongs.addAll(filterSong(Constants.DOWNLOAD_TYPE_ARTIST, grouped.get(getBindingAdapterPosition()).getArtistId(), songs)); + break; + case Constants.DOWNLOAD_TYPE_GENRE: + filteredSongs.addAll(filterSong(Constants.DOWNLOAD_TYPE_GENRE, grouped.get(getBindingAdapterPosition()).getGenre(), songs)); + break; + case Constants.DOWNLOAD_TYPE_YEAR: + filteredSongs.addAll(filterSong(Constants.DOWNLOAD_TYPE_YEAR, grouped.get(getBindingAdapterPosition()).getYear().toString(), songs)); + break; + } + + if (filteredSongs.isEmpty()) return false; + + bundle.putParcelableArrayList(Constants.DOWNLOAD_GROUP, new ArrayList<>(filteredSongs)); + bundle.putString(Constants.DOWNLOAD_GROUP_TITLE, item.downloadedItemTitleTextView.getText().toString()); + bundle.putString(Constants.DOWNLOAD_GROUP_SUBTITLE, item.downloadedItemSubtitleTextView.getText().toString()); + click.onDownloadGroupLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreAdapter.java new file mode 100644 index 0000000..c99193c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreAdapter.java @@ -0,0 +1,76 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryGenreBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Genre; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class GenreAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List genres; + + public GenreAdapter(ClickCallback click) { + this.click = click; + this.genres = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryGenreBinding view = ItemLibraryGenreBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Genre genre = genres.get(position); + + holder.item.genreLabel.setText(genre.getGenre()); + } + + @Override + public int getItemCount() { + return genres.size(); + } + + public Genre getItem(int position) { + return genres.get(position); + } + + public void setItems(List genres) { + this.genres = genres; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryGenreBinding item; + + ViewHolder(ItemLibraryGenreBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MEDIA_BY_GENRE, Constants.MEDIA_BY_GENRE); + bundle.putParcelable(Constants.GENRE_OBJECT, genres.get(getBindingAdapterPosition())); + + click.onGenreClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreCatalogueAdapter.java new file mode 100644 index 0000000..835b32b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GenreCatalogueAdapter.java @@ -0,0 +1,128 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryCatalogueGenreBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Genre; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class GenreCatalogueAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(genresFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + + for (Genre item : genresFull) { + if (item.getGenre().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + genres.clear(); + if (results.count > 0) genres.addAll((List) results.values); + notifyDataSetChanged(); + } + }; + + private List genres; + private List genresFull; + + public GenreCatalogueAdapter(ClickCallback click) { + this.click = click; + this.genres = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryCatalogueGenreBinding view = ItemLibraryCatalogueGenreBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Genre genre = genres.get(position); + + holder.item.genreLabel.setText(genre.getGenre()); + } + + @Override + public int getItemCount() { + return genres.size(); + } + + public Genre getItem(int position) { + return genres.get(position); + } + + public void setItems(List genres) { + this.genres = genres; + this.genresFull = new ArrayList<>(genres); + notifyDataSetChanged(); + } + + @Override + public Filter getFilter() { + return filtering; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryCatalogueGenreBinding item; + + ViewHolder(ItemLibraryCatalogueGenreBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MEDIA_BY_GENRE, Constants.MEDIA_BY_GENRE); + bundle.putParcelable(Constants.GENRE_OBJECT, genres.get(getBindingAdapterPosition())); + + click.onGenreClick(bundle); + }); + } + } + + public void sort(String order) { + switch (order) { + case Constants.GENRE_ORDER_BY_NAME: + genres.sort(Comparator.comparing(Genre::getGenre)); + break; + case Constants.GENRE_ORDER_BY_RANDOM: + Collections.shuffle(genres); + break; + } + + notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GridTrackAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GridTrackAdapter.java new file mode 100644 index 0000000..0816e4f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/GridTrackAdapter.java @@ -0,0 +1,81 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHomeGridTrackBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.model.Chronology; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class GridTrackAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List items; + + public GridTrackAdapter(ClickCallback click) { + this.click = click; + this.items = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeGridTrackBinding view = ItemHomeGridTrackBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Chronology item = items.get(position); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), item.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.trackCoverImageView); + } + + @Override + public int getItemCount() { + return items.size(); + } + + public Chronology getItem(int position) { + return items.get(position); + } + + public void setItems(List items) { + this.items = items; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomeGridTrackBinding item; + + ViewHolder(ItemHomeGridTrackBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(items)); + bundle.putBoolean(Constants.MEDIA_CHRONOLOGY, true); + bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition()); + + click.onMediaClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/HomeSectorHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/HomeSectorHorizontalAdapter.java new file mode 100644 index 0000000..71855a7 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/HomeSectorHorizontalAdapter.java @@ -0,0 +1,76 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHorizontalHomeSectorBinding; +import com.cappielloantonio.tempo.databinding.ItemHorizontalPlaylistDialogTrackBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.model.HomeSector; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class HomeSectorHorizontalAdapter extends RecyclerView.Adapter { + private List sectors; + + public HomeSectorHorizontalAdapter() { + this.sectors = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalHomeSectorBinding view = ItemHorizontalHomeSectorBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + HomeSector sector = sectors.get(position); + + holder.item.homeSectorTitleCheckBox.setText(sector.getSectorTitle()); + holder.item.homeSectorTitleCheckBox.setChecked(sector.isVisible()); + } + + @Override + public int getItemCount() { + return sectors.size(); + } + + public List getItems() { + return this.sectors; + } + + public void setItems(List sectors) { + this.sectors = sectors; + notifyDataSetChanged(); + } + + public HomeSector getItem(int id) { + return sectors.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalHomeSectorBinding item; + + ViewHolder(ItemHorizontalHomeSectorBinding item) { + super(item.getRoot()); + + this.item = item; + + this.item.homeSectorTitleCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> onCheck(isChecked)); + } + + private void onCheck(boolean isChecked) { + sectors.get(getBindingAdapterPosition()).setVisible(isChecked); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/InternetRadioStationAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/InternetRadioStationAdapter.java new file mode 100644 index 0000000..b4bef70 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/InternetRadioStationAdapter.java @@ -0,0 +1,98 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHomeInternetRadioStationBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.Collections; +import java.util.List; + +@UnstableApi +public class InternetRadioStationAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List internetRadioStations; + + public InternetRadioStationAdapter(ClickCallback click) { + this.click = click; + this.internetRadioStations = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeInternetRadioStationBinding view = ItemHomeInternetRadioStationBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + InternetRadioStation internetRadioStation = internetRadioStations.get(position); + + holder.item.internetRadioStationTitleTextView.setText(internetRadioStation.getName()); + holder.item.internetRadioStationSubtitleTextView.setText(internetRadioStation.getStreamUrl()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), internetRadioStation.getStreamUrl(), CustomGlideRequest.ResourceType.Radio) + .build() + .into(holder.item.internetRadioStationCoverImageView); + } + + @Override + public int getItemCount() { + return internetRadioStations.size(); + } + + public void setItems(List internetRadioStations) { + this.internetRadioStations = internetRadioStations; + notifyDataSetChanged(); + } + + public InternetRadioStation getItem(int position) { + return internetRadioStations.get(position); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomeInternetRadioStationBinding item; + + ViewHolder(ItemHomeInternetRadioStationBinding item) { + super(item.getRoot()); + + this.item = item; + + item.internetRadioStationTitleTextView.setSelected(true); + item.internetRadioStationSubtitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.internetRadioStationMoreButton.setOnClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.INTERNET_RADIO_STATION_OBJECT, internetRadioStations.get(getBindingAdapterPosition())); + + click.onInternetRadioStationClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.INTERNET_RADIO_STATION_OBJECT, internetRadioStations.get(getBindingAdapterPosition())); + + click.onInternetRadioStationLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java new file mode 100644 index 0000000..f186bee --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java @@ -0,0 +1,111 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryMusicDirectoryBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@UnstableApi +public class MusicDirectoryAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List children; + + public MusicDirectoryAdapter(ClickCallback click) { + this.click = click; + this.children = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryMusicDirectoryBinding view = ItemLibraryMusicDirectoryBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Child child = children.get(position); + + holder.item.musicDirectoryTitleTextView.setText(child.getTitle()); + + CustomGlideRequest.ResourceType type = child.isDir() + ? CustomGlideRequest.ResourceType.Directory + : CustomGlideRequest.ResourceType.Song; + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), child.getCoverArtId(), type) + .build() + .into(holder.item.musicDirectoryCoverImageView); + + holder.item.musicDirectoryMoreButton.setVisibility(child.isDir() ? View.VISIBLE : View.INVISIBLE); + holder.item.musicDirectoryPlayButton.setVisibility(child.isDir() ? View.INVISIBLE : View.VISIBLE); + } + + @Override + public int getItemCount() { + return children.size(); + } + + public void setItems(List children) { + this.children = children != null ? children : Collections.emptyList(); + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryMusicDirectoryBinding item; + + ViewHolder(ItemLibraryMusicDirectoryBinding item) { + super(item.getRoot()); + + this.item = item; + + item.musicDirectoryTitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.musicDirectoryMoreButton.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + + if (children.get(getBindingAdapterPosition()).isDir()) { + bundle.putString(Constants.MUSIC_DIRECTORY_ID, children.get(getBindingAdapterPosition()).getId()); + click.onMusicDirectoryClick(bundle); + } else { + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(children)); + bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition()); + click.onMediaClick(bundle); + } + } + + private boolean onLongClick() { + if (!children.get(getBindingAdapterPosition()).isDir()) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, children.get(getBindingAdapterPosition())); + + click.onMediaLongClick(bundle); + + return true; + } else { + return false; + } + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicFolderAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicFolderAdapter.java new file mode 100644 index 0000000..c5435be --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicFolderAdapter.java @@ -0,0 +1,85 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryMusicFolderBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.MusicFolder; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.Collections; +import java.util.List; + +@UnstableApi +public class MusicFolderAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List musicFolders; + + public MusicFolderAdapter(ClickCallback click) { + this.click = click; + this.musicFolders = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryMusicFolderBinding view = ItemLibraryMusicFolderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + MusicFolder musicFolder = musicFolders.get(position); + + holder.item.musicFolderTitleTextView.setText(musicFolder.getName()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), musicFolder.getName(), CustomGlideRequest.ResourceType.Folder) + .build() + .into(holder.item.musicFolderCoverImageView); + } + + @Override + public int getItemCount() { + return musicFolders.size(); + } + + public void setItems(List musicFolders) { + this.musicFolders = musicFolders; + notifyDataSetChanged(); + } + + public MusicFolder getItem(int position) { + return musicFolders.get(position); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryMusicFolderBinding item; + + ViewHolder(ItemLibraryMusicFolderBinding item) { + super(item.getRoot()); + + this.item = item; + + item.musicFolderTitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + + item.musicFolderMoreButton.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.MUSIC_FOLDER_OBJECT, musicFolders.get(getBindingAdapterPosition())); + click.onMusicFolderClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java new file mode 100644 index 0000000..77402f6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java @@ -0,0 +1,87 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLibraryMusicIndexBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.helper.recyclerview.FastScrollbar; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Artist; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +@UnstableApi +public class MusicIndexAdapter extends RecyclerView.Adapter implements FastScrollbar.BubbleTextGetter { + private final ClickCallback click; + + private List artists; + + public MusicIndexAdapter(ClickCallback click) { + this.click = click; + this.artists = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLibraryMusicIndexBinding view = ItemLibraryMusicIndexBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Artist artist = artists.get(position); + + holder.item.musicIndexTitleTextView.setText(artist.getName()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), artist.getName(), CustomGlideRequest.ResourceType.Directory) + .build() + .into(holder.item.musicIndexCoverImageView); + } + + @Override + public int getItemCount() { + return artists.size(); + } + + public void setItems(List artists) { + this.artists = artists; + notifyDataSetChanged(); + } + + @Override + public String getTextToShowInBubble(int pos) { + return artists != null && !artists.isEmpty() ? Character.toString(Objects.requireNonNull(artists.get(pos).getName().toUpperCase()).charAt(0)) : null; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLibraryMusicIndexBinding item; + + ViewHolder(ItemLibraryMusicIndexBinding item) { + super(item.getRoot()); + + this.item = item; + + item.musicIndexTitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + item.musicIndexMoreButton.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MUSIC_DIRECTORY_ID, artists.get(getBindingAdapterPosition()).getId()); + click.onMusicIndexClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlayerSongQueueAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlayerSongQueueAdapter.java new file mode 100644 index 0000000..4db3a57 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlayerSongQueueAdapter.java @@ -0,0 +1,249 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.appcompat.content.res.AppCompatResources; +import androidx.media3.session.MediaBrowser; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.RequestBuilder; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemPlayerQueueSongBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.MediaIndexCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +public class PlayerSongQueueAdapter extends RecyclerView.Adapter { + private static final String TAG = "PlayerSongQueueAdapter"; + private final ClickCallback click; + + private ListenableFuture mediaBrowserListenableFuture; + private List songs; + + private String currentPlayingId; + private boolean isPlaying; + private List currentPlayingPositions = Collections.emptyList(); + + public PlayerSongQueueAdapter(ClickCallback click) { + this.click = click; + this.songs = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemPlayerQueueSongBinding view = ItemPlayerQueueSongBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Child song = songs.get(holder.getLayoutPosition()); + + holder.item.queueSongTitleTextView.setText(song.getTitle()); + holder.item.queueSongSubtitleTextView.setText( + holder.itemView.getContext().getString( + R.string.song_subtitle_formatter, + song.getArtist(), + MusicUtil.getReadableDurationString(song.getDuration(), false), + MusicUtil.getReadableAudioQualityString(song) + ) + ); + + RequestBuilder thumbnail = CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .sizeMultiplier(0.1f); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .thumbnail(thumbnail) + .into(holder.item.queueSongCoverImageView); + + MediaManager.getCurrentIndex(mediaBrowserListenableFuture, new MediaIndexCallback() { + @Override + public void onRecovery(int index) { + if (holder.getLayoutPosition() < index) { + holder.item.queueSongTitleTextView.setAlpha(0.2f); + holder.item.queueSongSubtitleTextView.setAlpha(0.2f); + holder.item.ratingIndicatorImageView.setAlpha(0.2f); + } else { + holder.item.queueSongTitleTextView.setAlpha(1.0f); + holder.item.queueSongSubtitleTextView.setAlpha(1.0f); + holder.item.ratingIndicatorImageView.setAlpha(1.0f); + } + } + }); + + if (Preferences.showItemRating()) { + if (song.getStarred() == null && song.getUserRating() == null) { + holder.item.ratingIndicatorImageView.setVisibility(View.GONE); + } + + holder.item.preferredIcon.setVisibility(song.getStarred() != null ? View.VISIBLE : View.GONE); + holder.item.ratingBarLayout.setVisibility(song.getUserRating() != null ? View.VISIBLE : View.GONE); + + if (song.getUserRating() != null) { + holder.item.oneStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 1 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.twoStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 2 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.threeStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 3 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.fourStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 4 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.fiveStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 5 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + } + } else { + holder.item.ratingIndicatorImageView.setVisibility(View.GONE); + } + holder.itemView.setOnClickListener(v -> { + mediaBrowserListenableFuture.addListener(() -> { + try { + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + int pos = holder.getBindingAdapterPosition(); + Child s = songs.get(pos); + if (currentPlayingId != null && currentPlayingId.equals(s.getId())) { + if (isPlaying) { + mediaBrowser.pause(); + } else { + mediaBrowser.play(); + } + } else { + mediaBrowser.seekTo(pos, 0); + mediaBrowser.play(); + } + } catch (Exception e) { + Log.w(TAG, "Error obtaining MediaBrowser", e); + } + }, MoreExecutors.directExecutor()); + + }); + bindPlaybackState(holder, song); + } + + private void bindPlaybackState(@NonNull PlayerSongQueueAdapter.ViewHolder holder, @NonNull Child song) { + boolean isCurrent = currentPlayingId != null && currentPlayingId.equals(song.getId()); + + if (isCurrent) { + holder.item.playPauseIcon.setVisibility(View.VISIBLE); + if (isPlaying) { + holder.item.playPauseIcon.setImageResource(R.drawable.ic_pause); + } else { + holder.item.playPauseIcon.setImageResource(R.drawable.ic_play); + } + holder.item.coverArtOverlay.setVisibility(View.VISIBLE); + } else { + holder.item.playPauseIcon.setVisibility(View.INVISIBLE); + holder.item.coverArtOverlay.setVisibility(View.INVISIBLE); + } + } + + public List getItems() { + return this.songs; + } + + public void setItems(List songs) { + this.songs = songs; + notifyDataSetChanged(); + } + + @Override + public int getItemCount() { + if (songs == null) { + return 0; + } + return songs.size(); + } + + @Override + public long getItemId(int position) { + return position; + } + + public void setMediaBrowserListenableFuture(ListenableFuture mediaBrowserListenableFuture) { + this.mediaBrowserListenableFuture = mediaBrowserListenableFuture; + } + + public void setPlaybackState(String mediaId, boolean playing) { + String oldId = this.currentPlayingId; + boolean oldPlaying = this.isPlaying; + List oldPositions = currentPlayingPositions; + + this.currentPlayingId = mediaId; + this.isPlaying = playing; + + if (Objects.equals(oldId, mediaId) && oldPlaying == playing) { + List newPositionsCheck = mediaId != null ? findPositionsById(mediaId) : Collections.emptyList(); + if (oldPositions.equals(newPositionsCheck)) { + return; + } + } + + currentPlayingPositions = mediaId != null ? findPositionsById(mediaId) : Collections.emptyList(); + + for (int pos : oldPositions) { + if (pos >= 0 && pos < songs.size()) { + notifyItemChanged(pos, "payload_playback"); + } + } + for (int pos : currentPlayingPositions) { + if (!oldPositions.contains(pos) && pos >= 0 && pos < songs.size()) { + notifyItemChanged(pos, "payload_playback"); + } + } + } + + private List findPositionsById(String id) { + if (id == null) return Collections.emptyList(); + List positions = new ArrayList<>(); + for (int i = 0; i < songs.size(); i++) { + if (id.equals(songs.get(i).getId())) { + positions.add(i); + } + } + return positions; + } + + public Child getItem(int id) { + return songs.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemPlayerQueueSongBinding item; + + ViewHolder(ItemPlayerQueueSongBinding item) { + super(item.getRoot()); + + this.item = item; + + item.queueSongTitleTextView.setSelected(true); + item.queueSongSubtitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs)); + bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition()); + + click.onMediaClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogHorizontalAdapter.java new file mode 100644 index 0000000..67bce7a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogHorizontalAdapter.java @@ -0,0 +1,79 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemHorizontalPlaylistDialogBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class PlaylistDialogHorizontalAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List playlists; + + public PlaylistDialogHorizontalAdapter(ClickCallback click) { + this.click = click; + this.playlists = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalPlaylistDialogBinding view = ItemHorizontalPlaylistDialogBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Playlist playlist = playlists.get(position); + + holder.item.playlistDialogTitleTextView.setText(playlist.getName()); + holder.item.playlistDialogCountTextView.setText(holder.itemView.getContext().getString(R.string.playlist_counted_tracks, playlist.getSongCount(), MusicUtil.getReadableDurationString(playlist.getDuration(), false))); + } + + @Override + public int getItemCount() { + return playlists.size(); + } + + public void setItems(List playlists) { + this.playlists = playlists; + notifyDataSetChanged(); + } + + public Playlist getItem(int id) { + return playlists.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalPlaylistDialogBinding item; + + ViewHolder(ItemHorizontalPlaylistDialogBinding item) { + super(item.getRoot()); + + this.item = item; + + item.playlistDialogTitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlists.get(getBindingAdapterPosition())); + + click.onPlaylistClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogSongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogSongHorizontalAdapter.java new file mode 100644 index 0000000..98f8541 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistDialogSongHorizontalAdapter.java @@ -0,0 +1,74 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHorizontalPlaylistDialogTrackBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class PlaylistDialogSongHorizontalAdapter extends RecyclerView.Adapter { + private List songs; + + public PlaylistDialogSongHorizontalAdapter() { + this.songs = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalPlaylistDialogTrackBinding view = ItemHorizontalPlaylistDialogTrackBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Child song = songs.get(position); + + holder.item.playlistDialogSongTitleTextView.setText(song.getTitle()); + holder.item.playlistDialogAlbumArtistTextView.setText(song.getArtist()); + holder.item.playlistDialogSongDurationTextView.setText(MusicUtil.getReadableDurationString(song.getDuration(), false)); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.playlistDialogSongCoverImageView); + } + + @Override + public int getItemCount() { + return songs.size(); + } + + public List getItems() { + return this.songs; + } + + public void setItems(List songs) { + this.songs = songs; + notifyDataSetChanged(); + } + + public Child getItem(int id) { + return songs.get(id); + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalPlaylistDialogTrackBinding item; + + ViewHolder(ItemHorizontalPlaylistDialogTrackBinding item) { + super(item.getRoot()); + + this.item = item; + + item.playlistDialogSongTitleTextView.setSelected(true); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistHorizontalAdapter.java new file mode 100644 index 0000000..baa4005 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PlaylistHorizontalAdapter.java @@ -0,0 +1,151 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemHorizontalPlaylistBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class PlaylistHorizontalAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + + private List playlists; + private List playlistsFull; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(playlistsFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + + for (Playlist item : playlistsFull) { + if (item.getName().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + playlists.clear(); + if (results.count > 0) playlists.addAll((List) results.values); + notifyDataSetChanged(); + } + }; + + public PlaylistHorizontalAdapter(ClickCallback click) { + this.click = click; + this.playlists = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalPlaylistBinding view = ItemHorizontalPlaylistBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Playlist playlist = playlists.get(position); + + holder.item.playlistTitleTextView.setText(playlist.getName()); + holder.item.playlistSubtitleTextView.setText(holder.itemView.getContext().getString(R.string.playlist_counted_tracks, playlist.getSongCount(), MusicUtil.getReadableDurationString(playlist.getDuration(), false))); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), playlist.getCoverArtId(), CustomGlideRequest.ResourceType.Playlist) + .build() + .into(holder.item.playlistCoverImageView); + } + + @Override + public int getItemCount() { + return playlists.size(); + } + + public Playlist getItem(int id) { + return playlists.get(id); + } + + public void setItems(List playlists) { + this.playlists = playlists; + this.playlistsFull = new ArrayList<>(playlists); + notifyDataSetChanged(); + } + + @Override + public Filter getFilter() { + return filtering; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalPlaylistBinding item; + + ViewHolder(ItemHorizontalPlaylistBinding item) { + super(item.getRoot()); + + this.item = item; + item.playlistTitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.playlistMoreButton.setOnClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlists.get(getBindingAdapterPosition())); + + click.onPlaylistClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlists.get(getBindingAdapterPosition())); + + click.onPlaylistLongClick(bundle); + + return true; + } + } + + public void sort(String order) { + switch (order) { + case Constants.PLAYLIST_ORDER_BY_NAME: + playlists.sort(Comparator.comparing(Playlist::getName)); + break; + case Constants.PLAYLIST_ORDER_BY_RANDOM: + Collections.shuffle(playlists); + break; + } + + notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelCatalogueAdapter.java new file mode 100644 index 0000000..3eb6bc0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelCatalogueAdapter.java @@ -0,0 +1,143 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHomeCataloguePodcastChannelBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class PodcastChannelCatalogueAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(podcastChannelsFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + + for (PodcastChannel item : podcastChannelsFull) { + if (item.getTitle().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + podcastChannels.clear(); + if (results.count > 0) podcastChannels.addAll((List) results.values); + notifyDataSetChanged(); + } + }; + + private List podcastChannels; + private List podcastChannelsFull; + + public PodcastChannelCatalogueAdapter(ClickCallback click) { + this.click = click; + this.podcastChannels = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeCataloguePodcastChannelBinding view = ItemHomeCataloguePodcastChannelBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + PodcastChannel podcastChannel = podcastChannels.get(position); + + holder.item.podcastChannelTitleLabel.setText(podcastChannel.getTitle()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), podcastChannel.getCoverArtId(), CustomGlideRequest.ResourceType.Podcast) + .build() + .into(holder.item.podcastChannelCatalogueCoverImageView); + } + + @Override + public int getItemCount() { + return podcastChannels.size(); + } + + public PodcastChannel getItem(int position) { + return podcastChannels.get(position); + } + + public void setItems(List podcastChannels) { + this.podcastChannels = podcastChannels; + this.podcastChannelsFull = new ArrayList<>(podcastChannels); + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public Filter getFilter() { + return filtering; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomeCataloguePodcastChannelBinding item; + + ViewHolder(ItemHomeCataloguePodcastChannelBinding item) { + super(item.getRoot()); + + this.item = item; + + item.podcastChannelTitleLabel.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_CHANNEL_OBJECT, podcastChannels.get(getBindingAdapterPosition())); + + click.onPodcastChannelClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_CHANNEL_OBJECT, podcastChannels.get(getBindingAdapterPosition())); + + click.onPodcastChannelLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelHorizontalAdapter.java new file mode 100644 index 0000000..dfdfab3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastChannelHorizontalAdapter.java @@ -0,0 +1,97 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHorizontalPodcastChannelBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class PodcastChannelHorizontalAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List podcastChannels; + + public PodcastChannelHorizontalAdapter(ClickCallback click) { + this.click = click; + this.podcastChannels = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalPodcastChannelBinding view = ItemHorizontalPodcastChannelBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + PodcastChannel podcastChannel = podcastChannels.get(position); + + holder.item.podcastChannelTitleTextView.setText(podcastChannel.getTitle()); + holder.item.podcastChannelDescriptionTextView.setText(MusicUtil.getReadableString(podcastChannel.getDescription())); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), podcastChannel.getCoverArtId(), CustomGlideRequest.ResourceType.Podcast) + .build() + .into(holder.item.podcastChannelCoverImageView); + } + + @Override + public int getItemCount() { + return podcastChannels.size(); + } + + public void setItems(List podcastChannels) { + this.podcastChannels = podcastChannels; + notifyDataSetChanged(); + } + + public PodcastChannel getItem(int id) { + return podcastChannels.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalPodcastChannelBinding item; + + ViewHolder(ItemHorizontalPodcastChannelBinding item) { + super(item.getRoot()); + + this.item = item; + + item.podcastChannelTitleTextView.setSelected(true); + item.podcastChannelDescriptionTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.podcastChannelMoreButton.setOnClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_CHANNEL_OBJECT, podcastChannels.get(getBindingAdapterPosition())); + + click.onPodcastChannelClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_CHANNEL_OBJECT, podcastChannels.get(getBindingAdapterPosition())); + + click.onPodcastChannelLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java new file mode 100644 index 0000000..79f9536 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java @@ -0,0 +1,150 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemHomePodcastEpisodeBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class PodcastEpisodeAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List podcastEpisodes; + private List podcastEpisodesFull; + + public PodcastEpisodeAdapter(ClickCallback click) { + this.click = click; + this.podcastEpisodes = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomePodcastEpisodeBinding view = ItemHomePodcastEpisodeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + PodcastEpisode podcastEpisode = podcastEpisodes.get(position); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM d"); + + holder.item.podcastTitleLabel.setText(podcastEpisode.getTitle()); + holder.item.podcastSubtitleLabel.setText(podcastEpisode.getArtist()); + holder.item.podcastReleasesAndDurationLabel.setText(holder.itemView.getContext().getString(R.string.podcast_release_date_duration_formatter, simpleDateFormat.format(podcastEpisode.getPublishDate()), MusicUtil.getReadablePodcastDurationString(podcastEpisode.getDuration()))); + holder.item.podcastDescriptionText.setText(MusicUtil.getReadableString(podcastEpisode.getDescription())); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), podcastEpisode.getCoverArtId(), CustomGlideRequest.ResourceType.Podcast) + .build() + .into(holder.item.podcastCoverImageView); + + holder.item.podcastPlayButton.setEnabled(podcastEpisode.getStatus().equals("completed")); + holder.item.podcastMoreButton.setVisibility(podcastEpisode.getStatus().equals("completed") ? View.VISIBLE : View.GONE); + holder.item.podcastDownloadRequestButton.setVisibility(podcastEpisode.getStatus().equals("completed") ? View.GONE : View.VISIBLE); + } + + @Override + public int getItemCount() { + return podcastEpisodes.size(); + } + + public void setItems(List podcastEpisodes) { + this.podcastEpisodesFull = podcastEpisodes; + this.podcastEpisodes = podcastEpisodesFull.stream().filter(podcastEpisode -> Objects.equals(podcastEpisode.getStatus(), "completed")).collect(Collectors.toList()); + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomePodcastEpisodeBinding item; + + ViewHolder(ItemHomePodcastEpisodeBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> openMore()); + + item.podcastPlayButton.setOnClickListener(v -> onClick()); + item.podcastMoreButton.setOnClickListener(v -> openMore()); + item.podcastDownloadRequestButton.setOnClickListener(v -> requestDownload()); + } + + public void onClick() { + PodcastEpisode podcastEpisode = podcastEpisodes.get(getBindingAdapterPosition()); + + if (podcastEpisode.getStatus().equals("completed")) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_OBJECT, podcastEpisodes.get(getBindingAdapterPosition())); + + click.onPodcastEpisodeClick(bundle); + } + } + + private boolean openMore() { + PodcastEpisode podcastEpisode = podcastEpisodes.get(getBindingAdapterPosition()); + + if (podcastEpisode.getStatus().equals("completed")) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_OBJECT, podcastEpisodes.get(getBindingAdapterPosition())); + + click.onPodcastEpisodeLongClick(bundle); + + return true; + } + + return false; + } + + public void requestDownload() { + PodcastEpisode podcastEpisode = podcastEpisodes.get(getBindingAdapterPosition()); + + if (!podcastEpisode.getStatus().equals("completed")) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.PODCAST_OBJECT, podcastEpisodes.get(getBindingAdapterPosition())); + + click.onPodcastEpisodeAltClick(bundle); + } + } + } + + public void sort(String order) { + switch (order) { + case Constants.PODCAST_FILTER_BY_DOWNLOAD: + podcastEpisodes = podcastEpisodesFull.stream().filter(podcastEpisode -> Objects.equals(podcastEpisode.getStatus(), "completed")).collect(Collectors.toList()); + break; + case Constants.PODCAST_FILTER_BY_ALL: + podcastEpisodes = podcastEpisodesFull; + break; + } + + notifyDataSetChanged(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ServerAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ServerAdapter.java new file mode 100644 index 0000000..c78c7ae --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ServerAdapter.java @@ -0,0 +1,86 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemLoginServerBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.model.Server; + +import java.util.ArrayList; +import java.util.List; + +public class ServerAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List servers; + + public ServerAdapter(ClickCallback click) { + this.click = click; + this.servers = new ArrayList<>(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLoginServerBinding view = ItemLoginServerBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Server server = servers.get(position); + + holder.item.serverNameTextView.setText(server.getServerName()); + holder.item.serverAddressTextView.setText(server.getAddress()); + } + + @Override + public int getItemCount() { + return servers.size(); + } + + public void setItems(List servers) { + this.servers = servers; + notifyDataSetChanged(); + } + + public Server getItem(int id) { + return servers.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemLoginServerBinding item; + + ViewHolder(ItemLoginServerBinding item) { + super(item.getRoot()); + + this.item = item; + + item.serverNameTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable("server_object", servers.get(getBindingAdapterPosition())); + + click.onServerClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable("server_object", servers.get(getBindingAdapterPosition())); + + click.onServerLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ShareHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ShareHorizontalAdapter.java new file mode 100644 index 0000000..213914f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/ShareHorizontalAdapter.java @@ -0,0 +1,99 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemHorizontalShareBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.UIUtil; + +import java.util.Collections; +import java.util.List; + +public class ShareHorizontalAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List shares; + + public ShareHorizontalAdapter(ClickCallback click) { + this.click = click; + this.shares = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalShareBinding view = ItemHorizontalShareBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Share share = shares.get(position); + + holder.item.shareTitleTextView.setText(share.getDescription()); + holder.item.shareSubtitleTextView.setText(holder.itemView.getContext().getString(R.string.share_subtitle_item, UIUtil.getReadableDate(share.getExpires()))); + + if (share.getEntries() != null && !share.getEntries().isEmpty()) CustomGlideRequest.Builder + .from(holder.itemView.getContext(), share.getEntries().get(0).getCoverArtId(), CustomGlideRequest.ResourceType.Album) + .build() + .into(holder.item.shareCoverImageView); + } + + @Override + public int getItemCount() { + return shares.size(); + } + + public void setItems(List shares) { + this.shares = shares; + notifyDataSetChanged(); + } + + public Share getItem(int id) { + return shares.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalShareBinding item; + + ViewHolder(ItemHorizontalShareBinding item) { + super(item.getRoot()); + + this.item = item; + + item.shareTitleTextView.setSelected(true); + item.shareSubtitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.shareButton.setOnClickListener(v -> onLongClick()); + } + + private void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.SHARE_OBJECT, shares.get(getBindingAdapterPosition())); + + click.onShareClick(bundle); + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.SHARE_OBJECT, shares.get(getBindingAdapterPosition())); + + click.onShareLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SimilarTrackAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SimilarTrackAdapter.java new file mode 100644 index 0000000..8c720c9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SimilarTrackAdapter.java @@ -0,0 +1,92 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHomeSimilarTrackBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; + +import java.util.Collections; +import java.util.List; + +public class SimilarTrackAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List songs; + + public SimilarTrackAdapter(ClickCallback click) { + this.click = click; + this.songs = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeSimilarTrackBinding view = ItemHomeSimilarTrackBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Child song = songs.get(position); + + holder.item.titleTrackLabel.setText(song.getTitle()); + + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.trackCoverImageView); + } + + @Override + public int getItemCount() { + return songs.size(); + } + + public Child getItem(int position) { + return songs.get(position); + } + + public void setItems(List songs) { + this.songs = songs; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomeSimilarTrackBinding item; + + ViewHolder(ItemHomeSimilarTrackBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition())); + bundle.putBoolean(Constants.MEDIA_MIX, true); + + click.onMediaClick(bundle); + } + + public boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition())); + + click.onMediaLongClick(bundle); + + return true; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java new file mode 100644 index 0000000..1d78f2e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java @@ -0,0 +1,386 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.app.Activity; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.appcompat.content.res.AppCompatResources; +import androidx.lifecycle.LifecycleOwner; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.ItemHorizontalTrackBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.DiscTitle; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.ExecutionException; + +@UnstableApi +public class SongHorizontalAdapter extends RecyclerView.Adapter implements Filterable { + private final ClickCallback click; + private final boolean showCoverArt; + private final boolean showAlbum; + private final AlbumID3 album; + + private List songsFull; + private List songs; + private String currentFilter; + + private String currentPlayingId; + private boolean isPlaying; + private List currentPlayingPositions = Collections.emptyList(); + private ListenableFuture mediaBrowserListenableFuture; + + private final Filter filtering = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + List filteredList = new ArrayList<>(); + + if (constraint == null || constraint.length() == 0) { + filteredList.addAll(songsFull); + } else { + String filterPattern = constraint.toString().toLowerCase().trim(); + currentFilter = filterPattern; + + for (Child item : songsFull) { + if (item.getTitle().toLowerCase().contains(filterPattern)) { + filteredList.add(item); + } + } + } + + FilterResults results = new FilterResults(); + results.values = filteredList; + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + songs = (List) results.values; + notifyDataSetChanged(); + + for (int pos : currentPlayingPositions) { + if (pos >= 0 && pos < songs.size()) { + notifyItemChanged(pos, "payload_playback"); + } + } + } + }; + + public SongHorizontalAdapter(LifecycleOwner lifecycleOwner, ClickCallback click, boolean showCoverArt, boolean showAlbum, AlbumID3 album) { + this.click = click; + this.showCoverArt = showCoverArt; + this.showAlbum = showAlbum; + this.songs = Collections.emptyList(); + this.songsFull = Collections.emptyList(); + this.currentFilter = ""; + this.album = album; + setHasStableIds(false); + + if (lifecycleOwner != null) { + MappingUtil.observeExternalAudioRefresh(lifecycleOwner, this::handleExternalAudioRefresh); + } + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHorizontalTrackBinding view = ItemHorizontalTrackBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull List payloads) { + if (!payloads.isEmpty() && payloads.contains("payload_playback")) { + bindPlaybackState(holder, songs.get(position)); + } else { + super.onBindViewHolder(holder, position, payloads); + } + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + Child song = songs.get(position); + + holder.item.searchResultSongTitleTextView.setText(song.getTitle()); + + holder.item.searchResultSongSubtitleTextView.setText( + holder.itemView.getContext().getString( + R.string.song_subtitle_formatter, + this.showAlbum ? + song.getAlbum() : + song.getArtist(), + MusicUtil.getReadableDurationString(song.getDuration(), false), + MusicUtil.getReadableAudioQualityString(song) + ) + ); + + holder.item.trackNumberTextView.setText(MusicUtil.getReadableTrackNumber(holder.itemView.getContext(), song.getTrack())); + + if (Preferences.getDownloadDirectoryUri() == null) { + if (DownloadUtil.getDownloadTracker(holder.itemView.getContext()).isDownloaded(song.getId())) { + holder.item.searchResultDownloadIndicatorImageView.setVisibility(View.VISIBLE); + } else { + holder.item.searchResultDownloadIndicatorImageView.setVisibility(View.GONE); + } + } else { + if (ExternalAudioReader.getUri(song) != null) { + holder.item.searchResultDownloadIndicatorImageView.setVisibility(View.VISIBLE); + } else { + holder.item.searchResultDownloadIndicatorImageView.setVisibility(View.GONE); + } + } + + if (showCoverArt) CustomGlideRequest.Builder + .from(holder.itemView.getContext(), song.getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(holder.item.songCoverImageView); + + holder.item.trackNumberTextView.setVisibility(showCoverArt ? View.INVISIBLE : View.VISIBLE); + holder.item.songCoverImageView.setVisibility(showCoverArt ? View.VISIBLE : View.INVISIBLE); + + if (!showCoverArt && + (position == 0 || + (position > 0 && songs.get(position - 1) != null && + songs.get(position - 1).getDiscNumber() != null && + songs.get(position).getDiscNumber() != null && + songs.get(position - 1).getDiscNumber() < songs.get(position).getDiscNumber() + ) + ) + ) { + holder.item.differentDiskDividerSector.setVisibility(View.VISIBLE); + + if (songs.get(position).getDiscNumber() != null && !Objects.requireNonNull(songs.get(position).getDiscNumber()).toString().isBlank()) { + holder.item.discTitleTextView.setText(holder.itemView.getContext().getString(R.string.disc_titleless, songs.get(position).getDiscNumber().toString())); + } + + if (album.getDiscTitles() != null) { + Optional discTitle = album.getDiscTitles().stream().filter(title -> Objects.equals(title.getDisc(), songs.get(position).getDiscNumber())).findFirst(); + + if (discTitle.isPresent() && discTitle.get().getDisc() != null && discTitle.get().getTitle() != null && !discTitle.get().getTitle().isEmpty()) { + holder.item.discTitleTextView.setText(holder.itemView.getContext().getString(R.string.disc_titlefull, discTitle.get().getDisc().toString() , discTitle.get().getTitle())); + } + } + } + + if (Preferences.showItemRating()) { + if (song.getStarred() == null && song.getUserRating() == null) { + holder.item.ratingIndicatorImageView.setVisibility(View.GONE); + } + + holder.item.preferredIcon.setVisibility(song.getStarred() != null ? View.VISIBLE : View.GONE); + holder.item.ratingBarLayout.setVisibility(song.getUserRating() != null ? View.VISIBLE : View.GONE); + + if (song.getUserRating() != null) { + holder.item.oneStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 1 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.twoStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 2 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.threeStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 3 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.fourStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 4 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + holder.item.fiveStarIcon.setImageDrawable(AppCompatResources.getDrawable(holder.itemView.getContext(), song.getUserRating() >= 5 ? R.drawable.ic_star : R.drawable.ic_star_outlined)); + } + } else { + holder.item.ratingIndicatorImageView.setVisibility(View.GONE); + } + + bindPlaybackState(holder, song); + } + + private void handleExternalAudioRefresh() { + if (Preferences.getDownloadDirectoryUri() != null) { + notifyDataSetChanged(); + } + } + + private void bindPlaybackState(@NonNull ViewHolder holder, @NonNull Child song) { + boolean isCurrent = currentPlayingId != null && currentPlayingId.equals(song.getId()); + + if (isCurrent) { + holder.item.playPauseIcon.setVisibility(View.VISIBLE); + if (isPlaying) { + holder.item.playPauseIcon.setImageResource(R.drawable.ic_pause); + } else { + holder.item.playPauseIcon.setImageResource(R.drawable.ic_play); + } + if (!showCoverArt) { + holder.item.trackNumberTextView.setVisibility(View.INVISIBLE); + } else { + holder.item.coverArtOverlay.setVisibility(View.VISIBLE); + } + } else { + holder.item.playPauseIcon.setVisibility(View.INVISIBLE); + if (!showCoverArt) { + holder.item.trackNumberTextView.setVisibility(View.VISIBLE); + } else { + holder.item.coverArtOverlay.setVisibility(View.INVISIBLE); + } + } + } + + @Override + public int getItemCount() { + return songs.size(); + } + + public void setItems(List songs) { + this.songsFull = songs != null ? songs : Collections.emptyList(); + filtering.filter(currentFilter); + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + public void setPlaybackState(String mediaId, boolean playing) { + String oldId = this.currentPlayingId; + boolean oldPlaying = this.isPlaying; + List oldPositions = currentPlayingPositions; + + this.currentPlayingId = mediaId; + this.isPlaying = playing; + + if (Objects.equals(oldId, mediaId) && oldPlaying == playing) { + List newPositionsCheck = mediaId != null ? findPositionsById(mediaId) : Collections.emptyList(); + if (oldPositions.equals(newPositionsCheck)) { + return; + } + } + + currentPlayingPositions = mediaId != null ? findPositionsById(mediaId) : Collections.emptyList(); + + for (int pos : oldPositions) { + if (pos >= 0 && pos < songs.size()) { + notifyItemChanged(pos, "payload_playback"); + } + } + for (int pos : currentPlayingPositions) { + if (!oldPositions.contains(pos) && pos >= 0 && pos < songs.size()) { + notifyItemChanged(pos, "payload_playback"); + } + } + } + + private List findPositionsById(String id) { + if (id == null) return Collections.emptyList(); + List positions = new ArrayList<>(); + for (int i = 0; i < songs.size(); i++) { + if (id.equals(songs.get(i).getId())) { + positions.add(i); + } + } + return positions; + } + + @Override + public Filter getFilter() { + return filtering; + } + + public Child getItem(int id) { + return songs.get(id); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHorizontalTrackBinding item; + + ViewHolder(ItemHorizontalTrackBinding item) { + super(item.getRoot()); + + this.item = item; + + item.searchResultSongTitleTextView.setSelected(true); + item.searchResultSongSubtitleTextView.setSelected(true); + + itemView.setOnClickListener(v -> onClick()); + itemView.setOnLongClickListener(v -> onLongClick()); + + item.searchResultSongMoreButton.setOnClickListener(v -> onLongClick()); + } + + public void onClick() { + int pos = getBindingAdapterPosition(); + Child tappedSong = songs.get(pos); + + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(MusicUtil.limitPlayableMedia(songs, getBindingAdapterPosition()))); + bundle.putInt(Constants.ITEM_POSITION, MusicUtil.getPlayableMediaPosition(songs, getBindingAdapterPosition())); + + if (tappedSong.getId().equals(currentPlayingId)) { + Log.i("SongHorizontalAdapter", "Tapping on currently playing song, toggling playback"); + try{ + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + Log.i("SongHorizontalAdapter", "MediaBrowser retrieved, isPlaying: " + isPlaying); + if (isPlaying) { + mediaBrowser.pause(); + } else { + mediaBrowser.play(); + } + } catch (ExecutionException | InterruptedException e) { + Log.e("SongHorizontalAdapter", "Error getting MediaBrowser", e); + } + } else { + click.onMediaClick(bundle); + } + } + + private boolean onLongClick() { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition())); + + click.onMediaLongClick(bundle); + + return true; + } + } + + public void sort(String order) { + switch (order) { + case Constants.MEDIA_BY_TITLE: + songs.sort(Comparator.comparing(Child::getTitle)); + break; + case Constants.MEDIA_MOST_RECENTLY_STARRED: + songs.sort(Comparator.comparing(Child::getStarred, Comparator.nullsLast(Comparator.reverseOrder()))); + break; + case Constants.MEDIA_LEAST_RECENTLY_STARRED: + songs.sort(Comparator.comparing(Child::getStarred, Comparator.nullsLast(Comparator.naturalOrder()))); + break; + } + + notifyDataSetChanged(); + } + + public void setMediaBrowserListenableFuture(ListenableFuture mediaBrowserListenableFuture) { + this.mediaBrowserListenableFuture = mediaBrowserListenableFuture; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/YearAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/YearAdapter.java new file mode 100644 index 0000000..1ecf37e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/YearAdapter.java @@ -0,0 +1,74 @@ +package com.cappielloantonio.tempo.ui.adapter; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.ItemHomeYearBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.Collections; +import java.util.List; + +public class YearAdapter extends RecyclerView.Adapter { + private final ClickCallback click; + + private List years; + + public YearAdapter(ClickCallback click) { + this.click = click; + this.years = Collections.emptyList(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeYearBinding view = ItemHomeYearBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + int year = years.get(position); + + holder.item.yearLabel.setText(Integer.toString(year)); + } + + @Override + public int getItemCount() { + return years.size(); + } + + public Integer getItem(int position) { + return years.get(position); + } + + public void setItems(List years) { + this.years = years; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + ItemHomeYearBinding item; + + ViewHolder(ItemHomeYearBinding item) { + super(item.getRoot()); + + this.item = item; + + itemView.setOnClickListener(v -> onClick()); + } + + public void onClick() { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MEDIA_BY_YEAR, Constants.MEDIA_BY_YEAR); + bundle.putInt("year_object", years.get(getBindingAdapterPosition())); + + click.onYearClick(bundle); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/BatteryOptimizationDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/BatteryOptimizationDialog.java new file mode 100644 index 0000000..110beac --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/BatteryOptimizationDialog.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.content.Intent; +import android.os.Bundle; +import android.provider.Settings; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogBatteryOptimizationBinding; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +@OptIn(markerClass = UnstableApi.class) +public class BatteryOptimizationDialog extends DialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogBatteryOptimizationBinding bind = DialogBatteryOptimizationBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(requireContext()) + .setView(bind.getRoot()) + .setTitle(R.string.activity_battery_optimizations_title) + .setPositiveButton(R.string.battery_optimization_positive_button, (dialog, listener) -> openPowerSettings()) + .setNeutralButton(R.string.battery_optimization_neutral_button, (dialog, listener) -> Preferences.dontAskForOptimization()) + .setNegativeButton(R.string.battery_optimization_negative_button, null) + .create(); + } + + private void openPowerSettings() { + Intent intent = new Intent(); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); + startActivity(intent); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ConnectionAlertDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ConnectionAlertDialog.java new file mode 100644 index 0000000..3650015 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ConnectionAlertDialog.java @@ -0,0 +1,51 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogConnectionAlertBinding; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +public class ConnectionAlertDialog extends DialogFragment { + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogConnectionAlertBinding bind = DialogConnectionAlertBinding.inflate(getLayoutInflater()); + + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.connection_alert_dialog_title) + .setPositiveButton(R.string.connection_alert_dialog_positive_button, (dialog, id) -> dialog.cancel()) + .setNegativeButton(R.string.connection_alert_dialog_negative_button, (dialog, id) -> dialog.cancel()); + + if (!Preferences.isDataSavingMode()) { + builder.setNeutralButton(R.string.connection_alert_dialog_neutral_button, (dialog, id) -> { + }); + } + + return builder.create(); + } + + @Override + public void onStart() { + super.onStart(); + + setButtonAction(); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { + Preferences.setDataSavingMode(true); + Objects.requireNonNull(getDialog()).dismiss(); + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java new file mode 100644 index 0000000..877831f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java @@ -0,0 +1,75 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Button; +import android.net.Uri; + +import androidx.documentfile.provider.DocumentFile; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogDeleteDownloadStorageBinding; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.ExternalDownloadMetadataStore; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +@OptIn(markerClass = UnstableApi.class) +public class DeleteDownloadStorageDialog extends DialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogDeleteDownloadStorageBinding bind = DialogDeleteDownloadStorageBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(requireContext()) + .setView(bind.getRoot()) + .setTitle(R.string.delete_download_storage_dialog_title) + .setPositiveButton(R.string.delete_download_storage_dialog_positive_button, null) + .setNegativeButton(R.string.delete_download_storage_dialog_negative_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).removeAll(); + } + + String uriString = Preferences.getDownloadDirectoryUri(); + if (uriString != null) { + DocumentFile directory = DocumentFile.fromTreeUri(requireContext(), Uri.parse(uriString)); + if (directory != null && directory.canWrite()) { + for (DocumentFile file : directory.listFiles()) { + file.delete(); + } + } + ExternalAudioReader.refreshCache(); + ExternalDownloadMetadataStore.clear(); + } + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + dialog.dismiss(); + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryDialog.java new file mode 100644 index 0000000..e781f44 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryDialog.java @@ -0,0 +1,61 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogDownloadDirectoryBinding; +import com.cappielloantonio.tempo.interfaces.DialogClickCallback; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +@OptIn(markerClass = UnstableApi.class) +public class DownloadDirectoryDialog extends DialogFragment { + private final DialogClickCallback dialogClickCallback; + + public DownloadDirectoryDialog(DialogClickCallback dialogClickCallback) { + this.dialogClickCallback = dialogClickCallback; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogDownloadDirectoryBinding bind = DialogDownloadDirectoryBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(requireContext()) + .setView(bind.getRoot()) + .setTitle(R.string.download_directory_dialog_title) + .setPositiveButton(R.string.download_directory_dialog_positive_button, null) + .setNegativeButton(R.string.download_directory_dialog_negative_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + dialogClickCallback.onPositiveClick(); + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + dialogClickCallback.onNegativeClick(); + dialog.dismiss(); + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryPickerDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryPickerDialog.java new file mode 100644 index 0000000..62dcd40 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadDirectoryPickerDialog.java @@ -0,0 +1,63 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.widget.Toast; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.Preferences; + +public class DownloadDirectoryPickerDialog extends DialogFragment { + + private ActivityResultLauncher folderPickerLauncher; + + @NonNull + @Override + public android.app.Dialog onCreateDialog(Bundle savedInstanceState) { + // Register launcher *before* button triggers + folderPickerLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == android.app.Activity.RESULT_OK) { + Intent data = result.getData(); + if (data != null) { + Uri uri = data.getData(); + if (uri != null) { + requireContext().getContentResolver().takePersistableUriPermission( + uri, + Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION + ); + + Preferences.setDownloadDirectoryUri(uri.toString()); + ExternalAudioReader.refreshCache(); + + Toast.makeText(requireContext(), "Download directory set:\n" + uri.toString(), Toast.LENGTH_LONG).show(); + } + } + } + } + ); + + return new MaterialAlertDialogBuilder(requireContext()) + .setTitle("Set Download Directory") + .setMessage("Choose a folder where downloaded songs will be stored.") + .setPositiveButton("Choose Folder", (dialog, which) -> { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION + | Intent.FLAG_GRANT_READ_URI_PERMISSION + | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + folderPickerLauncher.launch(intent); + }) + .setNegativeButton(android.R.string.cancel, null) + .create(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadStorageDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadStorageDialog.java new file mode 100644 index 0000000..766064e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DownloadStorageDialog.java @@ -0,0 +1,94 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogDownloadStorageBinding; +import com.cappielloantonio.tempo.interfaces.DialogClickCallback; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +@OptIn(markerClass = UnstableApi.class) +public class DownloadStorageDialog extends DialogFragment { + private final DialogClickCallback dialogClickCallback; + + public DownloadStorageDialog(DialogClickCallback dialogClickCallback) { + this.dialogClickCallback = dialogClickCallback; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogDownloadStorageBinding bind = DialogDownloadStorageBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.download_storage_dialog_title) + .setPositiveButton(R.string.download_storage_external_dialog_positive_button, null) + .setNegativeButton(R.string.download_storage_internal_dialog_negative_button, null) + .setNeutralButton(R.string.download_storage_directory_dialog_neutral_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + int currentPreference = Preferences.getDownloadStoragePreference(); + int newPreference = 1; + + if (currentPreference != newPreference) { + Preferences.setDownloadStoragePreference(newPreference); + DownloadUtil.getDownloadTracker(requireContext()).removeAll(); + dialogClickCallback.onPositiveClick(); + } + + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + int currentPreference = Preferences.getDownloadStoragePreference(); + int newPreference = 0; + + if (currentPreference != newPreference) { + Preferences.setDownloadStoragePreference(newPreference); + DownloadUtil.getDownloadTracker(requireContext()).removeAll(); + dialogClickCallback.onNegativeClick(); + } + + dialog.dismiss(); + }); + + Button neutralButton = dialog.getButton(Dialog.BUTTON_NEUTRAL); + neutralButton.setOnClickListener(v -> { + int currentPreference = Preferences.getDownloadStoragePreference(); + int newPreference = 2; + + if (currentPreference != newPreference) { + Preferences.setDownloadStoragePreference(newPreference); + DownloadUtil.getDownloadTracker(requireContext()).removeAll(); + dialogClickCallback.onNeutralClick(); + } + + dialog.dismiss(); + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/GithubTempoUpdateDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/GithubTempoUpdateDialog.java new file mode 100644 index 0000000..55e0701 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/GithubTempoUpdateDialog.java @@ -0,0 +1,73 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogGithubTempoUpdateBinding; +import com.cappielloantonio.tempo.github.models.LatestRelease; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +public class GithubTempoUpdateDialog extends DialogFragment { + private final LatestRelease latestRelease; + + public GithubTempoUpdateDialog(LatestRelease latestRelease) { + this.latestRelease = latestRelease; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogGithubTempoUpdateBinding bind = DialogGithubTempoUpdateBinding.inflate(getLayoutInflater()); + + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.github_update_dialog_title) + .setPositiveButton(R.string.github_update_dialog_positive_button, (dialog, id) -> { }) + .setNegativeButton(R.string.github_update_dialog_negative_button, (dialog, id) -> { }) + .setNeutralButton(R.string.github_update_dialog_neutral_button, (dialog, id) -> { }); + + return builder.create(); + } + + @Override + public void onStart() { + super.onStart(); + + setButtonAction(); + } + + private void setButtonAction() { + AlertDialog alertDialog = (AlertDialog) Objects.requireNonNull(getDialog()); + + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { + openLink(latestRelease.getHtmlUrl()); + Objects.requireNonNull(getDialog()).dismiss(); + }); + + alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(v -> { + Preferences.setTempusUpdateReminder(); + Objects.requireNonNull(getDialog()).dismiss(); + }); + + alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { + openLink(getString(R.string.support_url)); + Objects.requireNonNull(getDialog()).dismiss(); + }); + } + + private void openLink(String link) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(link)); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/HomeRearrangementDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/HomeRearrangementDialog.java new file mode 100644 index 0000000..8ed67e4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/HomeRearrangementDialog.java @@ -0,0 +1,115 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogHomeRearrangementBinding; +import com.cappielloantonio.tempo.ui.adapter.HomeSectorHorizontalAdapter; +import com.cappielloantonio.tempo.viewmodel.HomeRearrangementViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Collections; +import java.util.Objects; + +public class HomeRearrangementDialog extends DialogFragment { + private DialogHomeRearrangementBinding bind; + private HomeRearrangementViewModel homeRearrangementViewModel; + private HomeSectorHorizontalAdapter homeSectorHorizontalAdapter; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogHomeRearrangementBinding.inflate(getLayoutInflater()); + + homeRearrangementViewModel = new ViewModelProvider(requireActivity()).get(HomeRearrangementViewModel.class); + + return new MaterialAlertDialogBuilder(requireContext()) + .setView(bind.getRoot()) + .setTitle(R.string.home_rearrangement_dialog_title) + .setPositiveButton(R.string.home_rearrangement_dialog_positive_button, (dialog, id) -> { }) + .setNeutralButton(R.string.home_rearrangement_dialog_neutral_button, (dialog, id) -> { }) + .setNegativeButton(R.string.home_rearrangement_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setButtonAction(); + initSectorView(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + homeRearrangementViewModel.closeDialog(); + bind = null; + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { + homeRearrangementViewModel.saveHomeSectorList(homeSectorHorizontalAdapter.getItems()); + dismiss(); + }); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { + homeRearrangementViewModel.resetHomeSectorList(); + dismiss(); + }); + } + + private void initSectorView() { + bind.homeSectorItemRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.homeSectorItemRecyclerView.setHasFixedSize(true); + + homeSectorHorizontalAdapter = new HomeSectorHorizontalAdapter(); + bind.homeSectorItemRecyclerView.setAdapter(homeSectorHorizontalAdapter); + homeSectorHorizontalAdapter.setItems(homeRearrangementViewModel.getHomeSectorList()); + + new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, 0) { + int originalPosition = -1; + int fromPosition = -1; + int toPosition = -1; + + @Override + public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { + if (originalPosition == -1) originalPosition = viewHolder.getBindingAdapterPosition(); + + fromPosition = viewHolder.getBindingAdapterPosition(); + toPosition = target.getBindingAdapterPosition(); + + Collections.swap(homeSectorHorizontalAdapter.getItems(), fromPosition, toPosition); + Objects.requireNonNull(recyclerView.getAdapter()).notifyItemMoved(fromPosition, toPosition); + + return false; + } + + @Override + public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { + super.clearView(recyclerView, viewHolder); + + homeRearrangementViewModel.orderSectorLiveListAfterSwap(homeSectorHorizontalAdapter.getItems()); + + originalPosition = -1; + fromPosition = -1; + toPosition = -1; + } + + @Override + public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { + + } + } + ).attachToRecyclerView(bind.homeSectorItemRecyclerView); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java new file mode 100644 index 0000000..a684251 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java @@ -0,0 +1,109 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.view.View; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogPlaylistChooserBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.ui.adapter.PlaylistDialogHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.PlaylistChooserViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +public class PlaylistChooserDialog extends DialogFragment implements ClickCallback { + private DialogPlaylistChooserBinding bind; + private PlaylistChooserViewModel playlistChooserViewModel; + + private PlaylistDialogHorizontalAdapter playlistDialogHorizontalAdapter; + + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogPlaylistChooserBinding.inflate(getLayoutInflater()); + + playlistChooserViewModel = new ViewModelProvider(requireActivity()).get(PlaylistChooserViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.playlist_chooser_dialog_title) + .setNeutralButton(R.string.playlist_chooser_dialog_neutral_button, (dialog, id) -> { }) + .setNegativeButton(R.string.playlist_chooser_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + @Override + public void onStart() { + super.onStart(); + + initPlaylistView(); + setSongInfo(); + setButtonAction(); + } + + private void setSongInfo() { + playlistChooserViewModel.setSongsToAdd(requireArguments().getParcelableArrayList(Constants.TRACKS_OBJECT)); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog()); + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, playlistChooserViewModel.getSongsToAdd()); + + PlaylistEditorDialog dialog = new PlaylistEditorDialog(null); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + + Objects.requireNonNull(getDialog()).dismiss(); + }); + } + + private void initPlaylistView() { + bind.playlistDialogRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.playlistDialogRecyclerView.setHasFixedSize(true); + + playlistDialogHorizontalAdapter = new PlaylistDialogHorizontalAdapter(this); + bind.playlistDialogRecyclerView.setAdapter(playlistDialogHorizontalAdapter); + + playlistChooserViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists -> { + if (playlists != null) { + if (!playlists.isEmpty()) { + if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE); + if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE); + playlistDialogHorizontalAdapter.setItems(playlists); + } else { + if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE); + if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE); + } + } + }); + } + + @Override + public void onPlaylistClick(Bundle bundle) { + if (playlistChooserViewModel.getSongsToAdd() != null && !playlistChooserViewModel.getSongsToAdd().isEmpty()) { + Playlist playlist = bundle.getParcelable(Constants.PLAYLIST_OBJECT); + playlistChooserViewModel.addSongsToPlaylist(this, getDialog(), playlist.getId()); + } else { + Toast.makeText(requireContext(), R.string.playlist_chooser_dialog_toast_add_failure, Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistEditorDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistEditorDialog.java new file mode 100644 index 0000000..dea70d7 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistEditorDialog.java @@ -0,0 +1,195 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogPlaylistEditorBinding; +import com.cappielloantonio.tempo.interfaces.PlaylistCallback; +import com.cappielloantonio.tempo.ui.adapter.PlaylistDialogSongHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.PlaylistEditorViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Collections; +import java.util.Objects; + +public class PlaylistEditorDialog extends DialogFragment { + private DialogPlaylistEditorBinding bind; + private PlaylistEditorViewModel playlistEditorViewModel; + + private final PlaylistCallback playlistCallback; + + private String playlistName; + private PlaylistDialogSongHorizontalAdapter playlistDialogSongHorizontalAdapter; + + public PlaylistEditorDialog(PlaylistCallback playlistCallback) { + this.playlistCallback = playlistCallback; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogPlaylistEditorBinding.inflate(getLayoutInflater()); + + playlistEditorViewModel = new ViewModelProvider(requireActivity()).get(PlaylistEditorViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.playlist_editor_dialog_title) + .setPositiveButton(R.string.playlist_editor_dialog_positive_button, (dialog, id) -> { }) + .setNeutralButton(R.string.playlist_editor_dialog_neutral_button, (dialog, id) -> dialog.cancel()) + .setNegativeButton(R.string.playlist_editor_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setParameterInfo(); + setButtonAction(); + initSongsView(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setParameterInfo() { + if (requireArguments().getParcelableArrayList(Constants.TRACKS_OBJECT) != null) { + playlistEditorViewModel.setSongsToAdd(requireArguments().getParcelableArrayList(Constants.TRACKS_OBJECT)); + playlistEditorViewModel.setPlaylistToEdit(null); + } else if (requireArguments().getParcelable(Constants.PLAYLIST_OBJECT) != null) { + playlistEditorViewModel.setSongsToAdd(null); + playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT)); + + if (playlistEditorViewModel.getPlaylistToEdit() != null) { + bind.playlistNameTextView.setText(playlistEditorViewModel.getPlaylistToEdit().getName()); + } + } + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { + if (validateInput()) { + if (playlistEditorViewModel.getSongsToAdd() != null) { + playlistEditorViewModel.createPlaylist(playlistName); + } else if (playlistEditorViewModel.getPlaylistToEdit() != null) { + playlistEditorViewModel.updatePlaylist(playlistName); + } + + dialogDismiss(); + } + }); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> Toast.makeText(requireContext(), R.string.playlist_editor_dialog_action_delete_toast, Toast.LENGTH_SHORT).show()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnLongClickListener(v -> { + playlistEditorViewModel.deletePlaylist(); + dialogDismiss(); + return false; + }); + + bind.playlistShareButton.setOnClickListener(view -> { + playlistEditorViewModel.sharePlaylist().observe(requireActivity(), sharedPlaylist -> { + ClipboardManager clipboardManager = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText(getString(R.string.app_name), sharedPlaylist.getUrl()); + clipboardManager.setPrimaryClip(clipData); + }); + }); + + bind.playlistShareButton.setVisibility(Preferences.isSharingEnabled() ? View.VISIBLE : View.GONE); + } + + private void initSongsView() { + bind.playlistSongRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.playlistSongRecyclerView.setHasFixedSize(true); + + playlistDialogSongHorizontalAdapter = new PlaylistDialogSongHorizontalAdapter(); + bind.playlistSongRecyclerView.setAdapter(playlistDialogSongHorizontalAdapter); + + playlistEditorViewModel.getPlaylistSongLiveList().observe(requireActivity(), songs -> { + if (songs != null) playlistDialogSongHorizontalAdapter.setItems(songs); + }); + + new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT) { + int originalPosition = -1; + int fromPosition = -1; + int toPosition = -1; + + @Override + public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { + if (originalPosition == -1) + originalPosition = viewHolder.getBindingAdapterPosition(); + + fromPosition = viewHolder.getBindingAdapterPosition(); + toPosition = target.getBindingAdapterPosition(); + + Collections.swap(playlistDialogSongHorizontalAdapter.getItems(), fromPosition, toPosition); + Objects.requireNonNull(recyclerView.getAdapter()).notifyItemMoved(fromPosition, toPosition); + + return false; + } + + @Override + public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { + super.clearView(recyclerView, viewHolder); + + /* + * Qui vado a riscivere tutta la table Queue, quando teoricamente potrei solo swappare l'ordine degli elementi interessati + * Nel caso la coda contenesse parecchi brani, potrebbero verificarsi rallentamenti pesanti + */ + playlistEditorViewModel.orderPlaylistSongLiveListAfterSwap(playlistDialogSongHorizontalAdapter.getItems()); + + originalPosition = -1; + fromPosition = -1; + toPosition = -1; + } + + @Override + public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { + playlistEditorViewModel.removeFromPlaylistSongLiveList(viewHolder.getBindingAdapterPosition()); + Objects.requireNonNull(bind.playlistSongRecyclerView.getAdapter()).notifyItemRemoved(viewHolder.getBindingAdapterPosition()); + } + } + ).attachToRecyclerView(bind.playlistSongRecyclerView); + } + + private boolean validateInput() { + playlistName = Objects.requireNonNull(bind.playlistNameTextView.getText()).toString().trim(); + + if (TextUtils.isEmpty(playlistName)) { + bind.playlistNameTextView.setError(getString(R.string.error_required)); + return false; + } + + return true; + } + + private void dialogDismiss() { + Objects.requireNonNull(getDialog()).dismiss(); + if (playlistCallback != null) { + playlistCallback.onDismiss(); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PodcastChannelEditorDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PodcastChannelEditorDialog.java new file mode 100644 index 0000000..2226ab8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PodcastChannelEditorDialog.java @@ -0,0 +1,89 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.text.TextUtils; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogPodcastChannelEditorBinding; +import com.cappielloantonio.tempo.interfaces.PodcastCallback; +import com.cappielloantonio.tempo.viewmodel.PodcastChannelEditorViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +public class PodcastChannelEditorDialog extends DialogFragment { + private DialogPodcastChannelEditorBinding bind; + private PodcastChannelEditorViewModel podcastChannelEditorViewModel; + + private final PodcastCallback podcastCallback; + + private String channelUrl; + + public PodcastChannelEditorDialog(PodcastCallback podcastCallback) { + this.podcastCallback = podcastCallback; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogPodcastChannelEditorBinding.inflate(getLayoutInflater()); + + podcastChannelEditorViewModel = new ViewModelProvider(requireActivity()).get(PodcastChannelEditorViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.podcast_channel_editor_dialog_title) + .setPositiveButton(R.string.radio_editor_dialog_positive_button, (dialog, id) -> { }) + .setNegativeButton(R.string.radio_editor_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setButtonAction(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + if (validateInput()) { + podcastChannelEditorViewModel.createChannel(channelUrl); + dismissDialog(); + } + }); + } + } + + + private boolean validateInput() { + channelUrl = Objects.requireNonNull(bind.podcastChannelRssUrlNameTextView.getText()).toString().trim(); + + if (TextUtils.isEmpty(channelUrl)) { + bind.podcastChannelRssUrlNameTextView.setError(getString(R.string.error_required)); + return false; + } + + return true; + } + + private void dismissDialog() { + podcastCallback.onDismiss(); + Objects.requireNonNull(getDialog()).dismiss(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RadioEditorDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RadioEditorDialog.java new file mode 100644 index 0000000..b4aba96 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RadioEditorDialog.java @@ -0,0 +1,111 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogRadioEditorBinding; +import com.cappielloantonio.tempo.interfaces.RadioCallback; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.RadioEditorViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +public class RadioEditorDialog extends DialogFragment { + private DialogRadioEditorBinding bind; + private RadioEditorViewModel radioEditorViewModel; + + private final RadioCallback radioCallback; + + private String radioName; + private String radioStreamURL; + private String radioHomepageURL; + + public RadioEditorDialog(RadioCallback radioCallback) { + this.radioCallback = radioCallback; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogRadioEditorBinding.inflate(getLayoutInflater()); + + radioEditorViewModel = new ViewModelProvider(requireActivity()).get(RadioEditorViewModel.class); + + return new MaterialAlertDialogBuilder(requireContext()) + .setView(bind.getRoot()) + .setTitle(R.string.radio_editor_dialog_title) + .setPositiveButton(R.string.radio_editor_dialog_positive_button, (dialog, id) -> { + if (validateInput()) { + if (radioEditorViewModel.getRadioToEdit() == null) { + radioEditorViewModel.createRadio(radioName, radioStreamURL, radioHomepageURL.isEmpty() ? null : radioHomepageURL); + } else { + radioEditorViewModel.updateRadio(radioName, radioStreamURL, radioHomepageURL.isEmpty() ? null : radioHomepageURL); + } + dismissDialog(); + } + }) + .setNeutralButton(R.string.radio_editor_dialog_neutral_button, (dialog, id) -> { + radioEditorViewModel.deleteRadio(); + dismissDialog(); + }) + .setNegativeButton(R.string.radio_editor_dialog_negative_button, (dialog, id) -> { + dialog.cancel(); + }) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + setParameterInfo(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setParameterInfo() { + if (getArguments() != null && getArguments().getParcelable(Constants.INTERNET_RADIO_STATION_OBJECT) != null) { + InternetRadioStation toEdit = requireArguments().getParcelable(Constants.INTERNET_RADIO_STATION_OBJECT); + + radioEditorViewModel.setRadioToEdit(toEdit); + + bind.internetRadioStationNameTextView.setText(toEdit.getName()); + bind.internetRadioStationStreamUrlTextView.setText(toEdit.getStreamUrl()); + bind.internetRadioStationHomepageUrlTextView.setText(toEdit.getHomePageUrl()); + } + } + + private boolean validateInput() { + radioName = Objects.requireNonNull(bind.internetRadioStationNameTextView.getText()).toString().trim(); + radioStreamURL = Objects.requireNonNull(bind.internetRadioStationStreamUrlTextView.getText()).toString().trim(); + radioHomepageURL = Objects.requireNonNull(bind.internetRadioStationHomepageUrlTextView.getText()).toString().trim(); + + if (TextUtils.isEmpty(radioName)) { + bind.internetRadioStationNameTextView.setError(getString(R.string.error_required)); + return false; + } + + if (TextUtils.isEmpty(radioStreamURL)) { + bind.internetRadioStationStreamUrlTextView.setError(getString(R.string.error_required)); + return false; + } + + return true; + } + + private void dismissDialog() { + radioCallback.onDismiss(); + Objects.requireNonNull(getDialog()).dismiss(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RatingDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RatingDialog.java new file mode 100644 index 0000000..a2d1600 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/RatingDialog.java @@ -0,0 +1,75 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogRatingBinding; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.RatingViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +public class RatingDialog extends DialogFragment { + private static final String TAG = "ServerSignupDialog"; + + private DialogRatingBinding bind; + private RatingViewModel ratingViewModel; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogRatingBinding.inflate(getLayoutInflater()); + ratingViewModel = new ViewModelProvider(requireActivity()).get(RatingViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.rating_dialog_title) + .setNegativeButton(R.string.rating_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .setPositiveButton(R.string.rating_dialog_positive_button, (dialog, id) -> ratingViewModel.rate((int) bind.ratingBar.getRating())) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setElementInfo(); + setRating(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setElementInfo() { + if (requireArguments().getParcelable(Constants.TRACK_OBJECT) != null) { + ratingViewModel.setSong(requireArguments().getParcelable(Constants.TRACK_OBJECT)); + } else if (requireArguments().getParcelable(Constants.ALBUM_OBJECT) != null) { + ratingViewModel.setAlbum(requireArguments().getParcelable(Constants.ALBUM_OBJECT)); + } else if (requireArguments().getParcelable(Constants.ARTIST_OBJECT) != null) { + ratingViewModel.setArtist(requireArguments().getParcelable(Constants.ARTIST_OBJECT)); + } + } + + private void setRating() { + if (ratingViewModel.getSong() != null) { + ratingViewModel.getLiveSong().observe(this, song -> { + bind.ratingBar.setRating(song.getUserRating() != null ? song.getUserRating() : 0); + }); + } else if (ratingViewModel.getAlbum() != null) { + ratingViewModel.getLiveAlbum().observe(this, album -> { + if (album != null) { + bind.ratingBar.setRating(album.getUserRating() != null ? album.getUserRating() : 0); + } + }); + } else if (ratingViewModel.getArtist() != null) { + ratingViewModel.getLiveArtist().observe(this, artist -> bind.ratingBar.setRating(/*artist.getRating()*/ 0)); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerSignupDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerSignupDialog.java new file mode 100644 index 0000000..93381d3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerSignupDialog.java @@ -0,0 +1,142 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogServerSignupBinding; +import com.cappielloantonio.tempo.model.Server; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.viewmodel.LoginViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; +import java.util.UUID; + +public class ServerSignupDialog extends DialogFragment { + private static final String TAG = "ServerSignupDialog"; + + private DialogServerSignupBinding bind; + private LoginViewModel loginViewModel; + + private String serverName; + private String username; + private String password; + private String server; + private String localAddress; + private boolean lowSecurity = false; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogServerSignupBinding.inflate(getLayoutInflater()); + + loginViewModel = new ViewModelProvider(requireActivity()).get(LoginViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.server_signup_dialog_title) + .setNeutralButton(R.string.server_signup_dialog_neutral_button, (dialog, id) -> { }) + .setPositiveButton(R.string.server_signup_dialog_positive_button, (dialog, id) -> { }) + .setNegativeButton(R.string.server_signup_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setServerInfo(); + setButtonAction(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setServerInfo() { + if (getArguments() != null) { + loginViewModel.setServerToEdit(requireArguments().getParcelable("server_object")); + + if (loginViewModel.getServerToEdit() != null) { + bind.serverNameTextView.setText(loginViewModel.getServerToEdit().getServerName()); + bind.usernameTextView.setText(loginViewModel.getServerToEdit().getUsername()); + bind.passwordTextView.setText(""); + bind.serverTextView.setText(loginViewModel.getServerToEdit().getAddress()); + bind.localAddressTextView.setText(loginViewModel.getServerToEdit().getLocalAddress()); + bind.lowSecurityCheckbox.setChecked(loginViewModel.getServerToEdit().isLowSecurity()); + } + } else { + loginViewModel.setServerToEdit(null); + } + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { + if (validateInput()) { + saveServerPreference(); + Objects.requireNonNull(getDialog()).dismiss(); + } + }); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> Toast.makeText(requireContext(), R.string.server_signup_dialog_action_delete_toast, Toast.LENGTH_SHORT).show()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnLongClickListener(v -> { + loginViewModel.deleteServer(null); + Objects.requireNonNull(getDialog()).dismiss(); + return true; + }); + } + + private boolean validateInput() { + serverName = Objects.requireNonNull(bind.serverNameTextView.getText()).toString().trim(); + username = Objects.requireNonNull(bind.usernameTextView.getText()).toString().trim(); + password = bind.lowSecurityCheckbox.isChecked() ? MusicUtil.passwordHexEncoding(Objects.requireNonNull(bind.passwordTextView.getText()).toString()) : Objects.requireNonNull(bind.passwordTextView.getText()).toString(); + server = bind.serverTextView.getText() != null && !bind.serverTextView.getText().toString().trim().isBlank() ? bind.serverTextView.getText().toString().trim() : null; + localAddress = bind.localAddressTextView.getText() != null && !bind.localAddressTextView.getText().toString().trim().isBlank() ? bind.localAddressTextView.getText().toString().trim() : null; + lowSecurity = bind.lowSecurityCheckbox.isChecked(); + + if (TextUtils.isEmpty(serverName)) { + bind.serverNameTextView.setError(getString(R.string.error_required)); + return false; + } + + if (TextUtils.isEmpty(username)) { + bind.usernameTextView.setError(getString(R.string.error_required)); + return false; + } + + if (TextUtils.isEmpty(server)) { + bind.serverTextView.setError(getString(R.string.error_required)); + return false; + } + + if (!TextUtils.isEmpty(localAddress) && !localAddress.matches("^https?://(.*)")) { + bind.localAddressTextView.setError(getString(R.string.error_server_prefix)); + return false; + } + + if (!server.matches("^https?://(.*)")) { + bind.serverTextView.setError(getString(R.string.error_server_prefix)); + return false; + } + + return true; + } + + private void saveServerPreference() { + String serverID = loginViewModel.getServerToEdit() != null ? loginViewModel.getServerToEdit().getServerId() : UUID.randomUUID().toString(); + loginViewModel.addServer(new Server(serverID, this.serverName, this.username, this.password, this.server, this.localAddress, System.currentTimeMillis(), this.lowSecurity)); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerUnreachableDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerUnreachableDialog.java new file mode 100644 index 0000000..fc128d2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ServerUnreachableDialog.java @@ -0,0 +1,63 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogServerUnreachableBinding; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +@OptIn(markerClass = UnstableApi.class) +public class ServerUnreachableDialog extends DialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogServerUnreachableBinding bind = DialogServerUnreachableBinding.inflate(getLayoutInflater()); + + AlertDialog popup = new MaterialAlertDialogBuilder(getActivity()).setView(bind.getRoot()) + .setTitle(R.string.server_unreachable_dialog_title) + .setPositiveButton(R.string.server_unreachable_dialog_positive_button, null) + .setNeutralButton(R.string.server_unreachable_dialog_neutral_button, null) + .setNegativeButton(R.string.server_unreachable_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + + popup.setCanceledOnTouchOutside(false); + popup.setCancelable(false); + + return popup; + } + + + @Override + public void onStart() { + super.onStart(); + + setButtonAction(); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog()); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { + MainActivity activity = (MainActivity) getActivity(); + if (activity != null) activity.quit(); + alertDialog.dismiss(); + }); + + alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { + Preferences.setServerUnreachableDatetime(); + alertDialog.dismiss(); + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ShareUpdateDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ShareUpdateDialog.java new file mode 100644 index 0000000..86634d9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/ShareUpdateDialog.java @@ -0,0 +1,133 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.os.Bundle; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogShareUpdateBinding; +import com.cappielloantonio.tempo.util.UIUtil; +import com.cappielloantonio.tempo.viewmodel.HomeViewModel; +import com.cappielloantonio.tempo.viewmodel.ShareBottomSheetViewModel; +import com.google.android.material.datepicker.CalendarConstraints; +import com.google.android.material.datepicker.DateValidatorPointForward; +import com.google.android.material.datepicker.MaterialDatePicker; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Date; +import java.util.Objects; + +public class ShareUpdateDialog extends DialogFragment { + private DialogShareUpdateBinding bind; + private HomeViewModel homeViewModel; + private ShareBottomSheetViewModel shareBottomSheetViewModel; + + private MaterialDatePicker datePicker; + + private String descriptionTextView; + private String expirationTextView; + private long expiration; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); + + shareBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(ShareBottomSheetViewModel.class); + + bind = DialogShareUpdateBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(requireContext()) + .setView(bind.getRoot()) + .setTitle(R.string.share_update_dialog_title) + .setPositiveButton(R.string.share_update_dialog_positive_button, (dialog, id) -> { + }) + .setNegativeButton(R.string.share_update_dialog_negative_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setShareInfo(); + setShareCalendar(); + setButtonAction(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setShareInfo() { + if (shareBottomSheetViewModel.getShare() != null) { + bind.shareDescriptionTextView.setText(shareBottomSheetViewModel.getShare().getDescription()); + // bind.shareExpirationTextView.setText(shareBottomSheetViewModel.getShare().getExpires()); + } + } + + private void setShareCalendar() { + expiration = shareBottomSheetViewModel.getShare().getExpires().getTime(); + + bind.shareExpirationTextView.setText(UIUtil.getReadableDate(new Date(expiration))); + + bind.shareExpirationTextView.setFocusable(false); + bind.shareExpirationTextView.setOnLongClickListener(null); + + bind.shareExpirationTextView.setOnClickListener(view -> { + CalendarConstraints constraints = new CalendarConstraints.Builder() + .setValidator(DateValidatorPointForward.now()) + .build(); + + datePicker = MaterialDatePicker.Builder.datePicker() + .setCalendarConstraints(constraints) + .setSelection(expiration) + .build(); + + datePicker.addOnPositiveButtonClickListener(selection -> { + expiration = selection; + bind.shareExpirationTextView.setText(UIUtil.getReadableDate(new Date(selection))); + }); + + datePicker.show(requireActivity().getSupportFragmentManager(), null); + }); + } + + private void setButtonAction() { + ((AlertDialog) Objects.requireNonNull(getDialog())).getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { + if (validateInput()) { + updateShare(); + Objects.requireNonNull(getDialog()).dismiss(); + } + }); + } + + private boolean validateInput() { + descriptionTextView = Objects.requireNonNull(bind.shareDescriptionTextView.getText()).toString().trim(); + expirationTextView = Objects.requireNonNull(bind.shareExpirationTextView.getText()).toString().trim(); + + if (TextUtils.isEmpty(descriptionTextView)) { + bind.shareDescriptionTextView.setError(getString(R.string.error_required)); + return false; + } + + if (TextUtils.isEmpty(expirationTextView)) { + bind.shareExpirationTextView.setError(getString(R.string.error_required)); + return false; + } + + return true; + } + + private void updateShare() { + shareBottomSheetViewModel.updateShare(descriptionTextView, expiration); + homeViewModel.refreshShares(requireActivity()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java new file mode 100644 index 0000000..64500ea --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java @@ -0,0 +1,88 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogStarredAlbumSyncBinding; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.StarredAlbumsSyncViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.stream.Collectors; + +@OptIn(markerClass = UnstableApi.class) +public class StarredAlbumSyncDialog extends DialogFragment { + private StarredAlbumsSyncViewModel starredAlbumsSyncViewModel; + + private Runnable onCancel; + + public StarredAlbumSyncDialog(Runnable onCancel) { + this.onCancel = onCancel; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogStarredAlbumSyncBinding bind = DialogStarredAlbumSyncBinding.inflate(getLayoutInflater()); + + starredAlbumsSyncViewModel = new ViewModelProvider(requireActivity()).get(StarredAlbumsSyncViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.starred_album_sync_dialog_title) + .setPositiveButton(R.string.starred_sync_dialog_positive_button, null) + .setNeutralButton(R.string.starred_sync_dialog_neutral_button, null) + .setNegativeButton(R.string.starred_sync_dialog_negative_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(requireContext()); + } + + private void setButtonAction(Context context) { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + starredAlbumsSyncViewModel.getStarredAlbumSongs(requireActivity()).observe(this, allSongs -> { + if (allSongs != null && !allSongs.isEmpty()) { + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownloads(allSongs), + allSongs.stream().map(Download::new).collect(Collectors.toList()) + ); + } + dialog.dismiss(); + }); + }); + + Button neutralButton = dialog.getButton(Dialog.BUTTON_NEUTRAL); + neutralButton.setOnClickListener(v -> { + Preferences.setStarredAlbumsSyncEnabled(true); + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + Preferences.setStarredAlbumsSyncEnabled(false); + if (onCancel != null) onCancel.run(); + dialog.dismiss(); + }); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredArtistSyncDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredArtistSyncDialog.java new file mode 100644 index 0000000..448ca07 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredArtistSyncDialog.java @@ -0,0 +1,88 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogStarredArtistSyncBinding; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.StarredArtistsSyncViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.stream.Collectors; + +@OptIn(markerClass = UnstableApi.class) +public class StarredArtistSyncDialog extends DialogFragment { + private StarredArtistsSyncViewModel starredArtistsSyncViewModel; + + private Runnable onCancel; + + public StarredArtistSyncDialog(Runnable onCancel) { + this.onCancel = onCancel; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogStarredArtistSyncBinding bind = DialogStarredArtistSyncBinding.inflate(getLayoutInflater()); + + starredArtistsSyncViewModel = new ViewModelProvider(requireActivity()).get(StarredArtistsSyncViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.starred_artist_sync_dialog_title) + .setPositiveButton(R.string.starred_sync_dialog_positive_button, null) + .setNeutralButton(R.string.starred_sync_dialog_neutral_button, null) + .setNegativeButton(R.string.starred_sync_dialog_negative_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(requireContext()); + } + + private void setButtonAction(Context context) { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + starredArtistsSyncViewModel.getStarredArtistSongs(requireActivity()).observe(this, allSongs -> { + if (allSongs != null && !allSongs.isEmpty()) { + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownloads(allSongs), + allSongs.stream().map(Download::new).collect(Collectors.toList()) + ); + } + dialog.dismiss(); + }); + }); + + Button neutralButton = dialog.getButton(Dialog.BUTTON_NEUTRAL); + neutralButton.setOnClickListener(v -> { + Preferences.setStarredArtistsSyncEnabled(true); + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + Preferences.setStarredArtistsSyncEnabled(false); + if (onCancel != null) onCancel.run(); + dialog.dismiss(); + }); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java new file mode 100644 index 0000000..d3edfdf --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java @@ -0,0 +1,89 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogStarredSyncBinding; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.StarredSyncViewModel; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.stream.Collectors; + +@OptIn(markerClass = UnstableApi.class) +public class StarredSyncDialog extends DialogFragment { + private StarredSyncViewModel starredSyncViewModel; + + private Runnable onCancel; + + public StarredSyncDialog(Runnable onCancel) { + this.onCancel = onCancel; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogStarredSyncBinding bind = DialogStarredSyncBinding.inflate(getLayoutInflater()); + + starredSyncViewModel = new ViewModelProvider(requireActivity()).get(StarredSyncViewModel.class); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.starred_sync_dialog_title) + .setPositiveButton(R.string.starred_sync_dialog_positive_button, null) + .setNeutralButton(R.string.starred_sync_dialog_neutral_button, null) + .setNegativeButton(R.string.starred_sync_dialog_negative_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(requireContext()); + } + + private void setButtonAction(Context context) { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + starredSyncViewModel.getStarredTracks(requireActivity()).observe(requireActivity(), songs -> { + if (songs != null && Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownloads(songs), + songs.stream().map(Download::new).collect(Collectors.toList()) + ); + } + + dialog.dismiss(); + }); + }); + + Button neutralButton = dialog.getButton(Dialog.BUTTON_NEUTRAL); + neutralButton.setOnClickListener(v -> { + Preferences.setStarredSyncEnabled(true); + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + Preferences.setStarredSyncEnabled(false); + if (onCancel != null) onCancel.run(); + dialog.dismiss(); + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StreamingCacheStorageDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StreamingCacheStorageDialog.java new file mode 100644 index 0000000..964da01 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StreamingCacheStorageDialog.java @@ -0,0 +1,76 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogStreamingCacheStorageBinding; +import com.cappielloantonio.tempo.interfaces.DialogClickCallback; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +@OptIn(markerClass = UnstableApi.class) +public class StreamingCacheStorageDialog extends DialogFragment { + private final DialogClickCallback dialogClickCallback; + + public StreamingCacheStorageDialog(DialogClickCallback dialogClickCallback) { + this.dialogClickCallback = dialogClickCallback; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + DialogStreamingCacheStorageBinding bind = DialogStreamingCacheStorageBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(getActivity()) + .setView(bind.getRoot()) + .setTitle(R.string.streaming_cache_storage_dialog_title) + .setPositiveButton(R.string.streaming_cache_storage_external_dialog_positive_button, null) + .setNegativeButton(R.string.streaming_cache_storage_internal_dialog_negative_button, null) + .create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(); + } + + private void setButtonAction() { + androidx.appcompat.app.AlertDialog dialog = (androidx.appcompat.app.AlertDialog) getDialog(); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + int currentPreference = Preferences.getStreamingCacheStoragePreference(); + int newPreference = 1; + + if (currentPreference != newPreference) { + Preferences.setStreamingCacheStoragePreference(newPreference); + dialogClickCallback.onPositiveClick(); + } + + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + int currentPreference = Preferences.getStreamingCacheStoragePreference(); + int newPreference = 0; + + if (currentPreference != newPreference) { + Preferences.setStreamingCacheStoragePreference(newPreference); + dialogClickCallback.onNegativeClick(); + } + + dialog.dismiss(); + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java new file mode 100644 index 0000000..e6b91f0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java @@ -0,0 +1,204 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.MediaMetadata; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogTrackInfoBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.util.AssetLinkUtil; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.Objects; + +public class TrackInfoDialog extends DialogFragment { + private DialogTrackInfoBinding bind; + + private final MediaMetadata mediaMetadata; + private AssetLinkUtil.AssetLink songLink; + private AssetLinkUtil.AssetLink albumLink; + private AssetLinkUtil.AssetLink artistLink; + private AssetLinkUtil.AssetLink genreLink; + private AssetLinkUtil.AssetLink yearLink; + + public TrackInfoDialog(MediaMetadata mediaMetadata) { + this.mediaMetadata = mediaMetadata; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogTrackInfoBinding.inflate(getLayoutInflater()); + + return new MaterialAlertDialogBuilder(requireActivity()) + .setView(bind.getRoot()) + .setPositiveButton(R.string.track_info_dialog_positive_button, (dialog, id) -> dialog.cancel()) + .create(); + } + + @Override + public void onStart() { + super.onStart(); + + setTrackInfo(); + setTrackTranscodingInfo(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setTrackInfo() { + genreLink = null; + yearLink = null; + bind.trakTitleInfoTextView.setText(mediaMetadata.title); + bind.trakArtistInfoTextView.setText( + mediaMetadata.artist != null + ? mediaMetadata.artist + : mediaMetadata.extras != null && Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) + ? mediaMetadata.extras.getString("uri", getString(R.string.label_placeholder)) + : ""); + + if (mediaMetadata.extras != null) { + songLink = AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_SONG, mediaMetadata.extras.getString("id")); + albumLink = AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_ALBUM, mediaMetadata.extras.getString("albumId")); + artistLink = AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_ARTIST, mediaMetadata.extras.getString("artistId")); + genreLink = AssetLinkUtil.parseLinkString(mediaMetadata.extras.getString("assetLinkGenre")); + yearLink = AssetLinkUtil.parseLinkString(mediaMetadata.extras.getString("assetLinkYear")); + + CustomGlideRequest.Builder + .from(requireContext(), mediaMetadata.extras.getString("coverArtId", ""), CustomGlideRequest.ResourceType.Song) + .build() + .into(bind.trackCoverInfoImageView); + + bindAssetLink(bind.trackCoverInfoImageView, albumLink != null ? albumLink : songLink); + bindAssetLink(bind.trakTitleInfoTextView, songLink); + bindAssetLink(bind.trakArtistInfoTextView, artistLink != null ? artistLink : songLink); + + String titleValue = mediaMetadata.extras.getString("title", getString(R.string.label_placeholder)); + String albumValue = mediaMetadata.extras.getString("album", getString(R.string.label_placeholder)); + String artistValue = mediaMetadata.extras.getString("artist", getString(R.string.label_placeholder)); + String genreValue = mediaMetadata.extras.getString("genre", getString(R.string.label_placeholder)); + int yearValue = mediaMetadata.extras.getInt("year", 0); + + if (genreLink == null && genreValue != null && !genreValue.isEmpty() && !getString(R.string.label_placeholder).contentEquals(genreValue)) { + genreLink = AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_GENRE, genreValue); + } + + if (yearLink == null && yearValue != 0) { + yearLink = AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_YEAR, String.valueOf(yearValue)); + } + + bind.titleValueSector.setText(titleValue); + bind.albumValueSector.setText(albumValue); + bind.artistValueSector.setText(artistValue); + bind.trackNumberValueSector.setText(mediaMetadata.extras.getInt("track", 0) != 0 ? String.valueOf(mediaMetadata.extras.getInt("track", 0)) : getString(R.string.label_placeholder)); + bind.yearValueSector.setText(yearValue != 0 ? String.valueOf(yearValue) : getString(R.string.label_placeholder)); + bind.genreValueSector.setText(genreValue); + bind.sizeValueSector.setText(mediaMetadata.extras.getLong("size", 0) != 0 ? MusicUtil.getReadableByteCount(mediaMetadata.extras.getLong("size", 0)) : getString(R.string.label_placeholder)); + bind.contentTypeValueSector.setText(mediaMetadata.extras.getString("contentType", getString(R.string.label_placeholder))); + bind.suffixValueSector.setText(mediaMetadata.extras.getString("suffix", getString(R.string.label_placeholder))); + bind.transcodedContentTypeValueSector.setText(mediaMetadata.extras.getString("transcodedContentType", getString(R.string.label_placeholder))); + bind.transcodedSuffixValueSector.setText(mediaMetadata.extras.getString("transcodedSuffix", getString(R.string.label_placeholder))); + bind.durationValueSector.setText(mediaMetadata.extras.getInt("duration", 0) != 0 ? MusicUtil.getReadableDurationString(mediaMetadata.extras.getInt("duration", 0), false) : getString(R.string.label_placeholder)); + bind.bitrateValueSector.setText(mediaMetadata.extras.getInt("bitrate", 0) != 0 ? mediaMetadata.extras.getInt("bitrate", 0) + " kbps" : getString(R.string.label_placeholder)); + bind.samplingRateValueSector.setText(mediaMetadata.extras.getInt("samplingRate", 0) != 0 ? mediaMetadata.extras.getInt("samplingRate", 0) + " Hz" : getString(R.string.label_placeholder)); + bind.bitDepthValueSector.setText(mediaMetadata.extras.getInt("bitDepth", 0) != 0 ? mediaMetadata.extras.getInt("bitDepth", 0) + " bits" : getString(R.string.label_placeholder)); + bind.pathValueSector.setText(mediaMetadata.extras.getString("path", getString(R.string.label_placeholder))); + bind.discNumberValueSector.setText(mediaMetadata.extras.getInt("discNumber", 0) != 0 ? String.valueOf(mediaMetadata.extras.getInt("discNumber", 0)) : getString(R.string.label_placeholder)); + + bindAssetLink(bind.titleValueSector, songLink); + bindAssetLink(bind.albumValueSector, albumLink); + bindAssetLink(bind.artistValueSector, artistLink); + bindAssetLink(bind.genreValueSector, genreLink); + bindAssetLink(bind.yearValueSector, yearLink); + } + } + + private void setTrackTranscodingInfo() { + StringBuilder info = new StringBuilder(); + + boolean prioritizeServerTranscoding = Preferences.isServerPrioritized(); + + String transcodingExtension = MusicUtil.getTranscodingFormatPreference(); + String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference()) != 0 ? Integer.parseInt(MusicUtil.getBitratePreference()) + "kbps" : "Original"; + + if (mediaMetadata.extras != null && mediaMetadata.extras.getString("uri", "").contains(Constants.DOWNLOAD_URI)) { + info.append(getString(R.string.track_info_summary_downloaded_file)); + + bind.trakTranscodingInfoTextView.setText(info); + return; + } + + if (prioritizeServerTranscoding) { + info.append(getString(R.string.track_info_summary_server_prioritized)); + + bind.trakTranscodingInfoTextView.setText(info); + return; + } + + if (!prioritizeServerTranscoding && transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) { + info.append(getString(R.string.track_info_summary_original_file)); + + bind.trakTranscodingInfoTextView.setText(info); + return; + } + + if (!prioritizeServerTranscoding && !transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) { + info.append(getString(R.string.track_info_summary_transcoding_codec, transcodingExtension)); + + bind.trakTranscodingInfoTextView.setText(info); + return; + } + + if (!prioritizeServerTranscoding && transcodingExtension.equals("raw") && !transcodingBitrate.equals("Original")) { + info.append(getString(R.string.track_info_summary_transcoding_bitrate, transcodingBitrate)); + + bind.trakTranscodingInfoTextView.setText(info); + return; + } + + if (!prioritizeServerTranscoding && !transcodingExtension.equals("raw") && !transcodingBitrate.equals("Original")) { + info.append(getString(R.string.track_info_summary_full_transcode, transcodingExtension, transcodingBitrate)); + + bind.trakTranscodingInfoTextView.setText(info); + } + } + + private void bindAssetLink(android.view.View view, AssetLinkUtil.AssetLink assetLink) { + if (view == null) return; + if (assetLink == null) { + AssetLinkUtil.clearLinkAppearance(view); + view.setOnClickListener(null); + view.setOnLongClickListener(null); + view.setClickable(false); + view.setLongClickable(false); + return; + } + + view.setClickable(true); + view.setLongClickable(true); + AssetLinkUtil.applyLinkAppearance(view); + view.setOnClickListener(v -> { + dismissAllowingStateLoss(); + boolean collapse = !AssetLinkUtil.TYPE_SONG.equals(assetLink.type); + ((com.cappielloantonio.tempo.ui.activity.MainActivity) requireActivity()).openAssetLink(assetLink, collapse); + }); + view.setOnLongClickListener(v -> { + AssetLinkUtil.copyToClipboard(requireContext(), assetLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, assetLink.id), Toast.LENGTH_SHORT).show(); + return true; + }); + } + +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java new file mode 100644 index 0000000..2b04e7e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java @@ -0,0 +1,288 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentAlbumCatalogueBinding; +import com.cappielloantonio.tempo.helper.recyclerview.GridItemDecoration; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.AlbumCatalogueAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.AlbumCatalogueViewModel; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@OptIn(markerClass = UnstableApi.class) +public class AlbumCatalogueFragment extends Fragment implements ClickCallback { + private static final String TAG = "AlbumCatalogueFragment"; + + private FragmentAlbumCatalogueBinding bind; + private MainActivity activity; + private AlbumCatalogueViewModel albumCatalogueViewModel; + + private AlbumCatalogueAdapter albumAdapter; + private String currentSortOrder; + private List originalAlbums; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + currentSortOrder = Preferences.getAlbumSortOrder(); + + initData(); + } + + @Override + public void onResume() { + super.onResume(); + String latestSort = Preferences.getAlbumSortOrder(); + + if (!latestSort.equals(currentSortOrder)) { + currentSortOrder = latestSort; + } + // Re-apply sort when returning to fragment + if (originalAlbums != null && currentSortOrder != null) { + applySortToAlbums(currentSortOrder); + } else { + Log.d(TAG, "onResume - Cannot re-sort, missing data"); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + albumCatalogueViewModel.stopLoading(); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentAlbumCatalogueBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + initAppBar(); + initAlbumCatalogueView(); + initProgressLoader(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initData() { + albumCatalogueViewModel = new ViewModelProvider(requireActivity()).get(AlbumCatalogueViewModel.class); + albumCatalogueViewModel.loadAlbums(); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.album_catalogue_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initAlbumCatalogueView() { + bind.albumCatalogueRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + bind.albumCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); + bind.albumCatalogueRecyclerView.setHasFixedSize(true); + + albumAdapter = new AlbumCatalogueAdapter(this, true); + albumAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); + bind.albumCatalogueRecyclerView.setAdapter(albumAdapter); + albumCatalogueViewModel.getAlbumList().observe(getViewLifecycleOwner(), albums -> { + originalAlbums = albums; + currentSortOrder = Preferences.getAlbumSortOrder(); + applySortToAlbums(currentSortOrder); + updateSortIndicator(); + }); + + bind.albumCatalogueRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.albumListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_album_popup_menu)); + } + + private void applySortToAlbums(String sortOrder) { + if (originalAlbums == null) { + return; + } + albumAdapter.setItemsWithoutFilter(originalAlbums); + if (sortOrder != null) { + albumAdapter.sort(sortOrder); + } + } + + private void initProgressLoader() { + albumCatalogueViewModel.getLoadingStatus().observe(getViewLifecycleOwner(), isLoading -> { + if (isLoading) { + bind.albumListSortImageView.setEnabled(false); + bind.albumListProgressLoader.setVisibility(View.VISIBLE); + } else { + bind.albumListSortImageView.setEnabled(true); + bind.albumListProgressLoader.setVisibility(View.GONE); + } + }); + } + + private void updateSortIndicator() { + if (bind == null) return; + + String sortText = getSortDisplayText(currentSortOrder); + bind.albumListSortTextView.setText(sortText); + bind.albumListSortTextView.setVisibility(View.VISIBLE); + } + + private String getSortDisplayText(String sortOrder) { + if (sortOrder == null) return ""; + + switch (sortOrder) { + case Constants.ALBUM_ORDER_BY_NAME: + return getString(R.string.menu_sort_name); + case Constants.ALBUM_ORDER_BY_ARTIST: + return getString(R.string.menu_group_by_artist); + case Constants.ALBUM_ORDER_BY_YEAR: + return getString(R.string.menu_sort_year); + case Constants.ALBUM_ORDER_BY_RANDOM: + return getString(R.string.menu_sort_random); + case Constants.ALBUM_ORDER_BY_RECENTLY_ADDED: + return getString(R.string.menu_sort_recently_added); + case Constants.ALBUM_ORDER_BY_RECENTLY_PLAYED: + return getString(R.string.menu_sort_recently_played); + case Constants.ALBUM_ORDER_BY_MOST_PLAYED: + return getString(R.string.menu_sort_most_played); + default: + return ""; + } + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + albumAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + String newSortOrder = null; + + if (menuItem.getItemId() == R.id.menu_album_sort_name) { + newSortOrder = Constants.ALBUM_ORDER_BY_NAME; + } else if (menuItem.getItemId() == R.id.menu_album_sort_artist) { + newSortOrder = Constants.ALBUM_ORDER_BY_ARTIST; + } else if (menuItem.getItemId() == R.id.menu_album_sort_year) { + newSortOrder = Constants.ALBUM_ORDER_BY_YEAR; + } else if (menuItem.getItemId() == R.id.menu_album_sort_random) { + newSortOrder = Constants.ALBUM_ORDER_BY_RANDOM; + } else if (menuItem.getItemId() == R.id.menu_album_sort_recently_added) { + newSortOrder = Constants.ALBUM_ORDER_BY_RECENTLY_ADDED; + } else if (menuItem.getItemId() == R.id.menu_album_sort_recently_played) { + newSortOrder = Constants.ALBUM_ORDER_BY_RECENTLY_PLAYED; + } else if (menuItem.getItemId() == R.id.menu_album_sort_most_played) { + newSortOrder = Constants.ALBUM_ORDER_BY_MOST_PLAYED; + } + + if (newSortOrder != null) { + currentSortOrder = newSortOrder; + Preferences.setAlbumSortOrder(newSortOrder); + applySortToAlbums(newSortOrder); + updateSortIndicator(); + return true; + } + + return false; + }); + + popup.show(); + } + + @Override + public void onAlbumClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumPageFragment, bundle); + hideKeyboard(requireView()); + } + + @Override + public void onAlbumLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumListPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumListPageFragment.java new file mode 100644 index 0000000..38dc9b1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumListPageFragment.java @@ -0,0 +1,236 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import androidx.appcompat.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentAlbumListPageBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.AlbumHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.AlbumListPageViewModel; + +import java.util.List; + +@OptIn(markerClass = UnstableApi.class) +public class AlbumListPageFragment extends Fragment implements ClickCallback { + private FragmentAlbumListPageBinding bind; + + private MainActivity activity; + private AlbumListPageViewModel albumListPageViewModel; + private AlbumHorizontalAdapter albumHorizontalAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentAlbumListPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + albumListPageViewModel = new ViewModelProvider(requireActivity()).get(AlbumListPageViewModel.class); + + init(); + initAppBar(); + initAlbumListView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + if (requireArguments().getString(Constants.ALBUM_RECENTLY_PLAYED) != null) { + albumListPageViewModel.title = Constants.ALBUM_RECENTLY_PLAYED; + bind.pageTitleLabel.setText(R.string.album_list_page_recently_played); + } else if (requireArguments().getString(Constants.ALBUM_MOST_PLAYED) != null) { + albumListPageViewModel.title = Constants.ALBUM_MOST_PLAYED; + bind.pageTitleLabel.setText(R.string.album_list_page_most_played); + } else if (requireArguments().getString(Constants.ALBUM_RECENTLY_ADDED) != null) { + albumListPageViewModel.title = Constants.ALBUM_RECENTLY_ADDED; + bind.pageTitleLabel.setText(R.string.album_list_page_recently_added); + } else if (requireArguments().getString(Constants.ALBUM_STARRED) != null) { + albumListPageViewModel.title = Constants.ALBUM_STARRED; + bind.pageTitleLabel.setText(R.string.album_list_page_starred); + } else if (requireArguments().getString(Constants.ALBUM_NEW_RELEASES) != null) { + albumListPageViewModel.title = Constants.ALBUM_NEW_RELEASES; + bind.pageTitleLabel.setText(R.string.album_list_page_new_releases); + } else if (requireArguments().getString(Constants.ALBUM_DOWNLOADED) != null) { + albumListPageViewModel.title = Constants.ALBUM_DOWNLOADED; + bind.pageTitleLabel.setText(R.string.album_list_page_downloaded); + } else if (requireArguments().getParcelable(Constants.ARTIST_OBJECT) != null) { + albumListPageViewModel.artist = requireArguments().getParcelable(Constants.ARTIST_OBJECT); + albumListPageViewModel.title = Constants.ALBUM_FROM_ARTIST; + bind.pageTitleLabel.setText(albumListPageViewModel.artist.getName()); + } + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.album_list_page_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initAlbumListView() { + bind.albumListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.albumListRecyclerView.setHasFixedSize(true); + + albumHorizontalAdapter = new AlbumHorizontalAdapter( + this, + (albumListPageViewModel.title.equals(Constants.ALBUM_DOWNLOADED) || albumListPageViewModel.title.equals(Constants.ALBUM_FROM_ARTIST)) + ); + + bind.albumListRecyclerView.setAdapter(albumHorizontalAdapter); + albumListPageViewModel.getAlbumList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + albumHorizontalAdapter.setItems(albums); + setAlbumListPageSubtitle(albums); + setAlbumListPageSorter(); + }); + + bind.albumListRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.albumListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_horizontal_album_popup_menu)); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.artist_list_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + albumHorizontalAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_horizontal_album_sort_name) { + albumHorizontalAdapter.sort(Constants.ALBUM_ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_horizontal_album_sort_most_recently_starred) { + albumHorizontalAdapter.sort(Constants.ALBUM_ORDER_BY_MOST_RECENTLY_STARRED); + return true; + } else if (menuItem.getItemId() == R.id.menu_horizontal_album_sort_least_recently_starred) { + albumHorizontalAdapter.sort(Constants.ALBUM_ORDER_BY_LEAST_RECENTLY_STARRED); + return true; + } + + return false; + }); + + popup.show(); + } + + private void setAlbumListPageSubtitle(List albums) { + switch (albumListPageViewModel.title) { + case Constants.ALBUM_RECENTLY_PLAYED: + case Constants.ALBUM_MOST_PLAYED: + case Constants.ALBUM_RECENTLY_ADDED: + bind.pageSubtitleLabel.setText(albums.size() < albumListPageViewModel.maxNumber ? + getString(R.string.generic_list_page_count, albums.size()) : + getString(R.string.generic_list_page_count_unknown, albumListPageViewModel.maxNumber) + ); + break; + case Constants.ALBUM_STARRED: + bind.pageSubtitleLabel.setText(getString(R.string.generic_list_page_count, albums.size())); + break; + } + } + + private void setAlbumListPageSorter() { + switch (albumListPageViewModel.title) { + case Constants.ALBUM_RECENTLY_PLAYED: + case Constants.ALBUM_MOST_PLAYED: + case Constants.ALBUM_RECENTLY_ADDED: + bind.albumListSortImageView.setVisibility(View.GONE); + break; + case Constants.ALBUM_STARRED: + bind.albumListSortImageView.setVisibility(View.VISIBLE); + break; + } + } + + @Override + public void onAlbumClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumPageFragment, bundle); + } + + @Override + public void onAlbumLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java new file mode 100644 index 0000000..9bf9580 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java @@ -0,0 +1,401 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcelable; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentAlbumPageBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; +import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog; +import com.cappielloantonio.tempo.ui.dialog.RatingDialog; +import com.cappielloantonio.tempo.util.AssetLinkUtil; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.ExternalAudioWriter; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.AlbumPageViewModel; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Objects; +import java.util.stream.Collectors; + +@UnstableApi +public class AlbumPageFragment extends Fragment implements ClickCallback { + private FragmentAlbumPageBinding bind; + private MainActivity activity; + private AlbumPageViewModel albumPageViewModel; + private PlaybackViewModel playbackViewModel; + private SongHorizontalAdapter songHorizontalAdapter; + private ListenableFuture mediaBrowserListenableFuture; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.album_page_menu, menu); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentAlbumPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + albumPageViewModel = new ViewModelProvider(requireActivity()).get(AlbumPageViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + init(); + initAppBar(); + initAlbumInfoTextButton(); + initAlbumNotes(); + initMusicButton(); + initBackCover(); + initSongsView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observePlayback(); + } + + public void onResume() { + super.onResume(); + if (songHorizontalAdapter != null) setMediaBrowserListenableFuture(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_rate_album) { + Bundle bundle = new Bundle(); + AlbumID3 album = albumPageViewModel.getAlbum().getValue(); + bundle.putParcelable(Constants.ALBUM_OBJECT, (Parcelable) album); + RatingDialog dialog = new RatingDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + return true; + } + + if (item.getItemId() == R.id.action_download_album) { + albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.mapDownloads(songs), + songs.stream().map(Download::new).collect(Collectors.toList()) + ); + } else { + songs.forEach(child -> ExternalAudioWriter.downloadToUserDirectory(requireContext(), child)); + } + }); + return true; + } + if (item.getItemId() == R.id.action_add_to_playlist) { + albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> { + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs)); + + PlaylistChooserDialog dialog = new PlaylistChooserDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + }); + return true; + } + + return false; + } + + private void init() { + albumPageViewModel.setAlbum(getViewLifecycleOwner(), requireArguments().getParcelable(Constants.ALBUM_OBJECT)); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.animToolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + + } + + albumPageViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> { + if (bind != null && album != null) { + bind.animToolbar.setTitle(album.getName()); + + bind.albumNameLabel.setText(album.getName()); + bind.albumArtistLabel.setText(album.getArtist()); + AssetLinkUtil.applyLinkAppearance(bind.albumArtistLabel); + AssetLinkUtil.AssetLink artistLink = buildArtistLink(album); + bind.albumArtistLabel.setOnLongClickListener(v -> { + if (artistLink != null) { + AssetLinkUtil.copyToClipboard(requireContext(), artistLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, artistLink.id), Toast.LENGTH_SHORT).show(); + return true; + } + return false; + }); + bind.albumReleaseYearLabel.setText(album.getYear() != 0 ? String.valueOf(album.getYear()) : ""); + if (album.getYear() != 0) { + bind.albumReleaseYearLabel.setVisibility(View.VISIBLE); + AssetLinkUtil.applyLinkAppearance(bind.albumReleaseYearLabel); + bind.albumReleaseYearLabel.setOnClickListener(v -> openYearLink(album.getYear())); + bind.albumReleaseYearLabel.setOnLongClickListener(v -> { + AssetLinkUtil.AssetLink yearLink = buildYearLink(album.getYear()); + if (yearLink != null) { + AssetLinkUtil.copyToClipboard(requireContext(), yearLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, yearLink.id), Toast.LENGTH_SHORT).show(); + } + return true; + }); + } else { + bind.albumReleaseYearLabel.setVisibility(View.GONE); + bind.albumReleaseYearLabel.setOnClickListener(null); + bind.albumReleaseYearLabel.setOnLongClickListener(null); + AssetLinkUtil.clearLinkAppearance(bind.albumReleaseYearLabel); + } + bind.albumSongCountDurationTextview.setText(getString(R.string.album_page_tracks_count_and_duration, album.getSongCount(), album.getDuration() != null ? album.getDuration() / 60 : 0)); + if (album.getGenre() != null && !album.getGenre().isEmpty()) { + bind.albumGenresTextview.setText(album.getGenre()); + bind.albumGenresTextview.setVisibility(View.VISIBLE); + } + else{ + bind.albumGenresTextview.setVisibility(View.GONE); + } + + if (album.getReleaseDate() != null && album.getOriginalReleaseDate() != null) { + if (album.getReleaseDate().getFormattedDate() != null || album.getOriginalReleaseDate().getFormattedDate() != null) + bind.albumReleaseYearsTextview.setVisibility(View.VISIBLE); + else + bind.albumReleaseYearsTextview.setVisibility(View.GONE); + + if (album.getReleaseDate().getFormattedDate() == null || album.getOriginalReleaseDate().getFormattedDate() == null) { + bind.albumReleaseYearsTextview.setText(getString(R.string.album_page_release_date_label, album.getReleaseDate() != null ? album.getReleaseDate().getFormattedDate() : album.getOriginalReleaseDate().getFormattedDate())); + } + + if (album.getReleaseDate().getFormattedDate() != null && album.getOriginalReleaseDate().getFormattedDate() != null) { + if (Objects.equals(album.getReleaseDate().getYear(), album.getOriginalReleaseDate().getYear()) && Objects.equals(album.getReleaseDate().getMonth(), album.getOriginalReleaseDate().getMonth()) && Objects.equals(album.getReleaseDate().getDay(), album.getOriginalReleaseDate().getDay())) { + bind.albumReleaseYearsTextview.setText(getString(R.string.album_page_release_date_label, album.getReleaseDate().getFormattedDate())); + } else { + bind.albumReleaseYearsTextview.setText(getString(R.string.album_page_release_dates_label, album.getReleaseDate().getFormattedDate(), album.getOriginalReleaseDate().getFormattedDate())); + } + } + } + } + }); + + bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + + Objects.requireNonNull(bind.animToolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null)); + + bind.albumOtherInfoButton.setOnClickListener(v -> { + if (bind.albumDetailView.getVisibility() == View.GONE) { + bind.albumDetailView.setVisibility(View.VISIBLE); + } else if (bind.albumDetailView.getVisibility() == View.VISIBLE) { + bind.albumDetailView.setVisibility(View.GONE); + } + }); + + if(Preferences.showAlbumDetail()){ + bind.albumDetailView.setVisibility(View.VISIBLE); + } + } + + private void initAlbumInfoTextButton() { + bind.albumArtistLabel.setOnClickListener(v -> albumPageViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> { + if (artist != null) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artist); + activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle); + } else + Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show(); + })); + } + + private void initAlbumNotes() { + albumPageViewModel.getAlbumInfo().observe(getViewLifecycleOwner(), albumInfo -> { + if (albumInfo != null) { + if (bind != null) bind.albumNotesTextview.setVisibility(View.VISIBLE); + if (bind != null) + bind.albumNotesTextview.setText(MusicUtil.forceReadableString(albumInfo.getNotes())); + + if (bind != null && albumInfo.getLastFmUrl() != null && !albumInfo.getLastFmUrl().isEmpty()) { + bind.albumNotesTextview.setOnClickListener(v -> { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(albumInfo.getLastFmUrl())); + startActivity(intent); + }); + } + } else { + if (bind != null) bind.albumNotesTextview.setVisibility(View.GONE); + } + }); + } + + private void initMusicButton() { + albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> { + if (bind != null && !songs.isEmpty()) { + bind.albumPagePlayButton.setOnClickListener(v -> { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + }); + + bind.albumPageShuffleButton.setOnClickListener(v -> { + Collections.shuffle(songs); + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + }); + } + + if (bind != null && songs.isEmpty()) { + bind.albumPagePlayButton.setEnabled(false); + bind.albumPageShuffleButton.setEnabled(false); + } + }); + } + + private void initBackCover() { + albumPageViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> { + if (bind != null && album != null) { + CustomGlideRequest.Builder.from(requireContext(), album.getCoverArtId(), CustomGlideRequest.ResourceType.Album).build().into(bind.albumCoverImageView); + } + }); + } + + private void initSongsView() { + albumPageViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> { + if (bind != null && album != null) { + bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.songRecyclerView.setHasFixedSize(true); + + songHorizontalAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, false, false, album); + bind.songRecyclerView.setAdapter(songHorizontalAdapter); + setMediaBrowserListenableFuture(); + reapplyPlayback(); + + albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> { + songHorizontalAdapter.setItems(songs); + reapplyPlayback(); + }); + } + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + private void observePlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (songHorizontalAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyPlayback() { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void setMediaBrowserListenableFuture() { + songHorizontalAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } + + private void openYearLink(int year) { + AssetLinkUtil.AssetLink link = buildYearLink(year); + if (link != null) { + activity.openAssetLink(link); + } + } + + private AssetLinkUtil.AssetLink buildYearLink(int year) { + if (year <= 0) return null; + return AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_YEAR, String.valueOf(year)); + } + + private AssetLinkUtil.AssetLink buildArtistLink(AlbumID3 album) { + if (album == null || album.getArtistId() == null || album.getArtistId().isEmpty()) { + return null; + } + return AssetLinkUtil.buildAssetLink(AssetLinkUtil.TYPE_ARTIST, album.getArtistId()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistCatalogueFragment.java new file mode 100644 index 0000000..7e7ce75 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistCatalogueFragment.java @@ -0,0 +1,220 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import android.widget.SearchView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.util.Log; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentArtistCatalogueBinding; +import com.cappielloantonio.tempo.helper.recyclerview.GridItemDecoration; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.ArtistCatalogueAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.ArtistCatalogueViewModel; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; + +import java.util.ArrayList; +import java.util.List; + +@UnstableApi +public class ArtistCatalogueFragment extends Fragment implements ClickCallback { + private static final String TAG = "ArtistCatalogueFragment"; + + private FragmentArtistCatalogueBinding bind; + private MainActivity activity; + private ArtistCatalogueViewModel artistCatalogueViewModel; + + private ArtistCatalogueAdapter artistAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + + initData(); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentArtistCatalogueBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + initAppBar(); + initArtistCatalogueView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initData() { + artistCatalogueViewModel = new ViewModelProvider(requireActivity()).get(ArtistCatalogueViewModel.class); + artistCatalogueViewModel.loadArtists(); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.artist_catalogue_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initArtistCatalogueView() { + bind.artistCatalogueRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + bind.artistCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); + bind.artistCatalogueRecyclerView.setHasFixedSize(true); + + artistAdapter = new ArtistCatalogueAdapter(this); + artistAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); + bind.artistCatalogueRecyclerView.setAdapter(artistAdapter); + artistCatalogueViewModel.getArtistList().observe(getViewLifecycleOwner(), artistList -> { + artistAdapter.setItems(artistList); + artistAdapter.sort(Preferences.getArtistSortOrder()); + }); + + bind.artistCatalogueRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.artistListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_artist_popup_menu)); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + + searchView.setQueryHint(getString(R.string.filter_artist)); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + // this toast may be overkill... + Toast.makeText(requireContext(), "Search: " + query, Toast.LENGTH_SHORT).show(); + filterArtists(query); + return true; + } + + @Override + public boolean onQueryTextChange(String newText) { + filterArtists(newText); + return true; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void filterArtists(String query) { + List allArtists = artistCatalogueViewModel.getArtistList().getValue(); + + if (allArtists == null || allArtists.isEmpty()) { + return; + } + + if (query == null || query.trim().isEmpty()) { + artistAdapter.setItems(allArtists); + } else { + String searchQuery = query.toLowerCase().trim(); + List filteredArtists = new ArrayList<>(); + + for (ArtistID3 artist : allArtists) { + if (artist.getName() != null && + artist.getName().toLowerCase().contains(searchQuery)) { + filteredArtists.add(artist); + } + } + artistAdapter.setItems(filteredArtists); + } + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_artist_sort_name) { + artistAdapter.sort(Constants.ARTIST_ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_artist_sort_random) { + artistAdapter.sort(Constants.ARTIST_ORDER_BY_RANDOM); + return true; + } else if (menuItem.getItemId() == R.id.menu_artist_sort_album_count) { + artistAdapter.sort(Constants.ARTIST_ORDER_BY_ALBUM_COUNT); + return true; + } + + return false; + }); + + popup.show(); + } + + @Override + public void onArtistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistPageFragment, bundle); + hideKeyboard(requireView()); + } + + @Override + public void onArtistLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistBottomSheetDialog, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistListPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistListPageFragment.java new file mode 100644 index 0000000..6b48230 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistListPageFragment.java @@ -0,0 +1,206 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentArtistListPageBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.ArtistHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.ArtistListPageViewModel; + +import java.util.List; + +@UnstableApi +public class ArtistListPageFragment extends Fragment implements ClickCallback { + private FragmentArtistListPageBinding bind; + + private MainActivity activity; + private ArtistListPageViewModel artistListPageViewModel; + + private ArtistHorizontalAdapter artistHorizontalAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentArtistListPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + artistListPageViewModel = new ViewModelProvider(requireActivity()).get(ArtistListPageViewModel.class); + + init(); + initAppBar(); + initArtistListView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + if (requireArguments().getString(Constants.ARTIST_STARRED) != null) { + artistListPageViewModel.title = Constants.ARTIST_STARRED; + bind.pageTitleLabel.setText(R.string.artist_list_page_starred); + } else if (requireArguments().getString(Constants.ARTIST_DOWNLOADED) != null) { + artistListPageViewModel.title = Constants.ARTIST_DOWNLOADED; + bind.pageTitleLabel.setText(R.string.artist_list_page_downloaded); + } + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.artist_list_page_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initArtistListView() { + bind.artistListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.artistListRecyclerView.setHasFixedSize(true); + + artistHorizontalAdapter = new ArtistHorizontalAdapter(this); + bind.artistListRecyclerView.setAdapter(artistHorizontalAdapter); + artistListPageViewModel.getArtistList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { + artistHorizontalAdapter.setItems(artists); + setArtistListPageSubtitle(artists); + setArtistListPageSorter(); + }); + + bind.artistListRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.artistListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_horizontal_artist_popup_menu)); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + artistHorizontalAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_horizontal_artist_sort_name) { + artistHorizontalAdapter.sort(Constants.ARTIST_ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_horizontal_artist_sort_most_recently_starred) { + artistHorizontalAdapter.sort(Constants.ARTIST_ORDER_BY_MOST_RECENTLY_STARRED); + return true; + } else if (menuItem.getItemId() == R.id.menu_horizontal_artist_sort_least_recently_starred) { + artistHorizontalAdapter.sort(Constants.ARTIST_ORDER_BY_LEAST_RECENTLY_STARRED); + return true; + } + + return false; + }); + + popup.show(); + } + + private void setArtistListPageSubtitle(List artists) { + switch (artistListPageViewModel.title) { + case Constants.ARTIST_STARRED: + case Constants.ARTIST_DOWNLOADED: + bind.pageSubtitleLabel.setText(getString(R.string.generic_list_page_count, artists.size())); + break; + } + } + + private void setArtistListPageSorter() { + switch (artistListPageViewModel.title) { + case Constants.ARTIST_STARRED: + case Constants.ARTIST_DOWNLOADED: + bind.artistListSortImageView.setVisibility(View.VISIBLE); + break; + } + } + + @Override + public void onArtistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistPageFragment, bundle); + } + + @Override + public void onArtistLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistBottomSheetDialog, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java new file mode 100644 index 0000000..2d39eea --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java @@ -0,0 +1,310 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentArtistPageBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.helper.recyclerview.CustomLinearSnapHelper; +import com.cappielloantonio.tempo.helper.recyclerview.GridItemDecoration; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.AlbumCatalogueAdapter; +import com.cappielloantonio.tempo.ui.adapter.ArtistCatalogueAdapter; +import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.viewmodel.ArtistPageViewModel; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.ArrayList; +import java.util.List; + +@UnstableApi +public class ArtistPageFragment extends Fragment implements ClickCallback { + private FragmentArtistPageBinding bind; + private MainActivity activity; + private ArtistPageViewModel artistPageViewModel; + private PlaybackViewModel playbackViewModel; + + private SongHorizontalAdapter songHorizontalAdapter; + private AlbumCatalogueAdapter albumCatalogueAdapter; + private ArtistCatalogueAdapter artistCatalogueAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentArtistPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + artistPageViewModel = new ViewModelProvider(requireActivity()).get(ArtistPageViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + init(); + initAppBar(); + initArtistInfo(); + initPlayButtons(); + initTopSongsView(); + initAlbumsView(); + initSimilarArtistsView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observePlayback(); + } + + public void onResume() { + super.onResume(); + if (songHorizontalAdapter != null) setMediaBrowserListenableFuture(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + artistPageViewModel.setArtist(requireArguments().getParcelable(Constants.ARTIST_OBJECT)); + + bind.mostStreamedSongTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MEDIA_BY_ARTIST, Constants.MEDIA_BY_ARTIST); + bundle.putParcelable(Constants.ARTIST_OBJECT, artistPageViewModel.getArtist()); + activity.navController.navigate(R.id.action_artistPageFragment_to_songListPageFragment, bundle); + }); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.animToolbar); + if (activity.getSupportActionBar() != null) + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + bind.collapsingToolbar.setTitle(artistPageViewModel.getArtist().getName()); + bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + bind.collapsingToolbar.setExpandedTitleColor(getResources().getColor(R.color.white, null)); + } + + private void initArtistInfo() { + artistPageViewModel.getArtistInfo(artistPageViewModel.getArtist().getId()).observe(getViewLifecycleOwner(), artistInfo -> { + if (artistInfo == null) { + if (bind != null) bind.artistPageBioSector.setVisibility(View.GONE); + } else { + String normalizedBio = MusicUtil.forceReadableString(artistInfo.getBiography()); + + if (bind != null) + bind.artistPageBioSector.setVisibility(!normalizedBio.trim().isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.bioMoreTextViewClickable.setVisibility(artistInfo.getLastFmUrl() != null ? View.VISIBLE : View.GONE); + + if (getContext() != null && bind != null) CustomGlideRequest.Builder + .from(requireContext(), artistPageViewModel.getArtist().getId(), CustomGlideRequest.ResourceType.Artist) + .build() + .into(bind.artistBackdropImageView); + + if (bind != null) bind.bioTextView.setText(normalizedBio); + + if (bind != null) bind.bioMoreTextViewClickable.setOnClickListener(v -> { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(artistInfo.getLastFmUrl())); + startActivity(intent); + }); + + if (bind != null) bind.artistPageBioSector.setVisibility(View.VISIBLE); + } + }); + } + + private void initPlayButtons() { + bind.artistPageShuffleButton.setOnClickListener(v -> { + artistPageViewModel.getArtistShuffleList().observe(getViewLifecycleOwner(), songs -> { + if (!songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + } else { + Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show(); + } + }); + }); + + bind.artistPageRadioButton.setOnClickListener(v -> { + artistPageViewModel.getArtistInstantMix().observe(getViewLifecycleOwner(), songs -> { + if (songs != null && !songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + } else { + Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show(); + } + }); + }); + } + + private void initTopSongsView() { + bind.mostStreamedSongRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + + songHorizontalAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, true, true, null); + bind.mostStreamedSongRecyclerView.setAdapter(songHorizontalAdapter); + setMediaBrowserListenableFuture(); + reapplyPlayback(); + artistPageViewModel.getArtistTopSongList().observe(getViewLifecycleOwner(), songs -> { + if (songs == null) { + if (bind != null) bind.artistPageTopSongsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.artistPageTopSongsSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE); + songHorizontalAdapter.setItems(songs); + reapplyPlayback(); + } + }); + } + + private void initAlbumsView() { + bind.albumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + bind.albumsRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); + bind.albumsRecyclerView.setHasFixedSize(true); + + albumCatalogueAdapter = new AlbumCatalogueAdapter(this, false); + bind.albumsRecyclerView.setAdapter(albumCatalogueAdapter); + + artistPageViewModel.getAlbumList().observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.artistPageAlbumsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.artistPageAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + albumCatalogueAdapter.setItems(albums); + } + }); + } + + private void initSimilarArtistsView() { + bind.similarArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + bind.similarArtistsRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); + bind.similarArtistsRecyclerView.setHasFixedSize(true); + + artistCatalogueAdapter = new ArtistCatalogueAdapter(this); + bind.similarArtistsRecyclerView.setAdapter(artistCatalogueAdapter); + + artistPageViewModel.getArtistInfo(artistPageViewModel.getArtist().getId()).observe(getViewLifecycleOwner(), artist -> { + if (artist == null) { + if (bind != null) bind.similarArtistSector.setVisibility(View.GONE); + } else { + if (bind != null && artist.getSimilarArtists() != null) + bind.similarArtistSector.setVisibility(!artist.getSimilarArtists().isEmpty() ? View.VISIBLE : View.GONE); + + List artists = new ArrayList<>(); + + if (artist.getSimilarArtists() != null) { + artists.addAll(artist.getSimilarArtists()); + } + + artistCatalogueAdapter.setItems(artists); + } + }); + + CustomLinearSnapHelper similarArtistSnapHelper = new CustomLinearSnapHelper(); + similarArtistSnapHelper.attachToRecyclerView(bind.similarArtistsRecyclerView); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + @Override + public void onAlbumClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumPageFragment, bundle); + } + + @Override + public void onAlbumLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } + + @Override + public void onArtistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistPageFragment, bundle); + } + + @Override + public void onArtistLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistBottomSheetDialog, bundle); + } + + private void observePlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (songHorizontalAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyPlayback() { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void setMediaBrowserListenableFuture() { + songHorizontalAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DirectoryFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DirectoryFragment.java new file mode 100644 index 0000000..104d79f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DirectoryFragment.java @@ -0,0 +1,200 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentDirectoryBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.DialogClickCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.MusicDirectoryAdapter; +import com.cappielloantonio.tempo.ui.dialog.DownloadDirectoryDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.ExternalAudioWriter; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.DirectoryViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.List; +import java.util.stream.Collectors; + +@UnstableApi +public class DirectoryFragment extends Fragment implements ClickCallback { + private static final String TAG = "DirectoryFragment"; + + private FragmentDirectoryBinding bind; + private MainActivity activity; + private DirectoryViewModel directoryViewModel; + + private MusicDirectoryAdapter musicDirectoryAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + private MenuItem menuItem; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.directory_page_menu, menu); + + menuItem = menu.getItem(0); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentDirectoryBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + directoryViewModel = new ViewModelProvider(requireActivity()).get(DirectoryViewModel.class); + + initAppBar(); + initDirectoryListView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_download_directory) { + DownloadDirectoryDialog dialog = new DownloadDirectoryDialog(new DialogClickCallback() { + @Override + public void onPositiveClick() { + directoryViewModel.loadMusicDirectory(getArguments().getString(Constants.MUSIC_DIRECTORY_ID)).observe(getViewLifecycleOwner(), directory -> { + if (isVisible() && getActivity() != null) { + List songs = directory.getChildren().stream().filter(child -> !child.isDir()).collect(Collectors.toList()); + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.mapDownloads(songs), + songs.stream().map(Download::new).collect(Collectors.toList()) + ); + } else { + songs.forEach(child -> ExternalAudioWriter.downloadToUserDirectory(requireContext(), child)); + } + } + }); + } + }); + + dialog.show(activity.getSupportFragmentManager(), null); + + return true; + } + + return false; + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + if (bind != null) { + bind.toolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + bind.directoryBackImageView.setOnClickListener(v -> activity.navController.navigateUp()); + } + } + + private void initDirectoryListView() { + bind.directoryRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.directoryRecyclerView.setHasFixedSize(true); + + musicDirectoryAdapter = new MusicDirectoryAdapter(this); + bind.directoryRecyclerView.setAdapter(musicDirectoryAdapter); + directoryViewModel.loadMusicDirectory(getArguments().getString(Constants.MUSIC_DIRECTORY_ID)).observe(getViewLifecycleOwner(), directory -> { + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.directoryInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(directory.getName()); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + + bind.directoryTitleLabel.setText(directory.getName()); + + musicDirectoryAdapter.setItems(directory.getChildren()); + + menuItem.setVisible( + directory.getChildren() != null && directory.getChildren() + .stream() + .filter(child -> !child.isDir()) + .findFirst() + .orElse(null) != null + ); + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + @Override + public void onMusicDirectoryClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.directoryFragment, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DownloadFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DownloadFragment.java new file mode 100644 index 0000000..12ca243 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/DownloadFragment.java @@ -0,0 +1,315 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.PopupMenu; + +import androidx.activity.OnBackPressedCallback; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentDownloadBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.model.DownloadStack; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.DownloadHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.DownloadViewModel; +import com.google.android.material.appbar.MaterialToolbar; +import com.google.common.util.concurrent.ListenableFuture; + +import android.content.Intent; +import android.app.Activity; +import android.net.Uri; +import android.widget.Toast; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +@UnstableApi +public class DownloadFragment extends Fragment implements ClickCallback { + private static final String TAG = "DownloadFragment"; + private static final int REQUEST_CODE_PICK_DIRECTORY = 1002; + + private FragmentDownloadBinding bind; + private MainActivity activity; + private DownloadViewModel downloadViewModel; + + private DownloadHorizontalAdapter downloadHorizontalAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + private MaterialToolbar materialToolbar; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentDownloadBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + downloadViewModel = new ViewModelProvider(requireActivity()).get(DownloadViewModel.class); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + initAppBar(); + initDownloadedView(); + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + activity.setBottomNavigationBarVisibility(true); + activity.setBottomSheetVisibility(true); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initAppBar() { + materialToolbar = bind.getRoot().findViewById(R.id.toolbar); + + activity.setSupportActionBar(materialToolbar); + Objects.requireNonNull(materialToolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null)); + } + + private void initDownloadedView() { + bind.downloadedRecyclerView.setHasFixedSize(true); + + downloadHorizontalAdapter = new DownloadHorizontalAdapter(this); + bind.downloadedRecyclerView.setAdapter(downloadHorizontalAdapter); + + downloadViewModel.getDownloadedTracks(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { + if (songs != null) { + if (songs.isEmpty()) { + if (bind != null) { + bind.emptyDownloadLayout.setVisibility(View.VISIBLE); + bind.downloadDownloadedSector.setVisibility(View.GONE); + bind.downloadedGroupByImageView.setVisibility(View.GONE); + } + } else { + if (bind != null) { + bind.emptyDownloadLayout.setVisibility(View.GONE); + bind.downloadDownloadedSector.setVisibility(View.VISIBLE); + bind.downloadedGroupByImageView.setVisibility(View.VISIBLE); + + finishDownloadView(songs); + } + } + + if (bind != null) bind.loadingProgressBar.setVisibility(View.GONE); + } + }); + + downloadViewModel.getRefreshResult().observe(getViewLifecycleOwner(), count -> { + if (count == null || bind == null) { + return; + } + + if (count == -1) { + Toast.makeText(requireContext(), R.string.download_refresh_no_directory, Toast.LENGTH_SHORT).show(); + } else if (count == 0) { + Toast.makeText(requireContext(), R.string.download_refresh_no_changes, Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText( + requireContext(), + getResources().getQuantityString(R.plurals.download_refresh_removed, count, count), + Toast.LENGTH_SHORT + ).show(); + } + }); + + bind.downloadedGroupByImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.download_popup_menu)); + bind.downloadedGoBackImageView.setOnClickListener(view -> downloadViewModel.popViewStack()); + bind.downloadedRefreshImageView.setOnClickListener(view -> downloadViewModel.refreshExternalDownloads()); + } + + private void finishDownloadView(List songs) { + downloadViewModel.getViewStack().observe(getViewLifecycleOwner(), stack -> { + bind.downloadedRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + + DownloadStack lastLevel = stack.get(stack.size() - 1); + + switch (lastLevel.getId()) { + case Constants.DOWNLOAD_TYPE_TRACK: + downloadHorizontalAdapter.setItems(Constants.DOWNLOAD_TYPE_TRACK, lastLevel.getId(), lastLevel.getView(), songs); + break; + case Constants.DOWNLOAD_TYPE_ALBUM: + downloadHorizontalAdapter.setItems(Constants.DOWNLOAD_TYPE_TRACK, lastLevel.getId(), lastLevel.getView(), songs); + break; + case Constants.DOWNLOAD_TYPE_ARTIST: + downloadHorizontalAdapter.setItems(Constants.DOWNLOAD_TYPE_ALBUM, lastLevel.getId(), lastLevel.getView(), songs); + break; + case Constants.DOWNLOAD_TYPE_GENRE: + downloadHorizontalAdapter.setItems(Constants.DOWNLOAD_TYPE_TRACK, lastLevel.getId(), lastLevel.getView(), songs); + break; + case Constants.DOWNLOAD_TYPE_YEAR: + downloadHorizontalAdapter.setItems(Constants.DOWNLOAD_TYPE_TRACK, lastLevel.getId(), lastLevel.getView(), songs); + break; + } + + bind.downloadedGoBackImageView.setVisibility(stack.size() > 1 ? View.VISIBLE : View.GONE); + + setupBackPressing(stack.size()); + setupShuffleButton(); + }); + } + + private void setupShuffleButton() { + bind.shuffleDownloadedTextViewClickable.setOnClickListener(view -> { + List songs = downloadHorizontalAdapter.getShuffling(); + + if (songs != null && !songs.isEmpty()) { + Collections.shuffle(songs); + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + } + }); + } + + private void setupBackPressing(int stackSize) { + requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + if (stackSize > 1) { + downloadViewModel.popViewStack(); + } else { + activity.navController.navigateUp(); + } + + remove(); + } + }); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_download_group_by_track) { + downloadViewModel.initViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_TRACK, null)); + Preferences.setDefaultDownloadViewType(Constants.DOWNLOAD_TYPE_TRACK); + return true; + } else if (menuItem.getItemId() == R.id.menu_download_group_by_album) { + downloadViewModel.initViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_ALBUM, null)); + Preferences.setDefaultDownloadViewType(Constants.DOWNLOAD_TYPE_ALBUM); + return true; + } else if (menuItem.getItemId() == R.id.menu_download_group_by_artist) { + downloadViewModel.initViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_ARTIST, null)); + Preferences.setDefaultDownloadViewType(Constants.DOWNLOAD_TYPE_ARTIST); + return true; + } else if (menuItem.getItemId() == R.id.menu_download_group_by_genre) { + downloadViewModel.initViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_GENRE, null)); + Preferences.setDefaultDownloadViewType(Constants.DOWNLOAD_TYPE_GENRE); + return true; + } else if (menuItem.getItemId() == R.id.menu_download_group_by_year) { + downloadViewModel.initViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_YEAR, null)); + Preferences.setDefaultDownloadViewType(Constants.DOWNLOAD_TYPE_YEAR); + return true; + } else if (menuItem.getItemId() == R.id.menu_download_set_directory) { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + startActivityForResult(intent, REQUEST_CODE_PICK_DIRECTORY); + return true; + } + + return false; + }); + + popup.show(); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onYearClick(Bundle bundle) { + downloadViewModel.pushViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_YEAR, bundle.getString(Constants.DOWNLOAD_TYPE_YEAR))); + } + + @Override + public void onGenreClick(Bundle bundle) { + downloadViewModel.pushViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_GENRE, bundle.getString(Constants.DOWNLOAD_TYPE_GENRE))); + } + + @Override + public void onArtistClick(Bundle bundle) { + downloadViewModel.pushViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_ARTIST, bundle.getString(Constants.DOWNLOAD_TYPE_ARTIST))); + } + + @Override + public void onAlbumClick(Bundle bundle) { + downloadViewModel.pushViewStack(new DownloadStack(Constants.DOWNLOAD_TYPE_ALBUM, bundle.getString(Constants.DOWNLOAD_TYPE_ALBUM))); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + @Override + public void onDownloadGroupLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.downloadBottomSheetDialog, bundle); + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == REQUEST_CODE_PICK_DIRECTORY && resultCode == Activity.RESULT_OK) { + Uri uri = data.getData(); + if (uri != null) { + requireContext().getContentResolver().takePersistableUriPermission( + uri, + Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION + ); + Preferences.setDownloadDirectoryUri(uri.toString()); + ExternalAudioReader.refreshCache(); + Toast.makeText(requireContext(), "Download directory set", Toast.LENGTH_SHORT).show(); + } + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/EqualizerFragment.kt b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/EqualizerFragment.kt new file mode 100644 index 0000000..0b97d51 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/EqualizerFragment.kt @@ -0,0 +1,268 @@ +package com.cappielloantonio.tempo.ui.fragment + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.content.ServiceConnection +import android.content.BroadcastReceiver +import android.os.Bundle +import android.os.IBinder +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import androidx.annotation.OptIn +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import androidx.media3.common.util.UnstableApi +import com.cappielloantonio.tempo.R +import com.cappielloantonio.tempo.service.EqualizerManager +import com.cappielloantonio.tempo.service.MediaService +import com.cappielloantonio.tempo.util.Preferences + +class EqualizerFragment : Fragment() { + + private var equalizerManager: EqualizerManager? = null + private lateinit var eqBandsContainer: LinearLayout + private lateinit var eqSwitch: Switch + private lateinit var resetButton: Button + private lateinit var safeSpace: Space + private val bandSeekBars = mutableListOf() + + private var receiverRegistered = false + private val equalizerUpdatedReceiver = object : BroadcastReceiver() { + @OptIn(UnstableApi::class) + override fun onReceive(context: Context?, intent: Intent?) { + if (intent?.action == MediaService.ACTION_EQUALIZER_UPDATED) { + initUI() + restoreEqualizerPreferences() + } + } + } + + private val connection = object : ServiceConnection { + @OptIn(UnstableApi::class) + override fun onServiceConnected(className: ComponentName, service: IBinder) { + val binder = service as MediaService.LocalBinder + equalizerManager = binder.getEqualizerManager() + initUI() + restoreEqualizerPreferences() + } + + override fun onServiceDisconnected(arg0: ComponentName) { + equalizerManager = null + } + } + + @OptIn(UnstableApi::class) + override fun onStart() { + super.onStart() + Intent(requireContext(), MediaService::class.java).also { intent -> + intent.action = MediaService.ACTION_BIND_EQUALIZER + requireActivity().bindService(intent, connection, Context.BIND_AUTO_CREATE) + } + if (!receiverRegistered) { + ContextCompat.registerReceiver( + requireContext(), + equalizerUpdatedReceiver, + IntentFilter(MediaService.ACTION_EQUALIZER_UPDATED), + ContextCompat.RECEIVER_NOT_EXPORTED + ) + receiverRegistered = true + } + } + + override fun onStop() { + super.onStop() + requireActivity().unbindService(connection) + equalizerManager = null + if (receiverRegistered) { + try { + requireContext().unregisterReceiver(equalizerUpdatedReceiver) + } catch (_: Exception) { + // ignore if not registered + } + receiverRegistered = false + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val root = inflater.inflate(R.layout.fragment_equalizer, container, false) + eqSwitch = root.findViewById(R.id.equalizer_switch) + eqSwitch.isChecked = Preferences.isEqualizerEnabled() + eqSwitch.jumpDrawablesToCurrentState() + return root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + eqBandsContainer = view.findViewById(R.id.eq_bands_container) + resetButton = view.findViewById(R.id.equalizer_reset_button) + safeSpace = view.findViewById(R.id.equalizer_bottom_space) + } + + private fun initUI() { + val manager = equalizerManager + val notSupportedView = view?.findViewById(R.id.equalizer_not_supported_container) + val switchRow = view?.findViewById(R.id.equalizer_switch_row) + + if (manager == null || manager.getNumberOfBands().toInt() == 0) { + switchRow?.visibility = View.GONE + resetButton.visibility = View.GONE + eqBandsContainer.visibility = View.GONE + safeSpace.visibility = View.GONE + notSupportedView?.visibility = View.VISIBLE + return + } + + notSupportedView?.visibility = View.GONE + switchRow?.visibility = View.VISIBLE + resetButton.visibility = View.VISIBLE + eqBandsContainer.visibility = View.VISIBLE + safeSpace.visibility = View.VISIBLE + + eqSwitch.setOnCheckedChangeListener(null) + updateUiEnabledState(eqSwitch.isChecked) + eqSwitch.setOnCheckedChangeListener { _, isChecked -> + manager.setEnabled(isChecked) + Preferences.setEqualizerEnabled(isChecked) + updateUiEnabledState(isChecked) + } + + createBandSliders() + + resetButton.setOnClickListener { + resetEqualizer() + saveBandLevelsToPreferences() + } + } + + private fun updateUiEnabledState(isEnabled: Boolean) { + resetButton.isEnabled = isEnabled + bandSeekBars.forEach { it.isEnabled = isEnabled } + } + + private fun formatDb(value: Int): String = if (value > 0) "+$value dB" else "$value dB" + + private fun createBandSliders() { + val manager = equalizerManager ?: return + eqBandsContainer.removeAllViews() + bandSeekBars.clear() + val bands = manager.getNumberOfBands() + val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500) + val minLevelDb = bandLevelRange[0] / 100 + val maxLevelDb = bandLevelRange[1] / 100 + + val savedLevels = Preferences.getEqualizerBandLevels(bands) + for (i in 0 until bands) { + val band = i.toShort() + val freq = manager.getCenterFreq(band) ?: 0 + + val row = LinearLayout(requireContext()).apply { + orientation = LinearLayout.HORIZONTAL + layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ).apply { + val topBottomMarginDp = 16 + topMargin = topBottomMarginDp.dpToPx(context) + bottomMargin = topBottomMarginDp.dpToPx(context) + } + setPadding(0, 8, 0, 8) + } + + val freqLabel = TextView(requireContext(), null, 0, R.style.LabelSmall).apply { + text = if (freq >= 1000) { + if (freq % 1000 == 0) { + "${freq / 1000} kHz" + } else { + String.format("%.1f kHz", freq / 1000f) + } + } else { + "$freq Hz" + } + gravity = Gravity.START + layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 2f) + } + row.addView(freqLabel) + + val initialLevelDb = (savedLevels.getOrNull(i) ?: (manager.getBandLevel(band) ?: 0)) / 100 + val dbLabel = TextView(requireContext(), null, 0, R.style.LabelSmall).apply { + text = formatDb(initialLevelDb) + setPadding(12, 0, 0, 0) + gravity = Gravity.END + layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 2f) + } + + val seekBar = SeekBar(requireContext()).apply { + max = maxLevelDb - minLevelDb + progress = initialLevelDb - minLevelDb + layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 6f) + setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + val thisLevelDb = progress + minLevelDb + if (fromUser) { + manager.setBandLevel(band, (thisLevelDb * 100).toShort()) + saveBandLevelsToPreferences() + } + dbLabel.text = formatDb(thisLevelDb) + } + + override fun onStartTrackingTouch(seekBar: SeekBar) {} + override fun onStopTrackingTouch(seekBar: SeekBar) {} + }) + } + bandSeekBars.add(seekBar) + row.addView(seekBar) + row.addView(dbLabel) + eqBandsContainer.addView(row) + } + } + + private fun resetEqualizer() { + val manager = equalizerManager ?: return + val bands = manager.getNumberOfBands() + val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500) + val minLevelDb = bandLevelRange[0] / 100 + val midLevelDb = 0 + + for (i in 0 until bands) { + manager.setBandLevel(i.toShort(), (0).toShort()) + bandSeekBars.getOrNull(i)?.progress = midLevelDb - minLevelDb + } + Preferences.setEqualizerBandLevels(ShortArray(bands.toInt())) + } + + private fun saveBandLevelsToPreferences() { + val manager = equalizerManager ?: return + val bands = manager.getNumberOfBands() + val levels = ShortArray(bands.toInt()) { i -> manager.getBandLevel(i.toShort()) ?: 0 } + Preferences.setEqualizerBandLevels(levels) + } + + private fun restoreEqualizerPreferences() { + val manager = equalizerManager ?: return + eqSwitch.isChecked = Preferences.isEqualizerEnabled() + updateUiEnabledState(eqSwitch.isChecked) + + val bands = manager.getNumberOfBands() + val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500) + val minLevelDb = bandLevelRange[0] / 100 + + val savedLevels = Preferences.getEqualizerBandLevels(bands) + for (i in 0 until bands) { + val savedDb = savedLevels[i] / 100 + manager.setBandLevel(i.toShort(), (savedDb * 100).toShort()) + bandSeekBars.getOrNull(i)?.progress = savedDb - minLevelDb + } + } + +} + +private fun Int.dpToPx(context: Context): Int = + (this * context.resources.displayMetrics.density).toInt() diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/FilterFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/FilterFragment.java new file mode 100644 index 0000000..54fd2be --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/FilterFragment.java @@ -0,0 +1,106 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentFilterBinding; +import com.cappielloantonio.tempo.subsonic.models.Genre; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.viewmodel.FilterViewModel; +import com.google.android.material.chip.Chip; + +@OptIn(markerClass = UnstableApi.class) +public class FilterFragment extends Fragment { + private static final String TAG = "FilterFragment"; + + private MainActivity activity; + private FragmentFilterBinding bind; + private FilterViewModel filterViewModel; + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + bind = FragmentFilterBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + filterViewModel = new ViewModelProvider(requireActivity()).get(FilterViewModel.class); + + init(); + initAppBar(); + setFilterChips(); + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MEDIA_BY_GENRES, Constants.MEDIA_BY_GENRES); + bundle.putStringArrayList("filters_list", filterViewModel.getFilters()); + bundle.putStringArrayList("filter_name_list", filterViewModel.getFilterNames()); + bind.finishFilteringTextViewClickable.setOnClickListener(v -> { + if (filterViewModel.getFilters().size() > 1) + activity.navController.navigate(R.id.action_filterFragment_to_songListPageFragment, bundle); + else + Toast.makeText(requireContext(), getString(R.string.filter_info_selection), Toast.LENGTH_SHORT).show(); + }); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.genreFilterInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.filter_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + private void setFilterChips() { + filterViewModel.getGenreList().observe(getViewLifecycleOwner(), genres -> { + bind.loadingProgressBar.setVisibility(View.GONE); + bind.filterContainer.setVisibility(View.VISIBLE); + for (Genre genre : genres) { + Chip chip = (Chip) requireActivity().getLayoutInflater().inflate(R.layout.chip_search_filter_genre, null, false); + chip.setText(genre.getGenre()); + chip.setChecked(filterViewModel.getFilters().contains(genre.getGenre())); + chip.setOnCheckedChangeListener((buttonView, isChecked) -> { + if (isChecked) + filterViewModel.addFilter(genre.getGenre(), buttonView.getText().toString()); + else + filterViewModel.removeFilter(genre.getGenre(), buttonView.getText().toString()); + }); + bind.filtersChipsGroup.addView(chip); + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/GenreCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/GenreCatalogueFragment.java new file mode 100644 index 0000000..801c323 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/GenreCatalogueFragment.java @@ -0,0 +1,172 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentGenreCatalogueBinding; +import com.cappielloantonio.tempo.helper.recyclerview.GridItemDecoration; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.GenreCatalogueAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.GenreCatalogueViewModel; + +@OptIn(markerClass = UnstableApi.class) +public class GenreCatalogueFragment extends Fragment implements ClickCallback { + private FragmentGenreCatalogueBinding bind; + private MainActivity activity; + private GenreCatalogueViewModel genreCatalogueViewModel; + + private GenreCatalogueAdapter genreCatalogueAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentGenreCatalogueBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + genreCatalogueViewModel = new ViewModelProvider(requireActivity()).get(GenreCatalogueViewModel.class); + + init(); + initAppBar(); + initGenreCatalogueView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + bind.filterGenresTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_genreCatalogueFragment_to_filterFragment)); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.genreInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.genre_catalogue_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initGenreCatalogueView() { + bind.genreCatalogueRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + bind.genreCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 16, false)); + bind.genreCatalogueRecyclerView.setHasFixedSize(true); + + genreCatalogueAdapter = new GenreCatalogueAdapter(this); + genreCatalogueAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); + bind.genreCatalogueRecyclerView.setAdapter(genreCatalogueAdapter); + + genreCatalogueViewModel.getGenreList().observe(getViewLifecycleOwner(), genres -> genreCatalogueAdapter.setItems(genres) ); + + bind.genreCatalogueRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.genreListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_genre_popup_menu)); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + genreCatalogueAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_genre_sort_name) { + genreCatalogueAdapter.sort(Constants.GENRE_ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_genre_sort_random) { + genreCatalogueAdapter.sort(Constants.GENRE_ORDER_BY_RANDOM); + return true; + } + + return false; + }); + + popup.show(); + } + + @Override + public void onGenreClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songListPageFragment, bundle); + hideKeyboard(requireView()); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeFragment.java new file mode 100644 index 0000000..a0d0380 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeFragment.java @@ -0,0 +1,104 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentHomeBinding; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.fragment.pager.HomePager; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.appbar.MaterialToolbar; +import com.google.android.material.tabs.TabLayout; +import com.google.android.material.tabs.TabLayoutMediator; + +import java.util.Objects; + +@UnstableApi +public class HomeFragment extends Fragment { + private static final String TAG = "HomeFragment"; + + private FragmentHomeBinding bind; + private MainActivity activity; + + private MaterialToolbar materialToolbar; + private AppBarLayout appBarLayout; + private TabLayout tabLayout; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + bind = FragmentHomeBinding.inflate(inflater, container, false); + return bind.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + initAppBar(); + initHomePager(); + } + + @Override + public void onStart() { + super.onStart(); + + activity.setBottomNavigationBarVisibility(true); + activity.setBottomSheetVisibility(true); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initAppBar() { + appBarLayout = bind.getRoot().findViewById(R.id.toolbar_fragment); + materialToolbar = bind.getRoot().findViewById(R.id.toolbar); + + activity.setSupportActionBar(materialToolbar); + Objects.requireNonNull(materialToolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null)); + + tabLayout = new TabLayout(requireContext()); + tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); + tabLayout.setTabMode(TabLayout.MODE_FIXED); + + appBarLayout.addView(tabLayout); + } + + private void initHomePager() { + HomePager pager = new HomePager(this); + + pager.addFragment(new HomeTabMusicFragment(), getString(R.string.home_section_music), R.drawable.ic_home); + + if (Preferences.isPodcastSectionVisible()) + pager.addFragment(new HomeTabPodcastFragment(), getString(R.string.home_section_podcast), R.drawable.ic_graphic_eq); + + if (Preferences.isRadioSectionVisible()) + pager.addFragment(new HomeTabRadioFragment(), getString(R.string.home_section_radio), R.drawable.ic_play_for_work); + + bind.homeViewPager.setAdapter(pager); + bind.homeViewPager.setOffscreenPageLimit(3); + bind.homeViewPager.setUserInputEnabled(false); + + new TabLayoutMediator(tabLayout, bind.homeViewPager, + (tab, position) -> { + tab.setText(pager.getPageTitle(position)); + // tab.setIcon(pager.getPageIcon(position)); + } + ).attach(); + + tabLayout.setVisibility(Preferences.isPodcastSectionVisible() || Preferences.isRadioSectionVisible() ? View.VISIBLE : View.GONE); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java new file mode 100644 index 0000000..7936b5b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java @@ -0,0 +1,1233 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.PopupMenu; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.PagerSnapHelper; +import androidx.recyclerview.widget.SnapHelper; +import androidx.viewpager2.widget.ViewPager2; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentHomeTabMusicBinding; +import com.cappielloantonio.tempo.helper.recyclerview.CustomLinearSnapHelper; +import com.cappielloantonio.tempo.helper.recyclerview.DotsIndicatorDecoration; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.PlaylistCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.model.HomeSector; +import com.cappielloantonio.tempo.service.DownloaderManager; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.AlbumAdapter; +import com.cappielloantonio.tempo.ui.adapter.AlbumHorizontalAdapter; +import com.cappielloantonio.tempo.ui.adapter.ArtistAdapter; +import com.cappielloantonio.tempo.ui.adapter.ArtistHorizontalAdapter; +import com.cappielloantonio.tempo.ui.adapter.DiscoverSongAdapter; +import com.cappielloantonio.tempo.ui.adapter.PlaylistHorizontalAdapter; +import com.cappielloantonio.tempo.ui.adapter.ShareHorizontalAdapter; +import com.cappielloantonio.tempo.ui.adapter.SimilarTrackAdapter; +import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; +import com.cappielloantonio.tempo.ui.adapter.YearAdapter; +import com.cappielloantonio.tempo.ui.dialog.HomeRearrangementDialog; +import com.cappielloantonio.tempo.ui.dialog.PlaylistEditorDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.util.UIUtil; +import com.cappielloantonio.tempo.viewmodel.HomeViewModel; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.google.android.material.snackbar.Snackbar; +import com.google.common.util.concurrent.ListenableFuture; + +import androidx.media3.common.MediaItem; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@UnstableApi +public class HomeTabMusicFragment extends Fragment implements ClickCallback { + private static final String TAG = "HomeFragment"; + + private FragmentHomeTabMusicBinding bind; + private MainActivity activity; + private HomeViewModel homeViewModel; + private PlaybackViewModel playbackViewModel; + + private DiscoverSongAdapter discoverSongAdapter; + private SimilarTrackAdapter similarMusicAdapter; + private ArtistAdapter radioArtistAdapter; + private ArtistAdapter bestOfArtistAdapter; + private SongHorizontalAdapter starredSongAdapter; + private SongHorizontalAdapter topSongAdapter; + private AlbumHorizontalAdapter starredAlbumAdapter; + private ArtistHorizontalAdapter starredArtistAdapter; + private AlbumAdapter recentlyAddedAlbumAdapter; + private AlbumAdapter recentlyPlayedAlbumAdapter; + private AlbumAdapter mostPlayedAlbumAdapter; + private AlbumHorizontalAdapter newReleasesAlbumAdapter; + private YearAdapter yearAdapter; + private PlaylistHorizontalAdapter playlistHorizontalAdapter; + private ShareHorizontalAdapter shareHorizontalAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentHomeTabMusicBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + init(); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + initSyncStarredView(); + initSyncStarredAlbumsView(); + initSyncStarredArtistsView(); + initDiscoverSongSlideView(); + initSimilarSongView(); + initArtistRadio(); + initArtistBestOf(); + initStarredTracksView(); + initStarredAlbumsView(); + initStarredArtistsView(); + initMostPlayedAlbumView(); + initRecentPlayedAlbumView(); + initNewReleasesView(); + initYearSongView(); + initRecentAddedAlbumView(); + initTopSongsView(); + initPinnedPlaylistsView(); + initSharesView(); + initHomeReorganizer(); + + reorder(); + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observeStarredSongsPlayback(); + observeTopSongsPlayback(); + } + + @Override + public void onResume() { + super.onResume(); + refreshSharesView(); + if (topSongAdapter != null) setTopSongsMediaBrowserListenableFuture(); + if (starredSongAdapter != null) setStarredSongsMediaBrowserListenableFuture(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + bind.discoveryTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshDiscoverySongSample(getViewLifecycleOwner()); + return true; + }); + + bind.discoveryTextViewClickable.setOnClickListener(v -> { + homeViewModel.getRandomShuffleSample().observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (!songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + } + }); + }); + + bind.similarTracksTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshSimilarSongSample(getViewLifecycleOwner()); + return true; + }); + + bind.radioArtistTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshRadioArtistSample(getViewLifecycleOwner()); + return true; + }); + + bind.bestOfArtistTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshBestOfArtist(getViewLifecycleOwner()); + return true; + }); + + bind.starredTracksTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.MEDIA_STARRED, Constants.MEDIA_STARRED); + activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle); + }); + + bind.starredAlbumsTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.ALBUM_STARRED, Constants.ALBUM_STARRED); + activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); + }); + + bind.starredArtistsTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.ARTIST_STARRED, Constants.ARTIST_STARRED); + activity.navController.navigate(R.id.action_homeFragment_to_artistListPageFragment, bundle); + }); + + bind.recentlyAddedAlbumsTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.ALBUM_RECENTLY_ADDED, Constants.ALBUM_RECENTLY_ADDED); + activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); + }); + + bind.recentlyPlayedAlbumsTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.ALBUM_RECENTLY_PLAYED, Constants.ALBUM_RECENTLY_PLAYED); + activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); + }); + + bind.mostPlayedAlbumsTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.ALBUM_MOST_PLAYED, Constants.ALBUM_MOST_PLAYED); + activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); + }); + + bind.starredTracksTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshStarredTracks(getViewLifecycleOwner()); + return true; + }); + + bind.starredAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshStarredAlbums(getViewLifecycleOwner()); + return true; + }); + + bind.starredArtistsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshStarredArtists(getViewLifecycleOwner()); + return true; + }); + + bind.recentlyPlayedAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshRecentlyPlayedAlbumList(getViewLifecycleOwner()); + return true; + }); + + bind.mostPlayedAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshMostPlayedAlbums(getViewLifecycleOwner()); + return true; + }); + + bind.recentlyAddedAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshMostRecentlyAddedAlbums(getViewLifecycleOwner()); + return true; + }); + + bind.sharesTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshShares(getViewLifecycleOwner()); + return true; + }); + + bind.gridTracksPreTextView.setOnClickListener(view -> showPopupMenu(view, R.menu.filter_top_songs_popup_menu)); + } + + private void initSyncStarredView() { + if (Preferences.isStarredSyncEnabled() && Preferences.getDownloadDirectoryUri() == null) { + homeViewModel.getAllStarredTracks().observeForever(new Observer>() { + @Override + public void onChanged(List songs) { + if (songs != null) { + DownloaderManager manager = DownloadUtil.getDownloadTracker(requireContext()); + List toSync = new ArrayList<>(); + + for (Child song : songs) { + if (!manager.isDownloaded(song.getId())) { + toSync.add(song.getTitle()); + } + } + + if (!toSync.isEmpty()) { + bind.homeSyncStarredCard.setVisibility(View.VISIBLE); + bind.homeSyncStarredTracksToSync.setText(String.join(", ", toSync)); + } + } + + homeViewModel.getAllStarredTracks().removeObserver(this); + } + }); + } + + bind.homeSyncStarredCancel.setOnClickListener(v -> bind.homeSyncStarredCard.setVisibility(View.GONE)); + + bind.homeSyncStarredDownload.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + homeViewModel.getAllStarredTracks().observeForever(new Observer>() { + @Override + public void onChanged(List songs) { + if (songs != null) { + DownloaderManager manager = DownloadUtil.getDownloadTracker(requireContext()); + + for (Child song : songs) { + if (!manager.isDownloaded(song.getId())) { + manager.download(MappingUtil.mapDownload(song), new Download(song)); + } + } + } + + homeViewModel.getAllStarredTracks().removeObserver(this); + bind.homeSyncStarredCard.setVisibility(View.GONE); + } + }); + } + }); + } + + private void initSyncStarredAlbumsView() { + if (Preferences.isStarredAlbumsSyncEnabled()) { + homeViewModel.getStarredAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List albums) { + if (albums != null && !albums.isEmpty()) { + checkIfAlbumsNeedSync(albums); + } + } + }); + } + + bind.homeSyncStarredAlbumsCancel.setOnClickListener(v -> { + bind.homeSyncStarredAlbumsCard.setVisibility(View.GONE); + }); + + bind.homeSyncStarredAlbumsDownload.setOnClickListener(v -> { + homeViewModel.getAllStarredAlbumSongs().observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List allSongs) { + if (allSongs != null && !allSongs.isEmpty()) { + DownloaderManager manager = DownloadUtil.getDownloadTracker(requireContext()); + int songsToDownload = 0; + + for (Child song : allSongs) { + if (!manager.isDownloaded(song.getId())) { + manager.download(MappingUtil.mapDownload(song), new Download(song)); + songsToDownload++; + } + } + + if (songsToDownload > 0) { + Toast.makeText(requireContext(), + getResources().getQuantityString(R.plurals.songs_download_started, songsToDownload, songsToDownload), + Toast.LENGTH_SHORT).show(); + } + } + + bind.homeSyncStarredAlbumsCard.setVisibility(View.GONE); + } + }); + }); + } + + private void checkIfAlbumsNeedSync(List albums) { + homeViewModel.getAllStarredAlbumSongs().observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List allSongs) { + if (allSongs != null) { + DownloaderManager manager = DownloadUtil.getDownloadTracker(requireContext()); + int songsToDownload = 0; + List albumsNeedingSync = new ArrayList<>(); + + for (AlbumID3 album : albums) { + boolean albumNeedsSync = false; + // Check if any songs from this album need downloading + for (Child song : allSongs) { + if (song.getAlbumId() != null && song.getAlbumId().equals(album.getId()) && + !manager.isDownloaded(song.getId())) { + songsToDownload++; + albumNeedsSync = true; + } + } + if (albumNeedsSync) { + albumsNeedingSync.add(album.getName()); + } + } + + if (songsToDownload > 0) { + bind.homeSyncStarredAlbumsCard.setVisibility(View.VISIBLE); + String message = getResources().getQuantityString( + R.plurals.home_sync_starred_albums_count, + albumsNeedingSync.size(), + albumsNeedingSync.size() + ); + bind.homeSyncStarredAlbumsToSync.setText(message); + } else { + bind.homeSyncStarredAlbumsCard.setVisibility(View.GONE); + } + } + } + }); + } + + private void initSyncStarredArtistsView() { + if (Preferences.isStarredArtistsSyncEnabled()) { + homeViewModel.getStarredArtists(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List artists) { + if (artists != null && !artists.isEmpty()) { + checkIfArtistsNeedSync(artists); + } + } + }); + } + + bind.homeSyncStarredArtistsCancel.setOnClickListener(v -> { + bind.homeSyncStarredArtistsCard.setVisibility(View.GONE); + }); + + bind.homeSyncStarredArtistsDownload.setOnClickListener(v -> { + homeViewModel.getAllStarredArtistSongs().observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List allSongs) { + if (allSongs != null && !allSongs.isEmpty()) { + DownloaderManager manager = DownloadUtil.getDownloadTracker(requireContext()); + int songsToDownload = 0; + + for (Child song : allSongs) { + if (!manager.isDownloaded(song.getId())) { + manager.download(MappingUtil.mapDownload(song), new Download(song)); + songsToDownload++; + } + } + + if (songsToDownload > 0) { + Toast.makeText(requireContext(), + getResources().getQuantityString(R.plurals.songs_download_started, songsToDownload, songsToDownload), + Toast.LENGTH_SHORT).show(); + } + } + + bind.homeSyncStarredArtistsCard.setVisibility(View.GONE); + } + }); + }); + } + + private void checkIfArtistsNeedSync(List artists) { + homeViewModel.getAllStarredArtistSongs().observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List allSongs) { + if (allSongs != null) { + DownloaderManager manager = DownloadUtil.getDownloadTracker(requireContext()); + int songsToDownload = 0; + List artistsNeedingSync = new ArrayList<>(); + + for (ArtistID3 artist : artists) { + boolean artistNeedsSync = false; + // Check if any songs from this artist need downloading + for (Child song : allSongs) { + if (song.getArtistId() != null && song.getArtistId().equals(artist.getId()) && + !manager.isDownloaded(song.getId())) { + songsToDownload++; + artistNeedsSync = true; + } + } + if (artistNeedsSync) { + artistsNeedingSync.add(artist.getName()); + } + } + + if (songsToDownload > 0) { + bind.homeSyncStarredArtistsCard.setVisibility(View.VISIBLE); + String message = getResources().getQuantityString( + R.plurals.home_sync_starred_artists_count, + artistsNeedingSync.size(), + artistsNeedingSync.size() + ); + bind.homeSyncStarredArtistsToSync.setText(message); + } else { + bind.homeSyncStarredArtistsCard.setVisibility(View.GONE); + } + } + } + }); + } + + private void initDiscoverSongSlideView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_DISCOVERY)) return; + + bind.discoverSongViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); + + discoverSongAdapter = new DiscoverSongAdapter(this); + bind.discoverSongViewPager.setAdapter(discoverSongAdapter); + bind.discoverSongViewPager.setOffscreenPageLimit(1); + homeViewModel.getDiscoverSongSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (songs == null) { + if (bind != null) bind.homeDiscoverSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeDiscoverSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE); + + discoverSongAdapter.setItems(songs); + } + }); + + setSlideViewOffset(bind.discoverSongViewPager, 20, 16); + } + + private void initSimilarSongView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_MADE_FOR_YOU)) return; + + bind.similarTracksRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.similarTracksRecyclerView.setHasFixedSize(true); + + similarMusicAdapter = new SimilarTrackAdapter(this); + bind.similarTracksRecyclerView.setAdapter(similarMusicAdapter); + homeViewModel.getStarredTracksSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (songs == null) { + if (bind != null) bind.homeSimilarTracksSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeSimilarTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE); + + similarMusicAdapter.setItems(songs); + } + }); + + CustomLinearSnapHelper similarSongSnapHelper = new CustomLinearSnapHelper(); + similarSongSnapHelper.attachToRecyclerView(bind.similarTracksRecyclerView); + } + + private void initArtistBestOf() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_BEST_OF)) return; + + bind.bestOfArtistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.bestOfArtistRecyclerView.setHasFixedSize(true); + + bestOfArtistAdapter = new ArtistAdapter(this, false, true); + bind.bestOfArtistRecyclerView.setAdapter(bestOfArtistAdapter); + homeViewModel.getBestOfArtists(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { + if (artists == null) { + if (bind != null) bind.homeBestOfArtistSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeBestOfArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + + bestOfArtistAdapter.setItems(artists); + } + }); + + CustomLinearSnapHelper artistBestOfSnapHelper = new CustomLinearSnapHelper(); + artistBestOfSnapHelper.attachToRecyclerView(bind.bestOfArtistRecyclerView); + } + + private void initArtistRadio() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_RADIO_STATION)) return; + + bind.radioArtistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.radioArtistRecyclerView.setHasFixedSize(true); + + radioArtistAdapter = new ArtistAdapter(this, true, false); + bind.radioArtistRecyclerView.setAdapter(radioArtistAdapter); + homeViewModel.getStarredArtistsSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { + if (artists == null) { + if (bind != null) bind.homeRadioArtistSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeRadioArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.afterRadioArtistDivider.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + + radioArtistAdapter.setItems(artists); + } + }); + + CustomLinearSnapHelper artistRadioSnapHelper = new CustomLinearSnapHelper(); + artistRadioSnapHelper.attachToRecyclerView(bind.radioArtistRecyclerView); + } + + private void initTopSongsView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_TOP_SONGS)) return; + + bind.topSongsRecyclerView.setHasFixedSize(true); + + topSongAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, true, false, null); + bind.topSongsRecyclerView.setAdapter(topSongAdapter); + setTopSongsMediaBrowserListenableFuture(); + reapplyTopSongsPlayback(); + homeViewModel.getChronologySample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), chronologies -> { + if (chronologies == null || chronologies.isEmpty()) { + if (bind != null) bind.homeGridTracksSector.setVisibility(View.GONE); + if (bind != null) bind.afterGridDivider.setVisibility(View.GONE); + } else { + if (bind != null) bind.homeGridTracksSector.setVisibility(View.VISIBLE); + if (bind != null) bind.afterGridDivider.setVisibility(View.VISIBLE); + if (bind != null) + bind.topSongsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(chronologies.size(), 5), GridLayoutManager.HORIZONTAL, false)); + + List topSongs = chronologies.stream() + .map(cronologia -> (Child) cronologia) + .collect(Collectors.toList()); + + topSongAdapter.setItems(topSongs); + reapplyTopSongsPlayback(); + } + }); + + SnapHelper topTrackSnapHelper = new PagerSnapHelper(); + topTrackSnapHelper.attachToRecyclerView(bind.topSongsRecyclerView); + + bind.topSongsRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + + private void initStarredTracksView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_STARRED_TRACKS)) return; + + bind.starredTracksRecyclerView.setHasFixedSize(true); + + starredSongAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, true, false, null); + bind.starredTracksRecyclerView.setAdapter(starredSongAdapter); + setStarredSongsMediaBrowserListenableFuture(); + reapplyStarredSongsPlayback(); + homeViewModel.getStarredTracks(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { + if (songs == null) { + if (bind != null) bind.starredTracksSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.starredTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(songs.size(), 5), GridLayoutManager.HORIZONTAL, false)); + + starredSongAdapter.setItems(songs); + reapplyStarredSongsPlayback(); + } + }); + + SnapHelper starredTrackSnapHelper = new PagerSnapHelper(); + starredTrackSnapHelper.attachToRecyclerView(bind.starredTracksRecyclerView); + + bind.starredTracksRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + + private void initStarredAlbumsView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_STARRED_ALBUMS)) return; + + bind.starredAlbumsRecyclerView.setHasFixedSize(true); + + starredAlbumAdapter = new AlbumHorizontalAdapter(this, false); + bind.starredAlbumsRecyclerView.setAdapter(starredAlbumAdapter); + homeViewModel.getStarredAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.starredAlbumsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.starredAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false)); + + starredAlbumAdapter.setItems(albums); + } + }); + + SnapHelper starredAlbumSnapHelper = new PagerSnapHelper(); + starredAlbumSnapHelper.attachToRecyclerView(bind.starredAlbumsRecyclerView); + + bind.starredAlbumsRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + + private void initStarredArtistsView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_STARRED_ARTISTS)) return; + + bind.starredArtistsRecyclerView.setHasFixedSize(true); + + starredArtistAdapter = new ArtistHorizontalAdapter(this); + bind.starredArtistsRecyclerView.setAdapter(starredArtistAdapter); + homeViewModel.getStarredArtists(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { + if (artists == null) { + if (bind != null) bind.starredArtistsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.starredArtistsSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.afterFavoritesDivider.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(artists.size(), 5), GridLayoutManager.HORIZONTAL, false)); + + starredArtistAdapter.setItems(artists); + } + }); + + SnapHelper starredArtistSnapHelper = new PagerSnapHelper(); + starredArtistSnapHelper.attachToRecyclerView(bind.starredArtistsRecyclerView); + + bind.starredArtistsRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + + private void initNewReleasesView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_NEW_RELEASES)) return; + + bind.newReleasesRecyclerView.setHasFixedSize(true); + + newReleasesAlbumAdapter = new AlbumHorizontalAdapter(this, false); + bind.newReleasesRecyclerView.setAdapter(newReleasesAlbumAdapter); + homeViewModel.getRecentlyReleasedAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.homeNewReleasesSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeNewReleasesSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.newReleasesRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false)); + + newReleasesAlbumAdapter.setItems(albums); + } + }); + + SnapHelper newReleasesSnapHelper = new PagerSnapHelper(); + newReleasesSnapHelper.attachToRecyclerView(bind.newReleasesRecyclerView); + + bind.newReleasesRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + + private void initYearSongView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_FLASHBACK)) return; + + bind.yearsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.yearsRecyclerView.setHasFixedSize(true); + + yearAdapter = new YearAdapter(this); + bind.yearsRecyclerView.setAdapter(yearAdapter); + homeViewModel.getYearList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), years -> { + if (years == null) { + if (bind != null) bind.homeFlashbackSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeFlashbackSector.setVisibility(!years.isEmpty() ? View.VISIBLE : View.GONE); + + yearAdapter.setItems(years); + } + }); + + CustomLinearSnapHelper yearSnapHelper = new CustomLinearSnapHelper(); + yearSnapHelper.attachToRecyclerView(bind.yearsRecyclerView); + } + + private void initMostPlayedAlbumView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_MOST_PLAYED)) return; + + bind.mostPlayedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.mostPlayedAlbumsRecyclerView.setHasFixedSize(true); + + mostPlayedAlbumAdapter = new AlbumAdapter(this); + bind.mostPlayedAlbumsRecyclerView.setAdapter(mostPlayedAlbumAdapter); + homeViewModel.getMostPlayedAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.homeMostPlayedAlbumsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeMostPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + + mostPlayedAlbumAdapter.setItems(albums); + } + }); + + CustomLinearSnapHelper mostPlayedAlbumSnapHelper = new CustomLinearSnapHelper(); + mostPlayedAlbumSnapHelper.attachToRecyclerView(bind.mostPlayedAlbumsRecyclerView); + } + + private void initRecentPlayedAlbumView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_LAST_PLAYED)) return; + + bind.recentlyPlayedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.recentlyPlayedAlbumsRecyclerView.setHasFixedSize(true); + + recentlyPlayedAlbumAdapter = new AlbumAdapter(this); + bind.recentlyPlayedAlbumsRecyclerView.setAdapter(recentlyPlayedAlbumAdapter); + homeViewModel.getRecentlyPlayedAlbumList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.homeRecentlyPlayedAlbumsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeRecentlyPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + + recentlyPlayedAlbumAdapter.setItems(albums); + } + }); + + CustomLinearSnapHelper recentPlayedAlbumSnapHelper = new CustomLinearSnapHelper(); + recentPlayedAlbumSnapHelper.attachToRecyclerView(bind.recentlyPlayedAlbumsRecyclerView); + } + + private void initRecentAddedAlbumView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_RECENTLY_ADDED)) return; + + bind.recentlyAddedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.recentlyAddedAlbumsRecyclerView.setHasFixedSize(true); + + recentlyAddedAlbumAdapter = new AlbumAdapter(this); + bind.recentlyAddedAlbumsRecyclerView.setAdapter(recentlyAddedAlbumAdapter); + homeViewModel.getMostRecentlyAddedAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.homeRecentlyAddedAlbumsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeRecentlyAddedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + + recentlyAddedAlbumAdapter.setItems(albums); + } + }); + + CustomLinearSnapHelper recentAddedAlbumSnapHelper = new CustomLinearSnapHelper(); + recentAddedAlbumSnapHelper.attachToRecyclerView(bind.recentlyAddedAlbumsRecyclerView); + } + + private void initPinnedPlaylistsView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_PINNED_PLAYLISTS)) return; + + bind.pinnedPlaylistsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.pinnedPlaylistsRecyclerView.setHasFixedSize(true); + + playlistHorizontalAdapter = new PlaylistHorizontalAdapter(this); + bind.pinnedPlaylistsRecyclerView.setAdapter(playlistHorizontalAdapter); + homeViewModel.getPinnedPlaylists(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), playlists -> { + if (playlists == null) { + if (bind != null) bind.pinnedPlaylistsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.pinnedPlaylistsSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE); + + playlistHorizontalAdapter.setItems(playlists); + } + }); + } + + private void initSharesView() { + if (homeViewModel.checkHomeSectorVisibility(Constants.HOME_SECTOR_SHARED)) return; + + bind.sharesRecyclerView.setHasFixedSize(true); + + shareHorizontalAdapter = new ShareHorizontalAdapter(this); + bind.sharesRecyclerView.setAdapter(shareHorizontalAdapter); + if (Preferences.isSharingEnabled()) { + homeViewModel.getShares(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), shares -> { + if (shares == null) { + if (bind != null) bind.sharesSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.sharesSector.setVisibility(!shares.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.sharesRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(shares.size(), 10), GridLayoutManager.HORIZONTAL, false)); + + shareHorizontalAdapter.setItems(shares); + } + }); + } + + SnapHelper starredTrackSnapHelper = new PagerSnapHelper(); + starredTrackSnapHelper.attachToRecyclerView(bind.sharesRecyclerView); + + bind.sharesRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + + private void initHomeReorganizer() { + final Handler handler = new Handler(); + final Runnable runnable = () -> { + if (bind != null) bind.homeSectorRearrangementButton.setVisibility(View.VISIBLE); + }; + handler.postDelayed(runnable, 5000); + + bind.homeSectorRearrangementButton.setOnClickListener(v -> { + HomeRearrangementDialog dialog = new HomeRearrangementDialog(); + dialog.show(requireActivity().getSupportFragmentManager(), null); + }); + } + + private void refreshSharesView() { + final Handler handler = new Handler(); + final Runnable runnable = () -> { + if (getView() != null && bind != null && Preferences.isSharingEnabled()) { + homeViewModel.refreshShares(getViewLifecycleOwner()); + } + }; + handler.postDelayed(runnable, 100); + } + + private void setSlideViewOffset(ViewPager2 viewPager, float pageOffset, float pageMargin) { + viewPager.setPageTransformer((page, position) -> { + float myOffset = position * -(2 * pageOffset + pageMargin); + if (viewPager.getOrientation() == ViewPager2.ORIENTATION_HORIZONTAL) { + if (ViewCompat.getLayoutDirection(viewPager) == ViewCompat.LAYOUT_DIRECTION_RTL) { + page.setTranslationX(-myOffset); + } else { + page.setTranslationX(myOffset); + } + } else { + page.setTranslationY(myOffset); + } + }); + } + + public void reorder() { + if (bind != null && homeViewModel.getHomeSectorList() != null) { + bind.homeLinearLayoutContainer.removeAllViews(); + + for (HomeSector sector : homeViewModel.getHomeSectorList()) { + if (!sector.isVisible()) continue; + + switch (sector.getId()) { + case Constants.HOME_SECTOR_DISCOVERY: + bind.homeLinearLayoutContainer.addView(bind.homeDiscoverSector); + break; + case Constants.HOME_SECTOR_MADE_FOR_YOU: + bind.homeLinearLayoutContainer.addView(bind.homeSimilarTracksSector); + break; + case Constants.HOME_SECTOR_BEST_OF: + bind.homeLinearLayoutContainer.addView(bind.homeBestOfArtistSector); + break; + case Constants.HOME_SECTOR_RADIO_STATION: + bind.homeLinearLayoutContainer.addView(bind.homeRadioArtistSector); + break; + case Constants.HOME_SECTOR_TOP_SONGS: + bind.homeLinearLayoutContainer.addView(bind.homeGridTracksSector); + break; + case Constants.HOME_SECTOR_STARRED_TRACKS: + bind.homeLinearLayoutContainer.addView(bind.starredTracksSector); + break; + case Constants.HOME_SECTOR_STARRED_ALBUMS: + bind.homeLinearLayoutContainer.addView(bind.starredAlbumsSector); + break; + case Constants.HOME_SECTOR_STARRED_ARTISTS: + bind.homeLinearLayoutContainer.addView(bind.starredArtistsSector); + break; + case Constants.HOME_SECTOR_NEW_RELEASES: + bind.homeLinearLayoutContainer.addView(bind.homeNewReleasesSector); + break; + case Constants.HOME_SECTOR_FLASHBACK: + bind.homeLinearLayoutContainer.addView(bind.homeFlashbackSector); + break; + case Constants.HOME_SECTOR_MOST_PLAYED: + bind.homeLinearLayoutContainer.addView(bind.homeMostPlayedAlbumsSector); + break; + case Constants.HOME_SECTOR_LAST_PLAYED: + bind.homeLinearLayoutContainer.addView(bind.homeRecentlyPlayedAlbumsSector); + break; + case Constants.HOME_SECTOR_RECENTLY_ADDED: + bind.homeLinearLayoutContainer.addView(bind.homeRecentlyAddedAlbumsSector); + break; + case Constants.HOME_SECTOR_PINNED_PLAYLISTS: + bind.homeLinearLayoutContainer.addView(bind.pinnedPlaylistsSector); + break; + case Constants.HOME_SECTOR_SHARED: + bind.homeLinearLayoutContainer.addView(bind.sharesSector); + break; + } + } + + bind.homeLinearLayoutContainer.addView(bind.homeSectorRearrangementButton); + } + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_last_week_name) { + homeViewModel.changeChronologyPeriod(getViewLifecycleOwner(), 0); + bind.gridTracksPreTextView.setText(getString(R.string.home_title_last_week)); + return true; + } else if (menuItem.getItemId() == R.id.menu_last_month_name) { + homeViewModel.changeChronologyPeriod(getViewLifecycleOwner(), 1); + bind.gridTracksPreTextView.setText(getString(R.string.home_title_last_month)); + return true; + } else if (menuItem.getItemId() == R.id.menu_last_year_name) { + homeViewModel.changeChronologyPeriod(getViewLifecycleOwner(), 2); + bind.gridTracksPreTextView.setText(getString(R.string.home_title_last_year)); + return true; + } + + return false; + }); + + popup.show(); + } + + private void refreshPlaylistView() { + final Handler handler = new Handler(); + + final Runnable runnable = () -> { + if (getView() != null && bind != null && homeViewModel != null) + homeViewModel.getPinnedPlaylists(getViewLifecycleOwner()); + }; + + handler.postDelayed(runnable, 100); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + if (bundle.containsKey(Constants.MEDIA_MIX)) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelable(Constants.TRACK_OBJECT)); + activity.setBottomSheetInPeek(true); + + if (mediaBrowserListenableFuture != null) { + homeViewModel.getMediaInstantMix(getViewLifecycleOwner(), bundle.getParcelable(Constants.TRACK_OBJECT)).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (songs != null && !songs.isEmpty()) { + MediaManager.enqueue(mediaBrowserListenableFuture, songs, true); + } + }); + } + } else if (bundle.containsKey(Constants.MEDIA_CHRONOLOGY)) { + List media = bundle.getParcelableArrayList(Constants.TRACKS_OBJECT); + MediaManager.startQueue(mediaBrowserListenableFuture, media, bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } else { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } + topSongAdapter.notifyDataSetChanged(); + starredSongAdapter.notifyDataSetChanged(); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + @Override + public void onAlbumClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumPageFragment, bundle); + } + + @Override + public void onAlbumLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } + + @Override + public void onArtistClick(Bundle bundle) { + if (bundle.containsKey(Constants.MEDIA_MIX) && bundle.getBoolean(Constants.MEDIA_MIX)) { + Snackbar.make(requireView(), R.string.artist_adapter_radio_station_starting, Snackbar.LENGTH_LONG) + .setAnchorView(activity.bind.playerBottomSheet) + .show(); + + if (mediaBrowserListenableFuture != null) { + homeViewModel.getArtistInstantMix(getViewLifecycleOwner(), bundle.getParcelable(Constants.ARTIST_OBJECT)).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (!songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + } + }); + } + } else if (bundle.containsKey(Constants.MEDIA_BEST_OF) && bundle.getBoolean(Constants.MEDIA_BEST_OF)) { + if (mediaBrowserListenableFuture != null) { + homeViewModel.getArtistBestOf(getViewLifecycleOwner(), bundle.getParcelable(Constants.ARTIST_OBJECT)).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (!songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + } + }); + } + } else { + Navigation.findNavController(requireView()).navigate(R.id.artistPageFragment, bundle); + } + } + + @Override + public void onArtistLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistBottomSheetDialog, bundle); + } + + @Override + public void onYearClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songListPageFragment, bundle); + } + + @Override + public void onShareClick(Bundle bundle) { + Share share = bundle.getParcelable(Constants.SHARE_OBJECT); + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(share.getUrl())).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + + @Override + public void onPlaylistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.playlistPageFragment, bundle); + } + + @Override + public void onPlaylistLongClick(Bundle bundle) { + PlaylistEditorDialog dialog = new PlaylistEditorDialog(new PlaylistCallback() { + @Override + public void onDismiss() { + refreshPlaylistView(); + } + }); + + dialog.setArguments(bundle); + dialog.show(activity.getSupportFragmentManager(), null); + } + + @Override + public void onShareLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.shareBottomSheetDialog, bundle); + } + + private void observeStarredSongsPlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (starredSongAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + starredSongAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (starredSongAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + starredSongAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void observeTopSongsPlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (topSongAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + topSongAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (topSongAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + topSongAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyStarredSongsPlayback() { + if (starredSongAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + starredSongAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void reapplyTopSongsPlayback() { + if (topSongAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + topSongAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void setTopSongsMediaBrowserListenableFuture() { + topSongAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } + + private void setStarredSongsMediaBrowserListenableFuture() { + starredSongAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabPodcastFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabPodcastFragment.java new file mode 100644 index 0000000..f1c42e1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabPodcastFragment.java @@ -0,0 +1,188 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentHomeTabPodcastBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.PodcastCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.PodcastChannelHorizontalAdapter; +import com.cappielloantonio.tempo.ui.adapter.PodcastEpisodeAdapter; +import com.cappielloantonio.tempo.ui.dialog.PodcastChannelEditorDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.util.UIUtil; +import com.cappielloantonio.tempo.viewmodel.PodcastViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.Objects; +import java.util.stream.Collectors; + +@UnstableApi +public class HomeTabPodcastFragment extends Fragment implements ClickCallback, PodcastCallback { + private static final String TAG = "HomeTabPodcastFragment"; + + private FragmentHomeTabPodcastBinding bind; + private MainActivity activity; + private PodcastViewModel podcastViewModel; + + private PodcastEpisodeAdapter podcastEpisodeAdapter; + private PodcastChannelHorizontalAdapter podcastChannelHorizontalAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentHomeTabPodcastBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + podcastViewModel = new ViewModelProvider(requireActivity()).get(PodcastViewModel.class); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + init(); + initPodcastView(); + initNewestPodcastsView(); + initPodcastChannelsView(); + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + bind.podcastChannelsPreTextView.setOnClickListener(v -> { + PodcastChannelEditorDialog dialog = new PodcastChannelEditorDialog(this); + dialog.show(activity.getSupportFragmentManager(), null); + }); + + bind.podcastChannelsTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_homeFragment_to_podcastChannelCatalogueFragment)); + bind.hideSectionButton.setOnClickListener(v -> Preferences.setPodcastSectionHidden()); + } + + private void initPodcastView() { + podcastViewModel.getPodcastChannels(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), podcastChannels -> { + if (podcastChannels == null) { + if (bind != null) bind.homePodcastChannelsSector.setVisibility(View.GONE); + if (bind != null) bind.emptyPodcastLayout.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homePodcastChannelsSector.setVisibility(!podcastChannels.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.emptyPodcastLayout.setVisibility(podcastChannels.isEmpty() ? View.VISIBLE : View.GONE); + } + }); + } + + private void initPodcastChannelsView() { + bind.podcastChannelsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + + podcastChannelHorizontalAdapter = new PodcastChannelHorizontalAdapter(this); + bind.podcastChannelsRecyclerView.setAdapter(podcastChannelHorizontalAdapter); + podcastViewModel.getPodcastChannels(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), podcastChannels -> { + if (podcastChannels == null) { + if (bind != null) bind.homePodcastChannelsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homePodcastChannelsSector.setVisibility(!podcastChannels.isEmpty() ? View.VISIBLE : View.GONE); + + podcastChannelHorizontalAdapter.setItems(podcastChannels); + } + }); + } + + private void initNewestPodcastsView() { + bind.newestPodcastsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.newestPodcastsRecyclerView.addItemDecoration(UIUtil.getDividerItemDecoration(requireContext())); + + podcastEpisodeAdapter = new PodcastEpisodeAdapter(this); + bind.newestPodcastsRecyclerView.setAdapter(podcastEpisodeAdapter); + podcastViewModel.getNewestPodcastEpisodes(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), podcastEpisodes -> { + if (podcastEpisodes == null) { + if (bind != null) bind.homeNewestPodcastsSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeNewestPodcastsSector.setVisibility(!podcastEpisodes.isEmpty() ? View.VISIBLE : View.GONE); + + podcastEpisodeAdapter.setItems(podcastEpisodes.stream().filter(podcastEpisode -> Objects.equals(podcastEpisode.getStatus(), "completed")).collect(Collectors.toList())); + } + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onPodcastEpisodeClick(Bundle bundle) { + MediaManager.startPodcast(mediaBrowserListenableFuture, bundle.getParcelable(Constants.PODCAST_OBJECT)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onPodcastEpisodeLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.podcastEpisodeBottomSheetDialog, bundle); + } + + @Override + public void onPodcastChannelClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.podcastChannelPageFragment, bundle); + } + + @Override + public void onPodcastChannelLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.podcastChannelBottomSheetDialog, bundle); + } + + @Override + public void onDismiss() { + new Handler().postDelayed(() -> { + if (podcastViewModel != null) podcastViewModel.refreshPodcastChannels(getViewLifecycleOwner()); + if (podcastViewModel != null) podcastViewModel.refreshNewestPodcastEpisodes(getViewLifecycleOwner()); + }, 1000); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabRadioFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabRadioFragment.java new file mode 100644 index 0000000..f9174c3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabRadioFragment.java @@ -0,0 +1,151 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.databinding.FragmentHomeTabRadioBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.RadioCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.InternetRadioStationAdapter; +import com.cappielloantonio.tempo.ui.dialog.RadioEditorDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.RadioViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +@UnstableApi +public class HomeTabRadioFragment extends Fragment implements ClickCallback, RadioCallback { + private static final String TAG = "HomeTabRadioFragment"; + + private FragmentHomeTabRadioBinding bind; + private MainActivity activity; + private RadioViewModel radioViewModel; + + private InternetRadioStationAdapter internetRadioStationAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentHomeTabRadioBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + radioViewModel = new ViewModelProvider(requireActivity()).get(RadioViewModel.class); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + init(); + initRadioStationView(); + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + bind.internetRadioStationPreTextView.setOnClickListener(v -> { + RadioEditorDialog dialog = new RadioEditorDialog(this); + dialog.show(activity.getSupportFragmentManager(), null); + }); + + bind.internetRadioStationTitleTextView.setOnLongClickListener(v -> { + radioViewModel.getInternetRadioStations(getViewLifecycleOwner()); + return true; + }); + + bind.hideSectionButton.setOnClickListener(v -> Preferences.setRadioSectionHidden()); + } + + private void initRadioStationView() { + bind.internetRadioStationRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.internetRadioStationRecyclerView.setHasFixedSize(true); + + internetRadioStationAdapter = new InternetRadioStationAdapter(this); + bind.internetRadioStationRecyclerView.setAdapter(internetRadioStationAdapter); + radioViewModel.getInternetRadioStations(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), internetRadioStations -> { + if (internetRadioStations == null) { + if (bind != null) bind.homeRadioStationSector.setVisibility(View.GONE); + if (bind != null) bind.emptyRadioStationLayout.setVisibility(View.GONE); + } else { + if (bind != null) + bind.homeRadioStationSector.setVisibility(!internetRadioStations.isEmpty() ? View.VISIBLE : View.GONE); + if (bind != null) + bind.emptyRadioStationLayout.setVisibility(internetRadioStations.isEmpty() ? View.VISIBLE : View.GONE); + + internetRadioStationAdapter.setItems(internetRadioStations); + } + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onInternetRadioStationClick(Bundle bundle) { + MediaManager.startRadio(mediaBrowserListenableFuture, bundle.getParcelable(Constants.INTERNET_RADIO_STATION_OBJECT)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onInternetRadioStationLongClick(Bundle bundle) { + RadioEditorDialog dialog = new RadioEditorDialog(new RadioCallback() { + @Override + public void onDismiss() { + radioViewModel.getInternetRadioStations(getViewLifecycleOwner()); + } + }); + dialog.setArguments(bundle); + dialog.show(activity.getSupportFragmentManager(), null); + } + + @Override + public void onDismiss() { + new Handler().postDelayed(() -> { + if (radioViewModel != null) + radioViewModel.refreshInternetRadioStations(getViewLifecycleOwner()); + }, 1000); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/IndexFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/IndexFragment.java new file mode 100644 index 0000000..97fd580 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/IndexFragment.java @@ -0,0 +1,110 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentIndexBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.subsonic.models.MusicFolder; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.MusicIndexAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.IndexUtil; +import com.cappielloantonio.tempo.viewmodel.IndexViewModel; + +@UnstableApi +public class IndexFragment extends Fragment implements ClickCallback { + private static final String TAG = "IndexFragment"; + + private FragmentIndexBinding bind; + private MainActivity activity; + private IndexViewModel indexViewModel; + + private MusicIndexAdapter musicIndexAdapter; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentIndexBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + indexViewModel = new ViewModelProvider(requireActivity()).get(IndexViewModel.class); + + initAppBar(); + initDirectoryListView(); + init(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + MusicFolder musicFolder = getArguments().getParcelable(Constants.MUSIC_FOLDER_OBJECT); + + if (musicFolder != null) { + indexViewModel.setMusicFolder(musicFolder); + bind.indexTitleLabel.setText(musicFolder.getName()); + } + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + if (bind != null) + bind.toolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + + if (bind != null) + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.indexInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(indexViewModel.getMusicFolderName()); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + private void initDirectoryListView() { + MusicFolder musicFolder = getArguments().getParcelable(Constants.MUSIC_FOLDER_OBJECT); + + bind.indexRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.indexRecyclerView.setHasFixedSize(true); + + musicIndexAdapter = new MusicIndexAdapter(this); + bind.indexRecyclerView.setAdapter(musicIndexAdapter); + + indexViewModel.getIndexes(musicFolder != null ? musicFolder.getId() : null).observe(getViewLifecycleOwner(), indexes -> { + if (indexes != null) { + musicIndexAdapter.setItems(IndexUtil.getArtist(indexes)); + } + }); + + bind.fastScrollbar.setRecyclerView(bind.indexRecyclerView); + bind.fastScrollbar.setViewsToUse(R.layout.layout_fast_scrollbar, R.id.fastscroller_bubble, R.id.fastscroller_handle); + } + + @Override + public void onMusicIndexClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.directoryFragment, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LandingFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LandingFragment.java new file mode 100644 index 0000000..b9ca968 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LandingFragment.java @@ -0,0 +1,17 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; + +import com.cappielloantonio.tempo.R; + +public class LandingFragment extends Fragment { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_landing, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LibraryFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LibraryFragment.java new file mode 100644 index 0000000..711b1c6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LibraryFragment.java @@ -0,0 +1,295 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentLibraryBinding; +import com.cappielloantonio.tempo.helper.recyclerview.CustomLinearSnapHelper; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.PlaylistCallback; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.AlbumAdapter; +import com.cappielloantonio.tempo.ui.adapter.ArtistAdapter; +import com.cappielloantonio.tempo.ui.adapter.GenreAdapter; +import com.cappielloantonio.tempo.ui.adapter.MusicFolderAdapter; +import com.cappielloantonio.tempo.ui.adapter.PlaylistHorizontalAdapter; +import com.cappielloantonio.tempo.ui.dialog.PlaylistEditorDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.LibraryViewModel; +import com.google.android.material.appbar.MaterialToolbar; + +import java.util.Objects; + +@UnstableApi +public class LibraryFragment extends Fragment implements ClickCallback { + private static final String TAG = "LibraryFragment"; + + private FragmentLibraryBinding bind; + private MainActivity activity; + private LibraryViewModel libraryViewModel; + + private MusicFolderAdapter musicFolderAdapter; + private AlbumAdapter albumAdapter; + private ArtistAdapter artistAdapter; + private GenreAdapter genreAdapter; + private PlaylistHorizontalAdapter playlistHorizontalAdapter; + + private MaterialToolbar materialToolbar; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentLibraryBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + libraryViewModel = new ViewModelProvider(requireActivity()).get(LibraryViewModel.class); + + init(); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + initAppBar(); + initMusicFolderView(); + initAlbumView(); + initArtistView(); + initGenreView(); + initPlaylistView(); + } + + @Override + public void onStart() { + super.onStart(); + activity.setBottomNavigationBarVisibility(true); + } + + @Override + public void onResume() { + super.onResume(); + refreshPlaylistView(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + bind.albumCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_albumCatalogueFragment)); + bind.artistCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_artistCatalogueFragment)); + bind.genreCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_genreCatalogueFragment)); + bind.playlistCatalogueTextViewClickable.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Constants.PLAYLIST_ALL, Constants.PLAYLIST_ALL); + activity.navController.navigate(R.id.action_libraryFragment_to_playlistCatalogueFragment, bundle); + }); + + bind.albumCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshAlbumSample(getViewLifecycleOwner()); + return true; + }); + bind.artistCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshArtistSample(getViewLifecycleOwner()); + return true; + }); + bind.genreCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshGenreSample(getViewLifecycleOwner()); + return true; + }); + bind.playlistCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshPlaylistSample(getViewLifecycleOwner()); + return true; + }); + } + + private void initAppBar() { + materialToolbar = bind.getRoot().findViewById(R.id.toolbar); + + activity.setSupportActionBar(materialToolbar); + Objects.requireNonNull(materialToolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null)); + } + + private void initMusicFolderView() { + if (!Preferences.isMusicDirectorySectionVisible()) { + bind.libraryMusicFolderSector.setVisibility(View.GONE); + return; + } + + bind.musicFolderRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.musicFolderRecyclerView.setHasFixedSize(true); + + musicFolderAdapter = new MusicFolderAdapter(this); + bind.musicFolderRecyclerView.setAdapter(musicFolderAdapter); + libraryViewModel.getMusicFolders(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), musicFolders -> { + if (musicFolders == null) { + if (bind != null) bind.libraryMusicFolderSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.libraryMusicFolderSector.setVisibility(!musicFolders.isEmpty() ? View.VISIBLE : View.GONE); + + musicFolderAdapter.setItems(musicFolders); + } + }); + } + + private void initAlbumView() { + bind.albumRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.albumRecyclerView.setHasFixedSize(true); + + albumAdapter = new AlbumAdapter(this); + bind.albumRecyclerView.setAdapter(albumAdapter); + libraryViewModel.getAlbumSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums == null) { + if (bind != null) bind.libraryAlbumSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.libraryAlbumSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + + albumAdapter.setItems(albums); + } + }); + + CustomLinearSnapHelper albumSnapHelper = new CustomLinearSnapHelper(); + albumSnapHelper.attachToRecyclerView(bind.albumRecyclerView); + } + + private void initArtistView() { + bind.artistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.artistRecyclerView.setHasFixedSize(true); + + artistAdapter = new ArtistAdapter(this, false, false); + bind.artistRecyclerView.setAdapter(artistAdapter); + libraryViewModel.getArtistSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { + if (artists == null) { + if (bind != null) bind.libraryArtistSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.libraryArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + + artistAdapter.setItems(artists); + } + }); + + CustomLinearSnapHelper artistSnapHelper = new CustomLinearSnapHelper(); + artistSnapHelper.attachToRecyclerView(bind.artistRecyclerView); + } + + private void initGenreView() { + bind.genreRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 3, GridLayoutManager.HORIZONTAL, false)); + bind.genreRecyclerView.setHasFixedSize(true); + + genreAdapter = new GenreAdapter(this); + bind.genreRecyclerView.setAdapter(genreAdapter); + + libraryViewModel.getGenreSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), genres -> { + if (genres == null) { + if (bind != null) bind.libraryGenresSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.libraryGenresSector.setVisibility(!genres.isEmpty() ? View.VISIBLE : View.GONE); + + genreAdapter.setItems(genres); + } + }); + + CustomLinearSnapHelper genreSnapHelper = new CustomLinearSnapHelper(); + genreSnapHelper.attachToRecyclerView(bind.genreRecyclerView); + } + + private void initPlaylistView() { + bind.playlistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.playlistRecyclerView.setHasFixedSize(true); + + playlistHorizontalAdapter = new PlaylistHorizontalAdapter(this); + bind.playlistRecyclerView.setAdapter(playlistHorizontalAdapter); + libraryViewModel.getPlaylistSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), playlists -> { + if (playlists == null) { + if (bind != null) bind.libraryPlaylistSector.setVisibility(View.GONE); + } else { + if (bind != null) + bind.libraryPlaylistSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE); + + playlistHorizontalAdapter.setItems(playlists); + } + }); + } + + private void refreshPlaylistView() { + final Handler handler = new Handler(); + + final Runnable runnable = () -> { + if (getView() != null && bind != null && libraryViewModel != null) + libraryViewModel.refreshPlaylistSample(getViewLifecycleOwner()); + }; + + handler.postDelayed(runnable, 100); + } + + @Override + public void onAlbumClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumPageFragment, bundle); + } + + @Override + public void onAlbumLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } + + @Override + public void onArtistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistPageFragment, bundle); + } + + @Override + public void onArtistLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistBottomSheetDialog, bundle); + } + + @Override + public void onGenreClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songListPageFragment, bundle); + } + + @Override + public void onPlaylistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.playlistPageFragment, bundle); + } + + @Override + public void onPlaylistLongClick(Bundle bundle) { + PlaylistEditorDialog dialog = new PlaylistEditorDialog(new PlaylistCallback() { + @Override + public void onDismiss() { + refreshPlaylistView(); + } + }); + + dialog.setArguments(bundle); + dialog.show(activity.getSupportFragmentManager(), null); + } + + @Override + public void onMusicFolderClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.indexFragment, bundle); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LoginFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LoginFragment.java new file mode 100644 index 0000000..d5bb0fa --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/LoginFragment.java @@ -0,0 +1,167 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.ui.adapter.ServerAdapter; +import com.cappielloantonio.tempo.databinding.FragmentLoginBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.interfaces.SystemCallback; +import com.cappielloantonio.tempo.model.Server; +import com.cappielloantonio.tempo.repository.SystemRepository; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.dialog.ServerSignupDialog; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.LoginViewModel; + +@UnstableApi +public class LoginFragment extends Fragment implements ClickCallback { + private static final String TAG = "LoginFragment"; + + private FragmentLoginBinding bind; + private MainActivity activity; + private LoginViewModel loginViewModel; + + private ServerAdapter serverAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.login_page_menu, menu); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + loginViewModel = new ViewModelProvider(requireActivity()).get(LoginViewModel.class); + bind = FragmentLoginBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + initAppBar(); + initServerListView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.serverInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.login_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + private void initServerListView() { + bind.serverListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.serverListRecyclerView.setHasFixedSize(true); + + serverAdapter = new ServerAdapter(this); + bind.serverListRecyclerView.setAdapter(serverAdapter); + loginViewModel.getServerList().observe(getViewLifecycleOwner(), servers -> { + if (!servers.isEmpty()) { + if (bind != null) bind.noServerAddedTextView.setVisibility(View.GONE); + if (bind != null) bind.serverListRecyclerView.setVisibility(View.VISIBLE); + serverAdapter.setItems(servers); + } else { + if (bind != null) bind.noServerAddedTextView.setVisibility(View.VISIBLE); + if (bind != null) bind.serverListRecyclerView.setVisibility(View.GONE); + } + }); + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_add) { + ServerSignupDialog dialog = new ServerSignupDialog(); + dialog.show(activity.getSupportFragmentManager(), null); + return true; + } + + return false; + } + + @Override + public void onServerClick(Bundle bundle) { + Server server = bundle.getParcelable("server_object"); + saveServerPreference(server.getServerId(), server.getAddress(), server.getLocalAddress(), server.getUsername(), server.getPassword(), server.isLowSecurity()); + + SystemRepository systemRepository = new SystemRepository(); + systemRepository.checkUserCredential(new SystemCallback() { + @Override + public void onError(Exception exception) { + Preferences.switchInUseServerAddress(); + resetServerPreference(); + Toast.makeText(requireContext(), exception.getMessage(), Toast.LENGTH_SHORT).show(); + } + + @Override + public void onSuccess(String password, String token, String salt) { + activity.goFromLogin(); + } + }); + } + + @Override + public void onServerLongClick(Bundle bundle) { + ServerSignupDialog dialog = new ServerSignupDialog(); + dialog.setArguments(bundle); + dialog.show(activity.getSupportFragmentManager(), null); + } + + private void saveServerPreference(String serverId, String server, String localAddress, String user, String password, boolean isLowSecurity) { + Preferences.setServerId(serverId); + Preferences.setServer(server); + Preferences.setLocalAddress(localAddress); + Preferences.setUser(user); + Preferences.setPassword(password); + Preferences.setLowSecurity(isLowSecurity); + + App.getSubsonicClientInstance(true); + } + + private void resetServerPreference() { + Preferences.setServerId(null); + Preferences.setServer(null); + Preferences.setUser(null); + Preferences.setPassword(null); + Preferences.setToken(null); + Preferences.setSalt(null); + Preferences.setLowSecurity(false); + + App.getSubsonicClientInstance(true); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java new file mode 100644 index 0000000..e2bca34 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java @@ -0,0 +1,334 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.Player; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.MediaController; +import androidx.media3.session.SessionToken; +import androidx.viewpager2.widget.ViewPager2; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentPlayerBottomSheetBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.PlayQueue; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.fragment.pager.PlayerControllerVerticalPager; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; +import com.google.android.material.elevation.SurfaceColors; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.Objects; +import java.util.stream.IntStream; + +@OptIn(markerClass = UnstableApi.class) +public class PlayerBottomSheetFragment extends Fragment { + private FragmentPlayerBottomSheetBinding bind; + + private PlayerBottomSheetViewModel playerBottomSheetViewModel; + private ListenableFuture mediaBrowserListenableFuture; + + private Handler progressBarHandler; + private Runnable progressBarRunnable; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + bind = FragmentPlayerBottomSheetBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); + + customizeBottomSheetBackground(); + customizeBottomSheetAction(); + initViewPager(); + setHeaderBookmarksButton(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + bindMediaController(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void customizeBottomSheetBackground() { + bind.playerHeaderLayout.getRoot().setBackgroundColor(SurfaceColors.getColorForElevation(requireContext(), 8)); + } + + private void customizeBottomSheetAction() { + bind.playerHeaderLayout.getRoot().setOnClickListener(view -> ((MainActivity) requireActivity()).expandBottomSheet()); + } + + private void initViewPager() { + bind.playerBodyLayout.playerBodyBottomSheetViewPager.setOrientation(ViewPager2.ORIENTATION_VERTICAL); + bind.playerBodyLayout.playerBodyBottomSheetViewPager.setAdapter(new PlayerControllerVerticalPager(this)); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaController.releaseFuture(mediaBrowserListenableFuture); + } + + private void bindMediaController() { + mediaBrowserListenableFuture.addListener(() -> { + try { + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + + mediaBrowser.setShuffleModeEnabled(Preferences.isShuffleModeEnabled()); + mediaBrowser.setRepeatMode(Preferences.getRepeatMode()); + + setMediaControllerListener(mediaBrowser); + } catch (Exception e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + + private void setMediaControllerListener(MediaBrowser mediaBrowser) { + defineProgressBarHandler(mediaBrowser); + setMediaControllerUI(mediaBrowser); + setMetadata(mediaBrowser.getMediaMetadata()); + setContentDuration(mediaBrowser.getContentDuration()); + setPlayingState(mediaBrowser.isPlaying()); + setHeaderMediaController(); + setHeaderNextButtonState(mediaBrowser.hasNextMediaItem()); + + mediaBrowser.addListener(new Player.Listener() { + @Override + public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) { + setMediaControllerUI(mediaBrowser); + setMetadata(mediaMetadata); + setContentDuration(mediaBrowser.getContentDuration()); + } + + @Override + public void onIsPlayingChanged(boolean isPlaying) { + setPlayingState(isPlaying); + } + + @Override + public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) { + Player.Listener.super.onSkipSilenceEnabledChanged(skipSilenceEnabled); + } + + @Override + public void onEvents(Player player, Player.Events events) { + setHeaderNextButtonState(mediaBrowser.hasNextMediaItem()); + } + + @Override + public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) { + Preferences.setShuffleModeEnabled(shuffleModeEnabled); + } + + @Override + public void onRepeatModeChanged(int repeatMode) { + Preferences.setRepeatMode(repeatMode); + } + }); + } + + private void setMetadata(MediaMetadata mediaMetadata) { + if (mediaMetadata.extras != null) { + playerBottomSheetViewModel.setLiveMedia(getViewLifecycleOwner(), mediaMetadata.extras.getString("type"), mediaMetadata.extras.getString("id")); + playerBottomSheetViewModel.setLiveAlbum(getViewLifecycleOwner(), mediaMetadata.extras.getString("type"), mediaMetadata.extras.getString("albumId")); + playerBottomSheetViewModel.setLiveArtist(getViewLifecycleOwner(), mediaMetadata.extras.getString("type"), mediaMetadata.extras.getString("artistId")); + playerBottomSheetViewModel.setLiveDescription(mediaMetadata.extras.getString("description", null)); + + bind.playerHeaderLayout.playerHeaderMediaTitleLabel.setText(mediaMetadata.extras.getString("title")); + bind.playerHeaderLayout.playerHeaderMediaArtistLabel.setText( + mediaMetadata.artist != null + ? mediaMetadata.artist + : Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) + ? mediaMetadata.extras.getString("uri", getString(R.string.label_placeholder)) + : ""); + + CustomGlideRequest.Builder + .from(requireContext(), mediaMetadata.extras.getString("coverArtId"), CustomGlideRequest.ResourceType.Song) + .build() + .into(bind.playerHeaderLayout.playerHeaderMediaCoverImage); + + bind.playerHeaderLayout.playerHeaderMediaTitleLabel.setVisibility(mediaMetadata.extras.getString("title") != null && !Objects.equals(mediaMetadata.extras.getString("title"), "") ? View.VISIBLE : View.GONE); + bind.playerHeaderLayout.playerHeaderMediaArtistLabel.setVisibility( + (mediaMetadata.extras.getString("artist") != null && !Objects.equals(mediaMetadata.extras.getString("artist"), "")) + || (Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) && mediaMetadata.extras.getString("uri") != null) + ? View.VISIBLE + : View.GONE); + } + } + + + private void setMediaControllerUI(MediaBrowser mediaBrowser) { + if (mediaBrowser.getMediaMetadata().extras != null) { + switch (mediaBrowser.getMediaMetadata().extras.getString("type", Constants.MEDIA_TYPE_MUSIC)) { + case Constants.MEDIA_TYPE_PODCAST: + bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.VISIBLE); + bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.VISIBLE); + bind.playerHeaderLayout.playerHeaderNextMediaButton.setVisibility(View.GONE); + break; + case Constants.MEDIA_TYPE_MUSIC: + default: + bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.GONE); + bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.GONE); + bind.playerHeaderLayout.playerHeaderNextMediaButton.setVisibility(View.VISIBLE); + break; + } + } + } + + private void setContentDuration(long duration) { + bind.playerHeaderLayout.playerHeaderSeekBar.setMax((int) (duration / 1000)); + } + + private void setProgress(MediaBrowser mediaBrowser) { + if (bind != null) + bind.playerHeaderLayout.playerHeaderSeekBar.setProgress((int) (mediaBrowser.getCurrentPosition() / 1000), true); + } + + private void setPlayingState(boolean isPlaying) { + bind.playerHeaderLayout.playerHeaderButton.setChecked(isPlaying); + runProgressBarHandler(isPlaying); + } + + private void setHeaderMediaController() { + bind.playerHeaderLayout.playerHeaderButton.setOnClickListener(view -> bind.getRoot().findViewById(R.id.exo_play_pause).performClick()); + bind.playerHeaderLayout.playerHeaderNextMediaButton.setOnClickListener(view -> bind.getRoot().findViewById(R.id.exo_next).performClick()); + bind.playerHeaderLayout.playerHeaderRewindMediaButton.setOnClickListener(view -> bind.getRoot().findViewById(R.id.exo_rew).performClick()); + bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setOnClickListener(view -> bind.getRoot().findViewById(R.id.exo_ffwd).performClick()); + } + + private void setHeaderNextButtonState(boolean isEnabled) { + bind.playerHeaderLayout.playerHeaderNextMediaButton.setEnabled(isEnabled); + bind.playerHeaderLayout.playerHeaderNextMediaButton.setAlpha(isEnabled ? (float) 1.0 : (float) 0.3); + } + + public View getPlayerHeader() { + return requireView().findViewById(R.id.player_header_layout); + } + + public void goBackToFirstPage() { + bind.playerBodyLayout.playerBodyBottomSheetViewPager.setCurrentItem(0, false); + goToControllerPage(); + } + + public void goToControllerPage() { + PlayerControllerVerticalPager playerControllerVerticalPager = (PlayerControllerVerticalPager) bind.playerBodyLayout.playerBodyBottomSheetViewPager.getAdapter(); + if (playerControllerVerticalPager != null) { + PlayerControllerFragment playerControllerFragment = (PlayerControllerFragment) playerControllerVerticalPager.getRegisteredFragment(0); + if (playerControllerFragment != null) { + playerControllerFragment.goToControllerPage(); + } + } + } + + public void goToLyricsPage() { + PlayerControllerVerticalPager playerControllerVerticalPager = (PlayerControllerVerticalPager) bind.playerBodyLayout.playerBodyBottomSheetViewPager.getAdapter(); + if (playerControllerVerticalPager != null) { + PlayerControllerFragment playerControllerFragment = (PlayerControllerFragment) playerControllerVerticalPager.getRegisteredFragment(0); + if (playerControllerFragment != null) { + playerControllerFragment.goToLyricsPage(); + } + } + } + + public void goToQueuePage() { + bind.playerBodyLayout.playerBodyBottomSheetViewPager.setCurrentItem(1, true); + } + + public void setPlayerControllerVerticalPagerDraggableState(Boolean isDraggable) { + ViewPager2 playerControllerVerticalPager = (ViewPager2) bind.playerBodyLayout.playerBodyBottomSheetViewPager; + playerControllerVerticalPager.setUserInputEnabled(isDraggable); + } + + private void defineProgressBarHandler(MediaBrowser mediaBrowser) { + progressBarHandler = new Handler(); + progressBarRunnable = () -> { + setProgress(mediaBrowser); + progressBarHandler.postDelayed(progressBarRunnable, 1000); + }; + } + + private void runProgressBarHandler(boolean isPlaying) { + if (isPlaying) { + progressBarHandler.postDelayed(progressBarRunnable, 1000); + } else { + progressBarHandler.removeCallbacks(progressBarRunnable); + } + } + + private void setHeaderBookmarksButton() { + if (Preferences.isSyncronizationEnabled()) { + playerBottomSheetViewModel.getPlayQueue().observeForever(new Observer() { + @Override + public void onChanged(PlayQueue playQueue) { + playerBottomSheetViewModel.getPlayQueue().removeObserver(this); + + if (bind == null) return; + + if (playQueue != null && !playQueue.getEntries().isEmpty()) { + int index = IntStream.range(0, playQueue.getEntries().size()).filter(ix -> playQueue.getEntries().get(ix).getId().equals(playQueue.getCurrent())).findFirst().orElse(-1); + + if (index != -1) { + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setVisibility(View.VISIBLE); + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setOnClickListener(v -> { + MediaManager.startQueue(mediaBrowserListenableFuture, playQueue.getEntries(), index); + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setVisibility(View.GONE); + }); + } + } else { + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setVisibility(View.GONE); + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setOnClickListener(null); + } + } + }); + + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setOnLongClickListener(v -> { + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setVisibility(View.GONE); + return true; + }); + + new Handler().postDelayed(() -> { + if (bind != null) + bind.playerHeaderLayout.playerHeaderBookmarkMediaButton.setVisibility(View.GONE); + }, Preferences.getSyncCountdownTimer() * 1000L); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java new file mode 100644 index 0000000..e3155b5 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java @@ -0,0 +1,668 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.Bundle; +import android.os.IBinder; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.RatingBar; +import android.widget.TextView; +import android.widget.ToggleButton; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.PlaybackParameters; +import androidx.media3.common.Player; +import androidx.media3.common.util.RepeatModeUtil; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.NavController; +import androidx.navigation.NavOptions; +import androidx.navigation.fragment.NavHostFragment; +import androidx.viewpager2.widget.ViewPager2; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.InnerFragmentPlayerControllerBinding; +import com.cappielloantonio.tempo.service.EqualizerManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.dialog.RatingDialog; +import com.cappielloantonio.tempo.ui.dialog.TrackInfoDialog; +import com.cappielloantonio.tempo.ui.fragment.pager.PlayerControllerHorizontalPager; +import com.cappielloantonio.tempo.util.AssetLinkUtil; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; +import com.cappielloantonio.tempo.viewmodel.RatingViewModel; +import com.google.android.material.chip.Chip; +import com.google.android.material.chip.ChipGroup; +import com.google.android.material.elevation.SurfaceColors; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@UnstableApi +public class PlayerControllerFragment extends Fragment { + private static final String TAG = "PlayerCoverFragment"; + + private InnerFragmentPlayerControllerBinding bind; + private ViewPager2 playerMediaCoverViewPager; + private ToggleButton buttonFavorite; + private RatingViewModel ratingViewModel; + private RatingBar songRatingBar; + private TextView playerMediaTitleLabel; + private TextView playerArtistNameLabel; + private Button playbackSpeedButton; + private ToggleButton skipSilenceToggleButton; + private Chip playerMediaExtension; + private TextView playerMediaBitrate; + private ConstraintLayout playerQuickActionView; + private ImageButton playerOpenQueueButton; + private ImageButton playerTrackInfo; + private LinearLayout ratingContainer; + private ImageButton equalizerButton; + private ChipGroup assetLinkChipGroup; + private Chip playerSongLinkChip; + private Chip playerAlbumLinkChip; + private Chip playerArtistLinkChip; + + private MainActivity activity; + private PlayerBottomSheetViewModel playerBottomSheetViewModel; + private ListenableFuture mediaBrowserListenableFuture; + + private MediaService.LocalBinder mediaServiceBinder; + private boolean isServiceBound = false; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = InnerFragmentPlayerControllerBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); + ratingViewModel = new ViewModelProvider(requireActivity()).get(RatingViewModel.class); + + init(); + initQuickActionView(); + initCoverLyricsSlideView(); + initMediaListenable(); + initMediaLabelButton(); + initArtistLabelButton(); + initEqualizerButton(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + initializeBrowser(); + bindMediaController(); + } + + @Override + public void onStop() { + releaseBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + playerMediaCoverViewPager = bind.getRoot().findViewById(R.id.player_media_cover_view_pager); + buttonFavorite = bind.getRoot().findViewById(R.id.button_favorite); + playerMediaTitleLabel = bind.getRoot().findViewById(R.id.player_media_title_label); + playerArtistNameLabel = bind.getRoot().findViewById(R.id.player_artist_name_label); + playbackSpeedButton = bind.getRoot().findViewById(R.id.player_playback_speed_button); + skipSilenceToggleButton = bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button); + playerMediaExtension = bind.getRoot().findViewById(R.id.player_media_extension); + playerMediaBitrate = bind.getRoot().findViewById(R.id.player_media_bitrate); + playerQuickActionView = bind.getRoot().findViewById(R.id.player_quick_action_view); + playerOpenQueueButton = bind.getRoot().findViewById(R.id.player_open_queue_button); + playerTrackInfo = bind.getRoot().findViewById(R.id.player_info_track); + songRatingBar = bind.getRoot().findViewById(R.id.song_rating_bar); + ratingContainer = bind.getRoot().findViewById(R.id.rating_container); + equalizerButton = bind.getRoot().findViewById(R.id.player_open_equalizer_button); + assetLinkChipGroup = bind.getRoot().findViewById(R.id.asset_link_chip_group); + playerSongLinkChip = bind.getRoot().findViewById(R.id.asset_link_song_chip); + playerAlbumLinkChip = bind.getRoot().findViewById(R.id.asset_link_album_chip); + playerArtistLinkChip = bind.getRoot().findViewById(R.id.asset_link_artist_chip); + checkAndSetRatingContainerVisibility(); + } + + private void initQuickActionView() { + playerQuickActionView.setBackgroundColor(SurfaceColors.getColorForElevation(requireContext(), 8)); + + playerOpenQueueButton.setOnClickListener(view -> { + PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) requireActivity().getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); + if (playerBottomSheetFragment != null) { + playerBottomSheetFragment.goToQueuePage(); + } + }); + } + + private void initializeBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void bindMediaController() { + mediaBrowserListenableFuture.addListener(() -> { + try { + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + + bind.nowPlayingMediaControllerView.setPlayer(mediaBrowser); + mediaBrowser.setShuffleModeEnabled(Preferences.isShuffleModeEnabled()); + mediaBrowser.setRepeatMode(Preferences.getRepeatMode()); + setMediaControllerListener(mediaBrowser); + } catch (Exception e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + + private void setMediaControllerListener(MediaBrowser mediaBrowser) { + setMediaControllerUI(mediaBrowser); + setMetadata(mediaBrowser.getMediaMetadata()); + setMediaInfo(mediaBrowser.getMediaMetadata()); + + mediaBrowser.addListener(new Player.Listener() { + @Override + public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) { + setMediaControllerUI(mediaBrowser); + setMetadata(mediaMetadata); + setMediaInfo(mediaMetadata); + } + + @Override + public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) { + Preferences.setShuffleModeEnabled(shuffleModeEnabled); + } + + @Override + public void onRepeatModeChanged(int repeatMode) { + Preferences.setRepeatMode(repeatMode); + } + }); + } + + private void setMetadata(MediaMetadata mediaMetadata) { + playerMediaTitleLabel.setText(String.valueOf(mediaMetadata.title)); + playerArtistNameLabel.setText( + mediaMetadata.artist != null + ? String.valueOf(mediaMetadata.artist) + : mediaMetadata.extras != null && Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) + ? mediaMetadata.extras.getString("uri", getString(R.string.label_placeholder)) + : ""); + + playerMediaTitleLabel.setSelected(true); + playerArtistNameLabel.setSelected(true); + + playerMediaTitleLabel.setVisibility(mediaMetadata.title != null && !Objects.equals(mediaMetadata.title, "") ? View.VISIBLE : View.GONE); + playerArtistNameLabel.setVisibility( + (mediaMetadata.artist != null && !Objects.equals(mediaMetadata.artist, "")) + || mediaMetadata.extras != null && Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) && mediaMetadata.extras.getString("uri") != null + ? View.VISIBLE + : View.GONE); + + updateAssetLinkChips(mediaMetadata); + } + + private void setMediaInfo(MediaMetadata mediaMetadata) { + if (mediaMetadata.extras != null) { + String extension = mediaMetadata.extras.getString("suffix", getString(R.string.player_unknown_format)); + String bitrate = mediaMetadata.extras.getInt("bitrate", 0) != 0 ? mediaMetadata.extras.getInt("bitrate", 0) + "kbps" : "Original"; + String samplingRate = mediaMetadata.extras.getInt("samplingRate", 0) != 0 ? new DecimalFormat("0.#").format(mediaMetadata.extras.getInt("samplingRate", 0) / 1000.0) + "kHz" : ""; + String bitDepth = mediaMetadata.extras.getInt("bitDepth", 0) != 0 ? mediaMetadata.extras.getInt("bitDepth", 0) + "b" : ""; + + playerMediaExtension.setText(extension); + + if (bitrate.equals("Original")) { + playerMediaBitrate.setVisibility(View.GONE); + } else { + List mediaQualityItems = new ArrayList<>(); + + if (!bitrate.trim().isEmpty()) mediaQualityItems.add(bitrate); + if (!bitDepth.trim().isEmpty()) mediaQualityItems.add(bitDepth); + if (!samplingRate.trim().isEmpty()) mediaQualityItems.add(samplingRate); + + String mediaQuality = TextUtils.join(" • ", mediaQualityItems); + playerMediaBitrate.setVisibility(View.VISIBLE); + playerMediaBitrate.setText(mediaQuality); + } + } + + boolean isTranscodingExtension = !MusicUtil.getTranscodingFormatPreference().equals("raw"); + boolean isTranscodingBitrate = !MusicUtil.getBitratePreference().equals("0"); + + if (isTranscodingExtension || isTranscodingBitrate) { + playerMediaExtension.setText(MusicUtil.getTranscodingFormatPreference() + " (" + getString(R.string.player_transcoding) + ")"); + playerMediaBitrate.setText(!MusicUtil.getBitratePreference().equals("0") ? MusicUtil.getBitratePreference() + "kbps" : getString(R.string.player_transcoding_requested)); + } + + playerTrackInfo.setOnClickListener(view -> { + TrackInfoDialog dialog = new TrackInfoDialog(mediaMetadata); + dialog.show(activity.getSupportFragmentManager(), null); + }); + } + + private void updateAssetLinkChips(MediaMetadata mediaMetadata) { + if (assetLinkChipGroup == null) return; + String mediaType = mediaMetadata.extras != null ? mediaMetadata.extras.getString("type", Constants.MEDIA_TYPE_MUSIC) : Constants.MEDIA_TYPE_MUSIC; + if (!Constants.MEDIA_TYPE_MUSIC.equals(mediaType)) { + clearAssetLinkChip(playerSongLinkChip); + clearAssetLinkChip(playerAlbumLinkChip); + clearAssetLinkChip(playerArtistLinkChip); + syncAssetLinkGroupVisibility(); + return; + } + + String songId = mediaMetadata.extras != null ? mediaMetadata.extras.getString("id") : null; + String albumId = mediaMetadata.extras != null ? mediaMetadata.extras.getString("albumId") : null; + String artistId = mediaMetadata.extras != null ? mediaMetadata.extras.getString("artistId") : null; + + AssetLinkUtil.AssetLink songLink = bindAssetLinkChip(playerSongLinkChip, AssetLinkUtil.TYPE_SONG, songId); + AssetLinkUtil.AssetLink albumLink = bindAssetLinkChip(playerAlbumLinkChip, AssetLinkUtil.TYPE_ALBUM, albumId); + AssetLinkUtil.AssetLink artistLink = bindAssetLinkChip(playerArtistLinkChip, AssetLinkUtil.TYPE_ARTIST, artistId); + bindAssetLinkView(playerMediaTitleLabel, songLink); + bindAssetLinkView(playerArtistNameLabel, artistLink != null ? artistLink : songLink); + bindAssetLinkView(playerMediaCoverViewPager, songLink); + syncAssetLinkGroupVisibility(); + } + + private AssetLinkUtil.AssetLink bindAssetLinkChip(Chip chip, String type, String id) { + if (chip == null) return null; + if (TextUtils.isEmpty(id)) { + clearAssetLinkChip(chip); + return null; + } + + String label = getString(AssetLinkUtil.getLabelRes(type)); + AssetLinkUtil.AssetLink assetLink = AssetLinkUtil.buildAssetLink(type, id); + if (assetLink == null) { + clearAssetLinkChip(chip); + return null; + } + + chip.setText(getString(R.string.asset_link_chip_text, label, assetLink.id)); + chip.setVisibility(View.VISIBLE); + + chip.setOnClickListener(v -> { + if (assetLink != null) { + activity.openAssetLink(assetLink); + } + }); + + chip.setOnLongClickListener(v -> { + if (assetLink != null) { + AssetLinkUtil.copyToClipboard(requireContext(), assetLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, id), Toast.LENGTH_SHORT).show(); + } + return true; + }); + + return assetLink; + } + + private void clearAssetLinkChip(Chip chip) { + if (chip == null) return; + chip.setVisibility(View.GONE); + chip.setText(""); + chip.setOnClickListener(null); + chip.setOnLongClickListener(null); + } + + private void bindAssetLinkView(View view, AssetLinkUtil.AssetLink assetLink) { + if (view == null) return; + if (assetLink == null) { + AssetLinkUtil.clearLinkAppearance(view); + view.setOnClickListener(null); + view.setOnLongClickListener(null); + view.setClickable(false); + view.setLongClickable(false); + return; + } + + view.setClickable(true); + view.setLongClickable(true); + AssetLinkUtil.applyLinkAppearance(view); + view.setOnClickListener(v -> { + boolean collapse = !AssetLinkUtil.TYPE_SONG.equals(assetLink.type); + activity.openAssetLink(assetLink, collapse); + }); + view.setOnLongClickListener(v -> { + AssetLinkUtil.copyToClipboard(requireContext(), assetLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, assetLink.id), Toast.LENGTH_SHORT).show(); + return true; + }); + } + + private void syncAssetLinkGroupVisibility() { + if (assetLinkChipGroup == null) return; + boolean hasVisible = false; + for (int i = 0; i < assetLinkChipGroup.getChildCount(); i++) { + View child = assetLinkChipGroup.getChildAt(i); + if (child.getVisibility() == View.VISIBLE) { + hasVisible = true; + break; + } + } + assetLinkChipGroup.setVisibility(hasVisible ? View.VISIBLE : View.GONE); + } + + private void setMediaControllerUI(MediaBrowser mediaBrowser) { + initPlaybackSpeedButton(mediaBrowser); + + if (mediaBrowser.getMediaMetadata().extras != null) { + switch (mediaBrowser.getMediaMetadata().extras.getString("type", Constants.MEDIA_TYPE_MUSIC)) { + case Constants.MEDIA_TYPE_PODCAST: + bind.getRoot().setShowShuffleButton(false); + bind.getRoot().setShowRewindButton(true); + bind.getRoot().setShowPreviousButton(false); + bind.getRoot().setShowNextButton(false); + bind.getRoot().setShowFastForwardButton(true); + bind.getRoot().setRepeatToggleModes(RepeatModeUtil.REPEAT_TOGGLE_MODE_NONE); + bind.getRoot().findViewById(R.id.player_playback_speed_button).setVisibility(View.VISIBLE); + bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button).setVisibility(View.VISIBLE); + bind.getRoot().findViewById(R.id.button_favorite).setVisibility(View.GONE); + setPlaybackParameters(mediaBrowser); + break; + case Constants.MEDIA_TYPE_RADIO: + bind.getRoot().setShowShuffleButton(false); + bind.getRoot().setShowRewindButton(false); + bind.getRoot().setShowPreviousButton(false); + bind.getRoot().setShowNextButton(false); + bind.getRoot().setShowFastForwardButton(false); + bind.getRoot().setRepeatToggleModes(RepeatModeUtil.REPEAT_TOGGLE_MODE_NONE); + bind.getRoot().findViewById(R.id.player_playback_speed_button).setVisibility(View.GONE); + bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button).setVisibility(View.GONE); + bind.getRoot().findViewById(R.id.button_favorite).setVisibility(View.GONE); + setPlaybackParameters(mediaBrowser); + break; + case Constants.MEDIA_TYPE_MUSIC: + default: + bind.getRoot().setShowShuffleButton(true); + bind.getRoot().setShowRewindButton(false); + bind.getRoot().setShowPreviousButton(true); + bind.getRoot().setShowNextButton(true); + bind.getRoot().setShowFastForwardButton(false); + bind.getRoot().setRepeatToggleModes(RepeatModeUtil.REPEAT_TOGGLE_MODE_ALL | RepeatModeUtil.REPEAT_TOGGLE_MODE_ONE); + bind.getRoot().findViewById(R.id.player_playback_speed_button).setVisibility(View.GONE); + bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button).setVisibility(View.GONE); + bind.getRoot().findViewById(R.id.button_favorite).setVisibility(View.VISIBLE); + resetPlaybackParameters(mediaBrowser); + break; + } + } + } + + private void initCoverLyricsSlideView() { + playerMediaCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); + playerMediaCoverViewPager.setAdapter(new PlayerControllerHorizontalPager(this)); + + playerMediaCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + + PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) requireActivity().getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); + + if (position == 0) { + activity.setBottomSheetDraggableState(true); + + if (playerBottomSheetFragment != null) { + playerBottomSheetFragment.setPlayerControllerVerticalPagerDraggableState(true); + } + } else if (position == 1) { + activity.setBottomSheetDraggableState(false); + + if (playerBottomSheetFragment != null) { + playerBottomSheetFragment.setPlayerControllerVerticalPagerDraggableState(false); + } + } + } + }); + } + + private void initMediaListenable() { + playerBottomSheetViewModel.getLiveMedia().observe(getViewLifecycleOwner(), media -> { + if (media != null) { + ratingViewModel.setSong(media); + buttonFavorite.setChecked(media.getStarred() != null); + buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext(), media)); + buttonFavorite.setOnLongClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, media); + + RatingDialog dialog = new RatingDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + + + return true; + }); + + Integer currentRating = media.getUserRating(); + + if (currentRating != null) { + songRatingBar.setRating(currentRating); + } else { + songRatingBar.setRating(0); + } + + songRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { + @Override + public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { + if (fromUser) { + ratingViewModel.rate((int) rating); + media.setUserRating((int) rating); + } + } + }); + + + if (getActivity() != null) { + playerBottomSheetViewModel.refreshMediaInfo(requireActivity(), media); + } + } + }); + } + + private void initMediaLabelButton() { + playerBottomSheetViewModel.getLiveAlbum().observe(getViewLifecycleOwner(), album -> { + if (album != null) { + playerMediaTitleLabel.setOnClickListener(view -> { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, album); + NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle); + activity.collapseBottomSheetDelayed(); + }); + } + }); + } + + private void initArtistLabelButton() { + playerBottomSheetViewModel.getLiveArtist().observe(getViewLifecycleOwner(), artist -> { + if (artist != null) { + playerArtistNameLabel.setOnClickListener(view -> { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artist); + NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); + activity.collapseBottomSheetDelayed(); + }); + } + }); + } + + private void initPlaybackSpeedButton(MediaBrowser mediaBrowser) { + playbackSpeedButton.setOnClickListener(view -> { + float currentSpeed = Preferences.getPlaybackSpeed(); + + if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_080) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_100)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_100)); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_100); + } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_100) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_125)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_125)); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_125); + } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_125) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_150)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_150)); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_150); + } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_150) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_175)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_175)); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_175); + } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_175) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_200)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_200)); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_200); + } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_200) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_080)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_080)); + Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_080); + } + }); + + skipSilenceToggleButton.setOnClickListener(view -> { + Preferences.setSkipSilenceMode(!skipSilenceToggleButton.isChecked()); + }); + } + + private void initEqualizerButton() { + equalizerButton.setOnClickListener(v -> { + NavController navController = NavHostFragment.findNavController(this); + NavOptions navOptions = new NavOptions.Builder() + .setLaunchSingleTop(true) + .setPopUpTo(R.id.equalizerFragment, true) + .build(); + navController.navigate(R.id.equalizerFragment, null, navOptions); + if (activity != null) activity.collapseBottomSheetDelayed(); + }); + } + + public void goToControllerPage() { + playerMediaCoverViewPager.setCurrentItem(0, false); + } + + public void goToLyricsPage() { + playerMediaCoverViewPager.setCurrentItem(1, true); + } + + private void checkAndSetRatingContainerVisibility() { + if (ratingContainer == null) return; + + if (Preferences.showItemStarRating()) { + ratingContainer.setVisibility(View.VISIBLE); + } + else { + ratingContainer.setVisibility(View.GONE); + } + } + + private void setPlaybackParameters(MediaBrowser mediaBrowser) { + Button playbackSpeedButton = bind.getRoot().findViewById(R.id.player_playback_speed_button); + float currentSpeed = Preferences.getPlaybackSpeed(); + boolean skipSilence = Preferences.isSkipSilenceMode(); + + mediaBrowser.setPlaybackParameters(new PlaybackParameters(currentSpeed)); + playbackSpeedButton.setText(getString(R.string.player_playback_speed, currentSpeed)); + + // TODO Skippare il silenzio + skipSilenceToggleButton.setChecked(skipSilence); + } + + private void resetPlaybackParameters(MediaBrowser mediaBrowser) { + mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_100)); + // TODO Resettare lo skip del silenzio + } + + private final ServiceConnection serviceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + mediaServiceBinder = (MediaService.LocalBinder) service; + isServiceBound = true; + checkEqualizerBands(); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + mediaServiceBinder = null; + isServiceBound = false; + } + }; + + private void bindMediaService() { + Intent intent = new Intent(requireActivity(), MediaService.class); + intent.setAction(MediaService.ACTION_BIND_EQUALIZER); + requireActivity().bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); + isServiceBound = true; + } + + private void checkEqualizerBands() { + if (mediaServiceBinder != null) { + EqualizerManager eqManager = mediaServiceBinder.getEqualizerManager(); + short numBands = eqManager.getNumberOfBands(); + + if (equalizerButton != null) { + if (numBands == 0) { + equalizerButton.setVisibility(View.GONE); + + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) playerOpenQueueButton.getLayoutParams(); + params.startToEnd = ConstraintLayout.LayoutParams.UNSET; + params.startToStart = ConstraintLayout.LayoutParams.PARENT_ID; + playerOpenQueueButton.setLayoutParams(params); + } else { + equalizerButton.setVisibility(View.VISIBLE); + + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) playerOpenQueueButton.getLayoutParams(); + params.startToStart = ConstraintLayout.LayoutParams.UNSET; + params.startToEnd = R.id.player_open_equalizer_button; + playerOpenQueueButton.setLayoutParams(params); + } + } + } + } + + @Override + public void onResume() { + super.onResume(); + bindMediaService(); + } + + @Override + public void onPause() { + super.onPause(); + if (isServiceBound) { + requireActivity().unbindService(serviceConnection); + isServiceBound = false; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java new file mode 100644 index 0000000..2d73847 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java @@ -0,0 +1,203 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.os.Handler; +import android.transition.Fade; +import android.transition.Transition; +import android.transition.TransitionManager; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import java.util.ArrayList; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaItem; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.Player; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.InnerFragmentPlayerCoverBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.util.ExternalAudioWriter; +import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.google.android.material.snackbar.Snackbar; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +@UnstableApi +public class PlayerCoverFragment extends Fragment { + private PlayerBottomSheetViewModel playerBottomSheetViewModel; + private InnerFragmentPlayerCoverBinding bind; + private ListenableFuture mediaBrowserListenableFuture; + + private final Handler handler = new Handler(); + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + bind = InnerFragmentPlayerCoverBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); + + initOverlay(); + initInnerButton(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + initializeBrowser(); + bindMediaController(); + toggleOverlayVisibility(false); + } + + @Override + public void onStop() { + releaseBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initTapButtonHideTransition() { + bind.nowPlayingTapButton.setVisibility(View.VISIBLE); + + handler.removeCallbacksAndMessages(null); + + final Runnable runnable = () -> { + if (bind != null) bind.nowPlayingTapButton.setVisibility(View.GONE); + }; + + handler.postDelayed(runnable, 10000); + } + + private void initOverlay() { + bind.nowPlayingSongCoverImageView.setOnClickListener(view -> toggleOverlayVisibility(true)); + bind.nowPlayingSongCoverButtonGroup.setOnClickListener(view -> toggleOverlayVisibility(false)); + bind.nowPlayingTapButton.setOnClickListener(view -> toggleOverlayVisibility(true)); + } + + private void toggleOverlayVisibility(boolean isVisible) { + Transition transition = new Fade(); + transition.setDuration(200); + transition.addTarget(bind.nowPlayingSongCoverButtonGroup); + + TransitionManager.beginDelayedTransition(bind.getRoot(), transition); + bind.nowPlayingSongCoverButtonGroup.setVisibility(isVisible ? View.VISIBLE : View.GONE); + bind.nowPlayingTapButton.setVisibility(isVisible ? View.GONE : View.VISIBLE); + + bind.innerButtonBottomRight.setVisibility(Preferences.isSyncronizationEnabled() ? View.VISIBLE : View.GONE); + bind.innerButtonBottomRightAlternative.setVisibility(Preferences.isSyncronizationEnabled() ? View.GONE : View.VISIBLE); + + if (!isVisible) initTapButtonHideTransition(); + } + + private void initInnerButton() { + playerBottomSheetViewModel.getLiveMedia().observe(getViewLifecycleOwner(), song -> { + if (song != null && bind != null) { + bind.innerButtonTopLeft.setOnClickListener(view -> { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.mapDownload(song), + new Download(song) + ); + } else { + ExternalAudioWriter.downloadToUserDirectory(requireContext(), song); + } + }); + + bind.innerButtonTopRight.setOnClickListener(view -> { + ArrayList tracks = new ArrayList<>(); + tracks.add(song); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, tracks); + + PlaylistChooserDialog dialog = new PlaylistChooserDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + } + ); + + bind.innerButtonBottomLeft.setOnClickListener(view -> { + playerBottomSheetViewModel.getMediaInstantMix(getViewLifecycleOwner(), song).observe(getViewLifecycleOwner(), media -> { + MediaManager.enqueue(mediaBrowserListenableFuture, media, true); + }); + }); + + bind.innerButtonBottomRight.setOnClickListener(view -> { + if (playerBottomSheetViewModel.savePlayQueue()) { + Snackbar.make(requireView(), R.string.player_queue_save_queue_success, Snackbar.LENGTH_LONG).show(); + } + }); + + bind.innerButtonBottomRightAlternative.setOnClickListener(view -> { + if (getActivity() != null) { + PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) requireActivity().getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); + if (playerBottomSheetFragment != null) { + playerBottomSheetFragment.goToLyricsPage(); + } + } + }); + } + }); + } + + private void initializeBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void bindMediaController() { + mediaBrowserListenableFuture.addListener(() -> { + try { + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + setMediaBrowserListener(mediaBrowser); + } catch (Exception exception) { + exception.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + + private void setMediaBrowserListener(MediaBrowser mediaBrowser) { + setCover(mediaBrowser.getMediaMetadata()); + + mediaBrowser.addListener(new Player.Listener() { + @Override + public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) { + setCover(mediaMetadata); + toggleOverlayVisibility(false); + } + }); + } + + private void setCover(MediaMetadata mediaMetadata) { + CustomGlideRequest.Builder + .from(requireContext(), mediaMetadata.extras != null ? mediaMetadata.extras.getString("coverArtId") : null, CustomGlideRequest.ResourceType.Song) + .build() + .into(bind.nowPlayingSongCoverImageView); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerLyricsFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerLyricsFragment.java new file mode 100644 index 0000000..24a1abc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerLyricsFragment.java @@ -0,0 +1,365 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.ComponentName; +import android.os.Bundle; +import android.os.Handler; +import android.text.Layout; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.InnerFragmentPlayerLyricsBinding; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Line; +import com.cappielloantonio.tempo.subsonic.models.LyricsList; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.android.material.button.MaterialButton; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.List; + + +@OptIn(markerClass = UnstableApi.class) +public class PlayerLyricsFragment extends Fragment { + private static final String TAG = "PlayerLyricsFragment"; + + private InnerFragmentPlayerLyricsBinding bind; + private PlayerBottomSheetViewModel playerBottomSheetViewModel; + private ListenableFuture mediaBrowserListenableFuture; + private MediaBrowser mediaBrowser; + private Handler syncLyricsHandler; + private Runnable syncLyricsRunnable; + private String currentLyrics; + private LyricsList currentLyricsList; + private String currentDescription; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + bind = InnerFragmentPlayerLyricsBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); + + initOverlay(); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + initPanelContent(); + observeDownloadState(); + } + + @Override + public void onStart() { + super.onStart(); + initializeBrowser(); + + } + + @Override + public void onResume() { + super.onResume(); + bindMediaController(); + requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + + @Override + public void onPause() { + super.onPause(); + releaseHandler(); + if (!Preferences.isDisplayAlwaysOn()) { + requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + @Override + public void onStop() { + releaseBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + currentLyrics = null; + currentLyricsList = null; + currentDescription = null; + } + + private void initOverlay() { + bind.syncLyricsTapButton.setOnClickListener(view -> { + playerBottomSheetViewModel.changeSyncLyricsState(); + }); + + bind.downloadLyricsButton.setOnClickListener(view -> { + boolean saved = playerBottomSheetViewModel.downloadCurrentLyrics(); + if (getContext() != null) { + Toast.makeText( + requireContext(), + saved ? R.string.player_lyrics_download_success : R.string.player_lyrics_download_failure, + Toast.LENGTH_SHORT + ).show(); + } + }); + } + + private void initializeBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseHandler() { + if (syncLyricsHandler != null) { + syncLyricsHandler.removeCallbacks(syncLyricsRunnable); + syncLyricsHandler = null; + } + } + + private void releaseBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void bindMediaController() { + mediaBrowserListenableFuture.addListener(() -> { + try { + mediaBrowser = mediaBrowserListenableFuture.get(); + defineProgressHandler(); + } catch (Exception e) { + e.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + + private void initPanelContent() { + playerBottomSheetViewModel.getLiveLyrics().observe(getViewLifecycleOwner(), lyrics -> { + currentLyrics = lyrics; + updatePanelContent(); + }); + + playerBottomSheetViewModel.getLiveLyricsList().observe(getViewLifecycleOwner(), lyricsList -> { + currentLyricsList = lyricsList; + updatePanelContent(); + }); + + playerBottomSheetViewModel.getLiveDescription().observe(getViewLifecycleOwner(), description -> { + currentDescription = description; + updatePanelContent(); + }); + } + + private void observeDownloadState() { + playerBottomSheetViewModel.getLyricsCachedState().observe(getViewLifecycleOwner(), cached -> { + if (bind != null) { + MaterialButton downloadButton = (MaterialButton) bind.downloadLyricsButton; + if (cached != null && cached) { + downloadButton.setIconResource(R.drawable.ic_done); + downloadButton.setContentDescription(getString(R.string.player_lyrics_downloaded_content_description)); + } else { + downloadButton.setIconResource(R.drawable.ic_download); + downloadButton.setContentDescription(getString(R.string.player_lyrics_download_content_description)); + } + } + }); + } + + private void updatePanelContent() { + if (bind == null) { + return; + } + + bind.nowPlayingSongLyricsSrollView.smoothScrollTo(0, 0); + + if (hasStructuredLyrics(currentLyricsList)) { + setSyncLirics(currentLyricsList); + bind.nowPlayingSongLyricsTextView.setVisibility(View.VISIBLE); + bind.emptyDescriptionImageView.setVisibility(View.GONE); + bind.titleEmptyDescriptionLabel.setVisibility(View.GONE); + bind.syncLyricsTapButton.setVisibility(View.VISIBLE); + bind.downloadLyricsButton.setVisibility(View.VISIBLE); + bind.downloadLyricsButton.setEnabled(true); + } else if (hasText(currentLyrics)) { + bind.nowPlayingSongLyricsTextView.setText(MusicUtil.getReadableLyrics(currentLyrics)); + bind.nowPlayingSongLyricsTextView.setVisibility(View.VISIBLE); + bind.emptyDescriptionImageView.setVisibility(View.GONE); + bind.titleEmptyDescriptionLabel.setVisibility(View.GONE); + bind.syncLyricsTapButton.setVisibility(View.GONE); + bind.downloadLyricsButton.setVisibility(View.VISIBLE); + bind.downloadLyricsButton.setEnabled(true); + } else if (hasText(currentDescription)) { + bind.nowPlayingSongLyricsTextView.setText(MusicUtil.getReadableLyrics(currentDescription)); + bind.nowPlayingSongLyricsTextView.setVisibility(View.VISIBLE); + bind.emptyDescriptionImageView.setVisibility(View.GONE); + bind.titleEmptyDescriptionLabel.setVisibility(View.GONE); + bind.syncLyricsTapButton.setVisibility(View.GONE); + bind.downloadLyricsButton.setVisibility(View.GONE); + bind.downloadLyricsButton.setEnabled(false); + } else { + bind.nowPlayingSongLyricsTextView.setVisibility(View.GONE); + bind.emptyDescriptionImageView.setVisibility(View.VISIBLE); + bind.titleEmptyDescriptionLabel.setVisibility(View.VISIBLE); + bind.syncLyricsTapButton.setVisibility(View.GONE); + bind.downloadLyricsButton.setVisibility(View.GONE); + bind.downloadLyricsButton.setEnabled(false); + } + } + + private boolean hasText(String value) { + return value != null && !value.trim().isEmpty(); + } + + private boolean hasStructuredLyrics(LyricsList lyricsList) { + return lyricsList != null + && lyricsList.getStructuredLyrics() != null + && !lyricsList.getStructuredLyrics().isEmpty() + && lyricsList.getStructuredLyrics().get(0) != null + && lyricsList.getStructuredLyrics().get(0).getLine() != null + && !lyricsList.getStructuredLyrics().get(0).getLine().isEmpty(); + } + + @SuppressLint("DefaultLocale") + private void setSyncLirics(LyricsList lyricsList) { + if (lyricsList.getStructuredLyrics() != null && !lyricsList.getStructuredLyrics().isEmpty() && lyricsList.getStructuredLyrics().get(0).getLine() != null) { + StringBuilder lyricsBuilder = new StringBuilder(); + List lines = lyricsList.getStructuredLyrics().get(0).getLine(); + + if (lines != null) { + for (Line line : lines) { + lyricsBuilder.append(line.getValue().trim()).append("\n"); + } + } + + bind.nowPlayingSongLyricsTextView.setText(lyricsBuilder.toString()); + } + } + + private void defineProgressHandler() { + playerBottomSheetViewModel.getLiveLyricsList().observe(getViewLifecycleOwner(), lyricsList -> { + if (!hasStructuredLyrics(lyricsList)) { + releaseHandler(); + return; + } + + if (!lyricsList.getStructuredLyrics().get(0).getSynced()) { + releaseHandler(); + return; + } + + syncLyricsHandler = new Handler(); + syncLyricsRunnable = () -> { + if (syncLyricsHandler != null) { + if (bind != null) { + displaySyncedLyrics(); + } + + syncLyricsHandler.postDelayed(syncLyricsRunnable, 250); + } + }; + + syncLyricsHandler.postDelayed(syncLyricsRunnable, 250); + }); + } + + private void displaySyncedLyrics() { + LyricsList lyricsList = playerBottomSheetViewModel.getLiveLyricsList().getValue(); + int timestamp = (int) (mediaBrowser.getCurrentPosition()); + + if (hasStructuredLyrics(lyricsList)) { + StringBuilder lyricsBuilder = new StringBuilder(); + List lines = lyricsList.getStructuredLyrics().get(0).getLine(); + + if (lines == null || lines.isEmpty()) return; + + for (Line line : lines) { + lyricsBuilder.append(line.getValue().trim()).append("\n"); + } + + Line toHighlight = lines.stream().filter(line -> line != null && line.getStart() != null && line.getStart() < timestamp).reduce((first, second) -> second).orElse(null); + + if (toHighlight != null) { + String lyrics = lyricsBuilder.toString(); + Spannable spannableString = new SpannableString(lyrics); + + int startingPosition = getStartPosition(lines, toHighlight); + int endingPosition = startingPosition + toHighlight.getValue().length(); + + spannableString.setSpan(new ForegroundColorSpan(requireContext().getResources().getColor(R.color.shadowsLyricsTextColor, null)), 0, lyrics.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + spannableString.setSpan(new ForegroundColorSpan(requireContext().getResources().getColor(R.color.lyricsTextColor, null)), startingPosition, endingPosition, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + + bind.nowPlayingSongLyricsTextView.setText(spannableString); + + if (playerBottomSheetViewModel.getSyncLyricsState()) { + bind.nowPlayingSongLyricsSrollView.smoothScrollTo(0, getScroll(lines, toHighlight)); + } + } + } + } + + private int getStartPosition(List lines, Line toHighlight) { + int start = 0; + + for (Line line : lines) { + if (line != toHighlight) { + start = start + line.getValue().length() + 1; + } else { + break; + } + } + + return start; + } + + private int getLineCount(List lines, Line toHighlight) { + int start = 0; + + for (Line line : lines) { + if (line != toHighlight) { + bind.tempLyricsLineTextView.setText(line.getValue()); + start = start + bind.tempLyricsLineTextView.getLineCount(); + } else { + break; + } + } + + return start; + } + + private int getScroll(List lines, Line toHighlight) { + int startIndex = getStartPosition(lines, toHighlight); + Layout layout = bind.nowPlayingSongLyricsTextView.getLayout(); + if (layout == null) return 0; + + int line = layout.getLineForOffset(startIndex); + int lineTop = layout.getLineTop(line); + int lineBottom = layout.getLineBottom(line); + int lineCenter = (lineTop + lineBottom) / 2; + + int scrollViewHeight = bind.nowPlayingSongLyricsSrollView.getHeight(); + int scroll = lineCenter - scrollViewHeight / 2; + + return Math.max(scroll, 0); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java new file mode 100644 index 0000000..8c6e052 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java @@ -0,0 +1,258 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.databinding.InnerFragmentPlayerQueueBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.adapter.PlayerSongQueueAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.stream.Collectors; + +@UnstableApi +public class PlayerQueueFragment extends Fragment implements ClickCallback { + private static final String TAG = "PlayerQueueFragment"; + + private InnerFragmentPlayerQueueBinding bind; + + private PlayerBottomSheetViewModel playerBottomSheetViewModel; + private PlaybackViewModel playbackViewModel; + private ListenableFuture mediaBrowserListenableFuture; + + private PlayerSongQueueAdapter playerSongQueueAdapter; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + bind = InnerFragmentPlayerQueueBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + initQueueRecyclerView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + initializeBrowser(); + bindMediaController(); + + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observePlayback(); + } + + @Override + public void onResume() { + super.onResume(); + setMediaBrowserListenableFuture(); + updateNowPlayingItem(); + try { + long position = mediaBrowserListenableFuture.get().getCurrentMediaItemIndex(); + bind.playerQueueRecyclerView.scrollToPosition((int) position); + } catch (Exception e) { + Log.e("PlayerQueueFragment", "Failed to get mediaBrowserListenableFuture in onResume", e); + } + } + + @Override + public void onStop() { + releaseBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initializeBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void bindMediaController() { + mediaBrowserListenableFuture.addListener(() -> { + try { + MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); + initShuffleButton(mediaBrowser); + initCleanButton(mediaBrowser); + } catch (Exception exception) { + exception.printStackTrace(); + } + }, MoreExecutors.directExecutor()); + } + + private void setMediaBrowserListenableFuture() { + playerSongQueueAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } + + private void initQueueRecyclerView() { + bind.playerQueueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.playerQueueRecyclerView.setHasFixedSize(true); + + playerSongQueueAdapter = new PlayerSongQueueAdapter(this); + bind.playerQueueRecyclerView.setAdapter(playerSongQueueAdapter); + reapplyPlayback(); + + playerBottomSheetViewModel.getQueueSong().observe(getViewLifecycleOwner(), queue -> { + if (queue != null) { + playerSongQueueAdapter.setItems(queue.stream().map(item -> (Child) item).collect(Collectors.toList())); + reapplyPlayback(); + } + }); + + new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT) { + int originalPosition = -1; + int fromPosition = -1; + int toPosition = -1; + + @Override + public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { + if (originalPosition == -1) { + originalPosition = viewHolder.getBindingAdapterPosition(); + } + + fromPosition = viewHolder.getBindingAdapterPosition(); + toPosition = target.getBindingAdapterPosition(); + + /* + * Per spostare un elemento nella coda devo: + * - Spostare graficamente la traccia da una posizione all'altra con Collections.swap() + * - Spostare nel db la traccia, tramite QueueRepository + * - Notificare il Service dell'avvenuto spostamento con MusicPlayerRemote.moveSong() + * + * In onMove prendo la posizione di inizio e fine, ma solo al rilascio dell'elemento procedo allo spostamento + * In questo modo evito che ad ogni cambio di posizione vada a riscrivere nel db + * Al rilascio dell'elemento chiamo il metodo clearView() + */ + + Collections.swap(playerSongQueueAdapter.getItems(), fromPosition, toPosition); + recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition); + + return false; + } + + @Override + public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { + super.clearView(recyclerView, viewHolder); + + if (originalPosition != -1 && fromPosition != -1 && toPosition != -1) { + MediaManager.swap(mediaBrowserListenableFuture, playerSongQueueAdapter.getItems(), originalPosition, toPosition); + } + + originalPosition = -1; + fromPosition = -1; + toPosition = -1; + } + + @Override + public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { + MediaManager.remove(mediaBrowserListenableFuture, playerSongQueueAdapter.getItems(), viewHolder.getBindingAdapterPosition()); + viewHolder.getBindingAdapter().notifyDataSetChanged(); + } + }).attachToRecyclerView(bind.playerQueueRecyclerView); + } + + private void initShuffleButton(MediaBrowser mediaBrowser) { + bind.playerShuffleQueueFab.setOnClickListener(view -> { + int startPosition = mediaBrowser.getCurrentMediaItemIndex() + 1; + int endPosition = playerSongQueueAdapter.getItems().size() - 1; + + if (startPosition < endPosition) { + ArrayList pool = new ArrayList<>(); + + for (int i = startPosition; i <= endPosition; i++) { + pool.add(i); + } + + while (pool.size() >= 2) { + int fromPosition = (int) (Math.random() * (pool.size())); + int positionA = pool.get(fromPosition); + pool.remove(fromPosition); + + int toPosition = (int) (Math.random() * (pool.size())); + int positionB = pool.get(toPosition); + pool.remove(toPosition); + + Collections.swap(playerSongQueueAdapter.getItems(), positionA, positionB); + bind.playerQueueRecyclerView.getAdapter().notifyItemMoved(positionA, positionB); + } + + MediaManager.shuffle(mediaBrowserListenableFuture, playerSongQueueAdapter.getItems(), startPosition, endPosition); + } + }); + } + + private void initCleanButton(MediaBrowser mediaBrowser) { + bind.playerCleanQueueButton.setOnClickListener(view -> { + int startPosition = mediaBrowser.getCurrentMediaItemIndex() + 1; + int endPosition = playerSongQueueAdapter.getItems().size(); + + MediaManager.removeRange(mediaBrowserListenableFuture, playerSongQueueAdapter.getItems(), startPosition, endPosition); + bind.playerQueueRecyclerView.getAdapter().notifyItemRangeRemoved(startPosition, endPosition); + }); + } + + private void updateNowPlayingItem() { + playerSongQueueAdapter.notifyDataSetChanged(); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + } + + private void observePlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (playerSongQueueAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + playerSongQueueAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (playerSongQueueAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + playerSongQueueAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyPlayback() { + if (playerSongQueueAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + playerSongQueueAdapter.setPlaybackState(id, playing != null && playing); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistCatalogueFragment.java new file mode 100644 index 0000000..17bd58c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistCatalogueFragment.java @@ -0,0 +1,186 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentPlaylistCatalogueBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.PlaylistHorizontalAdapter; +import com.cappielloantonio.tempo.ui.dialog.PlaylistEditorDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.PlaylistCatalogueViewModel; + +@UnstableApi +public class PlaylistCatalogueFragment extends Fragment implements ClickCallback { + private FragmentPlaylistCatalogueBinding bind; + private MainActivity activity; + private PlaylistCatalogueViewModel playlistCatalogueViewModel; + + private PlaylistHorizontalAdapter playlistHorizontalAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentPlaylistCatalogueBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + playlistCatalogueViewModel = new ViewModelProvider(requireActivity()).get(PlaylistCatalogueViewModel.class); + + init(); + initAppBar(); + initPlaylistCatalogueView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + if (requireArguments().getString(Constants.PLAYLIST_ALL) != null) { + playlistCatalogueViewModel.setType(Constants.PLAYLIST_ALL); + } else if (requireArguments().getString(Constants.PLAYLIST_DOWNLOADED) != null) { + playlistCatalogueViewModel.setType(Constants.PLAYLIST_DOWNLOADED); + } + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.playlist_catalogue_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initPlaylistCatalogueView() { + bind.playlistCatalogueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.playlistCatalogueRecyclerView.setHasFixedSize(true); + + playlistHorizontalAdapter = new PlaylistHorizontalAdapter(this); + bind.playlistCatalogueRecyclerView.setAdapter(playlistHorizontalAdapter); + + if (getActivity() != null) { + playlistCatalogueViewModel.getPlaylistList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), playlists -> { + if (playlists != null) playlistHorizontalAdapter.setItems(playlists); + }); + } + + bind.playlistCatalogueRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.playlistListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_playlist_popup_menu)); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + playlistHorizontalAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_playlist_sort_name) { + playlistHorizontalAdapter.sort(Constants.GENRE_ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_playlist_sort_random) { + playlistHorizontalAdapter.sort(Constants.GENRE_ORDER_BY_RANDOM); + return true; + } + + return false; + }); + + popup.show(); + } + + @Override + public void onPlaylistClick(Bundle bundle) { + bundle.putBoolean("is_offline", false); + Navigation.findNavController(requireView()).navigate(R.id.playlistPageFragment, bundle); + hideKeyboard(requireView()); + } + + @Override + public void onPlaylistLongClick(Bundle bundle) { + PlaylistEditorDialog dialog = new PlaylistEditorDialog(null); + dialog.setArguments(bundle); + dialog.show(activity.getSupportFragmentManager(), null); + hideKeyboard(requireView()); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java new file mode 100644 index 0000000..d4cf6c0 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java @@ -0,0 +1,323 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentPlaylistPageBinding; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.ExternalAudioWriter; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.cappielloantonio.tempo.viewmodel.PlaylistPageViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.Collections; +import java.util.Objects; +import java.util.stream.Collectors; + +@UnstableApi +public class PlaylistPageFragment extends Fragment implements ClickCallback { + private FragmentPlaylistPageBinding bind; + private MainActivity activity; + private PlaylistPageViewModel playlistPageViewModel; + private PlaybackViewModel playbackViewModel; + + private SongHorizontalAdapter songHorizontalAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.playlist_page_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + songHorizontalAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + + initMenuOption(menu); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentPlaylistPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + playlistPageViewModel = new ViewModelProvider(requireActivity()).get(PlaylistPageViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + init(); + initAppBar(); + initMusicButton(); + initBackCover(); + initSongsView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observePlayback(); + } + + @Override + public void onResume() { + super.onResume(); + if (songHorizontalAdapter != null) setMediaBrowserListenableFuture(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_download_playlist) { + playlistPageViewModel.getPlaylistSongLiveList().observe(getViewLifecycleOwner(), songs -> { + if (isVisible() && getActivity() != null) { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.mapDownloads(songs), + songs.stream().map(child -> { + Download toDownload = new Download(child); + toDownload.setPlaylistId(playlistPageViewModel.getPlaylist().getId()); + toDownload.setPlaylistName(playlistPageViewModel.getPlaylist().getName()); + return toDownload; + }).collect(Collectors.toList()) + ); + } else { + songs.forEach(child -> ExternalAudioWriter.downloadToUserDirectory(requireContext(), child)); + } + } + }); + return true; + } else if (item.getItemId() == R.id.action_pin_playlist) { + playlistPageViewModel.setPinned(true); + return true; + } else if (item.getItemId() == R.id.action_unpin_playlist) { + playlistPageViewModel.setPinned(false); + return true; + } + + return false; + } + + private void init() { + playlistPageViewModel.setPlaylist(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT)); + } + + private void initMenuOption(Menu menu) { + playlistPageViewModel.isPinned(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), isPinned -> { + menu.findItem(R.id.action_unpin_playlist).setVisible(isPinned); + menu.findItem(R.id.action_pin_playlist).setVisible(!isPinned); + }); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.animToolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.animToolbar.setTitle(playlistPageViewModel.getPlaylist().getName()); + + bind.playlistNameLabel.setText(playlistPageViewModel.getPlaylist().getName()); + bind.playlistSongCountLabel.setText(getString(R.string.playlist_song_count, playlistPageViewModel.getPlaylist().getSongCount())); + bind.playlistDurationLabel.setText(getString(R.string.playlist_duration, MusicUtil.getReadableDurationString(playlistPageViewModel.getPlaylist().getDuration(), false))); + + bind.animToolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + Objects.requireNonNull(bind.animToolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null)); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void initMusicButton() { + playlistPageViewModel.getPlaylistSongLiveList().observe(getViewLifecycleOwner(), songs -> { + if (bind != null) { + bind.playlistPagePlayButton.setOnClickListener(v -> { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + }); + + bind.playlistPageShuffleButton.setOnClickListener(v -> { + Collections.shuffle(songs); + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + activity.setBottomSheetInPeek(true); + }); + } + }); + } + + private void initBackCover() { + playlistPageViewModel.getPlaylistSongLiveList().observe(requireActivity(), songs -> { + if (bind != null && songs != null && !songs.isEmpty()) { + Collections.shuffle(songs); + + // Pic top-left + CustomGlideRequest.Builder + .from(requireContext(), !songs.isEmpty() ? songs.get(0).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .transform(new GranularRoundedCorners(CustomGlideRequest.CORNER_RADIUS, 0, 0, 0)) + .into(bind.playlistCoverImageViewTopLeft); + + // Pic top-right + CustomGlideRequest.Builder + .from(requireContext(), songs.size() > 1 ? songs.get(1).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .transform(new GranularRoundedCorners(0, CustomGlideRequest.CORNER_RADIUS, 0, 0)) + .into(bind.playlistCoverImageViewTopRight); + + // Pic bottom-left + CustomGlideRequest.Builder + .from(requireContext(), songs.size() > 2 ? songs.get(2).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .transform(new GranularRoundedCorners(0, 0, 0, CustomGlideRequest.CORNER_RADIUS)) + .into(bind.playlistCoverImageViewBottomLeft); + + // Pic bottom-right + CustomGlideRequest.Builder + .from(requireContext(), songs.size() > 3 ? songs.get(3).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .transform(new GranularRoundedCorners(0, 0, CustomGlideRequest.CORNER_RADIUS, 0)) + .into(bind.playlistCoverImageViewBottomRight); + } + }); + } + + private void initSongsView() { + bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.songRecyclerView.setHasFixedSize(true); + + songHorizontalAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, true, false, null); + bind.songRecyclerView.setAdapter(songHorizontalAdapter); + setMediaBrowserListenableFuture(); + reapplyPlayback(); + + playlistPageViewModel.getPlaylistSongLiveList().observe(getViewLifecycleOwner(), songs -> { + songHorizontalAdapter.setItems(songs); + reapplyPlayback(); + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + private void observePlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (songHorizontalAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyPlayback() { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void setMediaBrowserListenableFuture() { + songHorizontalAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelCatalogueFragment.java new file mode 100644 index 0000000..8cd6e88 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelCatalogueFragment.java @@ -0,0 +1,155 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentPodcastChannelCatalogueBinding; +import com.cappielloantonio.tempo.helper.recyclerview.GridItemDecoration; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.PodcastChannelCatalogueAdapter; +import com.cappielloantonio.tempo.viewmodel.PodcastChannelCatalogueViewModel; + +@OptIn(markerClass = UnstableApi.class) +public class PodcastChannelCatalogueFragment extends Fragment implements ClickCallback { + private static final String TAG = "PodcastChannelCatalogue"; + + private FragmentPodcastChannelCatalogueBinding bind; + private MainActivity activity; + private PodcastChannelCatalogueViewModel podcastChannelCatalogueViewModel; + + private PodcastChannelCatalogueAdapter podcastChannelCatalogueAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentPodcastChannelCatalogueBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + podcastChannelCatalogueViewModel = new ViewModelProvider(requireActivity()).get(PodcastChannelCatalogueViewModel.class); + + initAppBar(); + initPodcastChannelCatalogueView(); + + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.podcastChannelInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(R.string.podcast_channel_catalogue_title); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initPodcastChannelCatalogueView() { + bind.podcastChannelCatalogueRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + bind.podcastChannelCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); + bind.podcastChannelCatalogueRecyclerView.setHasFixedSize(true); + + podcastChannelCatalogueAdapter = new PodcastChannelCatalogueAdapter(this); + podcastChannelCatalogueAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); + bind.podcastChannelCatalogueRecyclerView.setAdapter(podcastChannelCatalogueAdapter); + podcastChannelCatalogueViewModel.getPodcastChannels(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { + if (albums != null) { + podcastChannelCatalogueAdapter.setItems(albums); + } + }); + + bind.podcastChannelCatalogueRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + podcastChannelCatalogueAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + @Override + public void onPodcastChannelClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.podcastChannelPageFragment, bundle); + hideKeyboard(requireView()); + } + + @Override + public void onPodcastChannelLongClick(Bundle bundle) { + // Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelPageFragment.java new file mode 100644 index 0000000..4e35e3c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PodcastChannelPageFragment.java @@ -0,0 +1,183 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.PopupMenu; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentPodcastChannelPageBinding; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.PodcastEpisodeAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.UIUtil; +import com.cappielloantonio.tempo.viewmodel.PodcastChannelPageViewModel; +import com.google.android.material.snackbar.Snackbar; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.List; + +@UnstableApi +public class PodcastChannelPageFragment extends Fragment implements ClickCallback { + private FragmentPodcastChannelPageBinding bind; + private MainActivity activity; + private PodcastChannelPageViewModel podcastChannelPageViewModel; + + private PodcastEpisodeAdapter podcastEpisodeAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentPodcastChannelPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + podcastChannelPageViewModel = new ViewModelProvider(requireActivity()).get(PodcastChannelPageViewModel.class); + + init(); + initAppBar(); + initPodcastChannelInfo(); + initPodcastChannelEpisodesView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + podcastChannelPageViewModel.setPodcastChannel(requireArguments().getParcelable(Constants.PODCAST_CHANNEL_OBJECT)); + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.toolbar.setTitle(podcastChannelPageViewModel.getPodcastChannel().getTitle()); + bind.toolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + bind.toolbar.setTitle(podcastChannelPageViewModel.getPodcastChannel().getTitle()); + } + + private void initPodcastChannelInfo() { + String normalizePodcastChannelDescription = MusicUtil.forceReadableString(podcastChannelPageViewModel.getPodcastChannel().getDescription()); + + if (bind != null) { + bind.podcastChannelDescriptionTextView.setVisibility(!normalizePodcastChannelDescription.trim().isEmpty() ? View.VISIBLE : View.GONE); + bind.podcastChannelDescriptionTextView.setText(normalizePodcastChannelDescription); + bind.podcastEpisodesFilterImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.filter_podcast_episode_popup_menu)); + } + } + + private void initPodcastChannelEpisodesView() { + bind.podcastEpisodesRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.podcastEpisodesRecyclerView.addItemDecoration(UIUtil.getDividerItemDecoration(requireContext())); + + podcastEpisodeAdapter = new PodcastEpisodeAdapter(this); + bind.podcastEpisodesRecyclerView.setAdapter(podcastEpisodeAdapter); + podcastChannelPageViewModel.getPodcastChannelEpisodes().observe(getViewLifecycleOwner(), channels -> { + if (channels == null) { + if (bind != null) { + bind.podcastEpisodesRecyclerView.setVisibility(View.GONE); + } + } else { + if (bind != null) { + bind.podcastEpisodesRecyclerView.setVisibility(View.VISIBLE); + } + + if (!channels.isEmpty() && channels.get(0) != null && channels.get(0).getEpisodes() != null) { + List availableEpisode = channels.get(0).getEpisodes(); + + if (bind != null && availableEpisode != null) { + bind.podcastEpisodesRecyclerView.setVisibility(availableEpisode.isEmpty() ? View.GONE : View.VISIBLE); + podcastEpisodeAdapter.setItems(availableEpisode); + } + } + } + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_podcast_filter_download) { + podcastEpisodeAdapter.sort(Constants.PODCAST_FILTER_BY_DOWNLOAD); + return true; + } else if (menuItem.getItemId() == R.id.menu_podcast_filter_all) { + podcastEpisodeAdapter.sort(Constants.PODCAST_FILTER_BY_ALL); + return true; + } + + return false; + }); + + popup.show(); + } + + @Override + public void onPodcastEpisodeClick(Bundle bundle) { + MediaManager.startPodcast(mediaBrowserListenableFuture, bundle.getParcelable(Constants.PODCAST_OBJECT)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onPodcastEpisodeLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.podcastEpisodeBottomSheetDialog, bundle); + } + + @Override + public void onPodcastEpisodeAltClick(Bundle bundle) { + PodcastEpisode episode = bundle.getParcelable(Constants.PODCAST_OBJECT); + podcastChannelPageViewModel.requestPodcastEpisodeDownload(episode); + + Snackbar.make(requireView(), R.string.podcast_episode_download_request_snackbar, Snackbar.LENGTH_SHORT) + .setAnchorView(activity.bind.bottomNavigation) + .show(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java new file mode 100644 index 0000000..14efc14 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java @@ -0,0 +1,330 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.content.ComponentName; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentSearchBinding; +import com.cappielloantonio.tempo.helper.recyclerview.CustomLinearSnapHelper; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.AlbumAdapter; +import com.cappielloantonio.tempo.ui.adapter.ArtistAdapter; +import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.cappielloantonio.tempo.viewmodel.SearchViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.Collections; + +@UnstableApi +public class SearchFragment extends Fragment implements ClickCallback { + private static final String TAG = "SearchFragment"; + + private FragmentSearchBinding bind; + private MainActivity activity; + private SearchViewModel searchViewModel; + private PlaybackViewModel playbackViewModel; + + private ArtistAdapter artistAdapter; + private AlbumAdapter albumAdapter; + private SongHorizontalAdapter songHorizontalAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentSearchBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + searchViewModel = new ViewModelProvider(requireActivity()).get(SearchViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + initSearchResultView(); + initSearchView(); + inputFocus(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + initializeMediaBrowser(); + + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observePlayback(); + } + + @Override + public void onResume() { + super.onResume(); + if (songHorizontalAdapter != null) setMediaBrowserListenableFuture(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void initSearchResultView() { + // Artists + bind.searchResultArtistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.searchResultArtistRecyclerView.setHasFixedSize(true); + + artistAdapter = new ArtistAdapter(this, false, false); + bind.searchResultArtistRecyclerView.setAdapter(artistAdapter); + + CustomLinearSnapHelper artistSnapHelper = new CustomLinearSnapHelper(); + artistSnapHelper.attachToRecyclerView(bind.searchResultArtistRecyclerView); + + // Albums + bind.searchResultAlbumRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); + bind.searchResultAlbumRecyclerView.setHasFixedSize(true); + + albumAdapter = new AlbumAdapter(this); + bind.searchResultAlbumRecyclerView.setAdapter(albumAdapter); + + CustomLinearSnapHelper albumSnapHelper = new CustomLinearSnapHelper(); + albumSnapHelper.attachToRecyclerView(bind.searchResultAlbumRecyclerView); + + // Songs + bind.searchResultTracksRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.searchResultTracksRecyclerView.setHasFixedSize(true); + + songHorizontalAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, true, false, null); + setMediaBrowserListenableFuture(); + reapplyPlayback(); + + bind.searchResultTracksRecyclerView.setAdapter(songHorizontalAdapter); + } + + private void initSearchView() { + setRecentSuggestions(); + + bind.searchView + .getEditText() + .setOnEditorActionListener((textView, actionId, keyEvent) -> { + String query = bind.searchView.getText().toString(); + + if (isQueryValid(query)) { + search(query); + return true; + } + + return false; + }); + + bind.searchView + .getEditText() + .addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int start, int before, int count) { + if (start + count > 1) { + setSearchSuggestions(charSequence.toString()); + } else { + setRecentSuggestions(); + } + } + + @Override + public void afterTextChanged(Editable editable) { + + } + }); + } + + public void setRecentSuggestions() { + bind.searchViewSuggestionContainer.removeAllViews(); + + for (String suggestion : searchViewModel.getRecentSearchSuggestion()) { + View view = LayoutInflater.from(bind.searchViewSuggestionContainer.getContext()).inflate(R.layout.item_search_suggestion, bind.searchViewSuggestionContainer, false); + + ImageView leadingImageView = view.findViewById(R.id.search_suggestion_icon); + TextView titleView = view.findViewById(R.id.search_suggestion_title); + ImageView tailingImageView = view.findViewById(R.id.search_suggestion_delete_icon); + + leadingImageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_history, null)); + titleView.setText(suggestion); + + view.setOnClickListener(v -> search(suggestion)); + + tailingImageView.setOnClickListener(v -> { + searchViewModel.deleteRecentSearch(suggestion); + setRecentSuggestions(); + }); + + bind.searchViewSuggestionContainer.addView(view); + } + } + + public void setSearchSuggestions(String query) { + searchViewModel.getSearchSuggestion(query).observe(getViewLifecycleOwner(), suggestions -> { + bind.searchViewSuggestionContainer.removeAllViews(); + + for (String suggestion : suggestions) { + View view = LayoutInflater.from(bind.searchViewSuggestionContainer.getContext()).inflate(R.layout.item_search_suggestion, bind.searchViewSuggestionContainer, false); + + ImageView leadingImageView = view.findViewById(R.id.search_suggestion_icon); + TextView titleView = view.findViewById(R.id.search_suggestion_title); + ImageView tailingImageView = view.findViewById(R.id.search_suggestion_delete_icon); + + leadingImageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_search, null)); + titleView.setText(suggestion); + tailingImageView.setVisibility(View.GONE); + + view.setOnClickListener(v -> search(suggestion)); + + bind.searchViewSuggestionContainer.addView(view); + } + }); + } + + public void search(String query) { + searchViewModel.setQuery(query); + bind.searchBar.setText(query); + bind.searchView.hide(); + performSearch(query); + } + + private void performSearch(String query) { + searchViewModel.search3(query).observe(getViewLifecycleOwner(), result -> { + if (bind != null) { + if (result.getArtists() != null) { + bind.searchArtistSector.setVisibility(!result.getArtists().isEmpty() ? View.VISIBLE : View.GONE); + artistAdapter.setItems(result.getArtists()); + } else { + artistAdapter.setItems(Collections.emptyList()); + bind.searchArtistSector.setVisibility(View.GONE); + } + + if (result.getAlbums() != null) { + bind.searchAlbumSector.setVisibility(!result.getAlbums().isEmpty() ? View.VISIBLE : View.GONE); + albumAdapter.setItems(result.getAlbums()); + } else { + albumAdapter.setItems(Collections.emptyList()); + bind.searchAlbumSector.setVisibility(View.GONE); + } + + if (result.getSongs() != null) { + bind.searchSongSector.setVisibility(!result.getSongs().isEmpty() ? View.VISIBLE : View.GONE); + songHorizontalAdapter.setItems(result.getSongs()); + } else { + songHorizontalAdapter.setItems(Collections.emptyList()); + bind.searchSongSector.setVisibility(View.GONE); + } + } + }); + + bind.searchResultLayout.setVisibility(View.VISIBLE); + } + + private boolean isQueryValid(String query) { + return !query.equals("") && query.trim().length() > 1; + } + + private void inputFocus() { + bind.searchView.show(); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + songHorizontalAdapter.notifyDataSetChanged(); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + @Override + public void onAlbumClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumPageFragment, bundle); + } + + @Override + public void onAlbumLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.albumBottomSheetDialog, bundle); + } + + @Override + public void onArtistClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistPageFragment, bundle); + } + + @Override + public void onArtistLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.artistBottomSheetDialog, bundle); + } + + private void observePlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (songHorizontalAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyPlayback() { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void setMediaBrowserListenableFuture() { + songHorizontalAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java new file mode 100644 index 0000000..bbbdecc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java @@ -0,0 +1,580 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.app.Activity; +import android.content.Context; +import android.content.ComponentName; +import android.content.Intent; +import android.content.ServiceConnection; +import android.media.audiofx.AudioEffect; +import android.net.Uri; +import android.os.Bundle; +import android.os.IBinder; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.Toast; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.core.os.LocaleListCompat; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.navigation.NavController; +import androidx.navigation.NavOptions; +import androidx.navigation.fragment.NavHostFragment; +import androidx.preference.ListPreference; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.SwitchPreference; + +import com.cappielloantonio.tempo.BuildConfig; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.helper.ThemeHelper; +import com.cappielloantonio.tempo.interfaces.DialogClickCallback; +import com.cappielloantonio.tempo.interfaces.ScanCallback; +import com.cappielloantonio.tempo.service.EqualizerManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.dialog.DeleteDownloadStorageDialog; +import com.cappielloantonio.tempo.ui.dialog.DownloadStorageDialog; +import com.cappielloantonio.tempo.ui.dialog.StarredSyncDialog; +import com.cappielloantonio.tempo.ui.dialog.StarredAlbumSyncDialog; +import com.cappielloantonio.tempo.ui.dialog.StarredArtistSyncDialog; +import com.cappielloantonio.tempo.ui.dialog.StreamingCacheStorageDialog; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.util.UIUtil; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.viewmodel.SettingViewModel; + +import java.util.Locale; +import java.util.Map; + +@OptIn(markerClass = UnstableApi.class) +public class SettingsFragment extends PreferenceFragmentCompat { + private static final String TAG = "SettingsFragment"; + + private MainActivity activity; + private SettingViewModel settingViewModel; + + private ActivityResultLauncher equalizerResultLauncher; + private ActivityResultLauncher directoryPickerLauncher; + + private MediaService.LocalBinder mediaServiceBinder; + private boolean isServiceBound = false; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + equalizerResultLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> {} + ); + + if (!BuildConfig.FLAVOR.equals("tempus")) { + PreferenceCategory githubUpdateCategory = findPreference("settings_github_update_category_key"); + if (githubUpdateCategory != null) { + getPreferenceScreen().removePreference(githubUpdateCategory); + } + } + + directoryPickerLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == Activity.RESULT_OK) { + Intent data = result.getData(); + if (data != null) { + Uri uri = data.getData(); + if (uri != null) { + requireContext().getContentResolver().takePersistableUriPermission( + uri, + Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION + ); + + Preferences.setDownloadDirectoryUri(uri.toString()); + ExternalAudioReader.refreshCache(); + Toast.makeText(requireContext(), R.string.settings_download_folder_set, Toast.LENGTH_SHORT).show(); + checkDownloadDirectory(); + } + } + } + }); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + View view = super.onCreateView(inflater, container, savedInstanceState); + settingViewModel = new ViewModelProvider(requireActivity()).get(SettingViewModel.class); + + if (view != null) { + getListView().setPadding(0, 0, 0, (int) getResources().getDimension(R.dimen.global_padding_bottom)); + } + + return view; + } + + @Override + public void onStart() { + super.onStart(); + activity.setBottomNavigationBarVisibility(false); + activity.setBottomSheetVisibility(false); + } + + @Override + public void onResume() { + super.onResume(); + + checkSystemEqualizer(); + checkCacheStorage(); + checkStorage(); + checkDownloadDirectory(); + + setStreamingCacheSize(); + setAppLanguage(); + setVersion(); + + actionLogout(); + actionScan(); + actionSyncStarredAlbums(); + actionSyncStarredTracks(); + actionSyncStarredArtists(); + actionChangeStreamingCacheStorage(); + actionChangeDownloadStorage(); + actionSetDownloadDirectory(); + actionDeleteDownloadStorage(); + actionKeepScreenOn(); + actionAutoDownloadLyrics(); + actionMiniPlayerHeart(); + + bindMediaService(); + actionAppEqualizer(); + } + + @Override + public void onStop() { + super.onStop(); + activity.setBottomSheetVisibility(true); + } + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + setPreferencesFromResource(R.xml.global_preferences, rootKey); + ListPreference themePreference = findPreference(Preferences.THEME); + if (themePreference != null) { + themePreference.setOnPreferenceChangeListener( + (preference, newValue) -> { + String themeOption = (String) newValue; + ThemeHelper.applyTheme(themeOption); + return true; + }); + } + } + + private void checkSystemEqualizer() { + Preference equalizer = findPreference("system_equalizer"); + + if (equalizer == null) return; + + Intent intent = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL); + + if ((intent.resolveActivity(requireActivity().getPackageManager()) != null)) { + equalizer.setOnPreferenceClickListener(preference -> { + equalizerResultLauncher.launch(intent); + return true; + }); + } else { + equalizer.setVisible(false); + } + } + + private void checkCacheStorage() { + Preference storage = findPreference("streaming_cache_storage"); + + if (storage == null) return; + + try { + if (requireContext().getExternalFilesDirs(null)[1] == null) { + storage.setVisible(false); + } else { + storage.setSummary(Preferences.getStreamingCacheStoragePreference() == 0 ? R.string.download_storage_internal_dialog_negative_button : R.string.download_storage_external_dialog_positive_button); + } + } catch (Exception exception) { + storage.setVisible(false); + } + } + + private void checkStorage() { + Preference storage = findPreference("download_storage"); + + if (storage == null) return; + + try { + if (requireContext().getExternalFilesDirs(null)[1] == null) { + storage.setVisible(false); + } else { + int pref = Preferences.getDownloadStoragePreference(); + if (pref == 0) { + storage.setSummary(R.string.download_storage_internal_dialog_negative_button); + } else if (pref == 1) { + storage.setSummary(R.string.download_storage_external_dialog_positive_button); + } else { + storage.setSummary(R.string.download_storage_directory_dialog_neutral_button); + } + } + } catch (Exception exception) { + storage.setVisible(false); + } + } + + private void checkDownloadDirectory() { + Preference storage = findPreference("download_storage"); + Preference directory = findPreference("set_download_directory"); + + if (directory == null) return; + + String current = Preferences.getDownloadDirectoryUri(); + if (current != null) { + if (storage != null) storage.setVisible(false); + directory.setVisible(true); + directory.setIcon(R.drawable.ic_close); + directory.setTitle(R.string.settings_clear_download_folder); + directory.setSummary(current); + } else { + if (storage != null) storage.setVisible(true); + if (Preferences.getDownloadStoragePreference() == 2) { + directory.setVisible(true); + directory.setIcon(R.drawable.ic_folder); + directory.setTitle(R.string.settings_set_download_folder); + directory.setSummary(R.string.settings_choose_download_folder); + } else { + directory.setVisible(false); + } + } + } + + private void setStreamingCacheSize() { + ListPreference streamingCachePreference = findPreference("streaming_cache_size"); + + if (streamingCachePreference != null) { + streamingCachePreference.setSummaryProvider(new Preference.SummaryProvider() { + @Nullable + @Override + public CharSequence provideSummary(@NonNull ListPreference preference) { + CharSequence entry = preference.getEntry(); + + if (entry == null) return null; + + long currentSizeMb = DownloadUtil.getStreamingCacheSize(requireActivity()) / (1024 * 1024); + + return getString(R.string.settings_summary_streaming_cache_size, entry, String.valueOf(currentSizeMb)); + } + }); + } + } + + private void setAppLanguage() { + ListPreference localePref = (ListPreference) findPreference("language"); + + Map locales = UIUtil.getLangPreferenceDropdownEntries(requireContext()); + + CharSequence[] entries = locales.keySet().toArray(new CharSequence[locales.size()]); + CharSequence[] entryValues = locales.values().toArray(new CharSequence[locales.size()]); + + localePref.setEntries(entries); + localePref.setEntryValues(entryValues); + + String value = localePref.getValue(); + if ("default".equals(value)) { + localePref.setSummary(requireContext().getString(R.string.settings_system_language)); + } else { + localePref.setSummary(Locale.forLanguageTag(value).getDisplayName()); + } + + localePref.setOnPreferenceChangeListener((preference, newValue) -> { + if ("default".equals(newValue)) { + AppCompatDelegate.setApplicationLocales(LocaleListCompat.getEmptyLocaleList()); + preference.setSummary(requireContext().getString(R.string.settings_system_language)); + } else { + LocaleListCompat appLocale = LocaleListCompat.forLanguageTags((String) newValue); + AppCompatDelegate.setApplicationLocales(appLocale); + preference.setSummary(Locale.forLanguageTag((String) newValue).getDisplayName()); + } + return true; + }); + } + + private void setVersion() { + findPreference("version").setSummary(BuildConfig.VERSION_NAME); + } + + private void actionLogout() { + findPreference("logout").setOnPreferenceClickListener(preference -> { + activity.quit(); + return true; + }); + } + + private void actionScan() { + findPreference("scan_library").setOnPreferenceClickListener(preference -> { + settingViewModel.launchScan(new ScanCallback() { + @Override + public void onError(Exception exception) { + findPreference("scan_library").setSummary(exception.getMessage()); + } + + @Override + public void onSuccess(boolean isScanning, long count) { + findPreference("scan_library").setSummary(getString(R.string.settings_scan_result, count)); + if (isScanning) getScanStatus(); + } + }); + + return true; + }); + } + + private void actionSyncStarredTracks() { + findPreference("sync_starred_tracks_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { + if (newValue instanceof Boolean) { + if ((Boolean) newValue) { + StarredSyncDialog dialog = new StarredSyncDialog(() -> { + ((SwitchPreference)preference).setChecked(false); + }); + dialog.show(activity.getSupportFragmentManager(), null); + } + } + return true; + }); + } + + private void actionSyncStarredAlbums() { + findPreference("sync_starred_albums_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { + if (newValue instanceof Boolean) { + if ((Boolean) newValue) { + StarredAlbumSyncDialog dialog = new StarredAlbumSyncDialog(() -> { + ((SwitchPreference)preference).setChecked(false); + }); + dialog.show(activity.getSupportFragmentManager(), null); + } + } + return true; + }); + } + + private void actionSyncStarredArtists() { + findPreference("sync_starred_artists_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { + if (newValue instanceof Boolean) { + if ((Boolean) newValue) { + StarredArtistSyncDialog dialog = new StarredArtistSyncDialog(() -> { + ((SwitchPreference)preference).setChecked(false); + }); + dialog.show(activity.getSupportFragmentManager(), null); + } + } + return true; + }); + } + + private void actionChangeStreamingCacheStorage() { + findPreference("streaming_cache_storage").setOnPreferenceClickListener(preference -> { + StreamingCacheStorageDialog dialog = new StreamingCacheStorageDialog(new DialogClickCallback() { + @Override + public void onPositiveClick() { + findPreference("streaming_cache_storage").setSummary(R.string.streaming_cache_storage_external_dialog_positive_button); + } + + @Override + public void onNegativeClick() { + findPreference("streaming_cache_storage").setSummary(R.string.streaming_cache_storage_internal_dialog_negative_button); + } + }); + dialog.show(activity.getSupportFragmentManager(), null); + return true; + }); + } + + private void actionChangeDownloadStorage() { + findPreference("download_storage").setOnPreferenceClickListener(preference -> { + DownloadStorageDialog dialog = new DownloadStorageDialog(new DialogClickCallback() { + @Override + public void onPositiveClick() { + findPreference("download_storage").setSummary(R.string.download_storage_external_dialog_positive_button); + checkDownloadDirectory(); + } + + @Override + public void onNegativeClick() { + findPreference("download_storage").setSummary(R.string.download_storage_internal_dialog_negative_button); + checkDownloadDirectory(); + } + + @Override + public void onNeutralClick() { + findPreference("download_storage").setSummary(R.string.download_storage_directory_dialog_neutral_button); + checkDownloadDirectory(); + } + }); + dialog.show(activity.getSupportFragmentManager(), null); + return true; + }); + } + + private void actionSetDownloadDirectory() { + Preference pref = findPreference("set_download_directory"); + if (pref != null) { + pref.setOnPreferenceClickListener(preference -> { + String current = Preferences.getDownloadDirectoryUri(); + + if (current != null) { + Preferences.setDownloadDirectoryUri(null); + Preferences.setDownloadStoragePreference(0); + ExternalAudioReader.refreshCache(); + Toast.makeText(requireContext(), R.string.settings_download_folder_cleared, Toast.LENGTH_SHORT).show(); + checkStorage(); + checkDownloadDirectory(); + } else { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION + | Intent.FLAG_GRANT_READ_URI_PERMISSION + | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + directoryPickerLauncher.launch(intent); + } + return true; + }); + } + } + + private void actionDeleteDownloadStorage() { + findPreference("delete_download_storage").setOnPreferenceClickListener(preference -> { + DeleteDownloadStorageDialog dialog = new DeleteDownloadStorageDialog(); + dialog.show(activity.getSupportFragmentManager(), null); + return true; + }); + } + + private void actionMiniPlayerHeart() { + SwitchPreference preference = findPreference("mini_shuffle_button_visibility"); + if (preference == null) { + return; + } + + preference.setChecked(Preferences.showShuffleInsteadOfHeart()); + preference.setOnPreferenceChangeListener((pref, newValue) -> { + if (newValue instanceof Boolean) { + Preferences.setShuffleInsteadOfHeart((Boolean) newValue); + } + return true; + }); + } + + private void actionAutoDownloadLyrics() { + SwitchPreference preference = findPreference("auto_download_lyrics"); + if (preference == null) { + return; + } + + preference.setChecked(Preferences.isAutoDownloadLyricsEnabled()); + preference.setOnPreferenceChangeListener((pref, newValue) -> { + if (newValue instanceof Boolean) { + Preferences.setAutoDownloadLyricsEnabled((Boolean) newValue); + } + return true; + }); + } + + private void getScanStatus() { + settingViewModel.getScanStatus(new ScanCallback() { + @Override + public void onError(Exception exception) { + findPreference("scan_library").setSummary(exception.getMessage()); + } + + @Override + public void onSuccess(boolean isScanning, long count) { + findPreference("scan_library").setSummary(getString(R.string.settings_scan_result, count)); + if (isScanning) getScanStatus(); + } + }); + } + + private void actionKeepScreenOn() { + findPreference("always_on_display").setOnPreferenceChangeListener((preference, newValue) -> { + if (newValue instanceof Boolean) { + if ((Boolean) newValue) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + return true; + }); + } + + private final ServiceConnection serviceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + mediaServiceBinder = (MediaService.LocalBinder) service; + isServiceBound = true; + checkEqualizerBands(); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + mediaServiceBinder = null; + isServiceBound = false; + } + }; + + private void bindMediaService() { + Intent intent = new Intent(requireActivity(), MediaService.class); + intent.setAction(MediaService.ACTION_BIND_EQUALIZER); + requireActivity().bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); + isServiceBound = true; + } + + private void checkEqualizerBands() { + if (mediaServiceBinder != null) { + EqualizerManager eqManager = mediaServiceBinder.getEqualizerManager(); + short numBands = eqManager.getNumberOfBands(); + Preference appEqualizer = findPreference("app_equalizer"); + if (appEqualizer != null) { + appEqualizer.setVisible(numBands > 0); + } + } + } + + private void actionAppEqualizer() { + Preference appEqualizer = findPreference("app_equalizer"); + if (appEqualizer != null) { + appEqualizer.setOnPreferenceClickListener(preference -> { + NavController navController = NavHostFragment.findNavController(this); + NavOptions navOptions = new NavOptions.Builder() + .setLaunchSingleTop(true) + .setPopUpTo(R.id.equalizerFragment, true) + .build(); + activity.setBottomNavigationBarVisibility(true); + activity.setBottomSheetVisibility(true); + navController.navigate(R.id.equalizerFragment, null, navOptions); + return true; + }); + } + } + + @Override + public void onPause() { + super.onPause(); + if (isServiceBound) { + requireActivity().unbindService(serviceConnection); + isServiceBound = false; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java new file mode 100644 index 0000000..e0cad18 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java @@ -0,0 +1,370 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.annotation.SuppressLint; +import android.content.ComponentName; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.Navigation; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentSongListPageBinding; +import com.cappielloantonio.tempo.helper.recyclerview.PaginationScrollListener; +import com.cappielloantonio.tempo.interfaces.ClickCallback; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.viewmodel.PlaybackViewModel; +import com.cappielloantonio.tempo.viewmodel.SongListPageViewModel; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.Collections; +import java.util.List; + +@UnstableApi +public class SongListPageFragment extends Fragment implements ClickCallback { + private static final String TAG = "SongListPageFragment"; + + private FragmentSongListPageBinding bind; + private MainActivity activity; + private SongListPageViewModel songListPageViewModel; + private PlaybackViewModel playbackViewModel; + + private SongHorizontalAdapter songHorizontalAdapter; + + private ListenableFuture mediaBrowserListenableFuture; + + private boolean isLoading = true; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentSongListPageBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + songListPageViewModel = new ViewModelProvider(requireActivity()).get(SongListPageViewModel.class); + playbackViewModel = new ViewModelProvider(requireActivity()).get(PlaybackViewModel.class); + + init(); + initAppBar(); + initButtons(); + initSongListView(); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + initializeMediaBrowser(); + + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); + observePlayback(); + } + + @Override + public void onResume() { + super.onResume(); + setMediaBrowserListenableFuture(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void init() { + if (requireArguments().getString(Constants.MEDIA_RECENTLY_PLAYED) != null) { + songListPageViewModel.title = Constants.MEDIA_RECENTLY_PLAYED; + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_recently_played); + bind.pageTitleLabel.setText(R.string.song_list_page_recently_played); + } else if (requireArguments().getString(Constants.MEDIA_MOST_PLAYED) != null) { + songListPageViewModel.title = Constants.MEDIA_MOST_PLAYED; + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_most_played); + bind.pageTitleLabel.setText(R.string.song_list_page_most_played); + } else if (requireArguments().getString(Constants.MEDIA_RECENTLY_ADDED) != null) { + songListPageViewModel.title = Constants.MEDIA_RECENTLY_ADDED; + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_recently_added); + bind.pageTitleLabel.setText(R.string.song_list_page_recently_added); + } else if (requireArguments().getString(Constants.MEDIA_BY_GENRE) != null) { + songListPageViewModel.title = Constants.MEDIA_BY_GENRE; + songListPageViewModel.genre = requireArguments().getParcelable(Constants.GENRE_OBJECT); + songListPageViewModel.toolbarTitle = songListPageViewModel.genre.getGenre(); + bind.pageTitleLabel.setText(songListPageViewModel.genre.getGenre()); + } else if (requireArguments().getString(Constants.MEDIA_BY_ARTIST) != null) { + songListPageViewModel.title = Constants.MEDIA_BY_ARTIST; + songListPageViewModel.artist = requireArguments().getParcelable(Constants.ARTIST_OBJECT); + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_top, songListPageViewModel.artist.getName()); + bind.pageTitleLabel.setText(getString(R.string.song_list_page_top, songListPageViewModel.artist.getName())); + } else if (requireArguments().getString(Constants.MEDIA_BY_GENRES) != null) { + songListPageViewModel.title = Constants.MEDIA_BY_GENRES; + songListPageViewModel.filters = requireArguments().getStringArrayList("filters_list"); + songListPageViewModel.filterNames = requireArguments().getStringArrayList("filter_name_list"); + songListPageViewModel.toolbarTitle = songListPageViewModel.getFiltersTitle(); + bind.pageTitleLabel.setText(songListPageViewModel.getFiltersTitle()); + } else if (requireArguments().getString(Constants.MEDIA_BY_YEAR) != null) { + songListPageViewModel.title = Constants.MEDIA_BY_YEAR; + songListPageViewModel.year = requireArguments().getInt("year_object"); + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_year, songListPageViewModel.year); + bind.pageTitleLabel.setText(getString(R.string.song_list_page_year, songListPageViewModel.year)); + } else if (requireArguments().getString(Constants.MEDIA_STARRED) != null) { + songListPageViewModel.title = Constants.MEDIA_STARRED; + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_starred); + bind.pageTitleLabel.setText(R.string.song_list_page_starred); + } else if (requireArguments().getString(Constants.MEDIA_DOWNLOADED) != null) { + songListPageViewModel.title = Constants.MEDIA_DOWNLOADED; + songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_downloaded); + bind.pageTitleLabel.setText(getString(R.string.song_list_page_downloaded)); + } else if (requireArguments().getParcelable(Constants.ALBUM_OBJECT) != null) { + songListPageViewModel.album = requireArguments().getParcelable(Constants.ALBUM_OBJECT); + songListPageViewModel.title = Constants.MEDIA_FROM_ALBUM; + songListPageViewModel.toolbarTitle = songListPageViewModel.album.getName(); + bind.pageTitleLabel.setText(songListPageViewModel.album.getName()); + } + } + + private void initAppBar() { + activity.setSupportActionBar(bind.toolbar); + + if (activity.getSupportActionBar() != null) { + activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + if (bind != null) + bind.toolbar.setNavigationOnClickListener(v -> { + hideKeyboard(v); + activity.navController.navigateUp(); + }); + + if (bind != null) + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(songListPageViewModel.toolbarTitle); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); + } + + private void initButtons() { + songListPageViewModel.getSongList().observe(getViewLifecycleOwner(), songs -> { + if (bind != null) { + setSongListPageSorter(); + + bind.songListShuffleImageView.setOnClickListener(v -> { + Collections.shuffle(songs); + MediaManager.startQueue(mediaBrowserListenableFuture, songs.subList(0, Math.min(500, songs.size())), 0); + activity.setBottomSheetInPeek(true); + }); + } + }); + } + + @SuppressLint("ClickableViewAccessibility") + private void initSongListView() { + bind.songListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.songListRecyclerView.setHasFixedSize(true); + + songHorizontalAdapter = new SongHorizontalAdapter(getViewLifecycleOwner(), this, true, false, null); + bind.songListRecyclerView.setAdapter(songHorizontalAdapter); + setMediaBrowserListenableFuture(); + reapplyPlayback(); + songListPageViewModel.getSongList().observe(getViewLifecycleOwner(), songs -> { + isLoading = false; + songHorizontalAdapter.setItems(songs); + reapplyPlayback(); + setSongListPageSubtitle(songs); + }); + + bind.songListRecyclerView.addOnScrollListener(new PaginationScrollListener((LinearLayoutManager) bind.songListRecyclerView.getLayoutManager()) { + @Override + protected void loadMoreItems() { + isLoading = true; + songListPageViewModel.getSongsByPage(getViewLifecycleOwner()); + } + + @Override + public boolean isLoading() { + return isLoading; + } + }); + + bind.songListRecyclerView.setOnTouchListener((v, event) -> { + hideKeyboard(v); + return false; + }); + + bind.songListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_song_popup_menu)); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + inflater.inflate(R.menu.toolbar_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + searchView.clearFocus(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + songHorizontalAdapter.getFilter().filter(newText); + return false; + } + }); + + searchView.setPadding(-32, 0, 0, 0); + } + + private void hideKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_song_sort_name) { + songHorizontalAdapter.sort(Constants.MEDIA_BY_TITLE); + return true; + } else if (menuItem.getItemId() == R.id.menu_song_sort_most_recently_starred) { + songHorizontalAdapter.sort(Constants.MEDIA_MOST_RECENTLY_STARRED); + return true; + } else if (menuItem.getItemId() == R.id.menu_song_sort_least_recently_starred) { + songHorizontalAdapter.sort(Constants.MEDIA_LEAST_RECENTLY_STARRED); + return true; + } + + return false; + }); + + popup.show(); + } + + private void setSongListPageSubtitle(List children) { + switch (songListPageViewModel.title) { + case Constants.MEDIA_BY_GENRE: + bind.pageSubtitleLabel.setText(children.size() < songListPageViewModel.maxNumberByGenre ? + getString(R.string.generic_list_page_count, children.size()) : + getString(R.string.generic_list_page_count_unknown, songListPageViewModel.maxNumberByGenre) + ); + break; + case Constants.MEDIA_BY_YEAR: + bind.pageSubtitleLabel.setText(children.size() < songListPageViewModel.maxNumberByYear ? + getString(R.string.generic_list_page_count, children.size()) : + getString(R.string.generic_list_page_count_unknown, songListPageViewModel.maxNumberByYear) + ); + break; + case Constants.MEDIA_BY_ARTIST: + case Constants.MEDIA_BY_GENRES: + case Constants.MEDIA_STARRED: + bind.pageSubtitleLabel.setText(getString(R.string.generic_list_page_count, children.size())); + break; + } + } + + private void setSongListPageSorter() { + switch (songListPageViewModel.title) { + case Constants.MEDIA_BY_GENRE: + case Constants.MEDIA_BY_YEAR: + bind.songListSortImageView.setVisibility(View.GONE); + break; + case Constants.MEDIA_BY_ARTIST: + case Constants.MEDIA_BY_GENRES: + case Constants.MEDIA_STARRED: + bind.songListSortImageView.setVisibility(View.VISIBLE); + break; + } + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + @Override + public void onMediaClick(Bundle bundle) { + hideKeyboard(requireView()); + MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); + activity.setBottomSheetInPeek(true); + } + + @Override + public void onMediaLongClick(Bundle bundle) { + Navigation.findNavController(requireView()).navigate(R.id.songBottomSheetDialog, bundle); + } + + private void observePlayback() { + playbackViewModel.getCurrentSongId().observe(getViewLifecycleOwner(), id -> { + if (songHorizontalAdapter != null) { + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + playbackViewModel.getIsPlaying().observe(getViewLifecycleOwner(), playing -> { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + }); + } + + private void reapplyPlayback() { + if (songHorizontalAdapter != null) { + String id = playbackViewModel.getCurrentSongId().getValue(); + Boolean playing = playbackViewModel.getIsPlaying().getValue(); + songHorizontalAdapter.setPlaybackState(id, playing != null && playing); + } + } + + private void setMediaBrowserListenableFuture() { + songHorizontalAdapter.setMediaBrowserListenableFuture(mediaBrowserListenableFuture); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java new file mode 100644 index 0000000..a6167ee --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java @@ -0,0 +1,294 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.ComponentName; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.ToggleButton; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaItem; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.fragment.NavHostFragment; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.interfaces.MediaCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.util.ExternalAudioWriter; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.viewmodel.AlbumBottomSheetViewModel; +import com.cappielloantonio.tempo.viewmodel.HomeViewModel; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.snackbar.Snackbar; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +@UnstableApi +public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + private HomeViewModel homeViewModel; + private AlbumBottomSheetViewModel albumBottomSheetViewModel; + private AlbumID3 album; + + private TextView removeAllTextView; + private List currentAlbumTracks = Collections.emptyList(); + private List currentAlbumMediaItems = Collections.emptyList(); + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_album_dialog, container, false); + + album = this.requireArguments().getParcelable(Constants.ALBUM_OBJECT); + + homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); + albumBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(AlbumBottomSheetViewModel.class); + albumBottomSheetViewModel.setAlbum(album); + + init(view); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + MappingUtil.observeExternalAudioRefresh(getViewLifecycleOwner(), this::updateRemoveAllVisibility); + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + private void init(View view) { + ImageView coverAlbum = view.findViewById(R.id.album_cover_image_view); + CustomGlideRequest.Builder + .from(requireContext(), albumBottomSheetViewModel.getAlbum().getCoverArtId(), CustomGlideRequest.ResourceType.Album) + .build() + .into(coverAlbum); + + TextView titleAlbum = view.findViewById(R.id.album_title_text_view); + titleAlbum.setText(albumBottomSheetViewModel.getAlbum().getName()); + titleAlbum.setSelected(true); + + TextView artistAlbum = view.findViewById(R.id.album_artist_text_view); + artistAlbum.setText(albumBottomSheetViewModel.getAlbum().getArtist()); + + ToggleButton favoriteToggle = view.findViewById(R.id.button_favorite); + favoriteToggle.setChecked(albumBottomSheetViewModel.getAlbum().getStarred() != null); + favoriteToggle.setOnClickListener(v -> { + albumBottomSheetViewModel.setFavorite(requireContext()); + }); + + TextView playRadio = view.findViewById(R.id.play_radio_text_view); + playRadio.setOnClickListener(v -> { + AlbumRepository albumRepository = new AlbumRepository(); + albumRepository.getInstantMix(album, 20, new MediaCallback() { + @Override + public void onError(Exception exception) { + exception.printStackTrace(); + } + + @Override + public void onLoadMedia(List media) { + MusicUtil.ratingFilter((ArrayList) media); + + if (!media.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, (ArrayList) media, 0); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + } + + dismissBottomSheet(); + } + }); + }); + + TextView playRandom = view.findViewById(R.id.play_random_text_view); + playRandom.setOnClickListener(v -> { + AlbumRepository albumRepository = new AlbumRepository(); + albumRepository.getAlbumTracks(album.getId()).observe(getViewLifecycleOwner(), songs -> { + Collections.shuffle(songs); + + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + }); + }); + + TextView playNext = view.findViewById(R.id.play_next_text_view); + playNext.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(getViewLifecycleOwner(), songs -> { + MediaManager.enqueue(mediaBrowserListenableFuture, songs, true); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + })); + + TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); + addToQueue.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(getViewLifecycleOwner(), songs -> { + MediaManager.enqueue(mediaBrowserListenableFuture, songs, false); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + })); + + TextView downloadAll = view.findViewById(R.id.download_all_text_view); + albumBottomSheetViewModel.getAlbumTracks().observe(getViewLifecycleOwner(), songs -> { + List mediaItems = MappingUtil.mapDownloads(songs); + List downloads = songs.stream().map(Download::new).collect(Collectors.toList()); + + downloadAll.setOnClickListener(v -> { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).download(mediaItems, downloads); + } else { + songs.forEach(child -> ExternalAudioWriter.downloadToUserDirectory(requireContext(), child)); + } + dismissBottomSheet(); + }); + }); + + TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view); + addToPlaylist.setOnClickListener(v -> { + albumBottomSheetViewModel.getAlbumTracks().observe(getViewLifecycleOwner(), songs -> { + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs)); + + PlaylistChooserDialog dialog = new PlaylistChooserDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + + dismissBottomSheet(); + }); + }); + + removeAllTextView = view.findViewById(R.id.remove_all_text_view); + albumBottomSheetViewModel.getAlbumTracks().observe(getViewLifecycleOwner(), songs -> { + currentAlbumTracks = songs != null ? songs : Collections.emptyList(); + currentAlbumMediaItems = MappingUtil.mapDownloads(currentAlbumTracks); + + removeAllTextView.setOnClickListener(v -> { + if (Preferences.getDownloadDirectoryUri() == null) { + List downloads = currentAlbumTracks.stream().map(Download::new).collect(Collectors.toList()); + DownloadUtil.getDownloadTracker(requireContext()).remove(currentAlbumMediaItems, downloads); + } else { + currentAlbumTracks.forEach(ExternalAudioReader::delete); + } + dismissBottomSheet(); + }); + updateRemoveAllVisibility(); + }); + + TextView goToArtist = view.findViewById(R.id.go_to_artist_text_view); + goToArtist.setOnClickListener(v -> albumBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> { + if (artist != null) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artist); + NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); + } else { + Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show(); + } + + dismissBottomSheet(); + })); + + TextView share = view.findViewById(R.id.share_text_view); + share.setOnClickListener(v -> albumBottomSheetViewModel.shareAlbum().observe(getViewLifecycleOwner(), sharedAlbum -> { + if (sharedAlbum != null) { + ClipboardManager clipboardManager = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText(getString(R.string.app_name), sharedAlbum.getUrl()); + clipboardManager.setPrimaryClip(clipData); + refreshShares(); + dismissBottomSheet(); + } else { + Toast.makeText(requireContext(), getString(R.string.share_unsupported_error), Toast.LENGTH_SHORT).show(); + dismissBottomSheet(); + } + })); + + share.setVisibility(Preferences.isSharingEnabled() ? View.VISIBLE : View.GONE); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void updateRemoveAllVisibility() { + if (removeAllTextView == null) { + return; + } + + if (currentAlbumTracks == null || currentAlbumTracks.isEmpty()) { + removeAllTextView.setVisibility(View.GONE); + return; + } + + if (Preferences.getDownloadDirectoryUri() == null) { + List mediaItems = currentAlbumMediaItems; + if (mediaItems == null || mediaItems.isEmpty()) { + removeAllTextView.setVisibility(View.GONE); + } else if (DownloadUtil.getDownloadTracker(requireContext()).areDownloaded(mediaItems)) { + removeAllTextView.setVisibility(View.VISIBLE); + } else { + removeAllTextView.setVisibility(View.GONE); + } + } else { + boolean hasLocal = currentAlbumTracks.stream().anyMatch(song -> ExternalAudioReader.getUri(song) != null); + removeAllTextView.setVisibility(hasLocal ? View.VISIBLE : View.GONE); + } + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void refreshShares() { + homeViewModel.refreshShares(requireActivity()); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java new file mode 100644 index 0000000..9ec9b54 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java @@ -0,0 +1,142 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.ToggleButton; + +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.viewmodel.ArtistBottomSheetViewModel; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.common.util.concurrent.ListenableFuture; + +@UnstableApi +public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + private static final String TAG = "AlbumBottomSheetDialog"; + + private ArtistBottomSheetViewModel artistBottomSheetViewModel; + private ArtistID3 artist; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_artist_dialog, container, false); + + artist = this.requireArguments().getParcelable(Constants.ARTIST_OBJECT); + + artistBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(ArtistBottomSheetViewModel.class); + artistBottomSheetViewModel.setArtist(artist); + + init(view); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + // TODO Use the viewmodel as a conduit and avoid direct calls + private void init(View view) { + ImageView coverArtist = view.findViewById(R.id.artist_cover_image_view); + CustomGlideRequest.Builder + .from(requireContext(), artistBottomSheetViewModel.getArtist().getCoverArtId(), CustomGlideRequest.ResourceType.Artist) + .build() + .into(coverArtist); + + TextView nameArtist = view.findViewById(R.id.song_title_text_view); + nameArtist.setText(artistBottomSheetViewModel.getArtist().getName()); + nameArtist.setSelected(true); + + ToggleButton favoriteToggle = view.findViewById(R.id.button_favorite); + favoriteToggle.setChecked(artistBottomSheetViewModel.getArtist().getStarred() != null); + favoriteToggle.setOnClickListener(v -> { + artistBottomSheetViewModel.setFavorite(requireContext()); + }); + + TextView playRadio = view.findViewById(R.id.play_radio_text_view); + playRadio.setOnClickListener(v -> { + ArtistRepository artistRepository = new ArtistRepository(); + + artistRepository.getInstantMix(artist, 20).observe(getViewLifecycleOwner(), songs -> { + // navidrome may return null for this + if (songs == null) + return; + MusicUtil.ratingFilter(songs); + + if (!songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + } + + dismissBottomSheet(); + }); + }); + + TextView playRandom = view.findViewById(R.id.play_random_text_view); + playRandom.setOnClickListener(v -> { + ArtistRepository artistRepository = new ArtistRepository(); + artistRepository.getRandomSong(artist, 50).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (!songs.isEmpty()) { + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + } else { + Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show(); + } + + dismissBottomSheet(); + }); + }); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/DownloadedBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/DownloadedBottomSheetDialog.java new file mode 100644 index 0000000..4a72064 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/DownloadedBottomSheetDialog.java @@ -0,0 +1,150 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.media3.common.MediaItem; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.Collections; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + +@UnstableApi +public class DownloadedBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + private List songs; + private String groupTitle; + private String groupSubtitle; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_downloaded_dialog, container, false); + + songs = this.requireArguments().getParcelableArrayList(Constants.DOWNLOAD_GROUP); + groupTitle = this.requireArguments().getString(Constants.DOWNLOAD_GROUP_TITLE); + groupSubtitle = this.requireArguments().getString(Constants.DOWNLOAD_GROUP_SUBTITLE); + + initUI(view); + init(view); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + private void initUI(View view) { + TextView playRandom = view.findViewById(R.id.play_random_text_view); + playRandom.setVisibility(songs.size() > 1 ? View.VISIBLE : View.GONE); + + TextView remove = view.findViewById(R.id.remove_all_text_view); + remove.setText(songs.size() > 1 ? getText(R.string.downloaded_bottom_sheet_remove_all) : getText(R.string.downloaded_bottom_sheet_remove)); + } + + private void init(View view) { + ImageView coverAlbum = view.findViewById(R.id.group_cover_image_view); + CustomGlideRequest.Builder.from(requireContext(), songs.get(new Random().nextInt(songs.size())).getCoverArtId(), CustomGlideRequest.ResourceType.Unknown).build().into(coverAlbum); + + TextView groupTitleView = view.findViewById(R.id.group_title_text_view); + groupTitleView.setText(this.groupTitle); + groupTitleView.setSelected(true); + + TextView groupSubtitleView = view.findViewById(R.id.group_subtitle_text_view); + groupSubtitleView.setText(this.groupSubtitle); + groupSubtitleView.setSelected(true); + + TextView playRandom = view.findViewById(R.id.play_random_text_view); + playRandom.setOnClickListener(v -> { + Collections.shuffle(songs); + + MediaManager.startQueue(mediaBrowserListenableFuture, songs, 0); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + }); + + TextView playNext = view.findViewById(R.id.play_next_text_view); + playNext.setOnClickListener(v -> { + MediaManager.enqueue(mediaBrowserListenableFuture, songs, true); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + }); + + TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); + addToQueue.setOnClickListener(v -> { + MediaManager.enqueue(mediaBrowserListenableFuture, songs, false); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + dismissBottomSheet(); + }); + + TextView removeAll = view.findViewById(R.id.remove_all_text_view); + removeAll.setOnClickListener(v -> { + if (Preferences.getDownloadDirectoryUri() == null) { + List mediaItems = MappingUtil.mapDownloads(songs); + List downloads = songs.stream().map(Download::new).collect(Collectors.toList()); + DownloadUtil.getDownloadTracker(requireContext()).remove(mediaItems, downloads); + } else { + songs.forEach(ExternalAudioReader::delete); + } + + dismissBottomSheet(); + }); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastChannelBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastChannelBottomSheetDialog.java new file mode 100644 index 0000000..e69cbca --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastChannelBottomSheetDialog.java @@ -0,0 +1,96 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.viewmodel.PodcastChannelBottomSheetViewModel; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.common.util.concurrent.ListenableFuture; + +@UnstableApi +public class PodcastChannelBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + private PodcastChannelBottomSheetViewModel podcastChannelBottomSheetViewModel; + private PodcastChannel podcastChannel; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_podcast_channel_dialog, container, false); + + podcastChannel = requireArguments().getParcelable(Constants.PODCAST_CHANNEL_OBJECT); + + podcastChannelBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PodcastChannelBottomSheetViewModel.class); + podcastChannelBottomSheetViewModel.setPodcastChannel(podcastChannel); + + init(view); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + private void init(View view) { + ImageView coverPodcast = view.findViewById(R.id.podcast_cover_image_view); + + CustomGlideRequest.Builder + .from(requireContext(), podcastChannelBottomSheetViewModel.getPodcastChannel().getCoverArtId(), CustomGlideRequest.ResourceType.Podcast) + .build() + .into(coverPodcast); + + TextView titlePodcast = view.findViewById(R.id.podcast_title_text_view); + titlePodcast.setText(podcastChannelBottomSheetViewModel.getPodcastChannel().getTitle()); + + TextView delete = view.findViewById(R.id.delete_text_view); + delete.setOnClickListener(v -> { + podcastChannelBottomSheetViewModel.deletePodcastChannel(); + dismissBottomSheet(); + }); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastEpisodeBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastEpisodeBottomSheetDialog.java new file mode 100644 index 0000000..5d2a463 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/PodcastEpisodeBottomSheetDialog.java @@ -0,0 +1,155 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ComponentName; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.viewmodel.PodcastEpisodeBottomSheetViewModel; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.common.util.concurrent.ListenableFuture; + +@UnstableApi +public class PodcastEpisodeBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + private PodcastEpisodeBottomSheetViewModel podcastEpisodeBottomSheetViewModel; + private PodcastEpisode podcastEpisode; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_podcast_episode_dialog, container, false); + + podcastEpisode = requireArguments().getParcelable(Constants.PODCAST_OBJECT); + + podcastEpisodeBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PodcastEpisodeBottomSheetViewModel.class); + podcastEpisodeBottomSheetViewModel.setPodcastEpisode(podcastEpisode); + + init(view); + + return view; + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + private void init(View view) { + ImageView coverPodcast = view.findViewById(R.id.podcast_cover_image_view); + + CustomGlideRequest.Builder + .from(requireContext(), podcastEpisodeBottomSheetViewModel.getPodcastEpisode().getCoverArtId(), CustomGlideRequest.ResourceType.Podcast) + .build() + .into(coverPodcast); + + TextView titlePodcast = view.findViewById(R.id.podcast_title_text_view); + titlePodcast.setText(podcastEpisodeBottomSheetViewModel.getPodcastEpisode().getTitle()); + + titlePodcast.setSelected(true); + + TextView playNext = view.findViewById(R.id.play_next_text_view); + playNext.setOnClickListener(v -> { + // TODO + // MediaManager.enqueue(mediaBrowserListenableFuture, podcast, true); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + dismissBottomSheet(); + }); + + TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); + addToQueue.setOnClickListener(v -> { + // TODO + // MediaManager.enqueue(mediaBrowserListenableFuture, podcast, false); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + dismissBottomSheet(); + }); + + TextView download = view.findViewById(R.id.download_text_view); + download.setOnClickListener(v -> { + // TODO + /* DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.mapMediaItem(podcast, false), + MappingUtil.mapDownload(podcast, null, null) + ); */ + dismissBottomSheet(); + }); + + TextView remove = view.findViewById(R.id.remove_text_view); + remove.setOnClickListener(v -> { + // TODO + /* DownloadUtil.getDownloadTracker(requireContext()).remove( + MappingUtil.mapMediaItem(podcast, false), + MappingUtil.mapDownload(podcast, null, null) + ); */ + dismissBottomSheet(); + }); + + initDownloadUI(download, remove); + + TextView delete = view.findViewById(R.id.delete_text_view); + delete.setOnClickListener(v -> { + podcastEpisodeBottomSheetViewModel.deletePodcastEpisode(); + dismissBottomSheet(); + }); + + TextView goToChannel = view.findViewById(R.id.go_to_channel_text_view); + goToChannel.setOnClickListener(v -> { + Toast.makeText(requireContext(), "Open the channel", Toast.LENGTH_SHORT).show(); + dismissBottomSheet(); + }); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void initDownloadUI(TextView download, TextView remove) { + // TODO + /* if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(MappingUtil.mapMediaItem(podcast, false))) { + download.setVisibility(View.GONE); + remove.setVisibility(View.VISIBLE); + } else { + download.setVisibility(View.VISIBLE); + remove.setVisibility(View.GONE); + } */ + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ShareBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ShareBottomSheetDialog.java new file mode 100644 index 0000000..90612f6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/ShareBottomSheetDialog.java @@ -0,0 +1,120 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.dialog.ShareUpdateDialog; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.UIUtil; +import com.cappielloantonio.tempo.viewmodel.HomeViewModel; +import com.cappielloantonio.tempo.viewmodel.ShareBottomSheetViewModel; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; + +import java.util.List; + +@UnstableApi +public class ShareBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + + private HomeViewModel homeViewModel; + private ShareBottomSheetViewModel shareBottomSheetViewModel; + private Share share; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_share_dialog, container, false); + + share = this.requireArguments().getParcelable(Constants.SHARE_OBJECT); + + homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); + shareBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(ShareBottomSheetViewModel.class); + shareBottomSheetViewModel.setShare(share); + + init(view); + + return view; + } + + private void init(View view) { + ImageView shareCover = view.findViewById(R.id.share_cover_image_view); + + String coverArtId = null; + List entries = shareBottomSheetViewModel.getShare().getEntries(); + + if (entries != null && !entries.isEmpty()) { + coverArtId = entries.get(0).getCoverArtId(); + } + + CustomGlideRequest.Builder + .from(requireContext(), coverArtId, CustomGlideRequest.ResourceType.Unknown) + .build() + .into(shareCover); + + TextView shareTitle = view.findViewById(R.id.share_title_text_view); + shareTitle.setText(shareBottomSheetViewModel.getShare().getDescription()); + shareTitle.setSelected(true); + + TextView shareSubtitle = view.findViewById(R.id.share_subtitle_text_view); + shareSubtitle.setText(requireContext().getString(R.string.share_subtitle_item, UIUtil.getReadableDate(share.getExpires()))); + shareSubtitle.setSelected(true); + + TextView copyLink = view.findViewById(R.id.copy_link_text_view); + copyLink.setOnClickListener(v -> { + ClipboardManager clipboardManager = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText(getString(R.string.app_name), shareBottomSheetViewModel.getShare().getUrl()); + clipboardManager.setPrimaryClip(clipData); + dismissBottomSheet(); + }); + + TextView updateShare = view.findViewById(R.id.update_share_preferences_text_view); + updateShare.setOnClickListener(v -> { + // refreshShares(); + showUpdateShareDialog(); + dismissBottomSheet(); + }); + + TextView deleteShare = view.findViewById(R.id.delete_share_text_view); + deleteShare.setOnClickListener(v -> { + deleteShare(); + refreshShares(); + dismissBottomSheet(); + }); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void showUpdateShareDialog() { + ShareUpdateDialog dialog = new ShareUpdateDialog(); + dialog.show(requireActivity().getSupportFragmentManager(), null); + } + + private void refreshShares() { + homeViewModel.refreshShares(getParentFragment()); + } + + private void deleteShare() { + shareBottomSheetViewModel.deleteShare(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java new file mode 100644 index 0000000..39ba439 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java @@ -0,0 +1,400 @@ +package com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.ComponentName; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.ToggleButton; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.session.MediaBrowser; +import androidx.media3.session.SessionToken; +import androidx.navigation.fragment.NavHostFragment; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.service.MediaManager; +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog; +import com.cappielloantonio.tempo.ui.dialog.RatingDialog; +import com.cappielloantonio.tempo.util.AssetLinkUtil; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.cappielloantonio.tempo.viewmodel.HomeViewModel; +import com.cappielloantonio.tempo.viewmodel.SongBottomSheetViewModel; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.chip.Chip; +import com.google.android.material.chip.ChipGroup; +import com.google.common.util.concurrent.ListenableFuture; + +import android.content.Intent; +import androidx.media3.common.MediaItem; +import com.cappielloantonio.tempo.util.ExternalAudioWriter; + +import java.util.ArrayList; +import java.util.Collections; + +@UnstableApi +public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { + private HomeViewModel homeViewModel; + private SongBottomSheetViewModel songBottomSheetViewModel; + private Child song; + + private TextView downloadButton; + private TextView removeButton; + private ChipGroup assetLinkChipGroup; + private Chip songLinkChip; + private Chip albumLinkChip; + private Chip artistLinkChip; + private AssetLinkUtil.AssetLink currentSongLink; + private AssetLinkUtil.AssetLink currentAlbumLink; + private AssetLinkUtil.AssetLink currentArtistLink; + + private ListenableFuture mediaBrowserListenableFuture; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.bottom_sheet_song_dialog, container, false); + + song = requireArguments().getParcelable(Constants.TRACK_OBJECT); + + homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); + songBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(SongBottomSheetViewModel.class); + songBottomSheetViewModel.setSong(song); + + init(view); + + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + MappingUtil.observeExternalAudioRefresh(getViewLifecycleOwner(), this::updateDownloadButtons); + } + + @Override + public void onStart() { + super.onStart(); + + initializeMediaBrowser(); + } + + @Override + public void onStop() { + releaseMediaBrowser(); + super.onStop(); + } + + private void init(View view) { + ImageView coverSong = view.findViewById(R.id.song_cover_image_view); + CustomGlideRequest.Builder + .from(requireContext(), songBottomSheetViewModel.getSong().getCoverArtId(), CustomGlideRequest.ResourceType.Song) + .build() + .into(coverSong); + + TextView titleSong = view.findViewById(R.id.song_title_text_view); + titleSong.setText(songBottomSheetViewModel.getSong().getTitle()); + + titleSong.setSelected(true); + + TextView artistSong = view.findViewById(R.id.song_artist_text_view); + artistSong.setText(songBottomSheetViewModel.getSong().getArtist()); + + initAssetLinkChips(view); + bindAssetLinkView(coverSong, currentSongLink); + bindAssetLinkView(titleSong, currentSongLink); + bindAssetLinkView(artistSong, currentArtistLink != null ? currentArtistLink : currentSongLink); + + ToggleButton favoriteToggle = view.findViewById(R.id.button_favorite); + favoriteToggle.setChecked(songBottomSheetViewModel.getSong().getStarred() != null); + favoriteToggle.setOnClickListener(v -> { + songBottomSheetViewModel.setFavorite(requireContext()); + }); + favoriteToggle.setOnLongClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, song); + + RatingDialog dialog = new RatingDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + + dismissBottomSheet(); + return true; + }); + + TextView playRadio = view.findViewById(R.id.play_radio_text_view); + playRadio.setOnClickListener(v -> { + MediaManager.startQueue(mediaBrowserListenableFuture, song); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + + songBottomSheetViewModel.getInstantMix(getViewLifecycleOwner(), song).observe(getViewLifecycleOwner(), songs -> { + MusicUtil.ratingFilter(songs); + + if (songs == null) { + dismissBottomSheet(); + return; + } + + if (!songs.isEmpty()) { + MediaManager.enqueue(mediaBrowserListenableFuture, songs, true); + dismissBottomSheet(); + } + }); + }); + + TextView playNext = view.findViewById(R.id.play_next_text_view); + playNext.setOnClickListener(v -> { + MediaManager.enqueue(mediaBrowserListenableFuture, song, true); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + dismissBottomSheet(); + }); + + TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); + addToQueue.setOnClickListener(v -> { + MediaManager.enqueue(mediaBrowserListenableFuture, song, false); + ((MainActivity) requireActivity()).setBottomSheetInPeek(true); + dismissBottomSheet(); + }); + + TextView rate = view.findViewById(R.id.rate_text_view); + rate.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.TRACK_OBJECT, song); + + RatingDialog dialog = new RatingDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + + dismissBottomSheet(); + }); + + downloadButton = view.findViewById(R.id.download_text_view); + downloadButton.setOnClickListener(v -> { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.mapDownload(song), + new Download(song) + ); + } else { + ExternalAudioWriter.downloadToUserDirectory(requireContext(), song); + } + dismissBottomSheet(); + }); + + removeButton = view.findViewById(R.id.remove_text_view); + removeButton.setOnClickListener(v -> { + if (Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(requireContext()).remove( + MappingUtil.mapDownload(song), + new Download(song) + ); + } else { + ExternalAudioReader.delete(song); + } + dismissBottomSheet(); + }); + + updateDownloadButtons(); + + TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view); + addToPlaylist.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(Collections.singletonList(song))); + + PlaylistChooserDialog dialog = new PlaylistChooserDialog(); + dialog.setArguments(bundle); + dialog.show(requireActivity().getSupportFragmentManager(), null); + + dismissBottomSheet(); + }); + + TextView goToAlbum = view.findViewById(R.id.go_to_album_text_view); + goToAlbum.setOnClickListener(v -> songBottomSheetViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> { + if (album != null) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ALBUM_OBJECT, album); + NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle); + } else + Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_album), Toast.LENGTH_SHORT).show(); + + dismissBottomSheet(); + })); + + goToAlbum.setVisibility(songBottomSheetViewModel.getSong().getAlbumId() != null ? View.VISIBLE : View.GONE); + + TextView goToArtist = view.findViewById(R.id.go_to_artist_text_view); + goToArtist.setOnClickListener(v -> songBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> { + if (artist != null) { + Bundle bundle = new Bundle(); + bundle.putParcelable(Constants.ARTIST_OBJECT, artist); + NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); + } else + Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_artist), Toast.LENGTH_SHORT).show(); + + dismissBottomSheet(); + })); + + goToArtist.setVisibility(songBottomSheetViewModel.getSong().getArtistId() != null ? View.VISIBLE : View.GONE); + + TextView share = view.findViewById(R.id.share_text_view); + share.setOnClickListener(v -> songBottomSheetViewModel.shareTrack().observe(getViewLifecycleOwner(), sharedTrack -> { + if (sharedTrack != null) { + ClipboardManager clipboardManager = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText(getString(R.string.app_name), sharedTrack.getUrl()); + clipboardManager.setPrimaryClip(clipData); + refreshShares(); + dismissBottomSheet(); + } else { + Toast.makeText(requireContext(), getString(R.string.share_unsupported_error), Toast.LENGTH_SHORT).show(); + dismissBottomSheet(); + } + })); + + share.setVisibility(Preferences.isSharingEnabled() ? View.VISIBLE : View.GONE); + } + + @Override + public void onClick(View v) { + dismissBottomSheet(); + } + + private void dismissBottomSheet() { + dismiss(); + } + + private void updateDownloadButtons() { + if (downloadButton == null || removeButton == null) { + return; + } + + if (Preferences.getDownloadDirectoryUri() == null) { + boolean downloaded = DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(song.getId()); + downloadButton.setVisibility(downloaded ? View.GONE : View.VISIBLE); + removeButton.setVisibility(downloaded ? View.VISIBLE : View.GONE); + } else { + boolean hasLocal = ExternalAudioReader.getUri(song) != null; + downloadButton.setVisibility(hasLocal ? View.GONE : View.VISIBLE); + removeButton.setVisibility(hasLocal ? View.VISIBLE : View.GONE); + } + } + + private void initAssetLinkChips(View root) { + assetLinkChipGroup = root.findViewById(R.id.asset_link_chip_group); + songLinkChip = root.findViewById(R.id.asset_link_song_chip); + albumLinkChip = root.findViewById(R.id.asset_link_album_chip); + artistLinkChip = root.findViewById(R.id.asset_link_artist_chip); + + currentSongLink = bindAssetLinkChip(songLinkChip, AssetLinkUtil.TYPE_SONG, song.getId()); + currentAlbumLink = bindAssetLinkChip(albumLinkChip, AssetLinkUtil.TYPE_ALBUM, song.getAlbumId()); + currentArtistLink = bindAssetLinkChip(artistLinkChip, AssetLinkUtil.TYPE_ARTIST, song.getArtistId()); + syncAssetLinkGroupVisibility(); + } + + private AssetLinkUtil.AssetLink bindAssetLinkChip(@Nullable Chip chip, String type, @Nullable String id) { + if (chip == null) return null; + if (id == null || id.isEmpty()) { + clearAssetLinkChip(chip); + return null; + } + + String label = getString(AssetLinkUtil.getLabelRes(type)); + AssetLinkUtil.AssetLink assetLink = AssetLinkUtil.buildAssetLink(type, id); + if (assetLink == null) { + clearAssetLinkChip(chip); + return null; + } + + chip.setText(getString(R.string.asset_link_chip_text, label, assetLink.id)); + chip.setVisibility(View.VISIBLE); + + chip.setOnClickListener(v -> { + if (assetLink != null) { + ((MainActivity) requireActivity()).openAssetLink(assetLink); + } + }); + + chip.setOnLongClickListener(v -> { + if (assetLink != null) { + AssetLinkUtil.copyToClipboard(requireContext(), assetLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, id), Toast.LENGTH_SHORT).show(); + } + return true; + }); + + return assetLink; + } + + private void clearAssetLinkChip(@Nullable Chip chip) { + if (chip == null) return; + chip.setVisibility(View.GONE); + chip.setText(""); + chip.setOnClickListener(null); + chip.setOnLongClickListener(null); + } + + private void syncAssetLinkGroupVisibility() { + if (assetLinkChipGroup == null) return; + boolean hasVisible = false; + for (int i = 0; i < assetLinkChipGroup.getChildCount(); i++) { + View child = assetLinkChipGroup.getChildAt(i); + if (child.getVisibility() == View.VISIBLE) { + hasVisible = true; + break; + } + } + assetLinkChipGroup.setVisibility(hasVisible ? View.VISIBLE : View.GONE); + } + + private void bindAssetLinkView(@Nullable View view, @Nullable AssetLinkUtil.AssetLink assetLink) { + if (view == null) return; + if (assetLink == null) { + AssetLinkUtil.clearLinkAppearance(view); + view.setOnClickListener(null); + view.setOnLongClickListener(null); + view.setClickable(false); + view.setLongClickable(false); + return; + } + + view.setClickable(true); + view.setLongClickable(true); + AssetLinkUtil.applyLinkAppearance(view); + view.setOnClickListener(v -> ((MainActivity) requireActivity()).openAssetLink(assetLink, !AssetLinkUtil.TYPE_SONG.equals(assetLink.type))); + view.setOnLongClickListener(v -> { + AssetLinkUtil.copyToClipboard(requireContext(), assetLink); + Toast.makeText(requireContext(), getString(R.string.asset_link_copied_toast, assetLink.id), Toast.LENGTH_SHORT).show(); + return true; + }); + } + + private void initializeMediaBrowser() { + mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync(); + } + + private void releaseMediaBrowser() { + MediaBrowser.releaseFuture(mediaBrowserListenableFuture); + } + + private void refreshShares() { + homeViewModel.refreshShares(requireActivity()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/HomePager.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/HomePager.java new file mode 100644 index 0000000..ecc79db --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/HomePager.java @@ -0,0 +1,48 @@ +package com.cappielloantonio.tempo.ui.fragment.pager; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.Fragment; +import androidx.media3.common.util.UnstableApi; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import java.util.ArrayList; +import java.util.List; + +@OptIn(markerClass = UnstableApi.class) +public class HomePager extends FragmentStateAdapter { + private static final String TAG = "HomePager"; + + private final List fragments = new ArrayList<>(); + private final List titles = new ArrayList<>(); + private final List icons = new ArrayList<>(); + + public HomePager(@NonNull Fragment fragment) { + super(fragment); + } + + @NonNull + @Override + public Fragment createFragment(int position) { + return fragments.get(position); + } + + @Override + public int getItemCount() { + return fragments.size(); + } + + public void addFragment(Fragment fragment, String title, int drawable) { + fragments.add(fragment); + titles.add(title); + icons.add(drawable); + } + + public String getPageTitle(int position) { + return titles.get(position); + } + + public Integer getPageIcon(int position) { + return icons.get(position); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerHorizontalPager.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerHorizontalPager.java new file mode 100644 index 0000000..4487a29 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerHorizontalPager.java @@ -0,0 +1,37 @@ +package com.cappielloantonio.tempo.ui.fragment.pager; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.Fragment; +import androidx.media3.common.util.UnstableApi; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import com.cappielloantonio.tempo.ui.fragment.PlayerCoverFragment; +import com.cappielloantonio.tempo.ui.fragment.PlayerLyricsFragment; + +@OptIn(markerClass = UnstableApi.class) +public class PlayerControllerHorizontalPager extends FragmentStateAdapter { + private static final String TAG = "PlayerControllerHorizontalPager"; + + public PlayerControllerHorizontalPager(@NonNull Fragment fragment) { + super(fragment); + } + + @NonNull + @Override + public Fragment createFragment(int position) { + switch (position) { + case 0: + return new PlayerCoverFragment(); + case 1: + return new PlayerLyricsFragment(); + } + + return new PlayerCoverFragment(); + } + + @Override + public int getItemCount() { + return 2; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerVerticalPager.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerVerticalPager.java new file mode 100644 index 0000000..cc21b95 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/pager/PlayerControllerVerticalPager.java @@ -0,0 +1,51 @@ +package com.cappielloantonio.tempo.ui.fragment.pager; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.Fragment; +import androidx.media3.common.util.UnstableApi; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import com.cappielloantonio.tempo.ui.fragment.PlayerControllerFragment; +import com.cappielloantonio.tempo.ui.fragment.PlayerQueueFragment; + +import java.util.HashMap; + +@OptIn(markerClass = UnstableApi.class) +public class PlayerControllerVerticalPager extends FragmentStateAdapter { + private final HashMap maps; + + public PlayerControllerVerticalPager(@NonNull Fragment fragment) { + super(fragment); + + this.maps = new HashMap<>(); + } + + @NonNull + @Override + public Fragment createFragment(int position) { + switch (position) { + case 0: + Fragment playerControllerFragment = new PlayerControllerFragment(); + maps.put(position, playerControllerFragment); + return playerControllerFragment; + case 1: + Fragment playerQueueFragment = new PlayerQueueFragment(); + maps.put(position, playerQueueFragment); + return playerQueueFragment; + } + + Fragment playerControllerFragment = new PlayerControllerFragment(); + maps.put(position, playerControllerFragment); + return playerControllerFragment; + } + + @Override + public int getItemCount() { + return 2; + } + + public Fragment getRegisteredFragment(int position) { + return maps.get(position); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkNavigator.java b/app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkNavigator.java new file mode 100644 index 0000000..9d3ba96 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkNavigator.java @@ -0,0 +1,188 @@ +package com.cappielloantonio.tempo.util; + +import android.os.Bundle; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.NavController; +import androidx.navigation.NavOptions; + +import com.cappielloantonio.tempo.BuildConfig; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.subsonic.models.Genre; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.SongBottomSheetDialog; +import com.cappielloantonio.tempo.viewmodel.SongBottomSheetViewModel; + +public final class AssetLinkNavigator { + private final MainActivity activity; + private final SongRepository songRepository = new SongRepository(); + private final AlbumRepository albumRepository = new AlbumRepository(); + private final ArtistRepository artistRepository = new ArtistRepository(); + private final PlaylistRepository playlistRepository = new PlaylistRepository(); + + public AssetLinkNavigator(@NonNull MainActivity activity) { + this.activity = activity; + } + + public void open(@Nullable AssetLinkUtil.AssetLink assetLink) { + if (assetLink == null) { + return; + } + switch (assetLink.type) { + case AssetLinkUtil.TYPE_SONG: + openSong(assetLink.id); + break; + case AssetLinkUtil.TYPE_ALBUM: + openAlbum(assetLink.id); + break; + case AssetLinkUtil.TYPE_ARTIST: + openArtist(assetLink.id); + break; + case AssetLinkUtil.TYPE_PLAYLIST: + openPlaylist(assetLink.id); + break; + case AssetLinkUtil.TYPE_GENRE: + openGenre(assetLink.id); + break; + case AssetLinkUtil.TYPE_YEAR: + openYear(assetLink.id); + break; + default: + Toast.makeText(activity, R.string.asset_link_error_unsupported, Toast.LENGTH_SHORT).show(); + break; + } + } + + private void openSong(@NonNull String id) { + MutableLiveData liveData = songRepository.getSong(id); + Observer observer = new Observer() { + @Override + public void onChanged(Child child) { + liveData.removeObserver(this); + if (child == null) { + Toast.makeText(activity, R.string.asset_link_error_song, Toast.LENGTH_SHORT).show(); + return; + } + SongBottomSheetViewModel viewModel = new ViewModelProvider(activity).get(SongBottomSheetViewModel.class); + viewModel.setSong(child); + SongBottomSheetDialog dialog = new SongBottomSheetDialog(); + Bundle args = new Bundle(); + args.putParcelable(Constants.TRACK_OBJECT, child); + dialog.setArguments(args); + dialog.show(activity.getSupportFragmentManager(), null); + } + }; + liveData.observe(activity, observer); + } + + private void openAlbum(@NonNull String id) { + MutableLiveData liveData = albumRepository.getAlbum(id); + Observer observer = new Observer() { + @Override + public void onChanged(AlbumID3 album) { + liveData.removeObserver(this); + if (album == null) { + Toast.makeText(activity, R.string.asset_link_error_album, Toast.LENGTH_SHORT).show(); + return; + } + Bundle args = new Bundle(); + args.putParcelable(Constants.ALBUM_OBJECT, album); + navigateSafely(R.id.albumPageFragment, args); + } + }; + liveData.observe(activity, observer); + } + + private void openArtist(@NonNull String id) { + MutableLiveData liveData = artistRepository.getArtist(id); + Observer observer = new Observer() { + @Override + public void onChanged(ArtistID3 artist) { + liveData.removeObserver(this); + if (artist == null) { + Toast.makeText(activity, R.string.asset_link_error_artist, Toast.LENGTH_SHORT).show(); + return; + } + Bundle args = new Bundle(); + args.putParcelable(Constants.ARTIST_OBJECT, artist); + navigateSafely(R.id.artistPageFragment, args); + } + }; + liveData.observe(activity, observer); + } + + private void openPlaylist(@NonNull String id) { + MutableLiveData liveData = playlistRepository.getPlaylist(id); + Observer observer = new Observer() { + @Override + public void onChanged(Playlist playlist) { + liveData.removeObserver(this); + if (playlist == null) { + Toast.makeText(activity, R.string.asset_link_error_playlist, Toast.LENGTH_SHORT).show(); + return; + } + Bundle args = new Bundle(); + args.putParcelable(Constants.PLAYLIST_OBJECT, playlist); + navigateSafely(R.id.playlistPageFragment, args); + } + }; + liveData.observe(activity, observer); + } + + private void openGenre(@NonNull String genreName) { + String trimmed = genreName.trim(); + if (trimmed.isEmpty()) { + Toast.makeText(activity, R.string.asset_link_error_unsupported, Toast.LENGTH_SHORT).show(); + return; + } + + Genre genre = new Genre(); + genre.setGenre(trimmed); + genre.setSongCount(0); + genre.setAlbumCount(0); + Bundle args = new Bundle(); + args.putParcelable(Constants.GENRE_OBJECT, genre); + args.putString(Constants.MEDIA_BY_GENRE, Constants.MEDIA_BY_GENRE); + navigateSafely(R.id.songListPageFragment, args); + } + + private void openYear(@NonNull String yearValue) { + try { + int year = Integer.parseInt(yearValue.trim()); + Bundle args = new Bundle(); + args.putInt("year_object", year); + args.putString(Constants.MEDIA_BY_YEAR, Constants.MEDIA_BY_YEAR); + navigateSafely(R.id.songListPageFragment, args); + } catch (NumberFormatException ex) { + Toast.makeText(activity, R.string.asset_link_error_unsupported, Toast.LENGTH_SHORT).show(); + } + } + + private void navigateSafely(int destinationId, @Nullable Bundle args) { + activity.runOnUiThread(() -> { + NavController navController = activity.navController; + if (navController == null) { + return; + } + if (navController.getCurrentDestination() != null + && navController.getCurrentDestination().getId() == destinationId) { + navController.navigate(destinationId, args, new NavOptions.Builder().setLaunchSingleTop(true).build()); + } else { + navController.navigate(destinationId, args); + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkUtil.java new file mode 100644 index 0000000..1609a88 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/AssetLinkUtil.java @@ -0,0 +1,188 @@ +package com.cappielloantonio.tempo.util; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.core.content.ContextCompat; + +import com.cappielloantonio.tempo.R; + +import java.util.Objects; + +import com.google.android.material.color.MaterialColors; + +public final class AssetLinkUtil { + public static final String SCHEME = "tempo"; + public static final String HOST_ASSET = "asset"; + + public static final String TYPE_SONG = "song"; + public static final String TYPE_ALBUM = "album"; + public static final String TYPE_ARTIST = "artist"; + public static final String TYPE_PLAYLIST = "playlist"; + public static final String TYPE_GENRE = "genre"; + public static final String TYPE_YEAR = "year"; + + private AssetLinkUtil() { + } + + @Nullable + public static AssetLink parse(@Nullable Intent intent) { + if (intent == null) return null; + return parse(intent.getData()); + } + + @Nullable + public static AssetLink parse(@Nullable Uri uri) { + if (uri == null) { + return null; + } + + if (!SCHEME.equalsIgnoreCase(uri.getScheme())) { + return null; + } + + String host = uri.getHost(); + if (!HOST_ASSET.equalsIgnoreCase(host)) { + return null; + } + + if (uri.getPathSegments().size() < 2) { + return null; + } + + String type = uri.getPathSegments().get(0); + String id = uri.getPathSegments().get(1); + if (TextUtils.isEmpty(type) || TextUtils.isEmpty(id)) { + return null; + } + + if (!isSupportedType(type)) { + return null; + } + + return new AssetLink(type, id, uri); + } + + public static boolean isSupportedType(@Nullable String type) { + if (type == null) return false; + switch (type) { + case TYPE_SONG: + case TYPE_ALBUM: + case TYPE_ARTIST: + case TYPE_PLAYLIST: + case TYPE_GENRE: + case TYPE_YEAR: + return true; + default: + return false; + } + } + + @NonNull + public static Uri buildUri(@NonNull String type, @NonNull String id) { + return new Uri.Builder() + .scheme(SCHEME) + .authority(HOST_ASSET) + .appendPath(type) + .appendPath(id) + .build(); + } + + @Nullable + public static String buildLink(@Nullable String type, @Nullable String id) { + if (TextUtils.isEmpty(type) || TextUtils.isEmpty(id) || !isSupportedType(type)) { + return null; + } + return buildUri(Objects.requireNonNull(type), Objects.requireNonNull(id)).toString(); + } + + @Nullable + public static AssetLink buildAssetLink(@Nullable String type, @Nullable String id) { + String link = buildLink(type, id); + return parseLinkString(link); + } + + @Nullable + public static AssetLink parseLinkString(@Nullable String link) { + if (TextUtils.isEmpty(link)) { + return null; + } + return parse(Uri.parse(link)); + } + + public static void copyToClipboard(@NonNull Context context, @NonNull AssetLink assetLink) { + ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + if (clipboardManager == null) { + return; + } + ClipData clipData = ClipData.newPlainText(context.getString(R.string.asset_link_clipboard_label), assetLink.uri.toString()); + clipboardManager.setPrimaryClip(clipData); + } + + @StringRes + public static int getLabelRes(@NonNull String type) { + switch (type) { + case TYPE_SONG: + return R.string.asset_link_label_song; + case TYPE_ALBUM: + return R.string.asset_link_label_album; + case TYPE_ARTIST: + return R.string.asset_link_label_artist; + case TYPE_PLAYLIST: + return R.string.asset_link_label_playlist; + case TYPE_GENRE: + return R.string.asset_link_label_genre; + case TYPE_YEAR: + return R.string.asset_link_label_year; + default: + return R.string.asset_link_label_unknown; + } + } + + public static void applyLinkAppearance(@NonNull View view) { + if (view instanceof TextView) { + TextView textView = (TextView) view; + if (textView.getTag(R.id.tag_link_original_color) == null) { + textView.setTag(R.id.tag_link_original_color, textView.getCurrentTextColor()); + } + int accent = MaterialColors.getColor(view, com.google.android.material.R.attr.colorPrimary, + ContextCompat.getColor(view.getContext(), android.R.color.holo_blue_light)); + textView.setTextColor(accent); + } + } + + public static void clearLinkAppearance(@NonNull View view) { + if (view instanceof TextView) { + TextView textView = (TextView) view; + Object original = textView.getTag(R.id.tag_link_original_color); + if (original instanceof Integer) { + textView.setTextColor((Integer) original); + } else { + int defaultColor = MaterialColors.getColor(view, com.google.android.material.R.attr.colorOnSurface, + ContextCompat.getColor(view.getContext(), android.R.color.primary_text_light)); + textView.setTextColor(defaultColor); + } + } + } + + public static final class AssetLink { + public final String type; + public final String id; + public final Uri uri; + + AssetLink(@NonNull String type, @NonNull String id, @NonNull Uri uri) { + this.type = type; + this.id = id; + this.uri = uri; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt b/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt new file mode 100644 index 0000000..c6a4e3a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt @@ -0,0 +1,136 @@ +package com.cappielloantonio.tempo.util + +object Constants { + const val SHARED_PREF_KEY = "play-shared-preferences" + + const val ITEM_POSITION = "ITEM_POSITION" + + const val TRACK_OBJECT = "TRACK_OBJECT" + const val TRACKS_OBJECT = "TRACKS_OBJECT" + const val ALBUM_OBJECT = "ALBUM_OBJECT" + const val ARTIST_OBJECT = "ARTIST_OBJECT" + const val GENRE_OBJECT = "GENRE_OBJECT" + const val PLAYLIST_OBJECT = "PLAYLIST_OBJECT" + const val PODCAST_OBJECT = "PODCAST_OBJECT" + const val PODCAST_CHANNEL_OBJECT = "PODCAST_CHANNEL_OBJECT" + const val INTERNET_RADIO_STATION_OBJECT = "INTERNET_RADIO_STATION_OBJECT" + const val MUSIC_FOLDER_OBJECT = "MUSIC_FOLDER_OBJECT" + const val MUSIC_DIRECTORY_OBJECT = "MUSIC_DIRECTORY_OBJECT" + const val MUSIC_INDEX_OBJECT = "MUSIC_DIRECTORY_OBJECT" + const val MUSIC_DIRECTORY_ID = "MUSIC_DIRECTORY_ID" + + const val ALBUM_RECENTLY_PLAYED = "ALBUM_RECENTLY_PLAYED" + const val ALBUM_MOST_PLAYED = "ALBUM_MOST_PLAYED" + const val ALBUM_RECENTLY_ADDED = "ALBUM_RECENTLY_ADDED" + const val ALBUM_DOWNLOADED = "ALBUM_DOWNLOADED" + const val ALBUM_STARRED = "ALBUM_STARRED" + const val ALBUM_FROM_ARTIST = "ALBUM_FROM_ARTIST" + const val ALBUM_NEW_RELEASES = "ALBUM_NEW_RELEASES" + const val ALBUM_ORDER_BY_NAME = "ALBUM_ORDER_BY_NAME" + const val ALBUM_ORDER_BY_ARTIST = "ALBUM_ORDER_BY_ARTIST" + const val ALBUM_ORDER_BY_YEAR = "ALBUM_ORDER_BY_YEAR" + const val ALBUM_ORDER_BY_RANDOM = "ALBUM_ORDER_BY_RANDOM" + const val ALBUM_ORDER_BY_RECENTLY_ADDED = "ALBUM_ORDER_BY_RECENTLY_ADDED" + const val ALBUM_ORDER_BY_RECENTLY_PLAYED = "ALBUM_ORDER_BY_RECENTLY_PLAYED" + const val ALBUM_ORDER_BY_MOST_PLAYED = "ALBUM_ORDER_BY_MOST_PLAYED" + const val ALBUM_ORDER_BY_MOST_RECENTLY_STARRED = "ALBUM_ORDER_BY_MOST_RECENTLY_STARRED" + const val ALBUM_ORDER_BY_LEAST_RECENTLY_STARRED = "ALBUM_ORDER_BY_LEAST_RECENTLY_STARRED" + + const val ARTIST_DOWNLOADED = "ARTIST_DOWNLOADED" + const val ARTIST_STARRED = "ARTIST_STARRED" + const val ARTIST_ORDER_BY_NAME = "ARTIST_ORDER_BY_NAME" + const val ARTIST_ORDER_BY_RANDOM = "ARTIST_ORDER_BY_RANDOM" + const val ARTIST_ORDER_BY_ALBUM_COUNT = "ARTIST_ORDER_BY_ALBUM_COUNT" + const val ARTIST_ORDER_BY_MOST_RECENTLY_STARRED = "ARTIST_ORDER_BY_MOST_RECENTLY_STARRED" + const val ARTIST_ORDER_BY_LEAST_RECENTLY_STARRED = "ARTIST_ORDER_BY_LEAST_RECENTLY_STARRED" + + const val GENRE_ORDER_BY_NAME = "GENRE_ORDER_BY_NAME" + const val GENRE_ORDER_BY_RANDOM = "GENRE_ORDER_BY_RANDOM" + + const val PLAYLIST_ALL = "ALL" + const val PLAYLIST_DOWNLOADED = "DOWNLOADED" + const val PLAYLIST_ORDER_BY_NAME = "ORDER_BY_NAME" + const val PLAYLIST_ORDER_BY_RANDOM = "ORDER_BY_RANDOM" + + const val PODCAST_FILTER_BY_DOWNLOAD = "PODCAST_FILTER_BY_DOWNLOAD" + const val PODCAST_FILTER_BY_ALL = "PODCAST_FILTER_BY_ALL" + + const val MEDIA_TYPE_MUSIC = "music" + const val MEDIA_TYPE_PODCAST = "podcast" + const val MEDIA_TYPE_AUDIOBOOK = "audiobook" + const val MEDIA_TYPE_VIDEO = "video" + const val MEDIA_TYPE_RADIO = "radio" + + const val MEDIA_PLAYBACK_SPEED_080 = 0.8f + const val MEDIA_PLAYBACK_SPEED_100 = 1.0f + const val MEDIA_PLAYBACK_SPEED_125 = 1.25f + const val MEDIA_PLAYBACK_SPEED_150 = 1.50f + const val MEDIA_PLAYBACK_SPEED_175 = 1.75f + const val MEDIA_PLAYBACK_SPEED_200 = 2.0f + + const val MEDIA_RECENTLY_PLAYED = "MEDIA_RECENTLY_PLAYED" + const val MEDIA_MOST_PLAYED = "MEDIA_MOST_PLAYED" + const val MEDIA_RECENTLY_ADDED = "MEDIA_RECENTLY_ADDED" + const val MEDIA_BY_GENRE = "MEDIA_BY_GENRE" + const val MEDIA_BY_GENRES = "MEDIA_BY_GENRES" + const val MEDIA_BY_ARTIST = "MEDIA_BY_ARTIST" + const val MEDIA_BY_YEAR = "MEDIA_BY_YEAR" + const val MEDIA_STARRED = "MEDIA_STARRED" + const val MEDIA_DOWNLOADED = "MEDIA_DOWNLOADED" + const val MEDIA_FROM_ALBUM = "MEDIA_FROM_ALBUM" + const val MEDIA_MIX = "MEDIA_MIX" + const val MEDIA_CHRONOLOGY = "MEDIA_CHRONOLOGY" + const val MEDIA_BEST_OF = "MEDIA_BEST_OF" + const val MEDIA_BY_TITLE = "MEDIA_BY_TITLE" + const val MEDIA_MOST_RECENTLY_STARRED = "MEDIA_MOST_RECENTLY_STARRED" + const val MEDIA_LEAST_RECENTLY_STARRED = "MEDIA_LEAST_RECENTLY_STARRED" + + const val DOWNLOAD_URI = "rest/download" + const val ACTION_PLAY_EXTERNAL_DOWNLOAD = "com.cappielloantonio.tempo.action.PLAY_EXTERNAL_DOWNLOAD" + const val EXTRA_DOWNLOAD_URI = "EXTRA_DOWNLOAD_URI" + const val EXTRA_DOWNLOAD_MEDIA_ID = "EXTRA_DOWNLOAD_MEDIA_ID" + const val EXTRA_DOWNLOAD_TITLE = "EXTRA_DOWNLOAD_TITLE" + const val EXTRA_DOWNLOAD_ARTIST = "EXTRA_DOWNLOAD_ARTIST" + const val EXTRA_DOWNLOAD_ALBUM = "EXTRA_DOWNLOAD_ALBUM" + const val EXTRA_DOWNLOAD_DURATION = "EXTRA_DOWNLOAD_DURATION" + + const val DOWNLOAD_TYPE_TRACK = "download_type_track" + const val DOWNLOAD_TYPE_ALBUM = "download_type_album" + const val DOWNLOAD_TYPE_ARTIST = "download_type_artist" + const val DOWNLOAD_TYPE_GENRE = "download_type_genre" + const val DOWNLOAD_TYPE_YEAR = "download_type_year" + + const val DOWNLOAD_GROUP = "download_group" + const val DOWNLOAD_GROUP_TITLE = "download_group_title" + const val DOWNLOAD_GROUP_SUBTITLE = "download_group_subtitle" + + const val SHARE_OBJECT = "share_object" + + const val PLAYABLE_MEDIA_LIMIT = 100 + const val PRE_PLAYABLE_MEDIA = 15 + + const val HOME_SECTOR_DISCOVERY = "HOME_SECTOR_DISCOVERY" + const val HOME_SECTOR_MADE_FOR_YOU = "HOME_SECTOR_MADE_FOR_YOU" + const val HOME_SECTOR_BEST_OF = "HOME_SECTOR_BEST_OF" + const val HOME_SECTOR_RADIO_STATION = "HOME_SECTOR_RADIO_STATION" + const val HOME_SECTOR_TOP_SONGS = "HOME_SECTOR_TOP_SONGS" + const val HOME_SECTOR_STARRED_TRACKS = "HOME_SECTOR_STARRED_TRACKS" + const val HOME_SECTOR_STARRED_ALBUMS = "HOME_SECTOR_STARRED_ALBUMS" + const val HOME_SECTOR_STARRED_ARTISTS = "HOME_SECTOR_STARRED_ARTISTS" + const val HOME_SECTOR_NEW_RELEASES = "HOME_SECTOR_NEW_RELEASES" + const val HOME_SECTOR_FLASHBACK = "HOME_SECTOR_FLASHBACK" + const val HOME_SECTOR_MOST_PLAYED = "HOME_SECTOR_MOST_PLAYED" + const val HOME_SECTOR_LAST_PLAYED = "HOME_SECTOR_LAST_PLAYED" + const val HOME_SECTOR_RECENTLY_ADDED = "HOME_SECTOR_RECENTLY_ADDED" + const val HOME_SECTOR_PINNED_PLAYLISTS = "HOME_SECTOR_PINNED_PLAYLISTS" + const val HOME_SECTOR_SHARED = "HOME_SECTOR_SHARED" + + const val CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON = "android.media3.session.demo.SHUFFLE_ON" + const val CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF = "android.media3.session.demo.SHUFFLE_OFF" + const val CUSTOM_COMMAND_TOGGLE_HEART_ON = "android.media3.session.demo.HEART_ON" + const val CUSTOM_COMMAND_TOGGLE_HEART_OFF = "android.media3.session.demo.HEART_OFF" + const val CUSTOM_COMMAND_TOGGLE_HEART_LOADING = "android.media3.session.demo.HEART_LOADING" + const val CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF = "android.media3.session.demo.REPEAT_OFF" + const val CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE = "android.media3.session.demo.REPEAT_ONE" + const val CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL = "android.media3.session.demo.REPEAT_ALL" +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/DownloadUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/DownloadUtil.java new file mode 100644 index 0000000..6df73eb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/DownloadUtil.java @@ -0,0 +1,259 @@ +package com.cappielloantonio.tempo.util; + +import android.app.Notification; +import android.content.Context; + +import androidx.core.app.NotificationCompat; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.database.DatabaseProvider; +import androidx.media3.database.StandaloneDatabaseProvider; +import androidx.media3.datasource.DataSource; +import androidx.media3.datasource.DataSpec; +import androidx.media3.datasource.DefaultDataSource; +import androidx.media3.datasource.DefaultHttpDataSource; +import androidx.media3.datasource.ResolvingDataSource; +import androidx.media3.datasource.cache.Cache; +import androidx.media3.datasource.cache.CacheDataSource; +import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor; +import androidx.media3.datasource.cache.NoOpCacheEvictor; +import androidx.media3.datasource.cache.SimpleCache; +import androidx.media3.exoplayer.DefaultRenderersFactory; +import androidx.media3.exoplayer.RenderersFactory; +import androidx.media3.exoplayer.offline.DownloadManager; +import androidx.media3.exoplayer.offline.DownloadNotificationHelper; + +import com.cappielloantonio.tempo.service.DownloaderManager; + +import java.io.File; +import java.net.CookieHandler; +import java.net.CookieManager; +import java.net.CookiePolicy; +import java.util.ArrayList; +import java.util.concurrent.Executors; + +@UnstableApi +public final class DownloadUtil { + + public static final String DOWNLOAD_NOTIFICATION_CHANNEL_ID = "download_channel"; + public static final String DOWNLOAD_NOTIFICATION_SUCCESSFUL_GROUP = "com.cappielloantonio.tempo.SuccessfulDownload"; + public static final String DOWNLOAD_NOTIFICATION_FAILED_GROUP = "com.cappielloantonio.tempo.FailedDownload"; + + private static final String STREAMING_CACHE_CONTENT_DIRECTORY = "streaming_cache"; + private static final String DOWNLOAD_CONTENT_DIRECTORY = "downloads"; + + private static DataSource.Factory dataSourceFactory; + private static DataSource.Factory httpDataSourceFactory; + private static DatabaseProvider databaseProvider; + private static File streamingCacheDirectory; + private static File downloadDirectory; + private static Cache downloadCache; + private static SimpleCache streamingCache; + private static DownloadManager downloadManager; + private static DownloaderManager downloaderManager; + private static DownloadNotificationHelper downloadNotificationHelper; + + public static boolean useExtensionRenderers() { + return true; + } + + public static RenderersFactory buildRenderersFactory(Context context, boolean preferExtensionRenderer) { + @DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode = + useExtensionRenderers() + ? (preferExtensionRenderer ? DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER : DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON) + : DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF; + + return new DefaultRenderersFactory(context.getApplicationContext()).setExtensionRendererMode(extensionRendererMode); + } + + public static synchronized DataSource.Factory getHttpDataSourceFactory() { + if (httpDataSourceFactory == null) { + CookieManager cookieManager = new CookieManager(); + cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER); + CookieHandler.setDefault(cookieManager); + httpDataSourceFactory = new DefaultHttpDataSource + .Factory() + .setAllowCrossProtocolRedirects(true); + } + + return httpDataSourceFactory; + } + + public static synchronized DataSource.Factory getUpstreamDataSourceFactory(Context context) { + DefaultDataSource.Factory upstreamFactory = new DefaultDataSource.Factory(context, getHttpDataSourceFactory()); + dataSourceFactory = buildReadOnlyCacheDataSource(upstreamFactory, getDownloadCache(context)); + return dataSourceFactory; + } + + public static synchronized DataSource.Factory getCacheDataSourceFactory(Context context) { + CacheDataSource.Factory streamCacheFactory = new CacheDataSource.Factory() + .setCache(getStreamingCache(context)) + .setUpstreamDataSourceFactory(getUpstreamDataSourceFactory(context)); + + ResolvingDataSource.Factory resolvingFactory = new ResolvingDataSource.Factory( + new StreamingCacheDataSource.Factory(streamCacheFactory), + dataSpec -> { + DataSpec.Builder builder = dataSpec.buildUpon(); + builder.setFlags(dataSpec.flags & ~DataSpec.FLAG_DONT_CACHE_IF_LENGTH_UNKNOWN); + return builder.build(); + } + ); + dataSourceFactory = buildReadOnlyCacheDataSource(resolvingFactory, getDownloadCache(context)); + return dataSourceFactory; + } + + public static synchronized DownloadNotificationHelper getDownloadNotificationHelper(Context context) { + if (downloadNotificationHelper == null) { + downloadNotificationHelper = new DownloadNotificationHelper(context, DOWNLOAD_NOTIFICATION_CHANNEL_ID); + } + + return downloadNotificationHelper; + } + + public static synchronized DownloadManager getDownloadManager(Context context) { + ensureDownloadManagerInitialized(context); + return downloadManager; + } + + public static synchronized DownloaderManager getDownloadTracker(Context context) { + ensureDownloadManagerInitialized(context); + return downloaderManager; + } + + private static synchronized Cache getDownloadCache(Context context) { + if (downloadCache == null) { + File downloadContentDirectory = new File(getDownloadDirectory(context), DOWNLOAD_CONTENT_DIRECTORY); + downloadCache = new SimpleCache(downloadContentDirectory, new NoOpCacheEvictor(), getDatabaseProvider(context)); + } + + return downloadCache; + } + + private static synchronized SimpleCache getStreamingCache(Context context) { + if (streamingCache == null) { + File streamingCacheDirectory = new File(getStreamingCacheDirectory(context), STREAMING_CACHE_CONTENT_DIRECTORY); + + streamingCache = new SimpleCache( + streamingCacheDirectory, + new LeastRecentlyUsedCacheEvictor(Preferences.getStreamingCacheSize() * 1024 * 1024), + getDatabaseProvider(context) + ); + } + + return streamingCache; + } + + private static synchronized void ensureDownloadManagerInitialized(Context context) { + if (downloadManager == null) { + downloadManager = new DownloadManager( + context, + getDatabaseProvider(context), + getDownloadCache(context), + getHttpDataSourceFactory(), + Executors.newFixedThreadPool(6) + ); + + downloaderManager = new DownloaderManager(context, getHttpDataSourceFactory(), downloadManager); + } + } + + private static synchronized DatabaseProvider getDatabaseProvider(Context context) { + if (databaseProvider == null) { + databaseProvider = new StandaloneDatabaseProvider(context); + } + + return databaseProvider; + } + + private static synchronized File getStreamingCacheDirectory(Context context) { + if (streamingCacheDirectory == null) { + if (Preferences.getStreamingCacheStoragePreference() == 0) { + streamingCacheDirectory = context.getExternalFilesDirs(null)[0]; + if (streamingCacheDirectory == null) { + streamingCacheDirectory = context.getFilesDir(); + } + } else { + try { + streamingCacheDirectory = context.getExternalFilesDirs(null)[1]; + } catch (Exception exception) { + streamingCacheDirectory = context.getExternalFilesDirs(null)[0]; + Preferences.setStreamingCacheStoragePreference(0); + } + + } + } + + return streamingCacheDirectory; + } + + private static synchronized File getDownloadDirectory(Context context) { + if (downloadDirectory == null) { + int pref = Preferences.getDownloadStoragePreference(); + if (pref == 0) { + downloadDirectory = context.getExternalFilesDirs(null)[0]; + if (downloadDirectory == null) { + downloadDirectory = context.getFilesDir(); + } + } else if (pref == 1) { + try { + downloadDirectory = context.getExternalFilesDirs(null)[1]; + } catch (Exception exception) { + downloadDirectory = context.getExternalFilesDirs(null)[0]; + Preferences.setDownloadStoragePreference(0); + } + } else { + downloadDirectory = context.getExternalFilesDirs(null)[0]; + } + } + + return downloadDirectory; + } + + private static CacheDataSource.Factory buildReadOnlyCacheDataSource(DataSource.Factory upstreamFactory, Cache cache) { + return new CacheDataSource.Factory() + .setCache(cache) + .setUpstreamDataSourceFactory(upstreamFactory) + .setCacheWriteDataSinkFactory(null) + .setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR); + } + + public static synchronized void eraseDownloadFolder(Context context) { + File directory = getDownloadDirectory(context); + + ArrayList files = listFiles(directory, new ArrayList<>()); + + for (File file : files) { + file.delete(); + } + } + + private static synchronized ArrayList listFiles(File directory, ArrayList files) { + if (directory.isDirectory()) { + File[] list = directory.listFiles(); + + if (list != null) { + for (File file : list) { + if (file.isFile() && file.getName().toLowerCase().endsWith(".exo")) { + files.add(file); + } else if (file.isDirectory()) { + listFiles(file, files); + } + } + } + } + + return files; + } + + public static synchronized long getStreamingCacheSize(Context context) { + return getStreamingCache(context).getCacheSpace(); + } + + public static Notification buildGroupSummaryNotification(Context context, String channelId, String groupId, int icon, String title) { + return new NotificationCompat.Builder(context, channelId) + .setContentTitle(title) + .setSmallIcon(icon) + .setGroup(groupId) + .setGroupSummary(true) + .build(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/DynamicMediaSourceFactory.kt b/app/src/main/java/com/cappielloantonio/tempo/util/DynamicMediaSourceFactory.kt new file mode 100644 index 0000000..31dc172 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/DynamicMediaSourceFactory.kt @@ -0,0 +1,69 @@ +package com.cappielloantonio.tempo.util + +import android.content.Context +import androidx.media3.common.C +import androidx.media3.common.MediaItem +import androidx.media3.common.MimeTypes +import androidx.media3.common.util.UnstableApi +import androidx.media3.datasource.DataSource +import androidx.media3.exoplayer.drm.DrmSessionManagerProvider +import androidx.media3.exoplayer.hls.HlsMediaSource +import androidx.media3.exoplayer.source.MediaSource +import androidx.media3.exoplayer.source.ProgressiveMediaSource +import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy +import androidx.media3.extractor.DefaultExtractorsFactory +import androidx.media3.extractor.ExtractorsFactory + +@UnstableApi +class DynamicMediaSourceFactory( + private val context: Context +) : MediaSource.Factory { + + override fun createMediaSource(mediaItem: MediaItem): MediaSource { + val mediaType: String? = mediaItem.mediaMetadata.extras?.getString("type", "") + + val streamingCacheSize = Preferences.getStreamingCacheSize() + val bypassCache = mediaType == Constants.MEDIA_TYPE_RADIO + + val useUpstream = when { + streamingCacheSize.toInt() == 0 -> true + streamingCacheSize > 0 && bypassCache -> true + streamingCacheSize > 0 && !bypassCache -> false + else -> true + } + + val dataSourceFactory: DataSource.Factory = if (useUpstream) { + DownloadUtil.getUpstreamDataSourceFactory(context) + } else { + DownloadUtil.getCacheDataSourceFactory(context) + } + + return when { + mediaItem.localConfiguration?.mimeType == MimeTypes.APPLICATION_M3U8 || + mediaItem.localConfiguration?.uri?.lastPathSegment?.endsWith(".m3u8", ignoreCase = true) == true -> { + HlsMediaSource.Factory(dataSourceFactory).createMediaSource(mediaItem) + } + + else -> { + val extractorsFactory: ExtractorsFactory = DefaultExtractorsFactory() + ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory) + .createMediaSource(mediaItem) + } + } + } + + override fun setDrmSessionManagerProvider(drmSessionManagerProvider: DrmSessionManagerProvider): MediaSource.Factory { + TODO("Not yet implemented") + } + + override fun setLoadErrorHandlingPolicy(loadErrorHandlingPolicy: LoadErrorHandlingPolicy): MediaSource.Factory { + TODO("Not yet implemented") + } + + override fun getSupportedTypes(): IntArray { + return intArrayOf( + C.CONTENT_TYPE_HLS, + C.CONTENT_TYPE_OTHER + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioReader.java b/app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioReader.java new file mode 100644 index 0000000..b8679f1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioReader.java @@ -0,0 +1,244 @@ +package com.cappielloantonio.tempo.util; + +import android.net.Uri; +import android.os.Looper; +import android.os.SystemClock; + +import androidx.documentfile.provider.DocumentFile; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; + +import java.text.Normalizer; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class ExternalAudioReader { + + private static final Map cache = new ConcurrentHashMap<>(); + private static final Object LOCK = new Object(); + private static final ExecutorService REFRESH_EXECUTOR = Executors.newSingleThreadExecutor(); + private static final MutableLiveData refreshEvents = new MutableLiveData<>(); + + private static volatile String cachedDirUri; + private static volatile boolean refreshInProgress = false; + private static volatile boolean refreshQueued = false; + + private static String sanitizeFileName(String name) { + String sanitized = name.replaceAll("[\\/:*?\\\"<>|]", "_"); + sanitized = sanitized.replaceAll("\\s+", " ").trim(); + return sanitized; + } + + private static String normalizeForComparison(String name) { + String s = sanitizeFileName(name); + s = Normalizer.normalize(s, Normalizer.Form.NFKD); + s = s.replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); + return s.toLowerCase(Locale.ROOT); + } + + private static void ensureCache() { + String uriString = Preferences.getDownloadDirectoryUri(); + if (uriString == null) { + synchronized (LOCK) { + cache.clear(); + cachedDirUri = null; + } + ExternalDownloadMetadataStore.clear(); + return; + } + + if (uriString.equals(cachedDirUri)) { + return; + } + + boolean runSynchronously = false; + synchronized (LOCK) { + if (refreshInProgress) { + return; + } + + if (Looper.myLooper() == Looper.getMainLooper()) { + scheduleRefreshLocked(); + return; + } + + refreshInProgress = true; + runSynchronously = true; + } + + if (runSynchronously) { + try { + rebuildCache(); + } finally { + onRefreshFinished(); + } + } + } + + public static void refreshCache() { + refreshCacheAsync(); + } + + public static void refreshCacheAsync() { + synchronized (LOCK) { + cachedDirUri = null; + cache.clear(); + } + requestRefresh(); + } + + public static LiveData getRefreshEvents() { + return refreshEvents; + } + + private static String buildKey(String artist, String title, String album) { + String name = artist != null && !artist.isEmpty() ? artist + " - " + title : title; + if (album != null && !album.isEmpty()) name += " (" + album + ")"; + return normalizeForComparison(name); + } + + private static Uri findUri(String artist, String title, String album) { + ensureCache(); + if (cachedDirUri == null) return null; + + DocumentFile file = cache.get(buildKey(artist, title, album)); + return file != null && file.exists() ? file.getUri() : null; + } + + public static Uri getUri(Child media) { + return findUri(media.getArtist(), media.getTitle(), media.getAlbum()); + } + + public static Uri getUri(PodcastEpisode episode) { + return findUri(episode.getArtist(), episode.getTitle(), episode.getAlbum()); + } + + public static synchronized void removeMetadata(Child media) { + if (media == null) { + return; + } + + String key = buildKey(media.getArtist(), media.getTitle(), media.getAlbum()); + cache.remove(key); + ExternalDownloadMetadataStore.remove(key); + } + + public static boolean delete(Child media) { + ensureCache(); + if (cachedDirUri == null) return false; + + String key = buildKey(media.getArtist(), media.getTitle(), media.getAlbum()); + DocumentFile file = cache.get(key); + boolean deleted = false; + if (file != null && file.exists()) { + deleted = file.delete(); + } + if (deleted) { + cache.remove(key); + ExternalDownloadMetadataStore.remove(key); + } + return deleted; + } + + private static void requestRefresh() { + synchronized (LOCK) { + scheduleRefreshLocked(); + } + } + + private static void scheduleRefreshLocked() { + if (refreshInProgress) { + refreshQueued = true; + return; + } + + refreshInProgress = true; + REFRESH_EXECUTOR.execute(() -> { + try { + rebuildCache(); + } finally { + onRefreshFinished(); + } + }); + } + + private static void rebuildCache() { + String uriString = Preferences.getDownloadDirectoryUri(); + if (uriString == null) { + synchronized (LOCK) { + cache.clear(); + cachedDirUri = null; + } + ExternalDownloadMetadataStore.clear(); + return; + } + + DocumentFile directory = DocumentFile.fromTreeUri(App.getContext(), Uri.parse(uriString)); + Map expectedSizes = ExternalDownloadMetadataStore.snapshot(); + Set verifiedKeys = new HashSet<>(); + Map newEntries = new HashMap<>(); + + if (directory != null && directory.canRead()) { + for (DocumentFile file : directory.listFiles()) { + if (file == null || file.isDirectory()) continue; + String existing = file.getName(); + if (existing == null) continue; + + String base = existing.replaceFirst("\\.[^\\.]+$", ""); + String key = normalizeForComparison(base); + Long expected = expectedSizes.get(key); + long actualLength = file.length(); + + if (expected != null && expected > 0 && actualLength == expected) { + newEntries.put(key, file); + verifiedKeys.add(key); + } else { + ExternalDownloadMetadataStore.remove(key); + } + } + } + + if (!expectedSizes.isEmpty()) { + if (verifiedKeys.isEmpty()) { + ExternalDownloadMetadataStore.clear(); + } else { + for (String key : expectedSizes.keySet()) { + if (!verifiedKeys.contains(key)) { + ExternalDownloadMetadataStore.remove(key); + } + } + } + } + + synchronized (LOCK) { + cache.clear(); + cache.putAll(newEntries); + cachedDirUri = uriString; + } + } + + private static void onRefreshFinished() { + boolean runAgain; + synchronized (LOCK) { + refreshInProgress = false; + runAgain = refreshQueued; + refreshQueued = false; + } + + refreshEvents.postValue(SystemClock.elapsedRealtime()); + + if (runAgain) { + requestRefresh(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioWriter.java b/app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioWriter.java new file mode 100644 index 0000000..efd9735 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/ExternalAudioWriter.java @@ -0,0 +1,393 @@ +package com.cappielloantonio.tempo.util; + +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.provider.Settings; +import android.webkit.MimeTypeMap; + +import androidx.core.app.NotificationCompat; +import androidx.documentfile.provider.DocumentFile; +import androidx.media3.common.MediaItem; + +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.ui.activity.MainActivity; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.text.Normalizer; +import java.util.Locale; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class ExternalAudioWriter { + + private static final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor(); + private static final int BUFFER_SIZE = 8192; + private static final int CONNECT_TIMEOUT_MS = 15_000; + private static final int READ_TIMEOUT_MS = 60_000; + + private ExternalAudioWriter() { + } + + private static String sanitizeFileName(String name) { + String sanitized = name.replaceAll("[\\/:*?\\\"<>|]", "_"); + sanitized = sanitized.replaceAll("\\s+", " ").trim(); + return sanitized; + } + + private static String normalizeForComparison(String name) { + String s = sanitizeFileName(name); + s = Normalizer.normalize(s, Normalizer.Form.NFKD); + s = s.replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); + return s.toLowerCase(Locale.ROOT); + } + + private static DocumentFile findFile(DocumentFile dir, String fileName) { + String normalized = normalizeForComparison(fileName); + for (DocumentFile file : dir.listFiles()) { + if (file.isDirectory()) continue; + String existing = file.getName(); + if (existing != null && normalizeForComparison(existing).equals(normalized)) { + return file; + } + } + return null; + } + + public static void downloadToUserDirectory(Context context, Child child) { + if (context == null || child == null) { + return; + } + Context appContext = context.getApplicationContext(); + MediaItem mediaItem = MappingUtil.mapDownload(child); + String fallbackName = child.getTitle() != null ? child.getTitle() : child.getId(); + EXECUTOR.execute(() -> performDownload(appContext, mediaItem, fallbackName, child)); + } + + private static void performDownload(Context context, MediaItem mediaItem, String fallbackName, Child child) { + String uriString = Preferences.getDownloadDirectoryUri(); + if (uriString == null) { + notifyUnavailable(context); + return; + } + + DocumentFile directory = DocumentFile.fromTreeUri(context, Uri.parse(uriString)); + if (directory == null || !directory.canWrite()) { + notifyFailure(context, "Cannot write to folder."); + return; + } + + String artist = child.getArtist() != null ? child.getArtist() : ""; + String title = child.getTitle() != null ? child.getTitle() : fallbackName; + String album = child.getAlbum() != null ? child.getAlbum() : ""; + String baseName = artist.isEmpty() ? title : artist + " - " + title; + if (!album.isEmpty()) baseName += " (" + album + ")"; + if (baseName.isEmpty()) { + baseName = fallbackName != null ? fallbackName : "download"; + } + String metadataKey = normalizeForComparison(baseName); + + Uri mediaUri = mediaItem != null && mediaItem.requestMetadata != null + ? mediaItem.requestMetadata.mediaUri + : null; + if (mediaUri == null) { + notifyFailure(context, "Invalid media URI."); + ExternalDownloadMetadataStore.remove(metadataKey); + return; + } + + String scheme = mediaUri.getScheme() != null ? mediaUri.getScheme().toLowerCase(Locale.ROOT) : ""; + + HttpURLConnection connection = null; + DocumentFile sourceDocument = null; + File sourceFile = null; + long remoteLength = -1; + String mimeType = null; + DocumentFile targetFile = null; + + try { + if (scheme.equals("http") || scheme.equals("https")) { + connection = (HttpURLConnection) new URL(mediaUri.toString()).openConnection(); + connection.setConnectTimeout(CONNECT_TIMEOUT_MS); + connection.setReadTimeout(READ_TIMEOUT_MS); + connection.setRequestProperty("Accept-Encoding", "identity"); + connection.connect(); + + int responseCode = connection.getResponseCode(); + if (responseCode >= HttpURLConnection.HTTP_BAD_REQUEST) { + notifyFailure(context, "Server returned " + responseCode); + ExternalDownloadMetadataStore.remove(metadataKey); + return; + } + + mimeType = connection.getContentType(); + remoteLength = connection.getContentLengthLong(); + } else if (scheme.equals("content")) { + sourceDocument = DocumentFile.fromSingleUri(context, mediaUri); + mimeType = context.getContentResolver().getType(mediaUri); + if (sourceDocument != null) { + remoteLength = sourceDocument.length(); + } + } else if (scheme.equals("file")) { + String path = mediaUri.getPath(); + if (path != null) { + sourceFile = new File(path); + if (sourceFile.exists()) { + remoteLength = sourceFile.length(); + } + } + String ext = MimeTypeMap.getFileExtensionFromUrl(mediaUri.toString()); + if (ext != null && !ext.isEmpty()) { + mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext); + } + } else { + notifyFailure(context, "Unsupported media URI."); + ExternalDownloadMetadataStore.remove(metadataKey); + return; + } + + if (mimeType == null || mimeType.isEmpty()) { + mimeType = "application/octet-stream"; + } + + String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType); + if ((extension == null || extension.isEmpty()) && sourceDocument != null && sourceDocument.getName() != null) { + String name = sourceDocument.getName(); + int dot = name.lastIndexOf('.'); + if (dot >= 0 && dot < name.length() - 1) { + extension = name.substring(dot + 1); + } + } + if ((extension == null || extension.isEmpty()) && sourceFile != null) { + String name = sourceFile.getName(); + int dot = name.lastIndexOf('.'); + if (dot >= 0 && dot < name.length() - 1) { + extension = name.substring(dot + 1); + } + } + if (extension == null || extension.isEmpty()) { + String suffix = child.getSuffix(); + if (suffix != null && !suffix.isEmpty()) { + extension = suffix; + } else { + extension = "bin"; + } + } + + String sanitized = sanitizeFileName(baseName); + if (sanitized.isEmpty()) sanitized = sanitizeFileName(fallbackName); + if (sanitized.isEmpty()) sanitized = "download"; + String fileName = sanitized + "." + extension; + + DocumentFile existingFile = findFile(directory, fileName); + Long recordedSize = ExternalDownloadMetadataStore.getSize(metadataKey); + if (existingFile != null && existingFile.exists()) { + long localLength = existingFile.length(); + boolean matches = false; + if (remoteLength > 0 && localLength == remoteLength) { + matches = true; + } else if (remoteLength <= 0 && recordedSize != null && localLength == recordedSize) { + matches = true; + } + if (matches) { + ExternalDownloadMetadataStore.recordSize(metadataKey, localLength); + recordDownload(child, existingFile.getUri()); + ExternalAudioReader.refreshCacheAsync(); + notifyExists(context, fileName); + return; + } else { + existingFile.delete(); + ExternalDownloadMetadataStore.remove(metadataKey); + } + } + + targetFile = directory.createFile(mimeType, fileName); + if (targetFile == null) { + notifyFailure(context, "Failed to create file."); + return; + } + + Uri targetUri = targetFile.getUri(); + try (InputStream in = openInputStream(context, mediaUri, scheme, connection, sourceFile); + OutputStream out = context.getContentResolver().openOutputStream(targetUri)) { + if (out == null) { + notifyFailure(context, "Cannot open output stream."); + targetFile.delete(); + return; + } + + byte[] buffer = new byte[BUFFER_SIZE]; + int len; + long total = 0; + while ((len = in.read(buffer)) != -1) { + out.write(buffer, 0, len); + total += len; + } + out.flush(); + + if (total <= 0) { + targetFile.delete(); + ExternalDownloadMetadataStore.remove(metadataKey); + notifyFailure(context, "Empty download."); + return; + } + + if (remoteLength > 0 && total != remoteLength) { + targetFile.delete(); + ExternalDownloadMetadataStore.remove(metadataKey); + notifyFailure(context, "Incomplete download."); + return; + } + + ExternalDownloadMetadataStore.recordSize(metadataKey, total); + recordDownload(child, targetUri); + notifySuccess(context, fileName, child, targetUri); + ExternalAudioReader.refreshCacheAsync(); + } + } catch (Exception e) { + if (targetFile != null) { + targetFile.delete(); + } + ExternalDownloadMetadataStore.remove(metadataKey); + notifyFailure(context, e.getMessage() != null ? e.getMessage() : "Download failed"); + } finally { + if (connection != null) { + connection.disconnect(); + } + } + } + + private static void notifyUnavailable(Context context) { + NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + Intent settingsIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Uri.fromParts("package", context.getPackageName(), null)); + PendingIntent openSettings = PendingIntent.getActivity(context, 0, settingsIntent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID) + .setContentTitle("No download folder set") + .setContentText("Tap to set one in settings") + .setSmallIcon(android.R.drawable.stat_notify_error) + .setPriority(NotificationCompat.PRIORITY_LOW) + .setSilent(true) + .setContentIntent(openSettings) + .setAutoCancel(true); + + manager.notify(1011, builder.build()); + } + + private static void notifyFailure(Context context, String message) { + NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID) + .setContentTitle("Download failed") + .setContentText(message) + .setSmallIcon(android.R.drawable.stat_notify_error) + .setAutoCancel(true); + manager.notify((int) System.currentTimeMillis(), builder.build()); + } + + private static void notifySuccess(Context context, String name, Child child, Uri fileUri) { + NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID) + .setContentTitle("Download complete") + .setContentText(name) + .setSmallIcon(android.R.drawable.stat_sys_download_done) + .setAutoCancel(true); + + PendingIntent playIntent = buildPlayIntent(context, child, fileUri); + if (playIntent != null) { + builder.setContentIntent(playIntent); + } + + manager.notify((int) System.currentTimeMillis(), builder.build()); + } + + private static void recordDownload(Child child, Uri fileUri) { + if (child == null) { + return; + } + + Download download = new Download(child); + download.setDownloadState(1); + if (fileUri != null) { + download.setDownloadUri(fileUri.toString()); + } + + new DownloadRepository().insert(download); + } + + private static void notifyExists(Context context, String name) { + NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, DownloadUtil.DOWNLOAD_NOTIFICATION_CHANNEL_ID) + .setContentTitle("Already downloaded") + .setContentText(name) + .setSmallIcon(android.R.drawable.stat_sys_warning) + .setAutoCancel(true); + manager.notify((int) System.currentTimeMillis(), builder.build()); + } + + private static PendingIntent buildPlayIntent(Context context, Child child, Uri fileUri) { + if (fileUri == null) return null; + Intent intent = new Intent(context, MainActivity.class) + .setAction(Constants.ACTION_PLAY_EXTERNAL_DOWNLOAD) + .putExtra(Constants.EXTRA_DOWNLOAD_URI, fileUri.toString()) + .putExtra(Constants.EXTRA_DOWNLOAD_MEDIA_ID, child.getId()) + .putExtra(Constants.EXTRA_DOWNLOAD_TITLE, child.getTitle()) + .putExtra(Constants.EXTRA_DOWNLOAD_ARTIST, child.getArtist()) + .putExtra(Constants.EXTRA_DOWNLOAD_ALBUM, child.getAlbum()) + .putExtra(Constants.EXTRA_DOWNLOAD_DURATION, child.getDuration() != null ? child.getDuration() : 0) + .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); + + int requestCode; + if (child.getId() != null) { + requestCode = Math.abs(child.getId().hashCode()); + } else { + requestCode = Math.abs(fileUri.toString().hashCode()); + } + + return PendingIntent.getActivity( + context, + requestCode, + intent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE + ); + } + + private static InputStream openInputStream(Context context, + Uri mediaUri, + String scheme, + HttpURLConnection connection, + File sourceFile) throws IOException { + switch (scheme) { + case "http": + case "https": + if (connection == null) { + throw new IOException("Connection not initialized"); + } + return connection.getInputStream(); + case "content": + InputStream contentStream = context.getContentResolver().openInputStream(mediaUri); + if (contentStream == null) { + throw new IOException("Cannot open content stream"); + } + return contentStream; + case "file": + if (sourceFile == null || !sourceFile.exists()) { + throw new IOException("Missing source file"); + } + return new FileInputStream(sourceFile); + default: + throw new IOException("Unsupported scheme " + scheme); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/ExternalDownloadMetadataStore.java b/app/src/main/java/com/cappielloantonio/tempo/util/ExternalDownloadMetadataStore.java new file mode 100644 index 0000000..4bd4089 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/ExternalDownloadMetadataStore.java @@ -0,0 +1,123 @@ +package com.cappielloantonio.tempo.util; + +import android.content.SharedPreferences; + +import androidx.annotation.Nullable; + +import com.cappielloantonio.tempo.App; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +public final class ExternalDownloadMetadataStore { + + private static final String PREF_KEY = "external_download_metadata"; + + private ExternalDownloadMetadataStore() { + } + + private static SharedPreferences preferences() { + return App.getInstance().getPreferences(); + } + + private static JSONObject readAll() { + String raw = preferences().getString(PREF_KEY, "{}"); + try { + return new JSONObject(raw); + } catch (JSONException e) { + return new JSONObject(); + } + } + + private static void writeAll(JSONObject object) { + preferences().edit().putString(PREF_KEY, object.toString()).apply(); + } + + public static synchronized void clear() { + writeAll(new JSONObject()); + } + + public static synchronized void recordSize(String key, long size) { + if (key == null || size <= 0) { + return; + } + JSONObject object = readAll(); + try { + object.put(key, size); + } catch (JSONException ignored) { + } + writeAll(object); + } + + public static synchronized void remove(String key) { + if (key == null) { + return; + } + JSONObject object = readAll(); + object.remove(key); + writeAll(object); + } + + @Nullable + public static synchronized Long getSize(String key) { + if (key == null) { + return null; + } + JSONObject object = readAll(); + if (!object.has(key)) { + return null; + } + long size = object.optLong(key, -1L); + return size > 0 ? size : null; + } + + public static synchronized Map snapshot() { + JSONObject object = readAll(); + if (object.length() == 0) { + return Collections.emptyMap(); + } + Map sizes = new HashMap<>(); + Iterator keys = object.keys(); + while (keys.hasNext()) { + String key = keys.next(); + long size = object.optLong(key, -1L); + if (size > 0) { + sizes.put(key, size); + } + } + return sizes; + } + + public static synchronized void retainOnly(Set keysToKeep) { + if (keysToKeep == null || keysToKeep.isEmpty()) { + clear(); + return; + } + JSONObject object = readAll(); + if (object.length() == 0) { + return; + } + Set keys = new HashSet<>(); + Iterator iterator = object.keys(); + while (iterator.hasNext()) { + keys.add(iterator.next()); + } + boolean changed = false; + for (String key : keys) { + if (!keysToKeep.contains(key)) { + object.remove(key); + changed = true; + } + } + if (changed) { + writeAll(object); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/IndexUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/IndexUtil.java new file mode 100644 index 0000000..87b56eb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/IndexUtil.java @@ -0,0 +1,29 @@ +package com.cappielloantonio.tempo.util; + +import androidx.annotation.OptIn; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.subsonic.models.Artist; +import com.cappielloantonio.tempo.subsonic.models.Index; +import com.cappielloantonio.tempo.subsonic.models.Indexes; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@OptIn(markerClass = UnstableApi.class) +public class IndexUtil { + public static List getArtist(Indexes indexes) { + if (indexes.getIndices() == null) return Collections.emptyList(); + + ArrayList toReturn = new ArrayList<>(); + + for (Index index : indexes.getIndices()) { + if (index.getArtists() != null) { + toReturn.addAll(index.getArtists()); + } + } + + return toReturn; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java new file mode 100644 index 0000000..0a6f33e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java @@ -0,0 +1,296 @@ +package com.cappielloantonio.tempo.util; + +import android.net.Uri; +import android.os.Bundle; + +import androidx.annotation.OptIn; +import androidx.lifecycle.LifecycleOwner; +import androidx.media3.common.MediaItem; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.MimeTypes; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.common.HeartRating; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; +import com.google.common.collect.ImmutableList; + +import java.util.ArrayList; +import java.util.List; + +@OptIn(markerClass = UnstableApi.class) +public class MappingUtil { + public static List mapMediaItems(List items) { + ArrayList mediaItems = new ArrayList<>(); + + for (int i = 0; i < items.size(); i++) { + mediaItems.add(mapMediaItem(items.get(i))); + } + + return mediaItems; + } + + public static MediaItem mapMediaItem(Child media) { + Uri uri = getUri(media); + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(media.getCoverArtId(), Preferences.getImageSize())); + + Bundle bundle = new Bundle(); + bundle.putString("id", media.getId()); + bundle.putString("parentId", media.getParentId()); + bundle.putBoolean("isDir", media.isDir()); + bundle.putString("title", media.getTitle()); + bundle.putString("album", media.getAlbum()); + bundle.putString("artist", media.getArtist()); + bundle.putInt("track", media.getTrack() != null ? media.getTrack() : 0); + bundle.putInt("year", media.getYear() != null ? media.getYear() : 0); + bundle.putString("genre", media.getGenre()); + bundle.putString("coverArtId", media.getCoverArtId()); + bundle.putLong("size", media.getSize() != null ? media.getSize() : 0); + bundle.putString("contentType", media.getContentType()); + bundle.putString("suffix", media.getSuffix()); + bundle.putString("transcodedContentType", media.getTranscodedContentType()); + bundle.putString("transcodedSuffix", media.getTranscodedSuffix()); + bundle.putInt("duration", media.getDuration() != null ? media.getDuration() : 0); + bundle.putInt("bitrate", media.getBitrate() != null ? media.getBitrate() : 0); + bundle.putInt("samplingRate", media.getSamplingRate() != null ? media.getSamplingRate() : 0); + bundle.putInt("bitDepth", media.getBitDepth() != null ? media.getBitDepth() : 0); + bundle.putString("path", media.getPath()); + bundle.putBoolean("isVideo", media.isVideo()); + bundle.putInt("userRating", media.getUserRating() != null ? media.getUserRating() : 0); + bundle.putDouble("averageRating", media.getAverageRating() != null ? media.getAverageRating() : 0); + bundle.putLong("playCount", media.getPlayCount() != null ? media.getPlayCount() : 0); + bundle.putInt("discNumber", media.getDiscNumber() != null ? media.getDiscNumber() : 0); + bundle.putLong("created", media.getCreated() != null ? media.getCreated().getTime() : 0); + bundle.putLong("starred", media.getStarred() != null ? media.getStarred().getTime() : 0); + bundle.putString("albumId", media.getAlbumId()); + bundle.putString("artistId", media.getArtistId()); + bundle.putString("type", Constants.MEDIA_TYPE_MUSIC); + bundle.putLong("bookmarkPosition", media.getBookmarkPosition() != null ? media.getBookmarkPosition() : 0); + bundle.putInt("originalWidth", media.getOriginalWidth() != null ? media.getOriginalWidth() : 0); + bundle.putInt("originalHeight", media.getOriginalHeight() != null ? media.getOriginalHeight() : 0); + bundle.putString("uri", uri.toString()); + bundle.putString("assetLinkSong", AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_SONG, media.getId())); + bundle.putString("assetLinkAlbum", AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ALBUM, media.getAlbumId())); + bundle.putString("assetLinkArtist", AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ARTIST, media.getArtistId())); + bundle.putString("assetLinkGenre", AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_GENRE, media.getGenre())); + Integer year = media.getYear(); + bundle.putString("assetLinkYear", year != null && year != 0 ? AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_YEAR, String.valueOf(year)) : null); + + return new MediaItem.Builder() + .setMediaId(media.getId()) + .setMediaMetadata( + new MediaMetadata.Builder() + .setTitle(media.getTitle()) + .setTrackNumber(media.getTrack() != null ? media.getTrack() : 0) + .setDiscNumber(media.getDiscNumber() != null ? media.getDiscNumber() : 0) + .setReleaseYear(media.getYear() != null ? media.getYear() : 0) + .setAlbumTitle(media.getAlbum()) + .setArtist(media.getArtist()) + .setArtworkUri(artworkUri) + .setUserRating(new HeartRating(media.getStarred() != null)) + .setSupportedCommands( + ImmutableList.of( + Constants.CUSTOM_COMMAND_TOGGLE_HEART_ON, + Constants.CUSTOM_COMMAND_TOGGLE_HEART_OFF + ) + ) + .setExtras(bundle) + .setIsBrowsable(false) + .setIsPlayable(true) + .build() + ) + .setRequestMetadata( + new MediaItem.RequestMetadata.Builder() + .setMediaUri(uri) + .setExtras(bundle) + .build() + ) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(uri) + .build(); + } + + public static MediaItem mapMediaItem(MediaItem old) { + String mediaId = null; + if (old.requestMetadata.extras != null) + mediaId = old.requestMetadata.extras.getString("id"); + + if (mediaId != null && DownloadUtil.getDownloadTracker(App.getContext()).isDownloaded(mediaId)) { + return old; + } + Uri uri = old.requestMetadata.mediaUri == null ? null : MusicUtil.updateStreamUri(old.requestMetadata.mediaUri); + return new MediaItem.Builder() + .setMediaId(old.mediaId) + .setMediaMetadata(old.mediaMetadata) + .setRequestMetadata( + new MediaItem.RequestMetadata.Builder() + .setMediaUri(uri) + .setExtras(old.requestMetadata.extras) + .build() + ) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(uri) + .build(); + } + + public static List mapDownloads(List items) { + ArrayList downloads = new ArrayList<>(); + + for (int i = 0; i < items.size(); i++) { + downloads.add(mapDownload(items.get(i))); + } + + return downloads; + } + + public static MediaItem mapDownload(Child media) { + + Bundle bundle = new Bundle(); + bundle.putInt("samplingRate", media.getSamplingRate() != null ? media.getSamplingRate() : 0); + bundle.putInt("bitDepth", media.getBitDepth() != null ? media.getBitDepth() : 0); + + return new MediaItem.Builder() + .setMediaId(media.getId()) + .setMediaMetadata( + new MediaMetadata.Builder() + .setTitle(media.getTitle()) + .setTrackNumber(media.getTrack() != null ? media.getTrack() : 0) + .setDiscNumber(media.getDiscNumber() != null ? media.getDiscNumber() : 0) + .setReleaseYear(media.getYear() != null ? media.getYear() : 0) + .setAlbumTitle(media.getAlbum()) + .setArtist(media.getArtist()) + .setExtras(bundle) + .setIsBrowsable(false) + .setIsPlayable(true) + .build() + ) + .setRequestMetadata( + new MediaItem.RequestMetadata.Builder() + .setExtras(bundle) + .setMediaUri(Preferences.preferTranscodedDownload() ? MusicUtil.getTranscodedDownloadUri(media.getId()) : MusicUtil.getDownloadUri(media.getId())) + .build() + ) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(Preferences.preferTranscodedDownload() ? MusicUtil.getTranscodedDownloadUri(media.getId()) : MusicUtil.getDownloadUri(media.getId())) + .build(); + } + + public static MediaItem mapInternetRadioStation(InternetRadioStation internetRadioStation) { + Uri uri = Uri.parse(internetRadioStation.getStreamUrl()); + + Bundle bundle = new Bundle(); + bundle.putString("id", internetRadioStation.getId()); + bundle.putString("title", internetRadioStation.getName()); + bundle.putString("uri", uri.toString()); + bundle.putString("type", Constants.MEDIA_TYPE_RADIO); + + return new MediaItem.Builder() + .setMediaId(internetRadioStation.getId()) + .setMediaMetadata( + new MediaMetadata.Builder() + .setTitle(internetRadioStation.getName()) + .setExtras(bundle) + .setIsBrowsable(false) + .setIsPlayable(true) + .build() + ) + .setRequestMetadata( + new MediaItem.RequestMetadata.Builder() + .setMediaUri(uri) + .setExtras(bundle) + .build() + ) + // .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(uri) + .build(); + } + + public static MediaItem mapMediaItem(PodcastEpisode podcastEpisode) { + Uri uri = getUri(podcastEpisode); + Uri artworkUri = Uri.parse(CustomGlideRequest.createUrl(podcastEpisode.getCoverArtId(), Preferences.getImageSize())); + + Bundle bundle = new Bundle(); + bundle.putString("id", podcastEpisode.getId()); + bundle.putString("parentId", podcastEpisode.getParentId()); + bundle.putBoolean("isDir", podcastEpisode.isDir()); + bundle.putString("title", podcastEpisode.getTitle()); + bundle.putString("album", podcastEpisode.getAlbum()); + bundle.putString("artist", podcastEpisode.getArtist()); + bundle.putInt("year", podcastEpisode.getYear() != null ? podcastEpisode.getYear() : 0); + bundle.putString("coverArtId", podcastEpisode.getCoverArtId()); + bundle.putLong("size", podcastEpisode.getSize() != null ? podcastEpisode.getSize() : 0); + bundle.putString("contentType", podcastEpisode.getContentType()); + bundle.putString("suffix", podcastEpisode.getSuffix()); + bundle.putInt("duration", podcastEpisode.getDuration() != null ? podcastEpisode.getDuration() : 0); + bundle.putInt("bitrate", podcastEpisode.getBitrate() != null ? podcastEpisode.getBitrate() : 0); + bundle.putBoolean("isVideo", podcastEpisode.isVideo()); + bundle.putLong("created", podcastEpisode.getCreated() != null ? podcastEpisode.getCreated().getTime() : 0); + bundle.putString("artistId", podcastEpisode.getArtistId()); + bundle.putString("description", podcastEpisode.getDescription()); + bundle.putString("type", Constants.MEDIA_TYPE_PODCAST); + bundle.putString("uri", uri.toString()); + + MediaItem item = new MediaItem.Builder() + .setMediaId(podcastEpisode.getId()) + .setMediaMetadata( + new MediaMetadata.Builder() + .setTitle(podcastEpisode.getTitle()) + .setReleaseYear(podcastEpisode.getYear() != null ? podcastEpisode.getYear() : 0) + .setAlbumTitle(podcastEpisode.getAlbum()) + .setArtist(podcastEpisode.getArtist()) + .setArtworkUri(artworkUri) + .setExtras(bundle) + .setIsBrowsable(false) + .setIsPlayable(true) + .build() + ) + .setRequestMetadata( + new MediaItem.RequestMetadata.Builder() + .setMediaUri(uri) + .setExtras(bundle) + .build() + ) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(uri) + .build(); + + return item; + } + + private static Uri getUri(Child media) { + if (Preferences.getDownloadDirectoryUri() != null) { + Uri local = ExternalAudioReader.getUri(media); + return local != null ? local : MusicUtil.getStreamUri(media.getId()); + } + return DownloadUtil.getDownloadTracker(App.getContext()).isDownloaded(media.getId()) + ? getDownloadUri(media.getId()) + : MusicUtil.getStreamUri(media.getId()); + } + + private static Uri getUri(PodcastEpisode podcastEpisode) { + if (Preferences.getDownloadDirectoryUri() != null) { + Uri local = ExternalAudioReader.getUri(podcastEpisode); + return local != null ? local : MusicUtil.getStreamUri(podcastEpisode.getStreamId()); + } + return DownloadUtil.getDownloadTracker(App.getContext()).isDownloaded(podcastEpisode.getStreamId()) + ? getDownloadUri(podcastEpisode.getStreamId()) + : MusicUtil.getStreamUri(podcastEpisode.getStreamId()); + } + + private static Uri getDownloadUri(String id) { + Download download = new DownloadRepository().getDownload(id); + return download != null && !download.getDownloadUri().isEmpty() ? Uri.parse(download.getDownloadUri()) : MusicUtil.getDownloadUri(id); + } + + public static void observeExternalAudioRefresh(LifecycleOwner owner, Runnable onRefresh) { + if (owner == null || onRefresh == null) { + return; + } + ExternalAudioReader.getRefreshEvents().observe(owner, event -> onRefresh.run()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/MusicUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/MusicUtil.java new file mode 100644 index 0000000..cd2c7a3 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/MusicUtil.java @@ -0,0 +1,357 @@ +package com.cappielloantonio.tempo.util; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.Uri; +import android.text.Html; +import android.util.Log; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.text.CharacterIterator; +import java.text.DecimalFormat; +import java.text.StringCharacterIterator; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class MusicUtil { + private static final String TAG = "MusicUtil"; + + private static final Pattern BITRATE_PATTERN = Pattern.compile("&maxBitRate=\\d+"); + private static final Pattern FORMAT_PATTERN = Pattern.compile("&format=\\w+"); + + public static Uri getStreamUri(String id) { + Map params = App.getSubsonicClientInstance(false).getParams(); + + StringBuilder uri = new StringBuilder(); + + uri.append(App.getSubsonicClientInstance(false).getUrl()); + uri.append("stream"); + + if (params.containsKey("u") && params.get("u") != null) + uri.append("?u=").append(Util.encode(params.get("u"))); + if (params.containsKey("p") && params.get("p") != null) + uri.append("&p=").append(params.get("p")); + if (params.containsKey("s") && params.get("s") != null) + uri.append("&s=").append(params.get("s")); + if (params.containsKey("t") && params.get("t") != null) + uri.append("&t=").append(params.get("t")); + if (params.containsKey("v") && params.get("v") != null) + uri.append("&v=").append(params.get("v")); + if (params.containsKey("c") && params.get("c") != null) + uri.append("&c=").append(params.get("c")); + + if (!Preferences.isServerPrioritized()) + uri.append("&maxBitRate=").append(getBitratePreference()); + if (!Preferences.isServerPrioritized()) + uri.append("&format=").append(getTranscodingFormatPreference()); + if (Preferences.askForEstimateContentLength()) + uri.append("&estimateContentLength=true"); + + uri.append("&id=").append(id); + + Log.d(TAG, "getStreamUri: " + uri); + + return Uri.parse(uri.toString()); + } + + public static Uri updateStreamUri(Uri uri) { + String s = uri.toString(); + Matcher m1 = BITRATE_PATTERN.matcher(s); + s = m1.replaceAll(""); + Matcher m2 = FORMAT_PATTERN.matcher(s); + s = m2.replaceAll(""); + s = s.replace("&estimateContentLength=true", ""); + + if (!Preferences.isServerPrioritized()) + s += "&maxBitRate=" + getBitratePreference(); + if (!Preferences.isServerPrioritized()) + s += "&format=" + getTranscodingFormatPreference(); + if (Preferences.askForEstimateContentLength()) + s += "&estimateContentLength=true"; + + return Uri.parse(s); + } + + public static Uri getDownloadUri(String id) { + StringBuilder uri = new StringBuilder(); + + Download download = new DownloadRepository().getDownload(id); + + if (download == null || download.getDownloadUri().isEmpty()) { + Map params = App.getSubsonicClientInstance(false).getParams(); + + uri.append(App.getSubsonicClientInstance(false).getUrl()); + uri.append("download"); + + if (params.containsKey("u") && params.get("u") != null) + uri.append("?u=").append(Util.encode(params.get("u"))); + if (params.containsKey("p") && params.get("p") != null) + uri.append("&p=").append(params.get("p")); + if (params.containsKey("s") && params.get("s") != null) + uri.append("&s=").append(params.get("s")); + if (params.containsKey("t") && params.get("t") != null) + uri.append("&t=").append(params.get("t")); + if (params.containsKey("v") && params.get("v") != null) + uri.append("&v=").append(params.get("v")); + if (params.containsKey("c") && params.get("c") != null) + uri.append("&c=").append(params.get("c")); + + uri.append("&id=").append(id); + } else { + uri.append(download.getDownloadUri()); + } + + Log.d(TAG, "getDownloadUri: " + uri); + + return Uri.parse(uri.toString()); + } + + public static Uri getTranscodedDownloadUri(String id) { + Map params = App.getSubsonicClientInstance(false).getParams(); + + StringBuilder uri = new StringBuilder(); + + uri.append(App.getSubsonicClientInstance(false).getUrl()); + uri.append("stream"); + + if (params.containsKey("u") && params.get("u") != null) + uri.append("?u=").append(Util.encode(params.get("u"))); + if (params.containsKey("p") && params.get("p") != null) + uri.append("&p=").append(params.get("p")); + if (params.containsKey("s") && params.get("s") != null) + uri.append("&s=").append(params.get("s")); + if (params.containsKey("t") && params.get("t") != null) + uri.append("&t=").append(params.get("t")); + if (params.containsKey("v") && params.get("v") != null) + uri.append("&v=").append(params.get("v")); + if (params.containsKey("c") && params.get("c") != null) + uri.append("&c=").append(params.get("c")); + + if (!Preferences.isServerPrioritizedInTranscodedDownload()) + uri.append("&maxBitRate=").append(getBitratePreferenceForDownload()); + if (!Preferences.isServerPrioritizedInTranscodedDownload()) + uri.append("&format=").append(getTranscodingFormatPreferenceForDownload()); + + uri.append("&id=").append(id); + + Log.d(TAG, "getTranscodedDownloadUri: " + uri); + + return Uri.parse(uri.toString()); + } + + + public static String getReadableDurationString(Long duration, boolean millis) { + long lenght = duration != null ? duration : 0; + + long minutes; + long seconds; + + if (millis) { + minutes = (lenght / 1000) / 60; + seconds = (lenght / 1000) % 60; + } else { + minutes = lenght / 60; + seconds = lenght % 60; + } + + if (minutes < 60) { + return String.format(Locale.getDefault(), "%01d:%02d", minutes, seconds); + } else { + long hours = minutes / 60; + minutes = minutes % 60; + return String.format(Locale.getDefault(), "%d:%02d:%02d", hours, minutes, seconds); + } + } + + public static String getReadableDurationString(Integer duration, boolean millis) { + long lenght = duration != null ? duration : 0; + return getReadableDurationString(lenght, millis); + } + + public static String getReadableAudioQualityString(Child child) { + if (!Preferences.showAudioQuality() || child.getBitrate() == null) return ""; + + return "•" + + " " + + child.getBitrate() + + "kbps" + + " • " + + (child.getBitDepth() != null && child.getBitDepth() != 0 + ? child.getBitDepth() + "/" + (child.getSamplingRate() != null ? child.getSamplingRate() / 1000 : "") + : (child.getSamplingRate() != null + ? new DecimalFormat("0.#").format(child.getSamplingRate() / 1000.0) + "kHz" + : "")) + + " " + + child.getSuffix(); + } + + public static String getReadablePodcastDurationString(long duration) { + long minutes = duration / 60; + + if (minutes < 60) { + return String.format(Locale.getDefault(), "%01d min", minutes); + } else { + long hours = minutes / 60; + minutes = minutes % 60; + return String.format(Locale.getDefault(), "%d h %02d min", hours, minutes); + } + } + + public static String getReadableTrackNumber(Context context, Integer trackNumber) { + if (trackNumber != null) { + return String.valueOf(trackNumber); + } + + return context.getString(R.string.label_placeholder); + } + + public static String getReadableString(String string) { + if (string != null) { + return Html.fromHtml(string, Html.FROM_HTML_MODE_COMPACT).toString(); + } + + return ""; + } + + public static String forceReadableString(String string) { + if (string != null) { + return getReadableString(string) + .replaceAll(""", "\"") + .replaceAll("'", "'") + .replaceAll("&", "'") + .replaceAll("]+)>((?:.(?!))*.)", ""); + } + + return ""; + } + + public static String getReadableLyrics(String string) { + if (string != null) { + return string + .replaceAll(""", "\"") + .replaceAll("'", "'") + .replaceAll("&", "'") + .replaceAll(" ", "\n"); + } + + return ""; + } + + public static String getReadableByteCount(long bytes) { + long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes); + + if (absB < 1024) { + return bytes + " B"; + } + + long value = absB; + + CharacterIterator ci = new StringCharacterIterator("KMGTPE"); + + for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) { + value >>= 10; + ci.next(); + } + + value *= Long.signum(bytes); + + return String.format("%.1f %ciB", value / 1024.0, ci.current()); + } + + public static String passwordHexEncoding(String plainPassword) { + return "enc:" + plainPassword.chars().mapToObj(Integer::toHexString).collect(Collectors.joining()); + } + + public static String getBitratePreference() { + Network network = getConnectivityManager().getActiveNetwork(); + NetworkCapabilities networkCapabilities = getConnectivityManager().getNetworkCapabilities(network); + String audioTranscodeFormat = getTranscodingFormatPreference(); + + if (audioTranscodeFormat.equals("raw") || network == null || networkCapabilities == null) + return "0"; + + if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + return Preferences.getMaxBitrateWifi(); + } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + return Preferences.getMaxBitrateMobile(); + } else { + return Preferences.getMaxBitrateWifi(); + } + } + + public static String getTranscodingFormatPreference() { + Network network = getConnectivityManager().getActiveNetwork(); + NetworkCapabilities networkCapabilities = getConnectivityManager().getNetworkCapabilities(network); + + if (network == null || networkCapabilities == null) return "raw"; + + if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + return Preferences.getAudioTranscodeFormatWifi(); + } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + return Preferences.getAudioTranscodeFormatMobile(); + } else { + return Preferences.getAudioTranscodeFormatWifi(); + } + } + + public static String getBitratePreferenceForDownload() { + String audioTranscodeFormat = getTranscodingFormatPreferenceForDownload(); + + if (audioTranscodeFormat.equals("raw")) + return "0"; + + return Preferences.getBitrateTranscodedDownload(); + } + + public static String getTranscodingFormatPreferenceForDownload() { + return Preferences.getAudioTranscodeFormatTranscodedDownload(); + } + + public static List limitPlayableMedia(List toLimit, int position) { + if (!toLimit.isEmpty() && toLimit.size() > Constants.PLAYABLE_MEDIA_LIMIT) { + int from = position < Constants.PRE_PLAYABLE_MEDIA ? 0 : position - Constants.PRE_PLAYABLE_MEDIA; + int to = Math.min(from + Constants.PLAYABLE_MEDIA_LIMIT, toLimit.size()); + + return toLimit.subList(from, to); + } + + return toLimit; + } + + public static int getPlayableMediaPosition(List toLimit, int position) { + if (!toLimit.isEmpty() && toLimit.size() > Constants.PLAYABLE_MEDIA_LIMIT) { + return Math.min(position, Constants.PRE_PLAYABLE_MEDIA); + } + + return position; + } + + private static ConnectivityManager getConnectivityManager() { + return (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + } + + public static void ratingFilter(List toFilter) { + if (toFilter == null || toFilter.isEmpty()) return; + + List filtered = toFilter + .stream() + .filter(child -> (child.getUserRating() != null && child.getUserRating() >= Preferences.getMinStarRatingAccepted()) || (child.getUserRating() == null)) + .collect(Collectors.toList()); + + toFilter.clear(); + + toFilter.addAll(filtered); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/NetworkUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/NetworkUtil.java new file mode 100644 index 0000000..f3eca98 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/NetworkUtil.java @@ -0,0 +1,29 @@ +package com.cappielloantonio.tempo.util; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkInfo; + +import com.cappielloantonio.tempo.App; + +public class NetworkUtil { + public static boolean isOffline() { + ConnectivityManager connectivityManager = (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + + if (connectivityManager != null) { + Network network = connectivityManager.getActiveNetwork(); + + if (network != null) { + NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network); + + if (capabilities != null) { + return !capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) || !capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); + } + } + } + + return true; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/OpenSubsonicExtensionsUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/OpenSubsonicExtensionsUtil.java new file mode 100644 index 0000000..78c59fb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/OpenSubsonicExtensionsUtil.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.util; + +import com.cappielloantonio.tempo.subsonic.models.OpenSubsonicExtension; +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; + +import java.util.List; + +public class OpenSubsonicExtensionsUtil { + private static List getOpenSubsonicExtensions() { + List extensions = null; + + if (Preferences.isOpenSubsonic() && Preferences.getOpenSubsonicExtensions() != null) { + extensions = new Gson().fromJson( + Preferences.getOpenSubsonicExtensions(), + new TypeToken>() { + }.getType() + ); + } + + return extensions; + } + + private static OpenSubsonicExtension getOpenSubsonicExtension(String extensionName) { + if (getOpenSubsonicExtensions() == null) return null; + + return getOpenSubsonicExtensions().stream().filter(openSubsonicExtension -> openSubsonicExtension.getName().equals(extensionName)).findAny().orElse(null); + } + + public static boolean isTranscodeOffsetExtensionAvailable() { + return getOpenSubsonicExtension("transcodeOffset") != null; + } + + public static boolean isFormPostExtensionAvailable() { + return getOpenSubsonicExtension("formPost") != null; + } + + public static boolean isSongLyricsExtensionAvailable() { + return getOpenSubsonicExtension("songLyrics") != null; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt b/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt new file mode 100644 index 0000000..e404c29 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt @@ -0,0 +1,677 @@ +package com.cappielloantonio.tempo.util + +import android.util.Log +import androidx.media3.common.Player +import com.cappielloantonio.tempo.App +import com.cappielloantonio.tempo.model.HomeSector +import com.cappielloantonio.tempo.subsonic.models.OpenSubsonicExtension +import com.google.gson.Gson + + +object Preferences { + const val THEME = "theme" + private const val SERVER = "server" + private const val USER = "user" + private const val PASSWORD = "password" + private const val TOKEN = "token" + private const val SALT = "salt" + private const val LOW_SECURITY = "low_security" + private const val BATTERY_OPTIMIZATION = "battery_optimization" + private const val SERVER_ID = "server_id" + private const val OPEN_SUBSONIC = "open_subsonic" + private const val OPEN_SUBSONIC_EXTENSIONS = "open_subsonic_extensions" + private const val LOCAL_ADDRESS = "local_address" + private const val IN_USE_SERVER_ADDRESS = "in_use_server_address" + private const val NEXT_SERVER_SWITCH = "next_server_switch" + private const val PLAYBACK_SPEED = "playback_speed" + private const val SKIP_SILENCE = "skip_silence" + private const val SHUFFLE_MODE = "shuffle_mode" + private const val REPEAT_MODE = "repeat_mode" + private const val IMAGE_CACHE_SIZE = "image_cache_size" + private const val STREAMING_CACHE_SIZE = "streaming_cache_size" + private const val IMAGE_SIZE = "image_size" + private const val MAX_BITRATE_WIFI = "max_bitrate_wifi" + private const val MAX_BITRATE_MOBILE = "max_bitrate_mobile" + private const val AUDIO_TRANSCODE_FORMAT_WIFI = "audio_transcode_format_wifi" + private const val AUDIO_TRANSCODE_FORMAT_MOBILE = "audio_transcode_format_mobile" + private const val WIFI_ONLY = "wifi_only" + private const val DATA_SAVING_MODE = "data_saving_mode" + private const val SERVER_UNREACHABLE = "server_unreachable" + private const val SYNC_STARRED_ARTISTS_FOR_OFFLINE_USE = "sync_starred_artists_for_offline_use" + private const val SYNC_STARRED_ALBUMS_FOR_OFFLINE_USE = "sync_starred_albums_for_offline_use" + private const val SYNC_STARRED_TRACKS_FOR_OFFLINE_USE = "sync_starred_tracks_for_offline_use" + private const val QUEUE_SYNCING = "queue_syncing" + private const val QUEUE_SYNCING_COUNTDOWN = "queue_syncing_countdown" + private const val ROUNDED_CORNER = "rounded_corner" + private const val ROUNDED_CORNER_SIZE = "rounded_corner_size" + private const val PODCAST_SECTION_VISIBILITY = "podcast_section_visibility" + private const val RADIO_SECTION_VISIBILITY = "radio_section_visibility" + private const val AUTO_DOWNLOAD_LYRICS = "auto_download_lyrics" + private const val MUSIC_DIRECTORY_SECTION_VISIBILITY = "music_directory_section_visibility" + private const val REPLAY_GAIN_MODE = "replay_gain_mode" + private const val AUDIO_TRANSCODE_PRIORITY = "audio_transcode_priority" + private const val STREAMING_CACHE_STORAGE = "streaming_cache_storage" + private const val DOWNLOAD_STORAGE = "download_storage" + private const val DOWNLOAD_DIRECTORY_URI = "download_directory_uri" + private const val DEFAULT_DOWNLOAD_VIEW_TYPE = "default_download_view_type" + private const val AUDIO_TRANSCODE_DOWNLOAD = "audio_transcode_download" + private const val AUDIO_TRANSCODE_DOWNLOAD_PRIORITY = "audio_transcode_download_priority" + private const val MAX_BITRATE_DOWNLOAD = "max_bitrate_download" + private const val AUDIO_TRANSCODE_FORMAT_DOWNLOAD = "audio_transcode_format_download" + private const val SHARE = "share" + private const val SCROBBLING = "scrobbling" + private const val ESTIMATE_CONTENT_LENGTH = "estimate_content_length" + private const val BUFFERING_STRATEGY = "buffering_strategy" + private const val SKIP_MIN_STAR_RATING = "skip_min_star_rating" + private const val MIN_STAR_RATING = "min_star_rating" + private const val ALWAYS_ON_DISPLAY = "always_on_display" + private const val AUDIO_QUALITY_PER_ITEM = "audio_quality_per_item" + private const val HOME_SECTOR_LIST = "home_sector_list" + private const val SONG_RATING_PER_ITEM = "song_rating_per_item" + private const val RATING_PER_ITEM = "rating_per_item" + private const val NEXT_UPDATE_CHECK = "next_update_check" + private const val GITHUB_UPDATE_CHECK = "github_update_check" + private const val CONTINUOUS_PLAY = "continuous_play" + private const val LAST_INSTANT_MIX = "last_instant_mix" + private const val ALLOW_PLAYLIST_DUPLICATES = "allow_playlist_duplicates" + private const val EQUALIZER_ENABLED = "equalizer_enabled" + private const val EQUALIZER_BAND_LEVELS = "equalizer_band_levels" + private const val MINI_SHUFFLE_BUTTON_VISIBILITY = "mini_shuffle_button_visibility" + private const val ALBUM_DETAIL = "album_detail" + private const val ALBUM_SORT_ORDER = "album_sort_order" + private const val DEFAULT_ALBUM_SORT_ORDER = Constants.ALBUM_ORDER_BY_NAME + private const val ARTIST_SORT_BY_ALBUM_COUNT= "artist_sort_by_album_count" + + @JvmStatic + fun getServer(): String? { + return App.getInstance().preferences.getString(SERVER, null) + } + + @JvmStatic + fun setServer(server: String?) { + App.getInstance().preferences.edit().putString(SERVER, server).apply() + } + + @JvmStatic + fun getUser(): String? { + return App.getInstance().preferences.getString(USER, null) + } + + @JvmStatic + fun setUser(user: String?) { + App.getInstance().preferences.edit().putString(USER, user).apply() + } + + @JvmStatic + fun getPassword(): String? { + return App.getInstance().preferences.getString(PASSWORD, null) + } + + @JvmStatic + fun setPassword(password: String?) { + App.getInstance().preferences.edit().putString(PASSWORD, password).apply() + } + + @JvmStatic + fun getToken(): String? { + return App.getInstance().preferences.getString(TOKEN, null) + } + + @JvmStatic + fun setToken(token: String?) { + App.getInstance().preferences.edit().putString(TOKEN, token).apply() + } + + @JvmStatic + fun getSalt(): String? { + return App.getInstance().preferences.getString(SALT, null) + } + + @JvmStatic + fun setSalt(salt: String?) { + App.getInstance().preferences.edit().putString(SALT, salt).apply() + } + + @JvmStatic + fun isLowScurity(): Boolean { + return App.getInstance().preferences.getBoolean(LOW_SECURITY, false) + } + + @JvmStatic + fun setLowSecurity(isLowSecurity: Boolean) { + App.getInstance().preferences.edit().putBoolean(LOW_SECURITY, isLowSecurity).apply() + } + + @JvmStatic + fun getServerId(): String? { + return App.getInstance().preferences.getString(SERVER_ID, null) + } + + @JvmStatic + fun setServerId(serverId: String?) { + App.getInstance().preferences.edit().putString(SERVER_ID, serverId).apply() + } + + @JvmStatic + fun isOpenSubsonic(): Boolean { + return App.getInstance().preferences.getBoolean(OPEN_SUBSONIC, false) + } + + @JvmStatic + fun setOpenSubsonic(isOpenSubsonic: Boolean) { + App.getInstance().preferences.edit().putBoolean(OPEN_SUBSONIC, isOpenSubsonic).apply() + } + + @JvmStatic + fun getOpenSubsonicExtensions(): String? { + return App.getInstance().preferences.getString(OPEN_SUBSONIC_EXTENSIONS, null) + } + + @JvmStatic + fun setOpenSubsonicExtensions(extension: List) { + App.getInstance().preferences.edit().putString(OPEN_SUBSONIC_EXTENSIONS, Gson().toJson(extension)).apply() + } + + @JvmStatic + fun isAutoDownloadLyricsEnabled(): Boolean { + val preferences = App.getInstance().preferences + + if (preferences.contains(AUTO_DOWNLOAD_LYRICS)) { + return preferences.getBoolean(AUTO_DOWNLOAD_LYRICS, false) + } + + return false + } + + @JvmStatic + fun setAutoDownloadLyricsEnabled(isEnabled: Boolean) { + App.getInstance().preferences.edit() + .putBoolean(AUTO_DOWNLOAD_LYRICS, isEnabled) + .apply() + } + + @JvmStatic + fun getLocalAddress(): String? { + return App.getInstance().preferences.getString(LOCAL_ADDRESS, null) + } + + @JvmStatic + fun setLocalAddress(address: String?) { + App.getInstance().preferences.edit().putString(LOCAL_ADDRESS, address).apply() + } + + @JvmStatic + fun getInUseServerAddress(): String? { + return App.getInstance().preferences.getString(IN_USE_SERVER_ADDRESS, null) + ?.takeIf { it.isNotBlank() } + ?: getServer() + } + + @JvmStatic + fun isInUseServerAddressLocal(): Boolean { + return getInUseServerAddress() == getLocalAddress() + } + + @JvmStatic + fun switchInUseServerAddress() { + val inUseAddress = if (getInUseServerAddress() == getServer()) getLocalAddress() else getServer() + App.getInstance().preferences.edit().putString(IN_USE_SERVER_ADDRESS, inUseAddress).apply() + } + + @JvmStatic + fun isServerSwitchable(): Boolean { + return App.getInstance().preferences.getLong( + NEXT_SERVER_SWITCH, 0 + ) + 15000 < System.currentTimeMillis() && !getServer().isNullOrEmpty() && !getLocalAddress().isNullOrEmpty() + } + + @JvmStatic + fun setServerSwitchableTimer() { + App.getInstance().preferences.edit().putLong(NEXT_SERVER_SWITCH, System.currentTimeMillis()).apply() + } + + @JvmStatic + fun askForOptimization(): Boolean { + return App.getInstance().preferences.getBoolean(BATTERY_OPTIMIZATION, true) + } + + @JvmStatic + fun dontAskForOptimization() { + App.getInstance().preferences.edit().putBoolean(BATTERY_OPTIMIZATION, false).apply() + } + + @JvmStatic + fun getPlaybackSpeed(): Float { + return App.getInstance().preferences.getFloat(PLAYBACK_SPEED, 1f) + } + + @JvmStatic + fun setPlaybackSpeed(playbackSpeed: Float) { + App.getInstance().preferences.edit().putFloat(PLAYBACK_SPEED, playbackSpeed).apply() + } + + @JvmStatic + fun isSkipSilenceMode(): Boolean { + return App.getInstance().preferences.getBoolean(SKIP_SILENCE, false) + } + + @JvmStatic + fun setSkipSilenceMode(isSkipSilenceMode: Boolean) { + App.getInstance().preferences.edit().putBoolean(SKIP_SILENCE, isSkipSilenceMode).apply() + } + + @JvmStatic + fun isShuffleModeEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(SHUFFLE_MODE, false) + } + + @JvmStatic + fun setShuffleModeEnabled(shuffleModeEnabled: Boolean) { + App.getInstance().preferences.edit().putBoolean(SHUFFLE_MODE, shuffleModeEnabled).apply() + } + + @JvmStatic + fun getRepeatMode(): Int { + return App.getInstance().preferences.getInt(REPEAT_MODE, Player.REPEAT_MODE_OFF) + } + + @JvmStatic + fun setRepeatMode(repeatMode: Int) { + App.getInstance().preferences.edit().putInt(REPEAT_MODE, repeatMode).apply() + } + + @JvmStatic + fun getImageCacheSize(): Int { + return App.getInstance().preferences.getString(IMAGE_CACHE_SIZE, "500")!!.toInt() + } + + @JvmStatic + fun getImageSize(): Int { + return App.getInstance().preferences.getString(IMAGE_SIZE, "-1")!!.toInt() + } + + @JvmStatic + fun getStreamingCacheSize(): Long { + return App.getInstance().preferences.getString(STREAMING_CACHE_SIZE, "256")!!.toLong() + } + + @JvmStatic + fun getMaxBitrateWifi(): String { + return App.getInstance().preferences.getString(MAX_BITRATE_WIFI, "0")!! + } + + @JvmStatic + fun getMaxBitrateMobile(): String { + return App.getInstance().preferences.getString(MAX_BITRATE_MOBILE, "0")!! + } + + @JvmStatic + fun getAudioTranscodeFormatWifi(): String { + return App.getInstance().preferences.getString(AUDIO_TRANSCODE_FORMAT_WIFI, "raw")!! + } + + @JvmStatic + fun getAudioTranscodeFormatMobile(): String { + return App.getInstance().preferences.getString(AUDIO_TRANSCODE_FORMAT_MOBILE, "raw")!! + } + + @JvmStatic + fun isWifiOnly(): Boolean { + return App.getInstance().preferences.getBoolean(WIFI_ONLY, false) + } + + @JvmStatic + fun isDataSavingMode(): Boolean { + return App.getInstance().preferences.getBoolean(DATA_SAVING_MODE, false) + } + + @JvmStatic + fun setDataSavingMode(isDataSavingModeEnabled: Boolean) { + App.getInstance().preferences.edit().putBoolean(DATA_SAVING_MODE, isDataSavingModeEnabled) + .apply() + } + + @JvmStatic + fun isStarredArtistsSyncEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(SYNC_STARRED_ARTISTS_FOR_OFFLINE_USE, false) + } + + @JvmStatic + fun setStarredArtistsSyncEnabled(isStarredSyncEnabled: Boolean) { + App.getInstance().preferences.edit().putBoolean( + SYNC_STARRED_ARTISTS_FOR_OFFLINE_USE, isStarredSyncEnabled + ).apply() + } + + @JvmStatic + fun isStarredAlbumsSyncEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(SYNC_STARRED_ALBUMS_FOR_OFFLINE_USE, false) + } + + @JvmStatic + fun setStarredAlbumsSyncEnabled(isStarredSyncEnabled: Boolean) { + App.getInstance().preferences.edit().putBoolean( + SYNC_STARRED_ALBUMS_FOR_OFFLINE_USE, isStarredSyncEnabled + ).apply() + } + + @JvmStatic + fun isStarredSyncEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(SYNC_STARRED_TRACKS_FOR_OFFLINE_USE, false) + } + + @JvmStatic + fun setStarredSyncEnabled(isStarredSyncEnabled: Boolean) { + App.getInstance().preferences.edit().putBoolean( + SYNC_STARRED_TRACKS_FOR_OFFLINE_USE, isStarredSyncEnabled + ).apply() + } + + @JvmStatic + fun showShuffleInsteadOfHeart(): Boolean { + return App.getInstance().preferences.getBoolean(MINI_SHUFFLE_BUTTON_VISIBILITY, false) + } + + @JvmStatic + fun setShuffleInsteadOfHeart(enabled: Boolean) { + App.getInstance().preferences.edit().putBoolean(MINI_SHUFFLE_BUTTON_VISIBILITY, enabled).apply() + } + + @JvmStatic + fun showServerUnreachableDialog(): Boolean { + return App.getInstance().preferences.getLong( + SERVER_UNREACHABLE, 0 + ) + 86400000 < System.currentTimeMillis() + } + + @JvmStatic + fun setServerUnreachableDatetime() { + App.getInstance().preferences.edit().putLong(SERVER_UNREACHABLE, System.currentTimeMillis()).apply() + } + + @JvmStatic + fun isSyncronizationEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(QUEUE_SYNCING, false) + } + + @JvmStatic + fun getSyncCountdownTimer(): Int { + return App.getInstance().preferences.getString(QUEUE_SYNCING_COUNTDOWN, "5")!!.toInt() + } + + @JvmStatic + fun isCornerRoundingEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(ROUNDED_CORNER, false) + } + + @JvmStatic + fun getRoundedCornerSize(): Int { + return App.getInstance().preferences.getString(ROUNDED_CORNER_SIZE, "12")!!.toInt() + } + + @JvmStatic + fun isPodcastSectionVisible(): Boolean { + return App.getInstance().preferences.getBoolean(PODCAST_SECTION_VISIBILITY, true) + } + + @JvmStatic + fun setPodcastSectionHidden() { + App.getInstance().preferences.edit().putBoolean(PODCAST_SECTION_VISIBILITY, false).apply() + } + + @JvmStatic + fun isRadioSectionVisible(): Boolean { + return App.getInstance().preferences.getBoolean(RADIO_SECTION_VISIBILITY, true) + } + + @JvmStatic + fun setRadioSectionHidden() { + App.getInstance().preferences.edit().putBoolean(RADIO_SECTION_VISIBILITY, false).apply() + } + + @JvmStatic + fun isMusicDirectorySectionVisible(): Boolean { + return App.getInstance().preferences.getBoolean(MUSIC_DIRECTORY_SECTION_VISIBILITY, true) + } + + @JvmStatic + fun getReplayGainMode(): String? { + return App.getInstance().preferences.getString(REPLAY_GAIN_MODE, "disabled") + } + + @JvmStatic + fun isServerPrioritized(): Boolean { + return App.getInstance().preferences.getBoolean(AUDIO_TRANSCODE_PRIORITY, false) + } + + @JvmStatic + fun getStreamingCacheStoragePreference(): Int { + return App.getInstance().preferences.getString(STREAMING_CACHE_STORAGE, "0")!!.toInt() + } + + @JvmStatic + fun setStreamingCacheStoragePreference(streamingCachePreference: Int) { + return App.getInstance().preferences.edit().putString( + STREAMING_CACHE_STORAGE, + streamingCachePreference.toString() + ).apply() + } + + @JvmStatic + fun getDownloadStoragePreference(): Int { + return App.getInstance().preferences.getString(DOWNLOAD_STORAGE, "0")!!.toInt() + } + + @JvmStatic + fun setDownloadStoragePreference(storagePreference: Int) { + return App.getInstance().preferences.edit().putString( + DOWNLOAD_STORAGE, + storagePreference.toString() + ).apply() + } + + @JvmStatic + fun getDownloadDirectoryUri(): String? { + return App.getInstance().preferences.getString(DOWNLOAD_DIRECTORY_URI, null) + } + + @JvmStatic + fun setDownloadDirectoryUri(uri: String?) { + val current = App.getInstance().preferences.getString(DOWNLOAD_DIRECTORY_URI, null) + if (current != uri) { + ExternalDownloadMetadataStore.clear() + } + App.getInstance().preferences.edit().putString(DOWNLOAD_DIRECTORY_URI, uri).apply() + } + + @JvmStatic + fun getDefaultDownloadViewType(): String { + return App.getInstance().preferences.getString( + DEFAULT_DOWNLOAD_VIEW_TYPE, + Constants.DOWNLOAD_TYPE_TRACK + )!! + } + + @JvmStatic + fun setDefaultDownloadViewType(viewType: String) { + return App.getInstance().preferences.edit().putString( + DEFAULT_DOWNLOAD_VIEW_TYPE, + viewType + ).apply() + } + + @JvmStatic + fun preferTranscodedDownload(): Boolean { + return App.getInstance().preferences.getBoolean(AUDIO_TRANSCODE_DOWNLOAD, false) + } + + @JvmStatic + fun isServerPrioritizedInTranscodedDownload(): Boolean { + return App.getInstance().preferences.getBoolean(AUDIO_TRANSCODE_DOWNLOAD_PRIORITY, false) + } + + @JvmStatic + fun getBitrateTranscodedDownload(): String { + return App.getInstance().preferences.getString(MAX_BITRATE_DOWNLOAD, "0")!! + } + + @JvmStatic + fun getAudioTranscodeFormatTranscodedDownload(): String { + return App.getInstance().preferences.getString(AUDIO_TRANSCODE_FORMAT_DOWNLOAD, "raw")!! + } + + @JvmStatic + fun isSharingEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(SHARE, false) + } + + @JvmStatic + fun isScrobblingEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(SCROBBLING, true) + } + + @JvmStatic + fun askForEstimateContentLength(): Boolean { + return App.getInstance().preferences.getBoolean(ESTIMATE_CONTENT_LENGTH, false) + } + + @JvmStatic + fun getBufferingStrategy(): Double { + return App.getInstance().preferences.getString(BUFFERING_STRATEGY, "1")!!.toDouble() + } + + @JvmStatic + fun getMinStarRatingAccepted(): Int { + return App.getInstance().preferences.getInt(MIN_STAR_RATING, 0) + } + + @JvmStatic + fun isDisplayAlwaysOn(): Boolean { + return App.getInstance().preferences.getBoolean(ALWAYS_ON_DISPLAY, false) + } + + @JvmStatic + fun showAudioQuality(): Boolean { + return App.getInstance().preferences.getBoolean(AUDIO_QUALITY_PER_ITEM, false) + } + + @JvmStatic + fun getHomeSectorList(): String? { + return App.getInstance().preferences.getString(HOME_SECTOR_LIST, null) + } + + @JvmStatic + fun setHomeSectorList(extension: List?) { + App.getInstance().preferences.edit().putString(HOME_SECTOR_LIST, Gson().toJson(extension)).apply() + } + + @JvmStatic + fun showItemStarRating(): Boolean { + return App.getInstance().preferences.getBoolean(SONG_RATING_PER_ITEM, false) + } + + @JvmStatic + fun showItemRating(): Boolean { + return App.getInstance().preferences.getBoolean(RATING_PER_ITEM, false) + } + + + @JvmStatic + fun isGithubUpdateEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(GITHUB_UPDATE_CHECK, true) + } + + @JvmStatic + fun showTempusUpdateDialog(): Boolean { + return App.getInstance().preferences.getLong( + NEXT_UPDATE_CHECK, 0 + ) + 86400000 < System.currentTimeMillis() + } + + @JvmStatic + fun setTempusUpdateReminder() { + App.getInstance().preferences.edit().putLong(NEXT_UPDATE_CHECK, System.currentTimeMillis()).apply() + } + + @JvmStatic + fun isContinuousPlayEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(CONTINUOUS_PLAY, true) + } + + @JvmStatic + fun setLastInstantMix() { + App.getInstance().preferences.edit().putLong(LAST_INSTANT_MIX, System.currentTimeMillis()).apply() + } + + @JvmStatic + fun isInstantMixUsable(): Boolean { + return App.getInstance().preferences.getLong( + LAST_INSTANT_MIX, 0 + ) + 5000 < System.currentTimeMillis() + } + + @JvmStatic + fun setAllowPlaylistDuplicates(allowDuplicates: Boolean) { + return App.getInstance().preferences.edit().putString( + ALLOW_PLAYLIST_DUPLICATES, + allowDuplicates.toString() + ).apply() + } + + @JvmStatic + fun allowPlaylistDuplicates(): Boolean { + return App.getInstance().preferences.getBoolean(ALLOW_PLAYLIST_DUPLICATES, false) + } + + @JvmStatic + fun setEqualizerEnabled(enabled: Boolean) { + App.getInstance().preferences.edit().putBoolean(EQUALIZER_ENABLED, enabled).apply() + } + + @JvmStatic + fun isEqualizerEnabled(): Boolean { + return App.getInstance().preferences.getBoolean(EQUALIZER_ENABLED, false) + } + + @JvmStatic + fun setEqualizerBandLevels(bandLevels: ShortArray) { + val asString = bandLevels.joinToString(",") + App.getInstance().preferences.edit().putString(EQUALIZER_BAND_LEVELS, asString).apply() + } + + @JvmStatic + fun getEqualizerBandLevels(bandCount: Short): ShortArray { + val str = App.getInstance().preferences.getString(EQUALIZER_BAND_LEVELS, null) + if (str.isNullOrBlank()) { + return ShortArray(bandCount.toInt()) + } + val parts = str.split(",") + if (parts.size < bandCount) return ShortArray(bandCount.toInt()) + return ShortArray(bandCount.toInt()) { i -> parts[i].toShortOrNull() ?: 0 } + } + + @JvmStatic + fun showAlbumDetail(): Boolean { + return App.getInstance().preferences.getBoolean(ALBUM_DETAIL, false) + } + + @JvmStatic + fun getAlbumSortOrder(): String { + return App.getInstance().preferences.getString(ALBUM_SORT_ORDER, DEFAULT_ALBUM_SORT_ORDER) ?: DEFAULT_ALBUM_SORT_ORDER + } + + @JvmStatic + fun setAlbumSortOrder(sortOrder: String) { + App.getInstance().preferences.edit().putString(ALBUM_SORT_ORDER, sortOrder).apply() + } + + @JvmStatic + fun getArtistSortOrder(): String { + val sort_by_album_count = App.getInstance().preferences.getBoolean(ARTIST_SORT_BY_ALBUM_COUNT, false) + Log.d("Preferences", "getSortOrder") + if (sort_by_album_count) + return Constants.ARTIST_ORDER_BY_ALBUM_COUNT + else + return Constants.ARTIST_ORDER_BY_NAME + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/ReplayGainUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/ReplayGainUtil.java new file mode 100644 index 0000000..510673c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/ReplayGainUtil.java @@ -0,0 +1,178 @@ +package com.cappielloantonio.tempo.util; + +import androidx.annotation.OptIn; +import androidx.media3.common.MediaItem; +import androidx.media3.common.Metadata; +import androidx.media3.common.Tracks; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.exoplayer.ExoPlayer; + +import com.cappielloantonio.tempo.model.ReplayGain; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@OptIn(markerClass = UnstableApi.class) +public class ReplayGainUtil { + private static final String[] tags = {"REPLAYGAIN_TRACK_GAIN", "REPLAYGAIN_ALBUM_GAIN", "R128_TRACK_GAIN", "R128_ALBUM_GAIN"}; + + public static void setReplayGain(ExoPlayer player, Tracks tracks) { + List metadata = getMetadata(tracks); + List gains = getReplayGains(metadata); + + applyReplayGain(player, gains); + } + + private static List getMetadata(Tracks tracks) { + List metadata = new ArrayList<>(); + + if (tracks != null && !tracks.getGroups().isEmpty()) { + for (int i = 0; i < tracks.getGroups().size(); i++) { + Tracks.Group group = tracks.getGroups().get(i); + + if (group != null && group.getMediaTrackGroup() != null) { + for (int j = 0; j < group.getMediaTrackGroup().length; j++) { + metadata.add(group.getTrackFormat(j).metadata); + } + } + } + } + + return metadata; + } + + private static List getReplayGains(List metadata) { + List gains = new ArrayList<>(); + + if (metadata != null) { + for (int i = 0; i < metadata.size(); i++) { + Metadata singleMetadata = metadata.get(i); + + if (singleMetadata != null) { + for (int j = 0; j < singleMetadata.length(); j++) { + Metadata.Entry entry = singleMetadata.get(j); + + if (checkReplayGain(entry)) { + ReplayGain replayGain = setReplayGains(entry); + gains.add(replayGain); + } + } + } + } + } + + if (gains.size() == 0) gains.add(0, new ReplayGain()); + if (gains.size() == 1) gains.add(1, new ReplayGain()); + + return gains; + } + + private static boolean checkReplayGain(Metadata.Entry entry) { + for (String tag : tags) { + if (entry.toString().contains(tag)) { + return true; + } + } + + return false; + } + + private static ReplayGain setReplayGains(Metadata.Entry entry) { + ReplayGain replayGain = new ReplayGain(); + + if (entry.toString().contains(tags[0])) { + replayGain.setTrackGain(parseReplayGainTag(entry)); + } + + if (entry.toString().contains(tags[1])) { + replayGain.setAlbumGain(parseReplayGainTag(entry)); + } + + if (entry.toString().contains(tags[2])) { + replayGain.setTrackGain(parseReplayGainTag(entry) / 256f); + } + + if (entry.toString().contains(tags[3])) { + replayGain.setAlbumGain(parseReplayGainTag(entry) / 256f); + } + + return replayGain; + } + + private static Float parseReplayGainTag(Metadata.Entry entry) { + try { + return Float.parseFloat(entry.toString().replaceAll("[^\\d.-]", "")); + } catch (NumberFormatException exception) { + return 0f; + } + } + + private static void applyReplayGain(ExoPlayer player, List gains) { + if (Objects.equals(Preferences.getReplayGainMode(), "disabled") || gains == null || gains.isEmpty()) { + setNoReplayGain(player); + return; + } + + if (Objects.equals(Preferences.getReplayGainMode(), "auto")) { + if (areTracksConsecutive(player)) { + setAutoReplayGain(player, gains); + } else { + setTrackReplayGain(player, gains); + } + + return; + } + + if (Objects.equals(Preferences.getReplayGainMode(), "track")) { + setTrackReplayGain(player, gains); + return; + } + + if (Objects.equals(Preferences.getReplayGainMode(), "album")) { + setAlbumReplayGain(player, gains); + return; + } + + setNoReplayGain(player); + } + + private static void setNoReplayGain(ExoPlayer player) { + setReplayGain(player, 0f); + } + + private static void setTrackReplayGain(ExoPlayer player, List gains) { + float trackGain = gains.get(0).getTrackGain() != 0f ? gains.get(0).getTrackGain() : gains.get(1).getTrackGain(); + + setReplayGain(player, trackGain != 0f ? trackGain : 0f); + } + + private static void setAlbumReplayGain(ExoPlayer player, List gains) { + float albumGain = gains.get(0).getAlbumGain() != 0f ? gains.get(0).getAlbumGain() : gains.get(1).getAlbumGain(); + + setReplayGain(player, albumGain != 0f ? albumGain : 0f); + } + + private static void setAutoReplayGain(ExoPlayer player, List gains) { + float albumGain = gains.get(0).getAlbumGain() != 0f ? gains.get(0).getAlbumGain() : gains.get(1).getAlbumGain(); + float trackGain = gains.get(0).getTrackGain() != 0f ? gains.get(0).getTrackGain() : gains.get(1).getTrackGain(); + + setReplayGain(player, albumGain != 0f ? albumGain : trackGain); + } + + private static boolean areTracksConsecutive(ExoPlayer player) { + MediaItem currentMediaItem = player.getCurrentMediaItem(); + int currentMediaItemIndex = player.getCurrentMediaItemIndex(); + MediaItem pastMediaItem = currentMediaItemIndex > 0 ? player.getMediaItemAt(currentMediaItemIndex - 1) : null; + + return currentMediaItem != null && + pastMediaItem != null && + pastMediaItem.mediaMetadata.albumTitle != null && + currentMediaItem.mediaMetadata.albumTitle != null && + pastMediaItem.mediaMetadata.albumTitle.toString().equals(currentMediaItem.mediaMetadata.albumTitle.toString()); + } + + private static void setReplayGain(ExoPlayer player, float gain) { + player.setVolume((float) Math.pow(10f, gain / 20f)); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/StreamingCacheDataSource.kt b/app/src/main/java/com/cappielloantonio/tempo/util/StreamingCacheDataSource.kt new file mode 100644 index 0000000..68b52cb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/StreamingCacheDataSource.kt @@ -0,0 +1,62 @@ +package com.cappielloantonio.tempo.util + +import android.net.Uri +import android.util.Log +import androidx.media3.common.C +import androidx.media3.common.util.UnstableApi +import androidx.media3.datasource.DataSource +import androidx.media3.datasource.DataSpec +import androidx.media3.datasource.TransferListener +import androidx.media3.datasource.cache.CacheDataSource +import androidx.media3.datasource.cache.ContentMetadata + +@UnstableApi +class StreamingCacheDataSource private constructor( + private val cacheDataSource: CacheDataSource, +): DataSource { + private val TAG = "StreamingCacheDataSource" + + private var currentDataSpec: DataSpec? = null + + class Factory(private val cacheDatasourceFactory: CacheDataSource.Factory): DataSource.Factory { + override fun createDataSource(): DataSource { + return StreamingCacheDataSource(cacheDatasourceFactory.createDataSource()) + } + } + + override fun read(buffer: ByteArray, offset: Int, length: Int): Int { + return cacheDataSource.read(buffer, offset, length) + } + + override fun addTransferListener(transferListener: TransferListener) { + return cacheDataSource.addTransferListener(transferListener) + } + + override fun open(dataSpec: DataSpec): Long { + val ret = cacheDataSource.open(dataSpec) + currentDataSpec = dataSpec + return ret + } + + override fun getUri(): Uri? { + return cacheDataSource.uri + } + + override fun close() { + cacheDataSource.close() + + val dataSpec = currentDataSpec + + if (dataSpec != null) { + val cacheKey = cacheDataSource.cacheKeyFactory.buildCacheKey(dataSpec) + val contentLength = ContentMetadata.getContentLength(cacheDataSource.cache.getContentMetadata(cacheKey)); + + if (contentLength == C.LENGTH_UNSET.toLong()) { + Log.d(TAG, "Removing partial cache for $cacheKey") + cacheDataSource.cache.removeResource(cacheKey) + } else { + Log.d(TAG, "Key $cacheKey has been fully cached") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/UIUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/UIUtil.java new file mode 100644 index 0000000..2184c10 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/UIUtil.java @@ -0,0 +1,115 @@ +package com.cappielloantonio.tempo.util; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.InsetDrawable; + +import androidx.core.os.LocaleListCompat; +import androidx.recyclerview.widget.DividerItemDecoration; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.R; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +public class UIUtil { + public static int getSpanCount(int itemCount, int maxSpan) { + int itemSize = itemCount == 0 ? 1 : itemCount; + + if (itemSize / maxSpan > 0) { + return maxSpan; + } else { + return itemSize % maxSpan; + } + } + + public static DividerItemDecoration getDividerItemDecoration(Context context) { + int[] ATTRS = new int[]{android.R.attr.listDivider}; + + TypedArray a = context.obtainStyledAttributes(ATTRS); + Drawable divider = a.getDrawable(0); + InsetDrawable insetDivider = new InsetDrawable(divider, 42, 0, 42, 42); + a.recycle(); + + DividerItemDecoration itemDecoration = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL); + itemDecoration.setDrawable(insetDivider); + + return itemDecoration; + } + + private static LocaleListCompat getLocalesFromResources(Context context) { + final List tagsList = new ArrayList<>(); + + XmlPullParser xpp = context.getResources().getXml(R.xml.locale_config); + + try { + while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) { + String tagName = xpp.getName(); + + if (xpp.getEventType() == XmlPullParser.START_TAG) { + if ("locale".equals(tagName) && xpp.getAttributeCount() > 0 && xpp.getAttributeName(0).equals("name")) { + tagsList.add(xpp.getAttributeValue(0)); + } + } + + xpp.next(); + } + } catch (XmlPullParserException | IOException e) { + e.printStackTrace(); + } + + return LocaleListCompat.forLanguageTags(String.join(",", tagsList)); + } + + public static Map getLangPreferenceDropdownEntries(Context context) { + LocaleListCompat localeList = getLocalesFromResources(context); + + List> localeArrayList = new ArrayList<>(); + + String systemDefaultLabel = App.getContext().getString(R.string.settings_system_language); + String systemDefaultValue = "default"; + + for (int i = 0; i < localeList.size(); i++) { + Locale locale = localeList.get(i); + if (locale != null) { + localeArrayList.add( + new AbstractMap.SimpleEntry<>( + Util.toPascalCase(locale.getDisplayName()), + locale.toLanguageTag() + ) + ); + } + } + + localeArrayList.sort(Map.Entry.comparingByKey(String.CASE_INSENSITIVE_ORDER)); + + LinkedHashMap orderedMap = new LinkedHashMap<>(); + orderedMap.put(systemDefaultLabel, systemDefaultValue); + for (Map.Entry entry : localeArrayList) { + orderedMap.put(entry.getKey(), entry.getValue()); + } + + return orderedMap; + } + + public static String getReadableDate(Date date) { + if (date == null) { + return App.getContext().getString(R.string.share_no_expiration); + } + SimpleDateFormat formatter = new SimpleDateFormat("dd MMM, yyyy", Locale.getDefault()); + return formatter.format(date); + } + +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/Util.java b/app/src/main/java/com/cappielloantonio/tempo/util/Util.java new file mode 100644 index 0000000..822238b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/util/Util.java @@ -0,0 +1,64 @@ +package com.cappielloantonio.tempo.util; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; + +public class Util { + public static Predicate distinctByKey(Function keyExtractor) { + try { + Map uniqueMap = new ConcurrentHashMap<>(); + return t -> uniqueMap.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; + } catch (NullPointerException exception) { + return null; + } + } + + public static String toPascalCase(String name) { + if (name == null || name.isEmpty()) { + return name; + } + + StringBuilder pascalCase = new StringBuilder(); + + char newChar; + boolean toUpper = false; + char[] charArray = name.toCharArray(); + + for (int ctr = 0; ctr <= charArray.length - 1; ctr++) { + if (ctr == 0) { + newChar = Character.toUpperCase(charArray[ctr]); + pascalCase = new StringBuilder(Character.toString(newChar)); + continue; + } + + if (charArray[ctr] == '_') { + toUpper = true; + continue; + } + + if (toUpper) { + newChar = Character.toUpperCase(charArray[ctr]); + pascalCase.append(newChar); + toUpper = false; + continue; + } + + pascalCase.append(charArray[ctr]); + } + + return pascalCase.toString(); + } + + public static String encode(String value) { + try { + return URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException ex) { + return value; + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumBottomSheetViewModel.java new file mode 100644 index 0000000..da1ec83 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumBottomSheetViewModel.java @@ -0,0 +1,132 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Observer; + +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.interfaces.StarCallback; +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.FavoriteRepository; +import com.cappielloantonio.tempo.repository.SharingRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.NetworkUtil; +import com.cappielloantonio.tempo.util.Preferences; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +public class AlbumBottomSheetViewModel extends AndroidViewModel { + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + private final FavoriteRepository favoriteRepository; + private final SharingRepository sharingRepository; + + private AlbumID3 album; + + public AlbumBottomSheetViewModel(@NonNull Application application) { + super(application); + + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + favoriteRepository = new FavoriteRepository(); + sharingRepository = new SharingRepository(); + } + + public AlbumID3 getAlbum() { + return album; + } + + public void setAlbum(AlbumID3 album) { + this.album = album; + } + + public LiveData getArtist() { + return artistRepository.getArtist(album.getArtistId()); + } + + public MutableLiveData> getAlbumTracks() { + return albumRepository.getAlbumTracks(album.getId()); + } + + public void setFavorite(Context context) { + if (album.getStarred() != null) { + if (NetworkUtil.isOffline()) { + removeFavoriteOffline(); + } else { + removeFavoriteOnline(); + } + } else { + if (NetworkUtil.isOffline()) { + setFavoriteOffline(); + } else { + setFavoriteOnline(context); + } + } + } + + public MutableLiveData shareAlbum() { + return sharingRepository.createShare(album.getId(), album.getName(), null); + } + + private void removeFavoriteOffline() { + favoriteRepository.starLater(null, album.getId(), null, false); + album.setStarred(null); + } + + private void removeFavoriteOnline() { + favoriteRepository.unstar(null, album.getId(), null, new StarCallback() { + @Override + public void onError() { + favoriteRepository.starLater(null, album.getId(), null, false); + } + }); + + album.setStarred(null); + } + + private void setFavoriteOffline() { + favoriteRepository.starLater(null, album.getId(), null, true); + album.setStarred(new Date()); + } + + private void setFavoriteOnline(Context context) { + favoriteRepository.star(null, album.getId(), null, new StarCallback() { + @Override + public void onError() { + favoriteRepository.starLater(null, album.getId(), null, true); + } + }); + + album.setStarred(new Date()); + if (Preferences.isStarredAlbumsSyncEnabled()) { + AlbumRepository albumRepository = new AlbumRepository(); + MutableLiveData> tracksLiveData = albumRepository.getAlbumTracks(album.getId()); + + tracksLiveData.observeForever(new Observer>() { + @Override + public void onChanged(List songs) { + if (songs != null && !songs.isEmpty()) { + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownloads(songs), + songs.stream().map(Download::new).collect(Collectors.toList()) + ); + } + tracksLiveData.removeObserver(this); + } + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java new file mode 100644 index 0000000..a18e645 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java @@ -0,0 +1,105 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.interfaces.MediaCallback; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; + +public class AlbumCatalogueViewModel extends AndroidViewModel { + private final MutableLiveData> albumList = new MutableLiveData<>(new ArrayList<>()); + private final MutableLiveData loading = new MutableLiveData<>(true); + + private int page = 0; + private Status status = Status.STOPPED; + + public AlbumCatalogueViewModel(@NonNull Application application) { + super(application); + } + + public LiveData> getAlbumList() { + return albumList; + } + + public LiveData getLoadingStatus() { + return loading; + } + + public void loadAlbums() { + page = 0; + status = Status.RUNNING; + albumList.setValue(new ArrayList<>()); + loadAlbums(500); + } + + public void stopLoading() { + status = Status.STOPPED; + } + + private void loadAlbums(int size) { + retrieveAlbums(new MediaCallback() { + @Override + public void onError(Exception exception) { + } + + @Override + public void onLoadMedia(List media) { + if (status == Status.STOPPED) { + loading.setValue(false); + return; + } + + List liveAlbum = albumList.getValue(); + + liveAlbum.addAll((List) media); + albumList.setValue(liveAlbum); + + if (media.size() == size) { + loadAlbums(size); + loading.setValue(true); + } else { + status = Status.STOPPED; + loading.setValue(false); + } + } + }, size, size * page++); + } + + + private void retrieveAlbums(MediaCallback callback, int size, int offset) { + App.getSubsonicClientInstance(false) + .getAlbumSongListClient() + .getAlbumList2("alphabeticalByName", size, offset, null, null) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null && response.body().getSubsonicResponse().getAlbumList2().getAlbums() != null) { + List albumList = new ArrayList<>(response.body().getSubsonicResponse().getAlbumList2().getAlbums()); + callback.onLoadMedia(albumList); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + callback.onError(new Exception(t.getMessage())); + } + }); + } + + private enum Status { + RUNNING, + STOPPED + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumListPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumListPageViewModel.java new file mode 100644 index 0000000..956ba6f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumListPageViewModel.java @@ -0,0 +1,67 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Comparator; +import java.util.List; + +public class AlbumListPageViewModel extends AndroidViewModel { + private final AlbumRepository albumRepository; + private final DownloadRepository downloadRepository; + + public String title; + public ArtistID3 artist; + + private MutableLiveData> albumList; + + public int maxNumber = 500; + + public AlbumListPageViewModel(@NonNull Application application) { + super(application); + + albumRepository = new AlbumRepository(); + downloadRepository = new DownloadRepository(); + } + + public LiveData> getAlbumList(LifecycleOwner owner) { + albumList = new MutableLiveData<>(new ArrayList<>()); + + switch (title) { + case Constants.ALBUM_RECENTLY_PLAYED: + albumRepository.getAlbums("recent", maxNumber, null, null).observe(owner, albums -> albumList.setValue(albums)); + break; + case Constants.ALBUM_MOST_PLAYED: + albumRepository.getAlbums("frequent", maxNumber, null, null).observe(owner, albums -> albumList.setValue(albums)); + break; + case Constants.ALBUM_RECENTLY_ADDED: + albumRepository.getAlbums("newest", maxNumber, null, null).observe(owner, albums -> albumList.setValue(albums)); + break; + case Constants.ALBUM_STARRED: + albumList = albumRepository.getStarredAlbums(false, -1); + break; + case Constants.ALBUM_NEW_RELEASES: + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + albumRepository.getAlbums("byYear", maxNumber, currentYear, currentYear).observe(owner, albums -> { + albums.sort(Comparator.comparing(AlbumID3::getCreated).reversed()); + albumList.postValue(albums.subList(0, Math.min(20, albums.size()))); + }); + break; + } + + return albumList; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumPageViewModel.java new file mode 100644 index 0000000..0979f40 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumPageViewModel.java @@ -0,0 +1,59 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.AlbumInfo; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.List; + +public class AlbumPageViewModel extends AndroidViewModel { + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + private String albumId; + private String artistId; + private final MutableLiveData album = new MutableLiveData<>(null); + + public AlbumPageViewModel(@NonNull Application application) { + super(application); + + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + } + + public LiveData> getAlbumSongLiveList() { + return albumRepository.getAlbumTracks(albumId); + } + + public MutableLiveData getAlbum() { + return album; + } + + public void setAlbum(LifecycleOwner owner, AlbumID3 album) { + this.albumId = album.getId(); + this.album.postValue(album); + this.artistId = album.getArtistId(); + + albumRepository.getAlbum(album.getId()).observe(owner, albums -> { + if (albums != null) this.album.setValue(albums); + }); + } + + public LiveData getArtist() { + return artistRepository.getArtistInfo(artistId); + } + + public LiveData getAlbumInfo() { + return albumRepository.getAlbumInfo(albumId); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistBottomSheetViewModel.java new file mode 100644 index 0000000..2c008d8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistBottomSheetViewModel.java @@ -0,0 +1,118 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.content.Context; +import android.util.Log; +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.interfaces.StarCallback; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.FavoriteRepository; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.NetworkUtil; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.Preferences; + +import java.util.Date; +import java.util.stream.Collectors; +import java.util.List; + +public class ArtistBottomSheetViewModel extends AndroidViewModel { + private final ArtistRepository artistRepository; + private final FavoriteRepository favoriteRepository; + + private ArtistID3 artist; + + public ArtistBottomSheetViewModel(@NonNull Application application) { + super(application); + + artistRepository = new ArtistRepository(); + favoriteRepository = new FavoriteRepository(); + } + + public ArtistID3 getArtist() { + return artist; + } + + public void setArtist(ArtistID3 artist) { + this.artist = artist; + } + + public void setFavorite(Context context) { + if (artist.getStarred() != null) { + if (NetworkUtil.isOffline()) { + removeFavoriteOffline(); + } else { + removeFavoriteOnline(); + } + } else { + if (NetworkUtil.isOffline()) { + setFavoriteOffline(context); + } else { + setFavoriteOnline(context); + } + } + } + + private void removeFavoriteOffline() { + favoriteRepository.starLater(null, null, artist.getId(), false); + artist.setStarred(null); + } + + private void removeFavoriteOnline() { + favoriteRepository.unstar(null, null, artist.getId(), new StarCallback() { + @Override + public void onError() { + favoriteRepository.starLater(null, null, artist.getId(), false); + } + }); + + artist.setStarred(null); + } + + private void setFavoriteOffline(Context context) { + favoriteRepository.starLater(null, null, artist.getId(), true); + artist.setStarred(new Date()); + } + + private void setFavoriteOnline(Context context) { + favoriteRepository.star(null, null, artist.getId(), new StarCallback() { + @Override + public void onError() { + favoriteRepository.starLater(null, null, artist.getId(), true); + } + }); + + artist.setStarred(new Date()); + + Log.d("ArtistSync", "Checking preference: " + Preferences.isStarredArtistsSyncEnabled()); + + if (Preferences.isStarredArtistsSyncEnabled()) { + Log.d("ArtistSync", "Starting artist sync for: " + artist.getName()); + + artistRepository.getArtistAllSongs(artist.getId(), new ArtistRepository.ArtistSongsCallback() { + @Override + public void onSongsCollected(List songs) { + Log.d("ArtistSync", "Callback triggered with songs: " + (songs != null ? songs.size() : 0)); + if (songs != null && !songs.isEmpty()) { + Log.d("ArtistSync", "Starting download of " + songs.size() + " songs"); + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownloads(songs), + songs.stream().map(Download::new).collect(Collectors.toList()) + ); + Log.d("ArtistSync", "Download started successfully"); + } else { + Log.d("ArtistSync", "No songs to download"); + } + } + }); + } else { + Log.d("ArtistSync", "Artist sync preference is disabled"); + } + } + /// +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistCatalogueViewModel.java new file mode 100644 index 0000000..76b5397 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistCatalogueViewModel.java @@ -0,0 +1,56 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.App; +import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.IndexID3; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; + +public class ArtistCatalogueViewModel extends AndroidViewModel { + private final MutableLiveData> artistList = new MutableLiveData<>(new ArrayList<>()); + + public ArtistCatalogueViewModel(@NonNull Application application) { + super(application); + } + + public LiveData> getArtistList() { + return artistList; + } + + public void loadArtists() { + App.getSubsonicClientInstance(false) + .getBrowsingClient() + .getArtists() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtists() != null) { + List artists = new ArrayList<>(); + + for (IndexID3 index : response.body().getSubsonicResponse().getArtists().getIndices()) { + artists.addAll(index.getArtists()); + } + + artistList.setValue(artists); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistListPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistListPageViewModel.java new file mode 100644 index 0000000..7d4d09a --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistListPageViewModel.java @@ -0,0 +1,61 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.TreeSet; +import java.util.stream.Collectors; + +public class ArtistListPageViewModel extends AndroidViewModel { + private final ArtistRepository artistRepository; + private final DownloadRepository downloadRepository; + + public String title; + + private MutableLiveData> artistList; + + public ArtistListPageViewModel(@NonNull Application application) { + super(application); + + artistRepository = new ArtistRepository(); + downloadRepository = new DownloadRepository(); + } + + public LiveData> getArtistList(LifecycleOwner owner) { + artistList = new MutableLiveData<>(new ArrayList<>()); + + switch (title) { + case Constants.ARTIST_STARRED: + artistList = artistRepository.getStarredArtists(false, -1); + break; + case Constants.ARTIST_DOWNLOADED: + downloadRepository.getLiveDownload().observe(owner, downloads -> { + List unique = downloads + .stream() + .collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Download::getArtist))), ArrayList::new) + ); + + // TODO + // artistList.setValue(MappingUtil.mapDownloadToArtist(unique)); + }); + break; + } + + return artistList; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistPageViewModel.java new file mode 100644 index 0000000..a389cf7 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ArtistPageViewModel.java @@ -0,0 +1,58 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistInfo2; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.List; + +public class ArtistPageViewModel extends AndroidViewModel { + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + + private ArtistID3 artist; + + public ArtistPageViewModel(@NonNull Application application) { + super(application); + + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + } + + public LiveData> getAlbumList() { + return albumRepository.getArtistAlbums(artist.getId()); + } + + public LiveData getArtistInfo(String id) { + return artistRepository.getArtistFullInfo(id); + } + + public LiveData> getArtistTopSongList() { + return artistRepository.getTopSongs(artist.getName(), 20); + } + + public LiveData> getArtistShuffleList() { + return artistRepository.getRandomSong(artist, 50); + } + + public LiveData> getArtistInstantMix() { + return artistRepository.getInstantMix(artist, 20); + } + + public ArtistID3 getArtist() { + return artist; + } + + public void setArtist(ArtistID3 artist) { + this.artist = artist; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java new file mode 100644 index 0000000..4fd7480 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java @@ -0,0 +1,24 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.repository.DirectoryRepository; +import com.cappielloantonio.tempo.subsonic.models.Directory; + +public class DirectoryViewModel extends AndroidViewModel { + private final DirectoryRepository directoryRepository; + + public DirectoryViewModel(@NonNull Application application) { + super(application); + + directoryRepository = new DirectoryRepository(); + } + + public LiveData loadMusicDirectory(String id) { + return directoryRepository.getMusicDirectory(id); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DownloadViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DownloadViewModel.java new file mode 100644 index 0000000..6f69cee --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DownloadViewModel.java @@ -0,0 +1,127 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.net.Uri; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.documentfile.provider.DocumentFile; + +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.model.DownloadStack; +import com.cappielloantonio.tempo.repository.DownloadRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.util.ExternalAudioReader; +import com.cappielloantonio.tempo.util.Preferences; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class DownloadViewModel extends AndroidViewModel { + private static final String TAG = "DownloadViewModel"; + + private final DownloadRepository downloadRepository; + + private final MutableLiveData> downloadedTrackSample = new MutableLiveData<>(null); + private final MutableLiveData> viewStack = new MutableLiveData<>(null); + private final MutableLiveData refreshResult = new MutableLiveData<>(); + + public DownloadViewModel(@NonNull Application application) { + super(application); + + downloadRepository = new DownloadRepository(); + + initViewStack(new DownloadStack(Preferences.getDefaultDownloadViewType(), null)); + } + + public LiveData> getDownloadedTracks(LifecycleOwner owner) { + downloadRepository.getLiveDownload().observe(owner, downloads -> downloadedTrackSample.postValue(downloads.stream().map(download -> (Child) download).collect(Collectors.toList()))); + return downloadedTrackSample; + } + + public LiveData> getViewStack() { + return viewStack; + } + + public LiveData getRefreshResult() { + return refreshResult; + } + + public void initViewStack(DownloadStack level) { + ArrayList stack = new ArrayList<>(); + stack.add(level); + viewStack.setValue(stack); + } + + public void pushViewStack(DownloadStack level) { + ArrayList stack = viewStack.getValue(); + stack.add(level); + viewStack.setValue(stack); + } + + public void popViewStack() { + ArrayList stack = viewStack.getValue(); + stack.remove(stack.size() - 1); + viewStack.setValue(stack); + } + + public void refreshExternalDownloads() { + new Thread(() -> { + String directoryUri = Preferences.getDownloadDirectoryUri(); + if (directoryUri == null) { + refreshResult.postValue(-1); + return; + } + + List downloads = downloadRepository.getAllDownloads(); + if (downloads == null || downloads.isEmpty()) { + refreshResult.postValue(0); + return; + } + + ArrayList toRemove = new ArrayList<>(); + + for (Download download : downloads) { + String uriString = download.getDownloadUri(); + if (uriString == null || uriString.isEmpty()) { + continue; + } + + Uri uri = Uri.parse(uriString); + if (uri.getScheme() == null || !uri.getScheme().equalsIgnoreCase("content")) { + continue; + } + + DocumentFile file; + try { + file = DocumentFile.fromSingleUri(getApplication(), uri); + } catch (SecurityException exception) { + file = null; + } + + if (file == null || !file.exists()) { + toRemove.add(download); + } + } + + if (!toRemove.isEmpty()) { + ArrayList ids = new ArrayList<>(); + for (Download download : toRemove) { + ids.add(download.getId()); + ExternalAudioReader.removeMetadata(download); + } + + downloadRepository.delete(ids); + ExternalAudioReader.refreshCache(); + refreshResult.postValue(ids.size()); + } else { + refreshResult.postValue(0); + } + }).start(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/FilterViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/FilterViewModel.java new file mode 100644 index 0000000..92d5b66 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/FilterViewModel.java @@ -0,0 +1,48 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.repository.GenreRepository; +import com.cappielloantonio.tempo.subsonic.models.Genre; + +import java.util.ArrayList; +import java.util.List; + +public class FilterViewModel extends AndroidViewModel { + private final GenreRepository genreRepository; + + private final ArrayList selectedFiltersID = new ArrayList<>(); + private final ArrayList selectedFilters = new ArrayList<>(); + + public FilterViewModel(@NonNull Application application) { + super(application); + + genreRepository = new GenreRepository(); + } + + public LiveData> getGenreList() { + return genreRepository.getGenres(false, -1); + } + + public void addFilter(String filterID, String filterName) { + selectedFiltersID.add(filterID); + selectedFilters.add(filterName); + } + + public void removeFilter(String filterID, String filterName) { + selectedFiltersID.remove(filterID); + selectedFilters.remove(filterName); + } + + public ArrayList getFilters() { + return selectedFiltersID; + } + + public ArrayList getFilterNames() { + return selectedFilters; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/GenreCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/GenreCatalogueViewModel.java new file mode 100644 index 0000000..3166d8e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/GenreCatalogueViewModel.java @@ -0,0 +1,26 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.repository.GenreRepository; +import com.cappielloantonio.tempo.subsonic.models.Genre; + +import java.util.List; + +public class GenreCatalogueViewModel extends AndroidViewModel { + private final GenreRepository genreRepository; + + public GenreCatalogueViewModel(@NonNull Application application) { + super(application); + + genreRepository = new GenreRepository(); + } + + public LiveData> getGenreList() { + return genreRepository.getGenres(false, -1); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeRearrangementViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeRearrangementViewModel.java new file mode 100644 index 0000000..9c34b29 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeRearrangementViewModel.java @@ -0,0 +1,78 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.model.HomeSector; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; + +import java.util.ArrayList; +import java.util.List; + +public class HomeRearrangementViewModel extends AndroidViewModel { + private List sectors = new ArrayList<>(); + + public HomeRearrangementViewModel(@NonNull Application application) { + super(application); + } + + public List getHomeSectorList() { + if (sectors != null && !sectors.isEmpty()) return sectors; + + if (Preferences.getHomeSectorList() != null && !Preferences.getHomeSectorList().equals("null")) { + sectors = new Gson().fromJson( + Preferences.getHomeSectorList(), + new TypeToken>() { + }.getType() + ); + } else { + sectors = fillStandardHomeSectorList(); + } + + return sectors; + } + + public void orderSectorLiveListAfterSwap(List sectors) { + this.sectors = sectors; + } + + public void saveHomeSectorList(List sectors) { + Preferences.setHomeSectorList(sectors); + } + + public void resetHomeSectorList() { + Preferences.setHomeSectorList(null); + } + + public void closeDialog() { + sectors = null; + } + + private List fillStandardHomeSectorList() { + List sectors = new ArrayList<>(); + + sectors.add(new HomeSector(Constants.HOME_SECTOR_DISCOVERY, getApplication().getString(R.string.home_title_discovery), true, 1)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_MADE_FOR_YOU, getApplication().getString(R.string.home_title_made_for_you), true, 2)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_BEST_OF, getApplication().getString(R.string.home_title_best_of), true, 3)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_RADIO_STATION, getApplication().getString(R.string.home_title_radio_station), true, 4)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_TOP_SONGS, getApplication().getString(R.string.home_title_top_songs), true, 5)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_STARRED_TRACKS, getApplication().getString(R.string.home_title_starred_tracks), true, 6)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_STARRED_ALBUMS, getApplication().getString(R.string.home_title_starred_albums), true, 7)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_STARRED_ARTISTS, getApplication().getString(R.string.home_title_starred_artists), true, 8)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_NEW_RELEASES, getApplication().getString(R.string.home_title_new_releases), true, 9)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_FLASHBACK, getApplication().getString(R.string.home_title_flashback), true, 10)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_MOST_PLAYED, getApplication().getString(R.string.home_title_most_played), true, 11)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_LAST_PLAYED, getApplication().getString(R.string.home_title_last_played), true, 12)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_RECENTLY_ADDED, getApplication().getString(R.string.home_title_recently_added), true, 13)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_PINNED_PLAYLISTS, getApplication().getString(R.string.home_title_pinned_playlists), true, 14)); + sectors.add(new HomeSector(Constants.HOME_SECTOR_SHARED, getApplication().getString(R.string.home_title_shares), true, 15)); + + return sectors; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java new file mode 100644 index 0000000..2089ce2 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java @@ -0,0 +1,470 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.interfaces.StarCallback; +import com.cappielloantonio.tempo.model.Chronology; +import com.cappielloantonio.tempo.model.Favorite; +import com.cappielloantonio.tempo.model.HomeSector; +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.ChronologyRepository; +import com.cappielloantonio.tempo.repository.FavoriteRepository; +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.repository.SharingRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +public class HomeViewModel extends AndroidViewModel { + private static final String TAG = "HomeViewModel"; + + private final SongRepository songRepository; + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + private final ChronologyRepository chronologyRepository; + private final FavoriteRepository favoriteRepository; + private final PlaylistRepository playlistRepository; + private final SharingRepository sharingRepository; + + private final StarredAlbumsSyncViewModel albumsSyncViewModel; + private final StarredArtistsSyncViewModel artistSyncViewModel; + + private final MutableLiveData> dicoverSongSample = new MutableLiveData<>(null); + private final MutableLiveData> newReleasedAlbum = new MutableLiveData<>(null); + private final MutableLiveData> starredTracksSample = new MutableLiveData<>(null); + private final MutableLiveData> starredArtistsSample = new MutableLiveData<>(null); + private final MutableLiveData> bestOfArtists = new MutableLiveData<>(null); + private final MutableLiveData> starredTracks = new MutableLiveData<>(null); + private final MutableLiveData> starredAlbums = new MutableLiveData<>(null); + private final MutableLiveData> starredArtists = new MutableLiveData<>(null); + private final MutableLiveData> mostPlayedAlbumSample = new MutableLiveData<>(null); + private final MutableLiveData> recentlyPlayedAlbumSample = new MutableLiveData<>(null); + private final MutableLiveData> years = new MutableLiveData<>(null); + private final MutableLiveData> recentlyAddedAlbumSample = new MutableLiveData<>(null); + + private final MutableLiveData> thisGridTopSong = new MutableLiveData<>(null); + private final MutableLiveData> mediaInstantMix = new MutableLiveData<>(null); + private final MutableLiveData> artistInstantMix = new MutableLiveData<>(null); + private final MutableLiveData> artistBestOf = new MutableLiveData<>(null); + private final MutableLiveData> pinnedPlaylists = new MutableLiveData<>(null); + private final MutableLiveData> shares = new MutableLiveData<>(null); + + private List sectors; + + public HomeViewModel(@NonNull Application application) { + super(application); + + setHomeSectorList(); + + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + chronologyRepository = new ChronologyRepository(); + favoriteRepository = new FavoriteRepository(); + playlistRepository = new PlaylistRepository(); + sharingRepository = new SharingRepository(); + + albumsSyncViewModel = new StarredAlbumsSyncViewModel(application); + artistSyncViewModel = new StarredArtistsSyncViewModel(application); + + setOfflineFavorite(); + } + + public LiveData> getDiscoverSongSample(LifecycleOwner owner) { + if (dicoverSongSample.getValue() == null) { + songRepository.getRandomSample(10, null, null).observe(owner, dicoverSongSample::postValue); + } + + return dicoverSongSample; + } + + public LiveData> getRandomShuffleSample() { + return songRepository.getRandomSample(1000, null, null); + } + + public LiveData> getChronologySample(LifecycleOwner owner) { + Calendar cal = Calendar.getInstance(); + String server = Preferences.getServerId(); + + int currentWeek = cal.get(Calendar.WEEK_OF_YEAR); + long start = cal.getTimeInMillis(); + + cal.set(Calendar.WEEK_OF_YEAR, currentWeek - 1); + long end = cal.getTimeInMillis(); + + chronologyRepository.getChronology(server, start, end).observe(owner, thisGridTopSong::postValue); + return thisGridTopSong; + } + + public LiveData> getRecentlyReleasedAlbums(LifecycleOwner owner) { + if (newReleasedAlbum.getValue() == null) { + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + + albumRepository.getAlbums("byYear", 500, currentYear, currentYear).observe(owner, albums -> { + if (albums != null) { + albums.sort(Comparator.comparing(AlbumID3::getCreated).reversed()); + newReleasedAlbum.postValue(albums.subList(0, Math.min(20, albums.size()))); + } + }); + } + + return newReleasedAlbum; + } + + public LiveData> getStarredTracksSample(LifecycleOwner owner) { + if (starredTracksSample.getValue() == null) { + songRepository.getStarredSongs(true, 10).observe(owner, starredTracksSample::postValue); + } + + return starredTracksSample; + } + + public LiveData> getStarredArtistsSample(LifecycleOwner owner) { + if (starredArtistsSample.getValue() == null) { + artistRepository.getStarredArtists(true, 10).observe(owner, starredArtistsSample::postValue); + } + + return starredArtistsSample; + } + + public LiveData> getBestOfArtists(LifecycleOwner owner) { + if (bestOfArtists.getValue() == null) { + artistRepository.getStarredArtists(true, 20).observe(owner, bestOfArtists::postValue); + } + + return bestOfArtists; + } + + public LiveData> getStarredTracks(LifecycleOwner owner) { + if (starredTracks.getValue() == null) { + songRepository.getStarredSongs(true, 20).observe(owner, starredTracks::postValue); + } + + return starredTracks; + } + + public LiveData> getStarredAlbums(LifecycleOwner owner) { + if (starredAlbums.getValue() == null) { + albumRepository.getStarredAlbums(true, 20).observe(owner, starredAlbums::postValue); + } + + return starredAlbums; + } + + public LiveData> getAllStarredAlbumSongs() { + return albumsSyncViewModel.getAllStarredAlbumSongs(); + } + + public LiveData> getAllStarredArtistSongs() { + return artistSyncViewModel.getAllStarredArtistSongs(); + } + + public LiveData> getStarredArtists(LifecycleOwner owner) { + if (starredArtists.getValue() == null) { + artistRepository.getStarredArtists(true, 20).observe(owner, starredArtists::postValue); + } + + return starredArtists; + } + + public LiveData> getYearList(LifecycleOwner owner) { + if (years.getValue() == null) { + albumRepository.getDecades().observe(owner, years::postValue); + } + + return years; + } + + public LiveData> getMostPlayedAlbums(LifecycleOwner owner) { + if (mostPlayedAlbumSample.getValue() == null) { + albumRepository.getAlbums("frequent", 20, null, null).observe(owner, mostPlayedAlbumSample::postValue); + } + + return mostPlayedAlbumSample; + } + + public LiveData> getMostRecentlyAddedAlbums(LifecycleOwner owner) { + if (recentlyAddedAlbumSample.getValue() == null) { + albumRepository.getAlbums("newest", 20, null, null).observe(owner, recentlyAddedAlbumSample::postValue); + } + + return recentlyAddedAlbumSample; + } + + public LiveData> getRecentlyPlayedAlbumList(LifecycleOwner owner) { + if (recentlyPlayedAlbumSample.getValue() == null) { + albumRepository.getAlbums("recent", 20, null, null).observe(owner, recentlyPlayedAlbumSample::postValue); + } + + return recentlyPlayedAlbumSample; + } + + public LiveData> getMediaInstantMix(LifecycleOwner owner, Child media) { + mediaInstantMix.setValue(Collections.emptyList()); + + songRepository.getInstantMix(media.getId(), 20).observe(owner, mediaInstantMix::postValue); + + return mediaInstantMix; + } + + public LiveData> getArtistInstantMix(LifecycleOwner owner, ArtistID3 artist) { + artistInstantMix.setValue(Collections.emptyList()); + + artistRepository.getTopSongs(artist.getName(), 10).observe(owner, artistInstantMix::postValue); + + return artistInstantMix; + } + + public LiveData> getArtistBestOf(LifecycleOwner owner, ArtistID3 artist) { + artistBestOf.setValue(Collections.emptyList()); + + artistRepository.getTopSongs(artist.getName(), 10).observe(owner, artistBestOf::postValue); + + return artistBestOf; + } + + public LiveData> getPinnedPlaylists(LifecycleOwner owner) { + pinnedPlaylists.setValue(Collections.emptyList()); + + playlistRepository.getPlaylists(false, -1).observe(owner, remotes -> { + playlistRepository.getPinnedPlaylists().observe(owner, locals -> { + if (remotes != null && locals != null) { + List toReturn = remotes.stream() + .filter(remote -> locals.stream().anyMatch(local -> local.getId().equals(remote.getId()))) + .collect(Collectors.toList()); + + pinnedPlaylists.setValue(toReturn); + } + }); + }); + + return pinnedPlaylists; + } + + public LiveData> getShares(LifecycleOwner owner) { + if (shares.getValue() == null) { + sharingRepository.getShares().observe(owner, shares::postValue); + } + + return shares; + } + + public LiveData> getAllStarredTracks() { + return songRepository.getStarredSongs(false, -1); + } + + public void changeChronologyPeriod(LifecycleOwner owner, int period) { + Calendar cal = Calendar.getInstance(); + String server = Preferences.getServerId(); + int currentWeek = cal.get(Calendar.WEEK_OF_YEAR); + + long start = 0; + long end = 0; + + if (period == 0) { + start = cal.getTimeInMillis(); + cal.set(Calendar.WEEK_OF_YEAR, currentWeek - 1); + end = cal.getTimeInMillis(); + } else if (period == 1) { + start = cal.getTimeInMillis(); + cal.set(Calendar.WEEK_OF_YEAR, currentWeek - 4); + end = cal.getTimeInMillis(); + } else if (period == 2) { + start = cal.getTimeInMillis(); + cal.set(Calendar.WEEK_OF_YEAR, currentWeek - 52); + end = cal.getTimeInMillis(); + } + + chronologyRepository.getChronology(server, start, end).observe(owner, thisGridTopSong::postValue); + } + + public void refreshDiscoverySongSample(LifecycleOwner owner) { + songRepository.getRandomSample(10, null, null).observe(owner, dicoverSongSample::postValue); + } + + public void refreshSimilarSongSample(LifecycleOwner owner) { + songRepository.getStarredSongs(true, 10).observe(owner, starredTracksSample::postValue); + } + + public void refreshRadioArtistSample(LifecycleOwner owner) { + artistRepository.getStarredArtists(true, 10).observe(owner, starredArtistsSample::postValue); + } + + public void refreshBestOfArtist(LifecycleOwner owner) { + artistRepository.getStarredArtists(true, 20).observe(owner, bestOfArtists::postValue); + } + + public void refreshStarredTracks(LifecycleOwner owner) { + songRepository.getStarredSongs(true, 20).observe(owner, starredTracks::postValue); + } + + public void refreshStarredAlbums(LifecycleOwner owner) { + albumRepository.getStarredAlbums(true, 20).observe(owner, starredAlbums::postValue); + } + + public void refreshStarredArtists(LifecycleOwner owner) { + artistRepository.getStarredArtists(true, 20).observe(owner, starredArtists::postValue); + } + + public void refreshMostPlayedAlbums(LifecycleOwner owner) { + albumRepository.getAlbums("frequent", 20, null, null).observe(owner, mostPlayedAlbumSample::postValue); + } + + public void refreshMostRecentlyAddedAlbums(LifecycleOwner owner) { + albumRepository.getAlbums("newest", 20, null, null).observe(owner, recentlyAddedAlbumSample::postValue); + } + + public void refreshRecentlyPlayedAlbumList(LifecycleOwner owner) { + albumRepository.getAlbums("recent", 20, null, null).observe(owner, recentlyPlayedAlbumSample::postValue); + } + + public void refreshShares(LifecycleOwner owner) { + sharingRepository.getShares().observe(owner, this.shares::postValue); + } + + private void setHomeSectorList() { + if (Preferences.getHomeSectorList() != null && !Preferences.getHomeSectorList().equals("null")) { + sectors = new Gson().fromJson( + Preferences.getHomeSectorList(), + new TypeToken>() { + }.getType() + ); + } + } + + public List getHomeSectorList() { + return sectors; + } + + public boolean checkHomeSectorVisibility(String sectorId) { + return sectors != null && sectors.stream().filter(sector -> sector.getId().equals(sectorId)) + .findAny() + .orElse(null) == null; + } + + public void setOfflineFavorite() { + ArrayList favorites = getFavorites(); + ArrayList favoritesToSave = getFavoritesToSave(favorites); + ArrayList favoritesToDelete = getFavoritesToDelete(favorites, favoritesToSave); + + manageFavoriteToSave(favoritesToSave); + manageFavoriteToDelete(favoritesToDelete); + } + + private ArrayList getFavorites() { + return new ArrayList<>(favoriteRepository.getFavorites()); + } + + private ArrayList getFavoritesToSave(ArrayList favorites) { + HashMap filteredMap = new HashMap<>(); + + for (Favorite favorite : favorites) { + String key = favorite.toString(); + + if (!filteredMap.containsKey(key) || favorite.getTimestamp() > filteredMap.get(key).getTimestamp()) { + filteredMap.put(key, favorite); + } + } + + return new ArrayList<>(filteredMap.values()); + } + + private ArrayList getFavoritesToDelete(ArrayList favorites, ArrayList favoritesToSave) { + ArrayList favoritesToDelete = new ArrayList<>(); + + for (Favorite favorite : favorites) { + if (!favoritesToSave.contains(favorite)) { + favoritesToDelete.add(favorite); + } + } + + return favoritesToDelete; + } + + private void manageFavoriteToSave(ArrayList favoritesToSave) { + for (Favorite favorite : favoritesToSave) { + if (favorite.getToStar()) { + favoriteToStar(favorite); + } else { + favoriteToUnstar(favorite); + } + } + } + + private void manageFavoriteToDelete(ArrayList favoritesToDelete) { + for (Favorite favorite : favoritesToDelete) { + favoriteRepository.delete(favorite); + } + } + + private void favoriteToStar(Favorite favorite) { + if (favorite.getSongId() != null) { + favoriteRepository.star(favorite.getSongId(), null, null, new StarCallback() { + @Override + public void onSuccess() { + favoriteRepository.delete(favorite); + } + }); + } else if (favorite.getAlbumId() != null) { + favoriteRepository.star(null, favorite.getAlbumId(), null, new StarCallback() { + @Override + public void onSuccess() { + favoriteRepository.delete(favorite); + } + }); + } else if (favorite.getArtistId() != null) { + favoriteRepository.star(null, null, favorite.getArtistId(), new StarCallback() { + @Override + public void onSuccess() { + favoriteRepository.delete(favorite); + } + }); + } + } + + private void favoriteToUnstar(Favorite favorite) { + if (favorite.getSongId() != null) { + favoriteRepository.unstar(favorite.getSongId(), null, null, new StarCallback() { + @Override + public void onSuccess() { + favoriteRepository.delete(favorite); + } + }); + } else if (favorite.getAlbumId() != null) { + favoriteRepository.unstar(null, favorite.getAlbumId(), null, new StarCallback() { + @Override + public void onSuccess() { + favoriteRepository.delete(favorite); + } + }); + } else if (favorite.getArtistId() != null) { + favoriteRepository.unstar(null, null, favorite.getArtistId(), new StarCallback() { + @Override + public void onSuccess() { + favoriteRepository.delete(favorite); + } + }); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/IndexViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/IndexViewModel.java new file mode 100644 index 0000000..8801519 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/IndexViewModel.java @@ -0,0 +1,35 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.DirectoryRepository; +import com.cappielloantonio.tempo.subsonic.models.Indexes; +import com.cappielloantonio.tempo.subsonic.models.MusicFolder; + +public class IndexViewModel extends AndroidViewModel { + private final DirectoryRepository directoryRepository; + + private MusicFolder musicFolder; + + public IndexViewModel(@NonNull Application application) { + super(application); + + directoryRepository = new DirectoryRepository(); + } + + public MutableLiveData getIndexes(String musicFolderId) { + return directoryRepository.getIndexes(musicFolderId, null); + } + + public String getMusicFolderName() { + return musicFolder != null ? musicFolder.getName() : ""; + } + + public void setMusicFolder(MusicFolder musicFolder) { + this.musicFolder = musicFolder; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/LibraryViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/LibraryViewModel.java new file mode 100644 index 0000000..61efbd9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/LibraryViewModel.java @@ -0,0 +1,114 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.DirectoryRepository; +import com.cappielloantonio.tempo.repository.GenreRepository; +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Genre; +import com.cappielloantonio.tempo.subsonic.models.Indexes; +import com.cappielloantonio.tempo.subsonic.models.MusicFolder; +import com.cappielloantonio.tempo.subsonic.models.Playlist; + +import java.util.List; + +public class LibraryViewModel extends AndroidViewModel { + private static final String TAG = "LibraryViewModel"; + + private final DirectoryRepository directoryRepository; + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + private final GenreRepository genreRepository; + private final PlaylistRepository playlistRepository; + + private final MutableLiveData> musicFolders = new MutableLiveData<>(null); + private final MutableLiveData indexes = new MutableLiveData<>(null); + private final MutableLiveData> playlistSample = new MutableLiveData<>(null); + private final MutableLiveData> sampleAlbum = new MutableLiveData<>(null); + private final MutableLiveData> sampleArtist = new MutableLiveData<>(null); + private final MutableLiveData> sampleGenres = new MutableLiveData<>(null); + + public LibraryViewModel(@NonNull Application application) { + super(application); + + directoryRepository = new DirectoryRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + genreRepository = new GenreRepository(); + playlistRepository = new PlaylistRepository(); + } + + public LiveData> getMusicFolders(LifecycleOwner owner) { + if (musicFolders.getValue() == null) { + directoryRepository.getMusicFolders().observe(owner, musicFolders::postValue); + } + + return musicFolders; + } + + public LiveData getIndexes(LifecycleOwner owner) { + if (indexes.getValue() == null) { + directoryRepository.getIndexes("0", null).observe(owner, indexes::postValue); + } + + return indexes; + } + + public LiveData> getAlbumSample(LifecycleOwner owner) { + if (sampleAlbum.getValue() == null) { + albumRepository.getAlbums("random", 10, null, null).observe(owner, sampleAlbum::postValue); + } + + return sampleAlbum; + } + + public LiveData> getArtistSample(LifecycleOwner owner) { + if (sampleArtist.getValue() == null) { + artistRepository.getArtists(true, 10).observe(owner, sampleArtist::postValue); + } + + return sampleArtist; + } + + public LiveData> getGenreSample(LifecycleOwner owner) { + if (sampleGenres.getValue() == null) { + genreRepository.getGenres(true, 15).observe(owner, sampleGenres::postValue); + } + + return sampleGenres; + } + + public LiveData> getPlaylistSample(LifecycleOwner owner) { + if (playlistSample.getValue() == null) { + playlistRepository.getPlaylists(true, 10).observe(owner, playlistSample::postValue); + } + + return playlistSample; + } + + public void refreshAlbumSample(LifecycleOwner owner) { + albumRepository.getAlbums("random", 10, null, null).observe(owner, sampleAlbum::postValue); + } + + public void refreshArtistSample(LifecycleOwner owner) { + artistRepository.getArtists(true, 10).observe(owner, sampleArtist::postValue); + } + + public void refreshGenreSample(LifecycleOwner owner) { + genreRepository.getGenres(true, 15).observe(owner, sampleGenres::postValue); + } + + public void refreshPlaylistSample(LifecycleOwner owner) { + playlistRepository.getPlaylists(true, 10).observe(owner, playlistSample::postValue); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/LoginViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/LoginViewModel.java new file mode 100644 index 0000000..1ff311b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/LoginViewModel.java @@ -0,0 +1,48 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.model.Server; +import com.cappielloantonio.tempo.repository.ServerRepository; + +import java.util.List; + +public class LoginViewModel extends AndroidViewModel { + private final ServerRepository serverRepository; + + private Server toEdit = null; + + public LoginViewModel(@NonNull Application application) { + super(application); + + serverRepository = new ServerRepository(); + } + + public LiveData> getServerList() { + return serverRepository.getLiveServer(); + } + + public void addServer(Server server) { + serverRepository.insert(server); + } + + public void deleteServer(Server server) { + if (server != null) { + serverRepository.delete(server); + } else if (toEdit != null) { + serverRepository.delete(toEdit); + } + } + + public void setServerToEdit(Server server) { + toEdit = server; + } + + public Server getServerToEdit() { + return toEdit; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java new file mode 100644 index 0000000..529abaf --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java @@ -0,0 +1,44 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.github.models.LatestRelease; +import com.cappielloantonio.tempo.repository.QueueRepository; +import com.cappielloantonio.tempo.repository.SystemRepository; +import com.cappielloantonio.tempo.subsonic.models.OpenSubsonicExtension; +import com.cappielloantonio.tempo.subsonic.models.SubsonicResponse; + +import java.util.List; + +public class MainViewModel extends AndroidViewModel { + private static final String TAG = "SearchViewModel"; + + private final SystemRepository systemRepository; + + public MainViewModel(@NonNull Application application) { + super(application); + + systemRepository = new SystemRepository(); + } + + public boolean isQueueLoaded() { + QueueRepository queueRepository = new QueueRepository(); + return queueRepository.count() != 0; + } + + public LiveData ping() { + return systemRepository.ping(); + } + + public LiveData> getOpenSubsonicExtensions() { + return systemRepository.getOpenSubsonicExtensions(); + } + + public LiveData checkTempoUpdate() { + return systemRepository.checkTempoUpdate(); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaybackViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaybackViewModel.java new file mode 100644 index 0000000..b1808d9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaybackViewModel.java @@ -0,0 +1,35 @@ +package com.cappielloantonio.tempo.viewmodel; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import java.util.Objects; + +public class PlaybackViewModel extends ViewModel { + + private final MutableLiveData currentSongId = new MutableLiveData<>(null); + private final MutableLiveData isPlaying = new MutableLiveData<>(false); + + public LiveData getCurrentSongId() { + return currentSongId; + } + + public LiveData getIsPlaying() { + return isPlaying; + } + + public void update(String songId, boolean playing) { + if (!Objects.equals(currentSongId.getValue(), songId)) { + currentSongId.postValue(songId); + } + if (!Objects.equals(isPlaying.getValue(), playing)) { + isPlaying.postValue(playing); + } + } + + public void clear() { + currentSongId.postValue(null); + isPlaying.postValue(false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlayerBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlayerBottomSheetViewModel.java new file mode 100644 index 0000000..2a100fb --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlayerBottomSheetViewModel.java @@ -0,0 +1,407 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.content.Context; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Observer; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.interfaces.StarCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.model.LyricsCache; +import com.cappielloantonio.tempo.model.Queue; +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.FavoriteRepository; +import com.cappielloantonio.tempo.repository.LyricsRepository; +import com.cappielloantonio.tempo.repository.OpenRepository; +import com.cappielloantonio.tempo.repository.QueueRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.LyricsList; +import com.cappielloantonio.tempo.subsonic.models.PlayQueue; +import com.cappielloantonio.tempo.util.Constants; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.NetworkUtil; +import com.cappielloantonio.tempo.util.OpenSubsonicExtensionsUtil; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.gson.Gson; + +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@OptIn(markerClass = UnstableApi.class) +public class PlayerBottomSheetViewModel extends AndroidViewModel { + private static final String TAG = "PlayerBottomSheetViewModel"; + + private final SongRepository songRepository; + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + private final QueueRepository queueRepository; + private final FavoriteRepository favoriteRepository; + private final OpenRepository openRepository; + private final LyricsRepository lyricsRepository; + private final MutableLiveData lyricsLiveData = new MutableLiveData<>(null); + private final MutableLiveData lyricsListLiveData = new MutableLiveData<>(null); + private final MutableLiveData lyricsCachedLiveData = new MutableLiveData<>(false); + private final MutableLiveData descriptionLiveData = new MutableLiveData<>(null); + private final MutableLiveData liveMedia = new MutableLiveData<>(null); + private final MutableLiveData liveAlbum = new MutableLiveData<>(null); + private final MutableLiveData liveArtist = new MutableLiveData<>(null); + private final MutableLiveData> instantMix = new MutableLiveData<>(null); + private final Gson gson = new Gson(); + private boolean lyricsSyncState = true; + private LiveData cachedLyricsSource; + private String currentSongId; + private final Observer cachedLyricsObserver = this::onCachedLyricsChanged; + + + public PlayerBottomSheetViewModel(@NonNull Application application) { + super(application); + + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + queueRepository = new QueueRepository(); + favoriteRepository = new FavoriteRepository(); + openRepository = new OpenRepository(); + lyricsRepository = new LyricsRepository(); + } + + public LiveData> getQueueSong() { + return queueRepository.getLiveQueue(); + } + + public void setFavorite(Context context, Child media) { + if (media != null) { + if (media.getStarred() != null) { + if (NetworkUtil.isOffline()) { + removeFavoriteOffline(media); + } else { + removeFavoriteOnline(media); + } + } else { + if (NetworkUtil.isOffline()) { + setFavoriteOffline(media); + } else { + setFavoriteOnline(context, media); + } + } + } + } + + private void removeFavoriteOffline(Child media) { + favoriteRepository.starLater(media.getId(), null, null, false); + media.setStarred(null); + } + + private void removeFavoriteOnline(Child media) { + favoriteRepository.unstar(media.getId(), null, null, new StarCallback() { + @Override + public void onError() { + // media.setStarred(new Date()); + favoriteRepository.starLater(media.getId(), null, null, false); + } + }); + media.setStarred(null); + } + + private void setFavoriteOffline(Child media) { + favoriteRepository.starLater(media.getId(), null, null, true); + media.setStarred(new Date()); + } + + private void setFavoriteOnline(Context context, Child media) { + favoriteRepository.star(media.getId(), null, null, new StarCallback() { + @Override + public void onError() { + // media.setStarred(null); + favoriteRepository.starLater(media.getId(), null, null, true); + } + }); + + media.setStarred(new Date()); + + if (Preferences.isStarredSyncEnabled() && Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownload(media), + new Download(media) + ); + } + } + + public LiveData getLiveLyrics() { + return lyricsLiveData; + } + + public LiveData getLiveLyricsList() { + return lyricsListLiveData; + } + + public void refreshMediaInfo(LifecycleOwner owner, Child media) { + lyricsLiveData.postValue(null); + lyricsListLiveData.postValue(null); + lyricsCachedLiveData.postValue(false); + + clearCachedLyricsObserver(); + + String songId = media != null ? media.getId() : currentSongId; + + if (TextUtils.isEmpty(songId) || owner == null) { + return; + } + + currentSongId = songId; + + observeCachedLyrics(owner, songId); + + LyricsCache cachedLyrics = lyricsRepository.getLyrics(songId); + if (cachedLyrics != null) { + onCachedLyricsChanged(cachedLyrics); + } + + if (NetworkUtil.isOffline() || media == null) { + return; + } + + if (OpenSubsonicExtensionsUtil.isSongLyricsExtensionAvailable()) { + openRepository.getLyricsBySongId(media.getId()).observe(owner, lyricsList -> { + lyricsListLiveData.postValue(lyricsList); + lyricsLiveData.postValue(null); + + if (shouldAutoDownloadLyrics() && hasStructuredLyrics(lyricsList)) { + saveLyricsToCache(media, null, lyricsList); + } + }); + } else { + songRepository.getSongLyrics(media).observe(owner, lyrics -> { + lyricsLiveData.postValue(lyrics); + lyricsListLiveData.postValue(null); + + if (shouldAutoDownloadLyrics() && !TextUtils.isEmpty(lyrics)) { + saveLyricsToCache(media, lyrics, null); + } + }); + } + } + + public LiveData getLiveMedia() { + return liveMedia; + } + + public void setLiveMedia(LifecycleOwner owner, String mediaType, String mediaId) { + currentSongId = mediaId; + + if (!TextUtils.isEmpty(mediaId)) { + refreshMediaInfo(owner, null); + } else { + clearCachedLyricsObserver(); + lyricsLiveData.postValue(null); + lyricsListLiveData.postValue(null); + lyricsCachedLiveData.postValue(false); + } + + if (mediaType != null) { + switch (mediaType) { + case Constants.MEDIA_TYPE_MUSIC: + songRepository.getSong(mediaId).observe(owner, liveMedia::postValue); + descriptionLiveData.postValue(null); + break; + case Constants.MEDIA_TYPE_PODCAST: + liveMedia.postValue(null); + break; + default: + liveMedia.postValue(null); + break; + } + } else { + liveMedia.postValue(null); + } + } + + public LiveData getLiveAlbum() { + return liveAlbum; + } + + public void setLiveAlbum(LifecycleOwner owner, String mediaType, String AlbumId) { + if (mediaType != null) { + switch (mediaType) { + case Constants.MEDIA_TYPE_MUSIC: + albumRepository.getAlbum(AlbumId).observe(owner, liveAlbum::postValue); + break; + case Constants.MEDIA_TYPE_PODCAST: + liveAlbum.postValue(null); + break; + } + } + } + + public LiveData getLiveArtist() { + return liveArtist; + } + + public void setLiveArtist(LifecycleOwner owner, String mediaType, String ArtistId) { + if (mediaType != null) { + switch (mediaType) { + case Constants.MEDIA_TYPE_MUSIC: + artistRepository.getArtist(ArtistId).observe(owner, liveArtist::postValue); + break; + case Constants.MEDIA_TYPE_PODCAST: + liveArtist.postValue(null); + break; + } + } + } + + public void setLiveDescription(String description) { + descriptionLiveData.postValue(description); + } + + public LiveData getLiveDescription() { + return descriptionLiveData; + } + + public LiveData> getMediaInstantMix(LifecycleOwner owner, Child media) { + instantMix.setValue(Collections.emptyList()); + + songRepository.getInstantMix(media.getId(), 20).observe(owner, instantMix::postValue); + + return instantMix; + } + + public LiveData getPlayQueue() { + return queueRepository.getPlayQueue(); + } + + public boolean savePlayQueue() { + Child media = getLiveMedia().getValue(); + List queue = queueRepository.getMedia(); + List ids = queue.stream().map(Child::getId).collect(Collectors.toList()); + + if (media != null) { + queueRepository.savePlayQueue(ids, media.getId(), 0); + return true; + } + + return false; + } + + private void observeCachedLyrics(LifecycleOwner owner, String songId) { + if (TextUtils.isEmpty(songId)) { + return; + } + + cachedLyricsSource = lyricsRepository.observeLyrics(songId); + cachedLyricsSource.observe(owner, cachedLyricsObserver); + } + + private void clearCachedLyricsObserver() { + if (cachedLyricsSource != null) { + cachedLyricsSource.removeObserver(cachedLyricsObserver); + cachedLyricsSource = null; + } + } + + private void onCachedLyricsChanged(LyricsCache lyricsCache) { + if (lyricsCache == null) { + lyricsCachedLiveData.postValue(false); + return; + } + + lyricsCachedLiveData.postValue(true); + + if (!TextUtils.isEmpty(lyricsCache.getStructuredLyrics())) { + try { + LyricsList cachedList = gson.fromJson(lyricsCache.getStructuredLyrics(), LyricsList.class); + lyricsListLiveData.postValue(cachedList); + lyricsLiveData.postValue(null); + } catch (Exception exception) { + lyricsListLiveData.postValue(null); + lyricsLiveData.postValue(lyricsCache.getLyrics()); + } + } else { + lyricsListLiveData.postValue(null); + lyricsLiveData.postValue(lyricsCache.getLyrics()); + } + } + + private void saveLyricsToCache(Child media, String lyrics, LyricsList lyricsList) { + if (media == null) { + return; + } + + if ((lyricsList == null || !hasStructuredLyrics(lyricsList)) && TextUtils.isEmpty(lyrics)) { + return; + } + + LyricsCache lyricsCache = new LyricsCache(media.getId()); + lyricsCache.setArtist(media.getArtist()); + lyricsCache.setTitle(media.getTitle()); + lyricsCache.setUpdatedAt(System.currentTimeMillis()); + + if (lyricsList != null && hasStructuredLyrics(lyricsList)) { + lyricsCache.setStructuredLyrics(gson.toJson(lyricsList)); + lyricsCache.setLyrics(null); + } else { + lyricsCache.setLyrics(lyrics); + lyricsCache.setStructuredLyrics(null); + } + + lyricsRepository.insert(lyricsCache); + lyricsCachedLiveData.postValue(true); + } + + private boolean hasStructuredLyrics(LyricsList lyricsList) { + return lyricsList != null + && lyricsList.getStructuredLyrics() != null + && !lyricsList.getStructuredLyrics().isEmpty() + && lyricsList.getStructuredLyrics().get(0) != null + && lyricsList.getStructuredLyrics().get(0).getLine() != null + && !lyricsList.getStructuredLyrics().get(0).getLine().isEmpty(); + } + + private boolean shouldAutoDownloadLyrics() { + return Preferences.isAutoDownloadLyricsEnabled(); + } + + public boolean downloadCurrentLyrics() { + Child media = getLiveMedia().getValue(); + if (media == null) { + return false; + } + + LyricsList lyricsList = lyricsListLiveData.getValue(); + String lyrics = lyricsLiveData.getValue(); + + if ((lyricsList == null || !hasStructuredLyrics(lyricsList)) && TextUtils.isEmpty(lyrics)) { + return false; + } + + saveLyricsToCache(media, lyrics, lyricsList); + return true; + } + + public LiveData getLyricsCachedState() { + return lyricsCachedLiveData; + } + + public void changeSyncLyricsState() { + lyricsSyncState = !lyricsSyncState; + } + + public boolean getSyncLyricsState() { + return lyricsSyncState; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistCatalogueViewModel.java new file mode 100644 index 0000000..e183265 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistCatalogueViewModel.java @@ -0,0 +1,44 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.subsonic.models.Playlist; + +import java.util.List; + +public class PlaylistCatalogueViewModel extends AndroidViewModel { + private final PlaylistRepository playlistRepository; + + private String type; + + private final MutableLiveData> playlistList = new MutableLiveData<>(null); + + public PlaylistCatalogueViewModel(@NonNull Application application) { + super(application); + + playlistRepository = new PlaylistRepository(); + } + + public LiveData> getPlaylistList(LifecycleOwner owner) { + if (playlistList.getValue() == null) { + playlistRepository.getPlaylists(false, -1).observe(owner, playlistList::postValue); + } + + return playlistList; + } + + public void setType(String type) { + this.type = type; + } + + public String getType() { + return type; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java new file mode 100644 index 0000000..ca7af15 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java @@ -0,0 +1,63 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.app.Dialog; +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.util.Preferences; +import com.google.common.collect.Lists; + +import java.util.ArrayList; +import java.util.List; + +public class PlaylistChooserViewModel extends AndroidViewModel { + private final PlaylistRepository playlistRepository; + + private final MutableLiveData> playlists = new MutableLiveData<>(null); + private ArrayList toAdd = new ArrayList<>(); + + public PlaylistChooserViewModel(@NonNull Application application) { + super(application); + + playlistRepository = new PlaylistRepository(); + } + + public LiveData> getPlaylistList(LifecycleOwner owner) { + playlistRepository.getPlaylists(false, -1).observe(owner, playlists::postValue); + return playlists; + } + + public void addSongsToPlaylist(LifecycleOwner owner, Dialog dialog, String playlistId) { + List songIds = Lists.transform(toAdd, Child::getId); + if (Preferences.allowPlaylistDuplicates()) { + playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds)); + dialog.dismiss(); + } else { + playlistRepository.getPlaylistSongs(playlistId).observe(owner, playlistSongs -> { + if (playlistSongs != null) { + List playlistSongIds = Lists.transform(playlistSongs, Child::getId); + songIds.removeAll(playlistSongIds); + } + playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds)); + dialog.dismiss(); + }); + } + } + + public void setSongsToAdd(ArrayList songs) { + toAdd = songs; + } + + public ArrayList getSongsToAdd() { + return toAdd; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistEditorViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistEditorViewModel.java new file mode 100644 index 0000000..aceedb9 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistEditorViewModel.java @@ -0,0 +1,104 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.repository.SharingRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Playlist; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.google.common.collect.Lists; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +public class PlaylistEditorViewModel extends AndroidViewModel { + private static final String TAG = "PlaylistEditorViewModel"; + + private final PlaylistRepository playlistRepository; + private final SharingRepository sharingRepository; + + private ArrayList toAdd; + private Playlist toEdit; + + private MutableLiveData> songLiveList = new MutableLiveData<>(); + + public PlaylistEditorViewModel(@NonNull Application application) { + super(application); + + playlistRepository = new PlaylistRepository(); + sharingRepository = new SharingRepository(); + } + + public void createPlaylist(String name) { + playlistRepository.createPlaylist(null, name, new ArrayList(Lists.transform(toAdd, Child::getId))); + } + + public void updatePlaylist(String name) { + playlistRepository.updatePlaylist(toEdit.getId(), name, getPlaylistSongIds()); + } + + public void deletePlaylist() { + if (toEdit != null) playlistRepository.deletePlaylist(toEdit.getId()); + } + + public void setSongsToAdd(ArrayList songs) { + toAdd = songs; + } + + public ArrayList getSongsToAdd() { + return toAdd; + } + + public Playlist getPlaylistToEdit() { + return toEdit; + } + + public void setPlaylistToEdit(Playlist playlist) { + this.toEdit = playlist; + + if (playlist != null) { + this.songLiveList = playlistRepository.getPlaylistSongs(toEdit.getId()); + } else { + this.songLiveList = new MutableLiveData<>(); + } + } + + public LiveData> getPlaylistSongLiveList() { + return songLiveList; + } + + public void removeFromPlaylistSongLiveList(int position) { + List songs = songLiveList.getValue(); + Objects.requireNonNull(songs).remove(position); + songLiveList.postValue(songs); + } + + public void orderPlaylistSongLiveListAfterSwap(List songs) { + songLiveList.postValue(songs); + } + + private ArrayList getPlaylistSongIds() { + List songs = songLiveList.getValue(); + ArrayList ids = new ArrayList<>(); + + if (songs != null && !songs.isEmpty()) { + for (Child song : songs) { + ids.add(song.getId()); + } + } + + return ids; + } + + public MutableLiveData sharePlaylist() { + return sharingRepository.createShare(toEdit.getId(), toEdit.getName(), null); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistPageViewModel.java new file mode 100644 index 0000000..d59f5ac --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistPageViewModel.java @@ -0,0 +1,58 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.PlaylistRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Playlist; + +import java.util.List; + +public class PlaylistPageViewModel extends AndroidViewModel { + private final PlaylistRepository playlistRepository; + + private Playlist playlist; + private boolean isOffline; + + public PlaylistPageViewModel(@NonNull Application application) { + super(application); + + playlistRepository = new PlaylistRepository(); + } + + public LiveData> getPlaylistSongLiveList() { + return playlistRepository.getPlaylistSongs(playlist.getId()); + } + + public Playlist getPlaylist() { + return playlist; + } + + public void setPlaylist(Playlist playlist) { + this.playlist = playlist; + } + + public LiveData isPinned(LifecycleOwner owner) { + MutableLiveData isPinnedLive = new MutableLiveData<>(); + + playlistRepository.getPinnedPlaylists().observe(owner, playlists -> { + isPinnedLive.postValue(playlists.stream().anyMatch(obj -> obj.getId().equals(playlist.getId()))); + }); + + return isPinnedLive; + } + + public void setPinned(boolean isNowPinned) { + if (isNowPinned) { + playlistRepository.insert(playlist); + } else { + playlistRepository.delete(playlist); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelBottomSheetViewModel.java new file mode 100644 index 0000000..fe2b6ac --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelBottomSheetViewModel.java @@ -0,0 +1,33 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.repository.PodcastRepository; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; + +public class PodcastChannelBottomSheetViewModel extends AndroidViewModel { + private final PodcastRepository podcastRepository; + + private PodcastChannel podcastChannel; + + public PodcastChannelBottomSheetViewModel(@NonNull Application application) { + super(application); + + podcastRepository = new PodcastRepository(); + } + + public PodcastChannel getPodcastChannel() { + return podcastChannel; + } + + public void setPodcastChannel(PodcastChannel podcastChannel) { + this.podcastChannel = podcastChannel; + } + + public void deletePodcastChannel() { + if (podcastChannel != null) podcastRepository.deletePodcastChannel(podcastChannel.getId()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelCatalogueViewModel.java new file mode 100644 index 0000000..b54f7d6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelCatalogueViewModel.java @@ -0,0 +1,35 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.PodcastRepository; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; + +import java.util.List; + +public class PodcastChannelCatalogueViewModel extends AndroidViewModel { + private final PodcastRepository podcastRepository; + + private final MutableLiveData> podcastChannels = new MutableLiveData<>(null); + + + public PodcastChannelCatalogueViewModel(@NonNull Application application) { + super(application); + + podcastRepository = new PodcastRepository(); + } + + public LiveData> getPodcastChannels(LifecycleOwner owner) { + if (podcastChannels.getValue() == null) { + podcastRepository.getPodcastChannels(false, null).observe(owner, podcastChannels::postValue); + } + + return podcastChannels; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelEditorViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelEditorViewModel.java new file mode 100644 index 0000000..759da75 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelEditorViewModel.java @@ -0,0 +1,27 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.repository.PodcastRepository; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; + +public class PodcastChannelEditorViewModel extends AndroidViewModel { + private static final String TAG = "RadioEditorViewModel"; + + private final PodcastRepository podcastRepository; + + private InternetRadioStation toEdit; + + public PodcastChannelEditorViewModel(@NonNull Application application) { + super(application); + + podcastRepository = new PodcastRepository(); + } + + public void createChannel(String url) { + podcastRepository.createPodcastChannel(url); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelPageViewModel.java new file mode 100644 index 0000000..7cb7827 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastChannelPageViewModel.java @@ -0,0 +1,41 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.repository.PodcastRepository; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; + +import java.util.List; + +public class PodcastChannelPageViewModel extends AndroidViewModel { + private final PodcastRepository podcastRepository; + + private PodcastChannel podcastChannel; + + public PodcastChannelPageViewModel(@NonNull Application application) { + super(application); + + podcastRepository = new PodcastRepository(); + } + + public LiveData> getPodcastChannelEpisodes() { + return podcastRepository.getPodcastChannels(true, podcastChannel.getId()); + } + + public PodcastChannel getPodcastChannel() { + return podcastChannel; + } + + public void setPodcastChannel(PodcastChannel podcastChannel) { + this.podcastChannel = podcastChannel; + } + + public void requestPodcastEpisodeDownload(PodcastEpisode podcastEpisode) { + podcastRepository.downloadPodcastEpisode(podcastEpisode.getId()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastEpisodeBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastEpisodeBottomSheetViewModel.java new file mode 100644 index 0000000..baba42b --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastEpisodeBottomSheetViewModel.java @@ -0,0 +1,33 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.repository.PodcastRepository; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; + +public class PodcastEpisodeBottomSheetViewModel extends AndroidViewModel { + private final PodcastRepository podcastRepository; + + private PodcastEpisode podcastEpisode; + + public PodcastEpisodeBottomSheetViewModel(@NonNull Application application) { + super(application); + + podcastRepository = new PodcastRepository(); + } + + public PodcastEpisode getPodcastEpisode() { + return podcastEpisode; + } + + public void setPodcastEpisode(PodcastEpisode podcast) { + this.podcastEpisode = podcast; + } + + public void deletePodcastEpisode() { + if (podcastEpisode != null) podcastRepository.deletePodcastEpisode(podcastEpisode.getId()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastViewModel.java new file mode 100644 index 0000000..4625e83 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PodcastViewModel.java @@ -0,0 +1,52 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.PodcastRepository; +import com.cappielloantonio.tempo.subsonic.models.PodcastChannel; +import com.cappielloantonio.tempo.subsonic.models.PodcastEpisode; + +import java.util.List; + +public class PodcastViewModel extends AndroidViewModel { + private final PodcastRepository podcastRepository; + + private final MutableLiveData> newestPodcastEpisodes = new MutableLiveData<>(null); + private final MutableLiveData> podcastChannels = new MutableLiveData<>(null); + + public PodcastViewModel(@NonNull Application application) { + super(application); + + podcastRepository = new PodcastRepository(); + } + + public LiveData> getNewestPodcastEpisodes(LifecycleOwner owner) { + if (newestPodcastEpisodes.getValue() == null) { + podcastRepository.getNewestPodcastEpisodes(20).observe(owner, newestPodcastEpisodes::postValue); + } + + return newestPodcastEpisodes; + } + + public LiveData> getPodcastChannels(LifecycleOwner owner) { + if (podcastChannels.getValue() == null) { + podcastRepository.getPodcastChannels(false, null).observe(owner, podcastChannels::postValue); + } + + return podcastChannels; + } + + public void refreshNewestPodcastEpisodes(LifecycleOwner owner) { + podcastRepository.getNewestPodcastEpisodes(20).observe(owner, newestPodcastEpisodes::postValue); + } + + public void refreshPodcastChannels(LifecycleOwner owner) { + podcastRepository.getPodcastChannels(false, null).observe(owner, podcastChannels::postValue); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioEditorViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioEditorViewModel.java new file mode 100644 index 0000000..c15ea93 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioEditorViewModel.java @@ -0,0 +1,43 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.repository.RadioRepository; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; + +public class RadioEditorViewModel extends AndroidViewModel { + private static final String TAG = "RadioEditorViewModel"; + + private final RadioRepository radioRepository; + + private InternetRadioStation toEdit; + + public RadioEditorViewModel(@NonNull Application application) { + super(application); + + radioRepository = new RadioRepository(); + } + + public InternetRadioStation getRadioToEdit() { + return toEdit; + } + + public void setRadioToEdit(InternetRadioStation internetRadioStation) { + this.toEdit = internetRadioStation; + } + + public void createRadio(String name, String streamURL, String homepageURL) { + radioRepository.createInternetRadioStation(name, streamURL, homepageURL); + } + + public void updateRadio(String name, String streamURL, String homepageURL) { + if (toEdit != null) radioRepository.updateInternetRadioStation(toEdit.getId(), name, streamURL, homepageURL); + } + + public void deleteRadio() { + if (toEdit != null) radioRepository.deleteInternetRadioStation(toEdit.getId()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioViewModel.java new file mode 100644 index 0000000..53dfff4 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RadioViewModel.java @@ -0,0 +1,35 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.RadioRepository; +import com.cappielloantonio.tempo.subsonic.models.InternetRadioStation; + +import java.util.List; + +public class RadioViewModel extends AndroidViewModel { + private final RadioRepository radioRepository; + + private final MutableLiveData> internetRadioStations = new MutableLiveData<>(null); + + public RadioViewModel(@NonNull Application application) { + super(application); + + radioRepository = new RadioRepository(); + } + + public LiveData> getInternetRadioStations(LifecycleOwner owner) { + radioRepository.getInternetRadioStations().observe(owner, internetRadioStations::postValue); + return internetRadioStations; + } + + public void refreshInternetRadioStations(LifecycleOwner owner) { + radioRepository.getInternetRadioStations().observe(owner, internetRadioStations::postValue); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RatingViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RatingViewModel.java new file mode 100644 index 0000000..83cdc0f --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/RatingViewModel.java @@ -0,0 +1,84 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; + +public class RatingViewModel extends AndroidViewModel { + private final SongRepository songRepository; + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + + private Child song; + private AlbumID3 album; + private ArtistID3 artist; + + public RatingViewModel(@NonNull Application application) { + super(application); + + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + } + + public Child getSong() { + return song; + } + + public LiveData getLiveSong() { + return songRepository.getSong(song.getId()); + } + + public void setSong(Child song) { + this.song = song; + this.album = null; + this.artist = null; + } + + public AlbumID3 getAlbum() { + return album; + } + + public LiveData getLiveAlbum() { + return albumRepository.getAlbum(album.getId()); + } + + public void setAlbum(AlbumID3 album) { + this.song = null; + this.album = album; + this.artist = null; + } + + public ArtistID3 getArtist() { + return artist; + } + + public LiveData getLiveArtist() { + return artistRepository.getArtist(artist.getId()); + } + + public void setArtist(ArtistID3 artist) { + this.song = null; + this.album = null; + this.artist = artist; + } + + public void rate(int star) { + if (song != null) { + songRepository.setRating(song.getId(), star); + } else if (album != null) { + albumRepository.setRating(album.getId(), star); + } else if (artist != null) { + artistRepository.setRating(artist.getId(), star); + } + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SearchViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SearchViewModel.java new file mode 100644 index 0000000..42521a1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SearchViewModel.java @@ -0,0 +1,68 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import com.cappielloantonio.tempo.model.RecentSearch; +import com.cappielloantonio.tempo.repository.SearchingRepository; +import com.cappielloantonio.tempo.subsonic.models.SearchResult2; +import com.cappielloantonio.tempo.subsonic.models.SearchResult3; + +import java.util.ArrayList; +import java.util.List; + +public class SearchViewModel extends AndroidViewModel { + private static final String TAG = "SearchViewModel"; + + private String query = ""; + + private final SearchingRepository searchingRepository; + + public SearchViewModel(@NonNull Application application) { + super(application); + + searchingRepository = new SearchingRepository(); + } + + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + + if (!query.isEmpty()) { + insertNewSearch(query); + } + } + + public LiveData search2(String title) { + return searchingRepository.search2(title); + } + + public LiveData search3(String title) { + return searchingRepository.search3(title); + } + + public void insertNewSearch(String search) { + searchingRepository.insert(new RecentSearch(search)); + } + + public void deleteRecentSearch(String search) { + searchingRepository.delete(new RecentSearch(search)); + } + + public LiveData> getSearchSuggestion(String query) { + return searchingRepository.getSuggestions(query); + } + + public List getRecentSearchSuggestion() { + ArrayList suggestions = new ArrayList<>(); + suggestions.addAll(searchingRepository.getRecentSearchSuggestion()); + + return suggestions; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SettingViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SettingViewModel.java new file mode 100644 index 0000000..fcf7619 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SettingViewModel.java @@ -0,0 +1,49 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.interfaces.ScanCallback; +import com.cappielloantonio.tempo.repository.ScanRepository; + +public class SettingViewModel extends AndroidViewModel { + private static final String TAG = "SettingViewModel"; + + private final ScanRepository scanRepository; + + public SettingViewModel(@NonNull Application application) { + super(application); + + scanRepository = new ScanRepository(); + } + + public void launchScan(ScanCallback callback) { + scanRepository.startScan(new ScanCallback() { + @Override + public void onError(Exception exception) { + callback.onError(exception); + } + + @Override + public void onSuccess(boolean isScanning, long count) { + callback.onSuccess(isScanning, count); + } + }); + } + + public void getScanStatus(ScanCallback callback) { + scanRepository.getScanStatus(new ScanCallback() { + @Override + public void onError(Exception exception) { + callback.onError(exception); + } + + @Override + public void onSuccess(boolean isScanning, long count) { + callback.onSuccess(isScanning, count); + } + }); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ShareBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ShareBottomSheetViewModel.java new file mode 100644 index 0000000..7fc03b1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/ShareBottomSheetViewModel.java @@ -0,0 +1,37 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; + +import com.cappielloantonio.tempo.repository.SharingRepository; +import com.cappielloantonio.tempo.subsonic.models.Share; + +public class ShareBottomSheetViewModel extends AndroidViewModel { + private final SharingRepository sharingRepository; + + private Share share; + + public ShareBottomSheetViewModel(@NonNull Application application) { + super(application); + + sharingRepository = new SharingRepository(); + } + + public Share getShare() { + return share; + } + + public void setShare(Share share) { + this.share = share; + } + + public void updateShare(String description, long expires) { + sharingRepository.updateShare(share.getId(), description, expires); + } + + public void deleteShare() { + sharingRepository.deleteShare(share.getId()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongBottomSheetViewModel.java new file mode 100644 index 0000000..de379dc --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongBottomSheetViewModel.java @@ -0,0 +1,139 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.interfaces.StarCallback; +import com.cappielloantonio.tempo.model.Download; +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.FavoriteRepository; +import com.cappielloantonio.tempo.repository.SharingRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Share; +import com.cappielloantonio.tempo.util.DownloadUtil; +import com.cappielloantonio.tempo.util.MappingUtil; +import com.cappielloantonio.tempo.util.NetworkUtil; +import com.cappielloantonio.tempo.util.Preferences; + +import java.util.Collections; +import java.util.Date; +import java.util.List; + +@UnstableApi +public class SongBottomSheetViewModel extends AndroidViewModel { + private final SongRepository songRepository; + private final AlbumRepository albumRepository; + private final ArtistRepository artistRepository; + private final FavoriteRepository favoriteRepository; + private final SharingRepository sharingRepository; + + private Child song; + + private final MutableLiveData> instantMix = new MutableLiveData<>(null); + + public SongBottomSheetViewModel(@NonNull Application application) { + super(application); + + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + favoriteRepository = new FavoriteRepository(); + sharingRepository = new SharingRepository(); + } + + public Child getSong() { + return song; + } + + public void setSong(Child song) { + this.song = song; + } + + public void setFavorite(Context context) { + if (song.getStarred() != null) { + if (NetworkUtil.isOffline()) { + removeFavoriteOffline(song); + } else { + removeFavoriteOnline(song); + } + } else { + if (NetworkUtil.isOffline()) { + setFavoriteOffline(song); + } else { + setFavoriteOnline(context, song); + } + } + } + + private void removeFavoriteOffline(Child media) { + favoriteRepository.starLater(media.getId(), null, null, false); + media.setStarred(null); + } + + private void removeFavoriteOnline(Child media) { + favoriteRepository.unstar(media.getId(), null, null, new StarCallback() { + @Override + public void onError() { + // media.setStarred(new Date()); + favoriteRepository.starLater(media.getId(), null, null, false); + } + }); + + media.setStarred(null); + } + + private void setFavoriteOffline(Child media) { + favoriteRepository.starLater(media.getId(), null, null, true); + media.setStarred(new Date()); + } + + private void setFavoriteOnline(Context context, Child media) { + favoriteRepository.star(media.getId(), null, null, new StarCallback() { + @Override + public void onError() { + // media.setStarred(null); + favoriteRepository.starLater(media.getId(), null, null, true); + } + }); + + media.setStarred(new Date()); + + if (Preferences.isStarredSyncEnabled() && Preferences.getDownloadDirectoryUri() == null) { + DownloadUtil.getDownloadTracker(context).download( + MappingUtil.mapDownload(media), + new Download(media) + ); + } + } + + public LiveData getAlbum() { + return albumRepository.getAlbum(song.getAlbumId()); + } + + public LiveData getArtist() { + return artistRepository.getArtist(song.getArtistId()); + } + + public LiveData> getInstantMix(LifecycleOwner owner, Child media) { + instantMix.setValue(Collections.emptyList()); + + songRepository.getInstantMix(media.getId(), 20).observe(owner, instantMix::postValue); + + return instantMix; + } + + public MutableLiveData shareTrack() { + return sharingRepository.createShare(song.getId(), song.getTitle(), null); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongListPageViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongListPageViewModel.java new file mode 100644 index 0000000..acd95b1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/SongListPageViewModel.java @@ -0,0 +1,100 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; +import com.cappielloantonio.tempo.subsonic.models.Genre; +import com.cappielloantonio.tempo.util.Constants; + +import java.util.ArrayList; +import java.util.List; + +public class SongListPageViewModel extends AndroidViewModel { + private final SongRepository songRepository; + private final ArtistRepository artistRepository; + + public String title; + public String toolbarTitle; + public Genre genre; + public ArtistID3 artist; + public AlbumID3 album; + + private MutableLiveData> songList; + + public ArrayList filters = new ArrayList<>(); + public ArrayList filterNames = new ArrayList<>(); + + public int year = 0; + public int maxNumberByYear = 500; + public int maxNumberByGenre = 500; + + public SongListPageViewModel(@NonNull Application application) { + super(application); + + songRepository = new SongRepository(); + artistRepository = new ArtistRepository(); + } + + public LiveData> getSongList() { + songList = new MutableLiveData<>(new ArrayList<>()); + + switch (title) { + case Constants.MEDIA_BY_GENRE: + songList = songRepository.getRandomSampleWithGenre(maxNumberByGenre, 0, 3000, genre.getGenre()); + break; + case Constants.MEDIA_BY_ARTIST: + songList = artistRepository.getTopSongs(artist.getName(), 50); + break; + case Constants.MEDIA_BY_GENRES: + songList = songRepository.getSongsByGenres(filters); + break; + case Constants.MEDIA_BY_YEAR: + songList = songRepository.getRandomSample(maxNumberByYear, year, year + 10); + break; + case Constants.MEDIA_STARRED: + songList = songRepository.getStarredSongs(false, -1); + break; + } + + return songList; + } + + public void getSongsByPage(LifecycleOwner owner) { + switch (title) { + case Constants.MEDIA_BY_GENRE: + int songCount = songList.getValue() != null ? songList.getValue().size() : 0; + + if (songCount > 0 && songCount % maxNumberByGenre != 0) return; + + int page = songCount / maxNumberByGenre; + songRepository.getSongsByGenre(genre.getGenre(), page).observe(owner, children -> { + if (children != null && !children.isEmpty()) { + List currentMedia = songList.getValue(); + currentMedia.addAll(children); + songList.setValue(currentMedia); + } + }); + break; + case Constants.MEDIA_BY_ARTIST: + case Constants.MEDIA_BY_GENRES: + case Constants.MEDIA_BY_YEAR: + case Constants.MEDIA_STARRED: + break; + } + } + + public String getFiltersTitle() { + return TextUtils.join(", ", filterNames); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java new file mode 100644 index 0000000..5967caf --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java @@ -0,0 +1,90 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.app.Activity; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.Observer; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.AlbumRepository; +import com.cappielloantonio.tempo.subsonic.models.AlbumID3; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; + +public class StarredAlbumsSyncViewModel extends AndroidViewModel { + private final AlbumRepository albumRepository; + + private final MutableLiveData> starredAlbums = new MutableLiveData<>(null); + private final MutableLiveData> starredAlbumSongs = new MutableLiveData<>(null); + + public StarredAlbumsSyncViewModel(@NonNull Application application) { + super(application); + albumRepository = new AlbumRepository(); + } + + public LiveData> getStarredAlbums(LifecycleOwner owner) { + albumRepository.getStarredAlbums(false, -1).observe(owner, starredAlbums::postValue); + return starredAlbums; + } + + public LiveData> getAllStarredAlbumSongs() { + albumRepository.getStarredAlbums(false, -1).observeForever(new Observer>() { + @Override + public void onChanged(List albums) { + if (albums != null && !albums.isEmpty()) { + collectAllAlbumSongs(albums, starredAlbumSongs::postValue); + } else { + starredAlbumSongs.postValue(new ArrayList<>()); + } + albumRepository.getStarredAlbums(false, -1).removeObserver(this); + } + }); + + return starredAlbumSongs; + } + + public LiveData> getStarredAlbumSongs(Activity activity) { + albumRepository.getStarredAlbums(false, -1).observe((LifecycleOwner) activity, albums -> { + if (albums != null && !albums.isEmpty()) { + collectAllAlbumSongs(albums, starredAlbumSongs::postValue); + } else { + starredAlbumSongs.postValue(new ArrayList<>()); + } + }); + return starredAlbumSongs; + } + + private void collectAllAlbumSongs(List albums, AlbumSongsCallback callback) { + List allSongs = new ArrayList<>(); + CountDownLatch latch = new CountDownLatch(albums.size()); + + for (AlbumID3 album : albums) { + LiveData> albumTracks = albumRepository.getAlbumTracks(album.getId()); + albumTracks.observeForever(new Observer>() { + @Override + public void onChanged(List songs) { + if (songs != null) { + allSongs.addAll(songs); + } + latch.countDown(); + + if (latch.getCount() == 0) { + callback.onSongsCollected(allSongs); + albumTracks.removeObserver(this); + } + } + }); + } + } + + private interface AlbumSongsCallback { + void onSongsCollected(List songs); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredArtistsSyncViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredArtistsSyncViewModel.java new file mode 100644 index 0000000..474cbe8 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredArtistsSyncViewModel.java @@ -0,0 +1,94 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; +import android.app.Activity; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.Observer; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.ArtistRepository; +import com.cappielloantonio.tempo.subsonic.models.ArtistID3; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicInteger; + +public class StarredArtistsSyncViewModel extends AndroidViewModel { + private final ArtistRepository artistRepository; + + private final MutableLiveData> starredArtists = new MutableLiveData<>(null); + private final MutableLiveData> starredArtistSongs = new MutableLiveData<>(null); + + public StarredArtistsSyncViewModel(@NonNull Application application) { + super(application); + artistRepository = new ArtistRepository(); + } + + public LiveData> getStarredArtists(LifecycleOwner owner) { + artistRepository.getStarredArtists(false, -1).observe(owner, starredArtists::postValue); + return starredArtists; + } + + public LiveData> getAllStarredArtistSongs() { + artistRepository.getStarredArtists(false, -1).observeForever(new Observer>() { + @Override + public void onChanged(List artists) { + if (artists != null && !artists.isEmpty()) { + collectAllArtistSongs(artists, starredArtistSongs::postValue); + } else { + starredArtistSongs.postValue(new ArrayList<>()); + } + artistRepository.getStarredArtists(false, -1).removeObserver(this); + } + }); + + return starredArtistSongs; + } + + public LiveData> getStarredArtistSongs(Activity activity) { + artistRepository.getStarredArtists(false, -1).observe((LifecycleOwner) activity, artists -> { + if (artists != null && !artists.isEmpty()) { + collectAllArtistSongs(artists, starredArtistSongs::postValue); + } else { + starredArtistSongs.postValue(new ArrayList<>()); + } + }); + return starredArtistSongs; + } + + private void collectAllArtistSongs(List artists, ArtistSongsCallback callback) { + if (artists == null || artists.isEmpty()) { + callback.onSongsCollected(new ArrayList<>()); + return; + } + + List allSongs = new ArrayList<>(); + AtomicInteger remainingArtists = new AtomicInteger(artists.size()); + + for (ArtistID3 artist : artists) { + artistRepository.getArtistAllSongs(artist.getId(), new ArtistRepository.ArtistSongsCallback() { + @Override + public void onSongsCollected(List songs) { + if (songs != null) { + allSongs.addAll(songs); + } + + int remaining = remainingArtists.decrementAndGet(); + if (remaining == 0) { + callback.onSongsCollected(allSongs); + } + } + }); + } + } + + private interface ArtistSongsCallback { + void onSongsCollected(List songs); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredSyncViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredSyncViewModel.java new file mode 100644 index 0000000..082a3d1 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredSyncViewModel.java @@ -0,0 +1,31 @@ +package com.cappielloantonio.tempo.viewmodel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.tempo.repository.SongRepository; +import com.cappielloantonio.tempo.subsonic.models.Child; + +import java.util.List; + +public class StarredSyncViewModel extends AndroidViewModel { + private final SongRepository songRepository; + + private final MutableLiveData> starredTracks = new MutableLiveData<>(null); + + public StarredSyncViewModel(@NonNull Application application) { + super(application); + + songRepository = new SongRepository(); + } + + public LiveData> getStarredTracks(LifecycleOwner owner) { + songRepository.getStarredSongs(false, -1).observe(owner, starredTracks::postValue); + return starredTracks; + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetActions.java b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetActions.java new file mode 100644 index 0000000..c6bd8e6 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetActions.java @@ -0,0 +1,62 @@ +package com.cappielloantonio.tempo.widget; + +import android.content.ComponentName; +import android.content.Context; +import android.util.Log; + +import androidx.media3.common.Player; +import androidx.media3.session.MediaController; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.service.MediaService; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.concurrent.ExecutionException; + +public final class WidgetActions { + public static void dispatchToMediaSession(Context ctx, String action) { + Log.d("TempoWidget", "dispatch action=" + action); + Context appCtx = ctx.getApplicationContext(); + SessionToken token = new SessionToken(appCtx, new ComponentName(appCtx, MediaService.class)); + ListenableFuture future = new MediaController.Builder(appCtx, token).buildAsync(); + future.addListener(() -> { + try { + if (!future.isDone()) return; + MediaController c = future.get(); + Log.d("TempoWidget", "controller connected, isPlaying=" + c.isPlaying()); + switch (action) { + case WidgetProvider.ACT_PLAY_PAUSE: + if (c.isPlaying()) c.pause(); + else c.play(); + break; + case WidgetProvider.ACT_NEXT: + c.seekToNext(); + break; + case WidgetProvider.ACT_PREV: + c.seekToPrevious(); + break; + case WidgetProvider.ACT_TOGGLE_SHUFFLE: + c.setShuffleModeEnabled(!c.getShuffleModeEnabled()); + break; + case WidgetProvider.ACT_CYCLE_REPEAT: + int repeatMode = c.getRepeatMode(); + int nextMode; + if (repeatMode == Player.REPEAT_MODE_OFF) { + nextMode = Player.REPEAT_MODE_ALL; + } else if (repeatMode == Player.REPEAT_MODE_ALL) { + nextMode = Player.REPEAT_MODE_ONE; + } else { + nextMode = Player.REPEAT_MODE_OFF; + } + c.setRepeatMode(nextMode); + break; + } + WidgetUpdateManager.refreshFromController(ctx); + c.release(); + } catch (ExecutionException | InterruptedException e) { + Log.e("TempoWidget", "dispatch failed", e); + } + }, MoreExecutors.directExecutor()); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider.java b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider.java new file mode 100644 index 0000000..93a1a7e --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider.java @@ -0,0 +1,137 @@ +package com.cappielloantonio.tempo.widget; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.text.TextUtils; +import android.widget.RemoteViews; + +import com.cappielloantonio.tempo.R; + +import android.app.TaskStackBuilder; + +import com.cappielloantonio.tempo.ui.activity.MainActivity; + +import android.util.Log; + +import androidx.annotation.Nullable; + +public class WidgetProvider extends AppWidgetProvider { + private static final String TAG = "TempoWidget"; + public static final String ACT_PLAY_PAUSE = "tempo.widget.PLAY_PAUSE"; + public static final String ACT_NEXT = "tempo.widget.NEXT"; + public static final String ACT_PREV = "tempo.widget.PREV"; + public static final String ACT_TOGGLE_SHUFFLE = "tempo.widget.SHUFFLE"; + public static final String ACT_CYCLE_REPEAT = "tempo.widget.REPEAT"; + + @Override + public void onUpdate(Context ctx, AppWidgetManager mgr, int[] ids) { + for (int id : ids) { + RemoteViews rv = WidgetUpdateManager.chooseBuild(ctx, id); + attachIntents(ctx, rv, id, null, null, null); + mgr.updateAppWidget(id, rv); + } + } + + @Override + public void onReceive(Context ctx, Intent intent) { + super.onReceive(ctx, intent); + String a = intent.getAction(); + Log.d(TAG, "onReceive action=" + a); + if (ACT_PLAY_PAUSE.equals(a) || ACT_NEXT.equals(a) || ACT_PREV.equals(a) + || ACT_TOGGLE_SHUFFLE.equals(a) || ACT_CYCLE_REPEAT.equals(a)) { + WidgetActions.dispatchToMediaSession(ctx, a); + } else if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(a)) { + WidgetUpdateManager.refreshFromController(ctx); + } + } + + @Override + public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, android.os.Bundle newOptions) { + super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions); + RemoteViews rv = WidgetUpdateManager.chooseBuild(context, appWidgetId); + attachIntents(context, rv, appWidgetId, null, null, null); + appWidgetManager.updateAppWidget(appWidgetId, rv); + WidgetUpdateManager.refreshFromController(context); + } + + public static void attachIntents(Context ctx, RemoteViews rv) { + attachIntents(ctx, rv, 0, null, null, null); + } + + public static void attachIntents(Context ctx, RemoteViews rv, int requestCodeBase) { + attachIntents(ctx, rv, requestCodeBase, null, null, null); + } + + public static void attachIntents(Context ctx, RemoteViews rv, int requestCodeBase, + String songLink, + String albumLink, + String artistLink) { + PendingIntent playPause = PendingIntent.getBroadcast( + ctx, + requestCodeBase + 0, + new Intent(ctx, WidgetProvider4x1.class).setAction(ACT_PLAY_PAUSE), + PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT + ); + PendingIntent next = PendingIntent.getBroadcast( + ctx, + requestCodeBase + 1, + new Intent(ctx, WidgetProvider4x1.class).setAction(ACT_NEXT), + PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT + ); + PendingIntent prev = PendingIntent.getBroadcast( + ctx, + requestCodeBase + 2, + new Intent(ctx, WidgetProvider4x1.class).setAction(ACT_PREV), + PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT + ); + PendingIntent shuffle = PendingIntent.getBroadcast( + ctx, + requestCodeBase + 3, + new Intent(ctx, WidgetProvider4x1.class).setAction(ACT_TOGGLE_SHUFFLE), + PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT + ); + PendingIntent repeat = PendingIntent.getBroadcast( + ctx, + requestCodeBase + 4, + new Intent(ctx, WidgetProvider4x1.class).setAction(ACT_CYCLE_REPEAT), + PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT + ); + + rv.setOnClickPendingIntent(R.id.btn_play_pause, playPause); + rv.setOnClickPendingIntent(R.id.btn_next, next); + rv.setOnClickPendingIntent(R.id.btn_prev, prev); + rv.setOnClickPendingIntent(R.id.btn_shuffle, shuffle); + rv.setOnClickPendingIntent(R.id.btn_repeat, repeat); + + PendingIntent launch = buildMainActivityPendingIntent(ctx, requestCodeBase + 10, null); + rv.setOnClickPendingIntent(R.id.root, launch); + + PendingIntent songPending = buildMainActivityPendingIntent(ctx, requestCodeBase + 20, songLink); + PendingIntent artistPending = buildMainActivityPendingIntent(ctx, requestCodeBase + 21, artistLink); + PendingIntent albumPending = buildMainActivityPendingIntent(ctx, requestCodeBase + 22, albumLink); + + PendingIntent fallback = launch; + rv.setOnClickPendingIntent(R.id.album_art, songPending != null ? songPending : fallback); + rv.setOnClickPendingIntent(R.id.title, songPending != null ? songPending : fallback); + rv.setOnClickPendingIntent(R.id.subtitle, + artistPending != null ? artistPending : (songPending != null ? songPending : fallback)); + rv.setOnClickPendingIntent(R.id.album, albumPending != null ? albumPending : fallback); + } + + private static PendingIntent buildMainActivityPendingIntent(Context ctx, int requestCode, @Nullable String link) { + Intent intent; + if (!TextUtils.isEmpty(link)) { + intent = new Intent(Intent.ACTION_VIEW, Uri.parse(link), ctx, MainActivity.class); + } else { + intent = new Intent(ctx, MainActivity.class); + } + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); + TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctx); + stackBuilder.addNextIntentWithParentStack(intent); + return stackBuilder.getPendingIntent(requestCode, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + } +} diff --git a/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider4x1.java b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider4x1.java new file mode 100644 index 0000000..b4e5923 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetProvider4x1.java @@ -0,0 +1,9 @@ +package com.cappielloantonio.tempo.widget; + +/** + * AppWidget provider entry for the 4x1 widget card. Inherits all behavior + * from {@link WidgetProvider}. + */ +public class WidgetProvider4x1 extends WidgetProvider { +} + diff --git a/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetUpdateManager.java b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetUpdateManager.java new file mode 100644 index 0000000..f159c52 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetUpdateManager.java @@ -0,0 +1,309 @@ +package com.cappielloantonio.tempo.widget; + +import android.appwidget.AppWidgetManager; +import android.content.ComponentName; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.text.TextUtils; + +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.cappielloantonio.tempo.glide.CustomGlideRequest; +import com.cappielloantonio.tempo.R; + +import androidx.media3.common.C; +import androidx.media3.session.MediaController; +import androidx.media3.session.SessionToken; + +import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.util.AssetLinkUtil; +import com.cappielloantonio.tempo.util.MusicUtil; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + +import java.util.concurrent.ExecutionException; + +public final class WidgetUpdateManager { + + private static final int WIDGET_SAFE_ART_SIZE = 512; + + public static void updateFromState(Context ctx, + String title, + String artist, + String album, + Bitmap art, + boolean playing, + boolean shuffleEnabled, + int repeatMode, + long positionMs, + long durationMs, + String songLink, + String albumLink, + String artistLink) { + if (TextUtils.isEmpty(title)) title = ctx.getString(R.string.widget_not_playing); + if (TextUtils.isEmpty(artist)) artist = ctx.getString(R.string.widget_placeholder_subtitle); + if (TextUtils.isEmpty(album)) album = ""; + + final TimingInfo timing = createTimingInfo(positionMs, durationMs); + + AppWidgetManager mgr = AppWidgetManager.getInstance(ctx); + int[] ids = mgr.getAppWidgetIds(new ComponentName(ctx, WidgetProvider4x1.class)); + for (int id : ids) { + android.widget.RemoteViews rv = choosePopulate(ctx, title, artist, album, art, playing, + timing.elapsedText, timing.totalText, timing.progress, shuffleEnabled, repeatMode, id); + WidgetProvider.attachIntents(ctx, rv, id, songLink, albumLink, artistLink); + mgr.updateAppWidget(id, rv); + } + } + + public static void pushNow(Context ctx) { + AppWidgetManager mgr = AppWidgetManager.getInstance(ctx); + int[] ids = mgr.getAppWidgetIds(new ComponentName(ctx, WidgetProvider4x1.class)); + for (int id : ids) { + android.widget.RemoteViews rv = chooseBuild(ctx, id); + WidgetProvider.attachIntents(ctx, rv, id, null, null, null); + mgr.updateAppWidget(id, rv); + } + } + + public static void updateFromState(Context ctx, + String title, + String artist, + String album, + String coverArtId, + boolean playing, + boolean shuffleEnabled, + int repeatMode, + long positionMs, + long durationMs, + String songLink, + String albumLink, + String artistLink) { + final Context appCtx = ctx.getApplicationContext(); + final String t = TextUtils.isEmpty(title) ? appCtx.getString(R.string.widget_not_playing) : title; + final String a = TextUtils.isEmpty(artist) ? appCtx.getString(R.string.widget_placeholder_subtitle) : artist; + final String alb = !TextUtils.isEmpty(album) ? album : ""; + final boolean p = playing; + final boolean sh = shuffleEnabled; + final int rep = repeatMode; + final TimingInfo timing = createTimingInfo(positionMs, durationMs); + final String songLinkFinal = songLink; + final String albumLinkFinal = albumLink; + final String artistLinkFinal = artistLink; + + if (!TextUtils.isEmpty(coverArtId)) { + CustomGlideRequest.loadAlbumArtBitmap( + appCtx, + coverArtId, + WIDGET_SAFE_ART_SIZE, + new CustomTarget() { + @Override + public void onResourceReady(Bitmap resource, Transition transition) { + AppWidgetManager mgr = AppWidgetManager.getInstance(appCtx); + int[] ids = mgr.getAppWidgetIds(new ComponentName(appCtx, WidgetProvider4x1.class)); + for (int id : ids) { + android.widget.RemoteViews rv = choosePopulate(appCtx, t, a, alb, resource, p, + timing.elapsedText, timing.totalText, timing.progress, sh, rep, id); + WidgetProvider.attachIntents(appCtx, rv, id, songLinkFinal, albumLinkFinal, artistLinkFinal); + mgr.updateAppWidget(id, rv); + } + } + + @Override + public void onLoadCleared(Drawable placeholder) { + AppWidgetManager mgr = AppWidgetManager.getInstance(appCtx); + int[] ids = mgr.getAppWidgetIds(new ComponentName(appCtx, WidgetProvider4x1.class)); + for (int id : ids) { + android.widget.RemoteViews rv = choosePopulate(appCtx, t, a, alb, null, p, + timing.elapsedText, timing.totalText, timing.progress, sh, rep, id); + WidgetProvider.attachIntents(appCtx, rv, id, songLinkFinal, albumLinkFinal, artistLinkFinal); + mgr.updateAppWidget(id, rv); + } + } + } + ); + } else { + AppWidgetManager mgr = AppWidgetManager.getInstance(appCtx); + int[] ids = mgr.getAppWidgetIds(new ComponentName(appCtx, WidgetProvider4x1.class)); + for (int id : ids) { + android.widget.RemoteViews rv = choosePopulate(appCtx, t, a, alb, null, p, + timing.elapsedText, timing.totalText, timing.progress, sh, rep, id); + WidgetProvider.attachIntents(appCtx, rv, id, songLinkFinal, albumLinkFinal, artistLinkFinal); + mgr.updateAppWidget(id, rv); + } + } + } + + public static void refreshFromController(Context ctx) { + final Context appCtx = ctx.getApplicationContext(); + SessionToken token = new SessionToken(appCtx, new ComponentName(appCtx, MediaService.class)); + ListenableFuture future = new MediaController.Builder(appCtx, token).buildAsync(); + future.addListener(() -> { + try { + if (!future.isDone()) return; + MediaController c = future.get(); + androidx.media3.common.MediaItem mi = c.getCurrentMediaItem(); + String title = null, artist = null, album = null, coverId = null; + String songLink = null, albumLink = null, artistLink = null; + if (mi != null && mi.mediaMetadata != null) { + if (mi.mediaMetadata.title != null) title = mi.mediaMetadata.title.toString(); + if (mi.mediaMetadata.artist != null) + artist = mi.mediaMetadata.artist.toString(); + if (mi.mediaMetadata.albumTitle != null) + album = mi.mediaMetadata.albumTitle.toString(); + if (mi.mediaMetadata.extras != null) { + Bundle extras = mi.mediaMetadata.extras; + if (title == null) title = mi.mediaMetadata.extras.getString("title"); + if (artist == null) artist = mi.mediaMetadata.extras.getString("artist"); + if (album == null) album = mi.mediaMetadata.extras.getString("album"); + coverId = extras.getString("coverArtId"); + + songLink = extras.getString("assetLinkSong"); + if (songLink == null) { + songLink = AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_SONG, extras.getString("id")); + } + + albumLink = extras.getString("assetLinkAlbum"); + if (albumLink == null) { + albumLink = AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ALBUM, extras.getString("albumId")); + } + + artistLink = extras.getString("assetLinkArtist"); + if (artistLink == null) { + artistLink = AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ARTIST, extras.getString("artistId")); + } + } + } + long position = c.getCurrentPosition(); + long duration = c.getDuration(); + if (position == C.TIME_UNSET) position = 0; + if (duration == C.TIME_UNSET) duration = 0; + updateFromState(appCtx, + title != null ? title : appCtx.getString(R.string.widget_not_playing), + artist != null ? artist : appCtx.getString(R.string.widget_placeholder_subtitle), + album, + coverId, + c.isPlaying(), + c.getShuffleModeEnabled(), + c.getRepeatMode(), + position, + duration, + songLink, + albumLink, + artistLink); + c.release(); + } catch (ExecutionException | InterruptedException ignored) { + } + }, MoreExecutors.directExecutor()); + } + + private static TimingInfo createTimingInfo(long positionMs, long durationMs) { + long safePosition = Math.max(0L, positionMs); + long safeDuration = durationMs > 0 ? durationMs : 0L; + if (safeDuration > 0 && safePosition > safeDuration) { + safePosition = safeDuration; + } + + String elapsed = (safeDuration > 0 || safePosition > 0) + ? MusicUtil.getReadableDurationString(safePosition, true) + : null; + String total = safeDuration > 0 + ? MusicUtil.getReadableDurationString(safeDuration, true) + : null; + + int progress = 0; + if (safeDuration > 0) { + long scaled = safePosition * WidgetViewsFactory.PROGRESS_MAX; + long progressLong = scaled / safeDuration; + if (progressLong < 0) { + progress = 0; + } else if (progressLong > WidgetViewsFactory.PROGRESS_MAX) { + progress = WidgetViewsFactory.PROGRESS_MAX; + } else { + progress = (int) progressLong; + } + } + + return new TimingInfo(elapsed, total, progress); + } + + public static android.widget.RemoteViews chooseBuild(Context ctx, int appWidgetId) { + LayoutSize size = resolveLayoutSize(ctx, appWidgetId); + switch (size) { + case MEDIUM: + return WidgetViewsFactory.buildMedium(ctx); + case LARGE: + return WidgetViewsFactory.buildLarge(ctx); + case EXPANDED: + return WidgetViewsFactory.buildExpanded(ctx); + case COMPACT: + default: + return WidgetViewsFactory.buildCompact(ctx); + } + } + + private static android.widget.RemoteViews choosePopulate(Context ctx, + String title, + String artist, + String album, + Bitmap art, + boolean playing, + String elapsedText, + String totalText, + int progress, + boolean shuffleEnabled, + int repeatMode, + int appWidgetId) { + LayoutSize size = resolveLayoutSize(ctx, appWidgetId); + switch (size) { + case MEDIUM: + return WidgetViewsFactory.populateMedium(ctx, title, artist, album, art, playing, + elapsedText, totalText, progress, shuffleEnabled, repeatMode); + case LARGE: + return WidgetViewsFactory.populateLarge(ctx, title, artist, album, art, playing, + elapsedText, totalText, progress, shuffleEnabled, repeatMode); + case EXPANDED: + return WidgetViewsFactory.populateExpanded(ctx, title, artist, album, art, playing, + elapsedText, totalText, progress, shuffleEnabled, repeatMode); + case COMPACT: + default: + return WidgetViewsFactory.populateCompact(ctx, title, artist, album, art, playing, + elapsedText, totalText, progress, shuffleEnabled, repeatMode); + } + } + + private static LayoutSize resolveLayoutSize(Context ctx, int appWidgetId) { + AppWidgetManager mgr = AppWidgetManager.getInstance(ctx); + android.os.Bundle opts = mgr.getAppWidgetOptions(appWidgetId); + int minH = opts != null ? opts.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT) : 0; + int expandedThreshold = ctx.getResources().getInteger(R.integer.widget_expanded_min_height_dp); + int largeThreshold = ctx.getResources().getInteger(R.integer.widget_large_min_height_dp); + int mediumThreshold = ctx.getResources().getInteger(R.integer.widget_medium_min_height_dp); + if (minH >= expandedThreshold) return LayoutSize.EXPANDED; + if (minH >= largeThreshold) return LayoutSize.LARGE; + if (minH >= mediumThreshold) return LayoutSize.MEDIUM; + return LayoutSize.COMPACT; + } + + private enum LayoutSize { + COMPACT, + MEDIUM, + LARGE, + EXPANDED + } + + private static final class TimingInfo { + final String elapsedText; + final String totalText; + final int progress; + + TimingInfo(String elapsedText, String totalText, int progress) { + this.elapsedText = elapsedText; + this.totalText = totalText; + this.progress = progress; + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetViewsFactory.java b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetViewsFactory.java new file mode 100644 index 0000000..c66fd1c --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/widget/WidgetViewsFactory.java @@ -0,0 +1,252 @@ +package com.cappielloantonio.tempo.widget; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +import android.graphics.Shader; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.View; +import android.widget.RemoteViews; + +import androidx.core.content.ContextCompat; +import androidx.media3.common.Player; + +import com.cappielloantonio.tempo.R; + +public final class WidgetViewsFactory { + + static final int PROGRESS_MAX = 1000; + private static final float ALBUM_ART_CORNER_RADIUS_DP = 6f; + + private WidgetViewsFactory() { + } + + public static RemoteViews buildCompact(Context ctx) { + return build(ctx, R.layout.widget_layout_compact, false, false); + } + + public static RemoteViews buildMedium(Context ctx) { + return build(ctx, R.layout.widget_layout_medium, false, false); + } + + public static RemoteViews buildLarge(Context ctx) { + return build(ctx, R.layout.widget_layout_large_short, true, true); + } + + public static RemoteViews buildExpanded(Context ctx) { + return build(ctx, R.layout.widget_layout_large, true, true); + } + + private static RemoteViews build(Context ctx, + int layoutRes, + boolean showAlbum, + boolean showSecondaryControls) { + RemoteViews rv = new RemoteViews(ctx.getPackageName(), layoutRes); + rv.setTextViewText(R.id.title, ctx.getString(R.string.widget_not_playing)); + rv.setTextViewText(R.id.subtitle, ctx.getString(R.string.widget_placeholder_subtitle)); + rv.setTextViewText(R.id.album, ""); + rv.setViewVisibility(R.id.album, showAlbum ? View.INVISIBLE : View.GONE); + rv.setTextViewText(R.id.time_elapsed, ctx.getString(R.string.widget_time_elapsed_placeholder)); + rv.setTextViewText(R.id.time_total, ctx.getString(R.string.widget_time_duration_placeholder)); + rv.setProgressBar(R.id.progress, PROGRESS_MAX, 0, false); + rv.setImageViewResource(R.id.btn_play_pause, R.drawable.ic_play); + rv.setImageViewResource(R.id.album_art, R.drawable.ic_splash_logo); + applySecondaryControlsDefaults(ctx, rv, showSecondaryControls); + return rv; + } + + private static void applySecondaryControlsDefaults(Context ctx, + RemoteViews rv, + boolean show) { + int visibility = show ? View.VISIBLE : View.GONE; + rv.setViewVisibility(R.id.controls_secondary, visibility); + rv.setViewVisibility(R.id.btn_shuffle, visibility); + rv.setViewVisibility(R.id.btn_repeat, visibility); + if (show) { + int defaultColor = ContextCompat.getColor(ctx, R.color.widget_icon_tint); + rv.setImageViewResource(R.id.btn_shuffle, R.drawable.ic_shuffle); + rv.setImageViewResource(R.id.btn_repeat, R.drawable.ic_repeat); + rv.setInt(R.id.btn_shuffle, "setColorFilter", defaultColor); + rv.setInt(R.id.btn_repeat, "setColorFilter", defaultColor); + } + } + + public static RemoteViews populateCompact(Context ctx, + String title, + String subtitle, + String album, + Bitmap art, + boolean playing, + String elapsedText, + String totalText, + int progress, + boolean shuffleEnabled, + int repeatMode) { + return populateWithLayout(ctx, title, subtitle, album, art, playing, elapsedText, totalText, + progress, R.layout.widget_layout_compact, false, false, shuffleEnabled, repeatMode); + } + + public static RemoteViews populateMedium(Context ctx, + String title, + String subtitle, + String album, + Bitmap art, + boolean playing, + String elapsedText, + String totalText, + int progress, + boolean shuffleEnabled, + int repeatMode) { + return populateWithLayout(ctx, title, subtitle, album, art, playing, elapsedText, totalText, + progress, R.layout.widget_layout_medium, true, true, shuffleEnabled, repeatMode); + } + + public static RemoteViews populateLarge(Context ctx, + String title, + String subtitle, + String album, + Bitmap art, + boolean playing, + String elapsedText, + String totalText, + int progress, + boolean shuffleEnabled, + int repeatMode) { + return populateWithLayout(ctx, title, subtitle, album, art, playing, elapsedText, totalText, + progress, R.layout.widget_layout_large_short, true, true, shuffleEnabled, repeatMode); + } + + public static RemoteViews populateExpanded(Context ctx, + String title, + String subtitle, + String album, + Bitmap art, + boolean playing, + String elapsedText, + String totalText, + int progress, + boolean shuffleEnabled, + int repeatMode) { + return populateWithLayout(ctx, title, subtitle, album, art, playing, elapsedText, totalText, + progress, R.layout.widget_layout_large, true, true, shuffleEnabled, repeatMode); + } + + private static RemoteViews populateWithLayout(Context ctx, + String title, + String subtitle, + String album, + Bitmap art, + boolean playing, + String elapsedText, + String totalText, + int progress, + int layoutRes, + boolean showAlbum, + boolean showSecondaryControls, + boolean shuffleEnabled, + int repeatMode) { + RemoteViews rv = new RemoteViews(ctx.getPackageName(), layoutRes); + rv.setTextViewText(R.id.title, title); + rv.setTextViewText(R.id.subtitle, subtitle); + + if (showAlbum && !TextUtils.isEmpty(album)) { + rv.setTextViewText(R.id.album, album); + rv.setViewVisibility(R.id.album, View.VISIBLE); + } else { + rv.setTextViewText(R.id.album, ""); + rv.setViewVisibility(R.id.album, View.GONE); + } + + if (art != null) { + Bitmap rounded = maybeRoundBitmap(ctx, art); + rv.setImageViewBitmap(R.id.album_art, rounded != null ? rounded : art); + } else { + rv.setImageViewResource(R.id.album_art, R.drawable.ic_splash_logo); + } + + rv.setImageViewResource(R.id.btn_play_pause, + playing ? R.drawable.ic_pause : R.drawable.ic_play); + + String elapsed = !TextUtils.isEmpty(elapsedText) + ? elapsedText + : ctx.getString(R.string.widget_time_elapsed_placeholder); + String total = !TextUtils.isEmpty(totalText) + ? totalText + : ctx.getString(R.string.widget_time_duration_placeholder); + + int safeProgress = progress; + if (safeProgress < 0) safeProgress = 0; + if (safeProgress > PROGRESS_MAX) safeProgress = PROGRESS_MAX; + + rv.setTextViewText(R.id.time_elapsed, elapsed); + rv.setTextViewText(R.id.time_total, total); + rv.setProgressBar(R.id.progress, PROGRESS_MAX, safeProgress, false); + + applySecondaryControls(ctx, rv, showSecondaryControls, shuffleEnabled, repeatMode); + + return rv; + } + + private static Bitmap maybeRoundBitmap(Context ctx, Bitmap source) { + if (source == null || source.isRecycled()) { + return null; + } + + try { + int width = source.getWidth(); + int height = source.getHeight(); + if (width <= 0 || height <= 0) { + return null; + } + + Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(output); + + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); + + float radiusPx = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + ALBUM_ART_CORNER_RADIUS_DP, + ctx.getResources().getDisplayMetrics()); + float maxRadius = Math.min(width, height) / 2f; + float safeRadius = Math.min(radiusPx, maxRadius); + + canvas.drawRoundRect(new RectF(0f, 0f, width, height), safeRadius, safeRadius, paint); + return output; + } catch (RuntimeException | OutOfMemoryError e) { + android.util.Log.w("TempoWidget", "Failed to round album art", e); + return null; + } + } + + private static void applySecondaryControls(Context ctx, + RemoteViews rv, + boolean show, + boolean shuffleEnabled, + int repeatMode) { + if (!show) { + rv.setViewVisibility(R.id.controls_secondary, View.GONE); + rv.setViewVisibility(R.id.btn_shuffle, View.GONE); + rv.setViewVisibility(R.id.btn_repeat, View.GONE); + return; + } + + int inactiveColor = ContextCompat.getColor(ctx, R.color.widget_icon_tint); + int activeColor = ContextCompat.getColor(ctx, R.color.widget_icon_tint_active); + + rv.setViewVisibility(R.id.controls_secondary, View.VISIBLE); + rv.setViewVisibility(R.id.btn_shuffle, View.VISIBLE); + rv.setViewVisibility(R.id.btn_repeat, View.VISIBLE); + rv.setImageViewResource(R.id.btn_shuffle, R.drawable.ic_shuffle); + rv.setImageViewResource(R.id.btn_repeat, + repeatMode == Player.REPEAT_MODE_ONE ? R.drawable.ic_repeat_one : R.drawable.ic_repeat); + rv.setInt(R.id.btn_shuffle, "setColorFilter", shuffleEnabled ? activeColor : inactiveColor); + rv.setInt(R.id.btn_repeat, "setColorFilter", + repeatMode == Player.REPEAT_MODE_OFF ? inactiveColor : activeColor); + } +} diff --git a/app/src/main/res/drawable/button_favorite_selector.xml b/app/src/main/res/drawable/button_favorite_selector.xml new file mode 100644 index 0000000..6742158 --- /dev/null +++ b/app/src/main/res/drawable/button_favorite_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_play_pause_selector.xml b/app/src/main/res/drawable/button_play_pause_selector.xml new file mode 100644 index 0000000..cb5c785 --- /dev/null +++ b/app/src/main/res/drawable/button_play_pause_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_skip_silence_selector.xml b/app/src/main/res/drawable/button_skip_silence_selector.xml new file mode 100644 index 0000000..cc8a011 --- /dev/null +++ b/app/src/main/res/drawable/button_skip_silence_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/fast_scrollbar_bubble.xml b/app/src/main/res/drawable/fast_scrollbar_bubble.xml new file mode 100644 index 0000000..1b2bfd4 --- /dev/null +++ b/app/src/main/res/drawable/fast_scrollbar_bubble.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/fast_scrollbar_handle.xml b/app/src/main/res/drawable/fast_scrollbar_handle.xml new file mode 100644 index 0000000..ae1ce48 --- /dev/null +++ b/app/src/main/res/drawable/fast_scrollbar_handle.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_backdrop_background_image.xml b/app/src/main/res/drawable/gradient_backdrop_background_image.xml new file mode 100644 index 0000000..a98cd90 --- /dev/null +++ b/app/src/main/res/drawable/gradient_backdrop_background_image.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_discover_background_image.xml b/app/src/main/res/drawable/gradient_discover_background_image.xml new file mode 100644 index 0000000..1356bdd --- /dev/null +++ b/app/src/main/res/drawable/gradient_discover_background_image.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_player_cover_background_image.xml b/app/src/main/res/drawable/gradient_player_cover_background_image.xml new file mode 100644 index 0000000..7e7a22e --- /dev/null +++ b/app/src/main/res/drawable/gradient_player_cover_background_image.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000..57198eb --- /dev/null +++ b/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_arrow_back.xml b/app/src/main/res/drawable/ic_arrow_back.xml new file mode 100644 index 0000000..77bb91d --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_arrow_down.xml b/app/src/main/res/drawable/ic_arrow_down.xml new file mode 100644 index 0000000..59ec814 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_bookmark.xml b/app/src/main/res/drawable/ic_bookmark.xml new file mode 100644 index 0000000..c2042b0 --- /dev/null +++ b/app/src/main/res/drawable/ic_bookmark.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_bookmark_sync.xml b/app/src/main/res/drawable/ic_bookmark_sync.xml new file mode 100644 index 0000000..b27f3a1 --- /dev/null +++ b/app/src/main/res/drawable/ic_bookmark_sync.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_check_circle.xml b/app/src/main/res/drawable/ic_check_circle.xml new file mode 100644 index 0000000..7435e42 --- /dev/null +++ b/app/src/main/res/drawable/ic_check_circle.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 0000000..c1aa0f1 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_done.xml b/app/src/main/res/drawable/ic_done.xml new file mode 100644 index 0000000..fee2fd7 --- /dev/null +++ b/app/src/main/res/drawable/ic_done.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_download.xml b/app/src/main/res/drawable/ic_download.xml new file mode 100644 index 0000000..afbabb4 --- /dev/null +++ b/app/src/main/res/drawable/ic_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_drag_handle.xml b/app/src/main/res/drawable/ic_drag_handle.xml new file mode 100644 index 0000000..d283f15 --- /dev/null +++ b/app/src/main/res/drawable/ic_drag_handle.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_eq.xml b/app/src/main/res/drawable/ic_eq.xml new file mode 100644 index 0000000..5f3a8b4 --- /dev/null +++ b/app/src/main/res/drawable/ic_eq.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_error.xml b/app/src/main/res/drawable/ic_error.xml new file mode 100644 index 0000000..8cffcf1 --- /dev/null +++ b/app/src/main/res/drawable/ic_error.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_favorite.xml b/app/src/main/res/drawable/ic_favorite.xml new file mode 100644 index 0000000..753a422 --- /dev/null +++ b/app/src/main/res/drawable/ic_favorite.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_favorites_outlined.xml b/app/src/main/res/drawable/ic_favorites_outlined.xml new file mode 100644 index 0000000..03706ff --- /dev/null +++ b/app/src/main/res/drawable/ic_favorites_outlined.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_feed.xml b/app/src/main/res/drawable/ic_feed.xml new file mode 100644 index 0000000..2baa451 --- /dev/null +++ b/app/src/main/res/drawable/ic_feed.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_file_download.xml b/app/src/main/res/drawable/ic_file_download.xml new file mode 100644 index 0000000..3f16729 --- /dev/null +++ b/app/src/main/res/drawable/ic_file_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_filter_list.xml b/app/src/main/res/drawable/ic_filter_list.xml new file mode 100644 index 0000000..9c116d2 --- /dev/null +++ b/app/src/main/res/drawable/ic_filter_list.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_folder.xml b/app/src/main/res/drawable/ic_folder.xml new file mode 100644 index 0000000..2c6f69f --- /dev/null +++ b/app/src/main/res/drawable/ic_folder.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_forward.xml b/app/src/main/res/drawable/ic_forward.xml new file mode 100644 index 0000000..220a440 --- /dev/null +++ b/app/src/main/res/drawable/ic_forward.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_graphic_eq.xml b/app/src/main/res/drawable/ic_graphic_eq.xml new file mode 100644 index 0000000..c9f4b0f --- /dev/null +++ b/app/src/main/res/drawable/ic_graphic_eq.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml new file mode 100644 index 0000000..e6b3b45 --- /dev/null +++ b/app/src/main/res/drawable/ic_history.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..083e7c7 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_info_stream.xml b/app/src/main/res/drawable/ic_info_stream.xml new file mode 100644 index 0000000..5165a16 --- /dev/null +++ b/app/src/main/res/drawable/ic_info_stream.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..89ac22c --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_link.xml b/app/src/main/res/drawable/ic_link.xml new file mode 100644 index 0000000..5592db2 --- /dev/null +++ b/app/src/main/res/drawable/ic_link.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/drawable/ic_lyrics.xml b/app/src/main/res/drawable/ic_lyrics.xml new file mode 100644 index 0000000..cac983a --- /dev/null +++ b/app/src/main/res/drawable/ic_lyrics.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_lyrics_sync_lock.xml b/app/src/main/res/drawable/ic_lyrics_sync_lock.xml new file mode 100644 index 0000000..5576242 --- /dev/null +++ b/app/src/main/res/drawable/ic_lyrics_sync_lock.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mix_from_here.xml b/app/src/main/res/drawable/ic_mix_from_here.xml new file mode 100644 index 0000000..8c351ab --- /dev/null +++ b/app/src/main/res/drawable/ic_mix_from_here.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_more_vert.xml b/app/src/main/res/drawable/ic_more_vert.xml new file mode 100644 index 0000000..69fb9ec --- /dev/null +++ b/app/src/main/res/drawable/ic_more_vert.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_navigate_next.xml b/app/src/main/res/drawable/ic_navigate_next.xml new file mode 100644 index 0000000..56c0ca8 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigate_next.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml new file mode 100644 index 0000000..d9b8d16 --- /dev/null +++ b/app/src/main/res/drawable/ic_pause.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_placeholder_album.xml b/app/src/main/res/drawable/ic_placeholder_album.xml new file mode 100644 index 0000000..1e5ecfd --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_album.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_artist.xml b/app/src/main/res/drawable/ic_placeholder_artist.xml new file mode 100644 index 0000000..2f71051 --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_artist.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_directory.xml b/app/src/main/res/drawable/ic_placeholder_directory.xml new file mode 100644 index 0000000..956cc9d --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_directory.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_folder.xml b/app/src/main/res/drawable/ic_placeholder_folder.xml new file mode 100644 index 0000000..956cc9d --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_folder.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_playlist.xml b/app/src/main/res/drawable/ic_placeholder_playlist.xml new file mode 100644 index 0000000..e8d5fba --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_playlist.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_podcast.xml b/app/src/main/res/drawable/ic_placeholder_podcast.xml new file mode 100644 index 0000000..7562864 --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_podcast.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_radio.xml b/app/src/main/res/drawable/ic_placeholder_radio.xml new file mode 100644 index 0000000..6874184 --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_radio.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_placeholder_song.xml b/app/src/main/res/drawable/ic_placeholder_song.xml new file mode 100644 index 0000000..1dbadbd --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder_song.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_play.xml b/app/src/main/res/drawable/ic_play.xml new file mode 100644 index 0000000..f8f81bd --- /dev/null +++ b/app/src/main/res/drawable/ic_play.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_play_for_work.xml b/app/src/main/res/drawable/ic_play_for_work.xml new file mode 100644 index 0000000..c7514fe --- /dev/null +++ b/app/src/main/res/drawable/ic_play_for_work.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_playlist_add.xml b/app/src/main/res/drawable/ic_playlist_add.xml new file mode 100644 index 0000000..25c22a7 --- /dev/null +++ b/app/src/main/res/drawable/ic_playlist_add.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_podcast_download.xml b/app/src/main/res/drawable/ic_podcast_download.xml new file mode 100644 index 0000000..24a34c6 --- /dev/null +++ b/app/src/main/res/drawable/ic_podcast_download.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_queue.xml b/app/src/main/res/drawable/ic_queue.xml new file mode 100644 index 0000000..6a04876 --- /dev/null +++ b/app/src/main/res/drawable/ic_queue.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 0000000..f3dcb53 --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_repeat.xml b/app/src/main/res/drawable/ic_repeat.xml new file mode 100644 index 0000000..244a36e --- /dev/null +++ b/app/src/main/res/drawable/ic_repeat.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_repeat_one.xml b/app/src/main/res/drawable/ic_repeat_one.xml new file mode 100644 index 0000000..f422f79 --- /dev/null +++ b/app/src/main/res/drawable/ic_repeat_one.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_replay.xml b/app/src/main/res/drawable/ic_replay.xml new file mode 100644 index 0000000..2f803b7 --- /dev/null +++ b/app/src/main/res/drawable/ic_replay.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..8ee9978 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_server_transcode_priority.xml b/app/src/main/res/drawable/ic_server_transcode_priority.xml new file mode 100644 index 0000000..5af6fea --- /dev/null +++ b/app/src/main/res/drawable/ic_server_transcode_priority.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..24d3261 --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_share.xml b/app/src/main/res/drawable/ic_share.xml new file mode 100644 index 0000000..900774a --- /dev/null +++ b/app/src/main/res/drawable/ic_share.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_shuffle.xml b/app/src/main/res/drawable/ic_shuffle.xml new file mode 100644 index 0000000..73de35f --- /dev/null +++ b/app/src/main/res/drawable/ic_shuffle.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_skip_next.xml b/app/src/main/res/drawable/ic_skip_next.xml new file mode 100644 index 0000000..1529802 --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_next.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_skip_previous.xml b/app/src/main/res/drawable/ic_skip_previous.xml new file mode 100644 index 0000000..783c31d --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_previous.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_skip_silence.xml b/app/src/main/res/drawable/ic_skip_silence.xml new file mode 100644 index 0000000..1fef7bf --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_silence.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_skip_silence_outlined.xml b/app/src/main/res/drawable/ic_skip_silence_outlined.xml new file mode 100644 index 0000000..1938a5b --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_silence_outlined.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_sort_list.xml b/app/src/main/res/drawable/ic_sort_list.xml new file mode 100644 index 0000000..33efc4a --- /dev/null +++ b/app/src/main/res/drawable/ic_sort_list.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_splash_logo.xml b/app/src/main/res/drawable/ic_splash_logo.xml new file mode 100644 index 0000000..ed526ec --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_logo.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_star.xml b/app/src/main/res/drawable/ic_star.xml new file mode 100644 index 0000000..2d74f8a --- /dev/null +++ b/app/src/main/res/drawable/ic_star.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_star_outlined.xml b/app/src/main/res/drawable/ic_star_outlined.xml new file mode 100644 index 0000000..7637008 --- /dev/null +++ b/app/src/main/res/drawable/ic_star_outlined.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_tap.xml b/app/src/main/res/drawable/ic_tap.xml new file mode 100644 index 0000000..7d29510 --- /dev/null +++ b/app/src/main/res/drawable/ic_tap.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_toolbar_motion_on.xml b/app/src/main/res/drawable/ic_toolbar_motion_on.xml new file mode 100644 index 0000000..8119556 --- /dev/null +++ b/app/src/main/res/drawable/ic_toolbar_motion_on.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_toolbar_tempo.xml b/app/src/main/res/drawable/ic_toolbar_tempo.xml new file mode 100644 index 0000000..63e72c7 --- /dev/null +++ b/app/src/main/res/drawable/ic_toolbar_tempo.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_transcode.xml b/app/src/main/res/drawable/ic_transcode.xml new file mode 100644 index 0000000..805d809 --- /dev/null +++ b/app/src/main/res/drawable/ic_transcode.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/logo.xml b/app/src/main/res/drawable/logo.xml new file mode 100644 index 0000000..8d9ad6d --- /dev/null +++ b/app/src/main/res/drawable/logo.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ui_empty_description.xml b/app/src/main/res/drawable/ui_empty_description.xml new file mode 100644 index 0000000..f96d063 --- /dev/null +++ b/app/src/main/res/drawable/ui_empty_description.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ui_empty_list.xml b/app/src/main/res/drawable/ui_empty_list.xml new file mode 100644 index 0000000..3630ed6 --- /dev/null +++ b/app/src/main/res/drawable/ui_empty_list.xml @@ -0,0 +1,597 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ui_empty_podcast.xml b/app/src/main/res/drawable/ui_empty_podcast.xml new file mode 100644 index 0000000..d85dce1 --- /dev/null +++ b/app/src/main/res/drawable/ui_empty_podcast.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ui_empty_radio_station.xml b/app/src/main/res/drawable/ui_empty_radio_station.xml new file mode 100644 index 0000000..d85dce1 --- /dev/null +++ b/app/src/main/res/drawable/ui_empty_radio_station.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ui_eq_not_supported.xml b/app/src/main/res/drawable/ui_eq_not_supported.xml new file mode 100644 index 0000000..fc8a364 --- /dev/null +++ b/app/src/main/res/drawable/ui_eq_not_supported.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ui_splash_screen.xml b/app/src/main/res/drawable/ui_splash_screen.xml new file mode 100644 index 0000000..f789f88 --- /dev/null +++ b/app/src/main/res/drawable/ui_splash_screen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/widget_bg.xml b/app/src/main/res/drawable/widget_bg.xml new file mode 100644 index 0000000..c569bbe --- /dev/null +++ b/app/src/main/res/drawable/widget_bg.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/font/inter.xml b/app/src/main/res/font/inter.xml new file mode 100644 index 0000000..059f7b5 --- /dev/null +++ b/app/src/main/res/font/inter.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/font/inter_black.ttf b/app/src/main/res/font/inter_black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..565375773523cf29adce38a9fbf71a3badf2082c GIT binary patch literal 294396 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

A`y}8fD@XcF*bg(?aZEx<~j>dXSdRp1b=S<#@CX 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


b6j$2m#p6~C!rY9!9d*3s^ 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 QYnf3{HI-Ghx~bCt4-ah3x&QzG literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_extra_bold.ttf b/app/src/main/res/font/inter_extra_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7f16a0f0f5947925f4f93bc96ebb52f387f8b2b1 GIT binary patch literal 294072 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

IpRpceDL>@u>`6fvS>>yFhe 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

Xa4+qGrJ&NNqSq9fo9 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

cQMf?Fv~EuMU@QXf`y}4 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

dHNwv~(;@i|a^Zdd0x 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 bq*mpmO7dsEdP8*!D+;Q)uAxPDSNgvJqt^P8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_light.ttf b/app/src/main/res/font/inter_light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a5f073690d3ffe5c251c690e4488af8a4fb441e4 GIT binary patch literal 288088 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_medium.ttf b/app/src/main/res/font/inter_medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..721147d8311f1bed1bab5e39c18254beedcaf0ab GIT binary patch literal 292140 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%0DAB`*{C?!~6Pr26rI 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%0A^c* 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

EgldKWv84`FE}6|o^51~BB|TA!2q;5^Gy=j2^A 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 GrT-t|qF|Z; literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_regular.ttf b/app/src/main/res/font/inter_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..96fd6a12d0e20d7010b196e425ca48b0b5286df2 GIT binary patch literal 287928 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

Qe?PT{|VxcO4J23`XEyBR&d89m>IY`5{-wz+U6 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 K>9chcrT;%KY-A|_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_semi_bold.ttf b/app/src/main/res/font/inter_semi_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ddb279290ba32b02722d7bee592d7df22a16e86f GIT binary patch literal 293028 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%0D38jB&{w}Bz~6@Z)fNgB$^HtzXy?o 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 UK5^r`24)mgeNAnHZmsnH17|=S#Q*>R literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_thin.ttf b/app/src/main/res/font/inter_thin.ttf new file mode 100644 index 0000000000000000000000000000000000000000..76be6252b91e87ab5ead604b99d6945c13869f08 GIT binary patch literal 288568 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%0A2If4Bfd4GGEOY<C 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-land/inner_fragment_player_controller_layout.xml b/app/src/main/res/layout-land/inner_fragment_player_controller_layout.xml new file mode 100644 index 0000000..cb3ae9c --- /dev/null +++ b/app/src/main/res/layout-land/inner_fragment_player_controller_layout.xml @@ -0,0 +1,404 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/now_playing_media_controller_layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/vertical_guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.45" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/player_media_quality_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginVertical="8dp" + android:gravity="center" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toTopOf="parent"> + + <com.google.android.material.chip.Chip + android:id="@+id/player_media_extension" + style="@style/Widget.Material3.Chip.Suggestion" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checked="true" + android:clickable="false" + android:text="Unknown" + app:chipStrokeWidth="0dp" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/player_media_bitrate" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintHorizontal_chainStyle="packed"/> + + <TextView + android:id="@+id/player_media_bitrate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + app:layout_constraintTop_toTopOf="@id/player_media_extension" + app:layout_constraintBottom_toBottomOf="@id/player_media_extension" + app:layout_constraintStart_toEndOf="@id/player_media_extension" + app:layout_constraintEnd_toEndOf="parent"/> + + <ImageButton + android:id="@+id/player_info_track" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="16dp" + android:layout_marginEnd="8dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@id/player_media_extension" + app:layout_constraintBottom_toBottomOf="@id/player_media_extension" + app:srcCompat="@drawable/ic_info_stream" + app:tint="?attr/colorOnPrimaryContainer" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.viewpager2.widget.ViewPager2 + android:id="@+id/player_media_cover_view_pager" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_margin="12dp" + android:clipToPadding="false" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/vertical_guideline" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <LinearLayout + android:id="@+id/rating_container" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="0dp" + android:orientation="horizontal" + android:gravity="center" + android:scaleX="0.8" + android:scaleY="0.8" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/player_media_quality_sector"> + + <RatingBar + android:id="@+id/song_rating_bar" + style="?android:attr/ratingBarStyleIndicator" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:numStars="5" + android:stepSize="1" + android:rating="0" + android:isIndicator="false" /> + + <TextView + android:id="@+id/rating_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:textSize="12sp" + android:textColor="?attr/colorOnSurfaceVariant" + android:text=""/> + </LinearLayout> + + <TextView + android:id="@+id/player_media_title_label" + style="@style/HeadlineLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:ellipsize="marquee" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintVertical_chainStyle="packed" + app:layout_constraintBottom_toTopOf="@+id/player_artist_name_label" + app:layout_constraintEnd_toStartOf="@+id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/player_media_quality_sector" /> + + <TextView + android:id="@+id/player_artist_name_label" + style="@style/TitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:ellipsize="marquee" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/player_media_title_label" + app:layout_constraintBottom_toTopOf="@id/exo_progress"/> + + <ToggleButton + android:id="@+id/button_favorite" + android:layout_width="26dp" + android:layout_height="26dp" + android:layout_marginEnd="24dp" + android:background="@drawable/button_favorite_selector" + android:checked="false" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintBottom_toBottomOf="@+id/player_media_title_label" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/player_media_title_label" /> + + <TextView + android:id="@+id/exo_position" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginStart="24dp" + android:paddingBottom="4dp" + android:text="@string/label_placeholder" + android:textColor="@color/titleTextColor" + android:textSize="12sp" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/exo_progress" /> + + <androidx.media3.ui.DefaultTimeBar + android:id="@id/exo_progress" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="20dp" + android:layout_marginEnd="16dp" + app:bar_height="2dp" + app:buffered_color="?attr/colorOnSecondaryContainer" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/player_artist_name_label" + app:layout_constraintBottom_toTopOf="@+id/player_play_pause_placeholder_view" + app:played_color="?attr/colorOnPrimaryContainer" + app:scrubber_color="?attr/colorOnPrimaryContainer" + app:unplayed_color="?attr/colorPrimaryContainer" /> + + <TextView + android:id="@+id/exo_duration" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginEnd="24dp" + android:paddingBottom="4dp" + android:text="@string/label_placeholder" + android:textColor="@color/titleTextColor" + android:textSize="12sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/exo_progress" /> + + <View + android:id="@+id/placeholder_view_left" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_left" + app:layout_constraintEnd_toStartOf="@+id/placeholder_view_middle_left" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_left" /> + + <View + android:id="@+id/placeholder_view_middle_left" + android:layout_width="42dp" + android:layout_height="42dp" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toEndOf="@id/placeholder_view_left" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" /> + + <View + android:id="@+id/player_play_pause_placeholder_view" + android:layout_width="70dp" + android:layout_height="70dp" + android:layout_marginTop="36dp" + app:layout_constraintBottom_toTopOf="@+id/player_quick_action_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/exo_progress"/> + + <View + android:id="@+id/placeholder_view_middle_right" + android:layout_width="42dp" + android:layout_height="42dp" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@id/placeholder_view_right" + app:layout_constraintStart_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" /> + + <View + android:id="@+id/placeholder_view_right" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginEnd="24dp" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_right" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right" /> + + <Button + android:id="@+id/player_playback_speed_button" + style="@style/Widget.Material3.Button.TextButton" + android:layout_width="64dp" + android:layout_height="64dp" + android:layout_marginStart="24dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_left" + app:layout_constraintEnd_toStartOf="@+id/placeholder_view_middle_left" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_left" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_shuffle" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginStart="24dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_left" + app:layout_constraintEnd_toStartOf="@+id/placeholder_view_middle_left" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_left" + app:srcCompat="@drawable/ic_shuffle" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_rew" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + android:src="@drawable/ic_replay" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toEndOf="@id/placeholder_view_left" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_prev" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toEndOf="@id/placeholder_view_left" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:srcCompat="@drawable/ic_skip_previous" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@id/exo_play_pause" + style="@style/ExoStyledControls.Button.Center.PlayPause" + android:layout_width="80dp" + android:layout_height="80dp" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_next" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@id/placeholder_view_right" + app:layout_constraintStart_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:srcCompat="@drawable/ic_skip_next" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_ffwd" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@id/placeholder_view_right" + app:layout_constraintStart_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:srcCompat="@drawable/ic_forward" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_repeat_toggle" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginEnd="24dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_right" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right" + app:srcCompat="@drawable/ic_repeat" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ToggleButton + android:id="@+id/player_skip_silence_toggle_button" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginEnd="24dp" + android:background="@drawable/button_skip_silence_selector" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_right" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right" + app:tint="?attr/colorOnPrimaryContainer" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/player_quick_action_view" + android:layout_width="0dp" + android:layout_height="@dimen/now_playing_bottom_peek_height" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintEnd_toEndOf="parent" + android:visibility="gone"> + + <ImageButton + android:id="@+id/player_open_queue_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="16dp" + android:background="?attr/selectableItemBackgroundBorderless" + app:layout_constraintStart_toEndOf="@+id/player_open_equalizer_button" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:srcCompat="@drawable/ic_queue" /> + + <ImageButton + android:id="@+id/player_open_equalizer_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="16dp" + android:background="?attr/selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@+id/player_open_queue_button" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:srcCompat="@drawable/ic_eq" /> + + </androidx.constraintlayout.widget.ConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..01edf7f --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/colorSurface" + android:orientation="vertical"> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:id="@+id/drawer_layout" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1"> + + <androidx.fragment.app.FragmentContainerView + android:id="@+id/nav_host_fragment" + android:name="androidx.navigation.fragment.NavHostFragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:defaultNavHost="true" + app:navGraph="@navigation/nav_graph" /> + + <FrameLayout + android:id="@+id/player_bottom_sheet" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:behavior_hideable="true" + app:behavior_peekHeight="@dimen/bottom_sheet_behavior_peek_height" + app:layout_behavior="@string/bottom_sheet_behavior" /> + + <com.google.android.material.bottomnavigation.BottomNavigationView + android:id="@+id/bottom_navigation" + android:layout_width="match_parent" + android:layout_height="80dp" + android:layout_gravity="bottom" + android:paddingStart="24dp" + android:paddingEnd="24dp" + android:visibility="gone" + app:menu="@menu/bottom_nav_menu" /> + + </androidx.coordinatorlayout.widget.CoordinatorLayout> + + <TextView + android:id="@+id/offline_mode_text_view" + style="@style/NoConnectionTextView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:text="@string/activity_info_offline_mode" + android:textSize="12sp" + android:textStyle="bold" + android:visibility="gone" /> + +</LinearLayout> diff --git a/app/src/main/res/layout/bottom_sheet_album_dialog.xml b/app/src/main/res/layout/bottom_sheet_album_dialog.xml new file mode 100644 index 0000000..b37a5f9 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_album_dialog.xml @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp"> + + <!-- Header --> + <ImageView + android:id="@+id/album_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ToggleButton + android:id="@+id/button_favorite" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="8dp" + android:background="@drawable/button_favorite_selector" + android:checked="false" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:gravity="center_vertical" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:focusable="true" + android:focusableInTouchMode="true" + android:marqueeRepeatLimit="marquee_forever" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:scrollHorizontally="true" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_artist_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/album_title_text_view" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/play_radio_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_instant_mix" /> + + <TextView + android:id="@+id/play_random_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_shuffle" /> + + <TextView + android:id="@+id/play_next_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_play_next" /> + + <TextView + android:id="@+id/add_to_queue_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_add_to_queue" /> + + <TextView + android:id="@+id/download_all_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_download_all" /> + + <TextView + android:id="@+id/add_to_playlist_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_add_to_playlist" /> + + <TextView + android:id="@+id/remove_all_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:visibility="gone" + android:text="@string/album_bottom_sheet_remove_all" /> + + <TextView + android:id="@+id/go_to_artist_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_go_to_artist" /> + + <TextView + android:id="@+id/share_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/album_bottom_sheet_share" + android:visibility="gone"/> + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_artist_dialog.xml b/app/src/main/res/layout/bottom_sheet_artist_dialog.xml new file mode 100644 index 0000000..75ef2ce --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_artist_dialog.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="12dp" + android:clipChildren="false"> + + <!-- Header --> + <ImageView + android:id="@+id/artist_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ToggleButton + android:id="@+id/button_favorite" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="8dp" + android:background="@drawable/button_favorite_selector" + android:checked="false" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:gravity="center_vertical" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/song_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/artist_cover_image_view" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/play_radio_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/artist_bottom_sheet_instant_mix" /> + + <TextView + android:id="@+id/play_random_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/artist_bottom_sheet_shuffle" /> + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_downloaded_dialog.xml b/app/src/main/res/layout/bottom_sheet_downloaded_dialog.xml new file mode 100644 index 0000000..d5659cd --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_downloaded_dialog.xml @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp"> + + <!-- Header --> + <ImageView + android:id="@+id/group_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/group_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:focusable="true" + android:focusableInTouchMode="true" + android:marqueeRepeatLimit="marquee_forever" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:scrollHorizontally="true" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintVertical_chainStyle="packed" + app:layout_constraintBottom_toTopOf="@+id/group_subtitle_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/group_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/group_cover_image_view" /> + + <TextView + android:id="@+id/group_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/group_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/group_title_text_view" + app:layout_constraintBottom_toBottomOf="@+id/group_cover_image_view"/> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/play_random_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/downloaded_bottom_sheet_shuffle" /> + + <TextView + android:id="@+id/play_next_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/downloaded_bottom_sheet_play_next" /> + + <TextView + android:id="@+id/add_to_queue_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/downloaded_bottom_sheet_add_to_queue" /> + + <TextView + android:id="@+id/remove_all_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/downloaded_bottom_sheet_remove_all" /> + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_podcast_channel_dialog.xml b/app/src/main/res/layout/bottom_sheet_podcast_channel_dialog.xml new file mode 100644 index 0000000..eada951 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_podcast_channel_dialog.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="12dp" + android:clipChildren="false"> + + <!-- Header --> + <ImageView + android:id="@+id/podcast_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/podcast_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:maxLines="3" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/podcast_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/podcast_cover_image_view" + app:layout_constraintBottom_toBottomOf="@+id/podcast_cover_image_view"/> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/delete_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_delete" /> + + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_podcast_episode_dialog.xml b/app/src/main/res/layout/bottom_sheet_podcast_episode_dialog.xml new file mode 100644 index 0000000..5c4fc25 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_podcast_episode_dialog.xml @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="12dp" + android:clipChildren="false"> + + <!-- Header --> + <ImageView + android:id="@+id/podcast_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/podcast_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/podcast_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/podcast_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/podcast_cover_image_view" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/play_next_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_play_next" + android:visibility="gone" /> + + <TextView + android:id="@+id/add_to_queue_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_add_to_queue" + android:visibility="gone" /> + + <TextView + android:id="@+id/download_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_download" + android:visibility="gone" /> + + <TextView + android:id="@+id/remove_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_remove" + android:visibility="gone" /> + + <TextView + android:id="@+id/delete_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_delete" /> + + <TextView + android:id="@+id/go_to_channel_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:visibility="gone" + android:paddingBottom="12dp" + android:text="@string/podcast_bottom_sheet_go_to_channel" /> + + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_share_dialog.xml b/app/src/main/res/layout/bottom_sheet_share_dialog.xml new file mode 100644 index 0000000..318aa6c --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_share_dialog.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="12dp" + android:clipChildren="false"> + + <!-- Header --> + <ImageView + android:id="@+id/share_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/share_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@+id/share_subtitle_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/share_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/share_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/share_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/share_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/share_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/share_title_text_view" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/copy_link_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/share_bottom_sheet_copy_link" /> + + <TextView + android:id="@+id/update_share_preferences_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/share_bottom_sheet_update" /> + + <TextView + android:id="@+id/delete_share_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/share_bottom_sheet_delete" /> + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_song_dialog.xml b/app/src/main/res/layout/bottom_sheet_song_dialog.xml new file mode 100644 index 0000000..7cf9844 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_song_dialog.xml @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="12dp" + android:clipChildren="false"> + + <!-- Header --> + <ImageView + android:id="@+id/song_cover_image_view" + android:layout_width="54dp" + android:layout_height="54dp" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ToggleButton + android:id="@+id/button_favorite" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="8dp" + android:background="@drawable/button_favorite_selector" + android:checked="false" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:gravity="center_vertical" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/song_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/song_cover_image_view" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/song_artist_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@id/button_favorite" + app:layout_constraintStart_toEndOf="@+id/song_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/song_title_text_view" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <include + android:id="@+id/song_asset_link_row" + layout="@layout/view_asset_link_row" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="20dp" + android:paddingEnd="12dp" /> + + <LinearLayout + android:id="@+id/option_linear_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="8dp" + android:paddingBottom="12dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent"> + + <TextView + android:id="@+id/play_radio_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_instant_mix" /> + + <TextView + android:id="@+id/play_next_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_play_next" /> + + <TextView + android:id="@+id/add_to_queue_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_add_to_queue" /> + + <TextView + android:id="@+id/rate_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_rate" /> + + <TextView + android:id="@+id/download_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_download" /> + + <TextView + android:id="@+id/remove_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_remove" /> + + <TextView + android:id="@+id/add_to_playlist_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_add_to_playlist" /> + + <TextView + android:id="@+id/go_to_album_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_go_to_album" /> + + <TextView + android:id="@+id/go_to_artist_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_go_to_artist" /> + + <TextView + android:id="@+id/share_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="20dp" + android:paddingBottom="12dp" + android:text="@string/song_bottom_sheet_share" + android:visibility="gone"/> + </LinearLayout> +</LinearLayout> diff --git a/app/src/main/res/layout/chip_search_filter_genre.xml b/app/src/main/res/layout/chip_search_filter_genre.xml new file mode 100644 index 0000000..457cfe4 --- /dev/null +++ b/app/src/main/res/layout/chip_search_filter_genre.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.google.android.material.chip.Chip xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + style="@style/Widget.Material3.Chip.Suggestion" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checkable="true" + android:gravity="center" + android:paddingLeft="8dp" + android:paddingRight="8dp" + app:chipStrokeWidth="1.5dp" + app:ensureMinTouchTargetSize="false" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_battery_optimization.xml b/app/src/main/res/layout/dialog_battery_optimization.xml new file mode 100644 index 0000000..d7953ba --- /dev/null +++ b/app/src/main/res/layout/dialog_battery_optimization.xml @@ -0,0 +1,25 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:id="@+id/battery_optimization_primary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/activity_battery_optimizations_summary" /> + + <TextView + android:id="@+id/battery_optimization_secondary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="24dp" + android:autoLink="web" + android:text="@string/activity_battery_optimizations_conclusion" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_connection_alert.xml b/app/src/main/res/layout/dialog_connection_alert.xml new file mode 100644 index 0000000..2a64794 --- /dev/null +++ b/app/src/main/res/layout/dialog_connection_alert.xml @@ -0,0 +1,14 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/connection_alert_dialog_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_delete_download_storage.xml b/app/src/main/res/layout/dialog_delete_download_storage.xml new file mode 100644 index 0000000..4c88b6f --- /dev/null +++ b/app/src/main/res/layout/dialog_delete_download_storage.xml @@ -0,0 +1,15 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/delete_download_storage_dialog_summary" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_download_directory.xml b/app/src/main/res/layout/dialog_download_directory.xml new file mode 100644 index 0000000..4afbda8 --- /dev/null +++ b/app/src/main/res/layout/dialog_download_directory.xml @@ -0,0 +1,15 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/download_directory_dialog_summary" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_download_storage.xml b/app/src/main/res/layout/dialog_download_storage.xml new file mode 100644 index 0000000..7538eef --- /dev/null +++ b/app/src/main/res/layout/dialog_download_storage.xml @@ -0,0 +1,23 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/download_storage_dialog_summary" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/download_storage_dialog_sub_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_github_tempo_update.xml b/app/src/main/res/layout/dialog_github_tempo_update.xml new file mode 100644 index 0000000..c103c87 --- /dev/null +++ b/app/src/main/res/layout/dialog_github_tempo_update.xml @@ -0,0 +1,14 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/github_update_dialog_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_home_rearrangement.xml b/app/src/main/res/layout/dialog_home_rearrangement.xml new file mode 100644 index 0000000..0d43b99 --- /dev/null +++ b/app/src/main/res/layout/dialog_home_rearrangement.xml @@ -0,0 +1,23 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/home_rearrangement_dialog_subtitle" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/home_sector_item_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:nestedScrollingEnabled="false" + android:paddingHorizontal="18dp" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_playlist_chooser.xml b/app/src/main/res/layout/dialog_playlist_chooser.xml new file mode 100644 index 0000000..3be0313 --- /dev/null +++ b/app/src/main/res/layout/dialog_playlist_chooser.xml @@ -0,0 +1,26 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:id="@+id/no_playlists_created_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:gravity="center" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/playlist_chooser_dialog_empty" + android:visibility="gone" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/playlist_dialog_recycler_view" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:layout_marginTop="8dp" + android:clipToPadding="false" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_playlist_editor.xml b/app/src/main/res/layout/dialog_playlist_editor.xml new file mode 100644 index 0000000..6a3d97d --- /dev/null +++ b/app/src/main/res/layout/dialog_playlist_editor.xml @@ -0,0 +1,58 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginTop="24dp" + android:layout_marginStart="24dp" + android:layout_marginEnd="12dp"> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/playlist_name_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/playlist_editor_dialog_hint_name" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> + + <FrameLayout + android:id="@+id/playlist_share_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + android:layout_marginTop="10dp"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_share" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/playlist_song_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:clipToPadding="false" + android:nestedScrollingEnabled="false" + android:paddingStart="8dp" + android:paddingEnd="12dp" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_podcast_channel_editor.xml b/app/src/main/res/layout/dialog_podcast_channel_editor.xml new file mode 100644 index 0000000..51657a0 --- /dev/null +++ b/app/src/main/res/layout/dialog_podcast_channel_editor.xml @@ -0,0 +1,27 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/podcast_channel_rss_url_name_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/podcast_channel_editor_dialog_hint_rss_url" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_radio_editor.xml b/app/src/main/res/layout/dialog_radio_editor.xml new file mode 100644 index 0000000..6f5a2fe --- /dev/null +++ b/app/src/main/res/layout/dialog_radio_editor.xml @@ -0,0 +1,67 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/internet_radio_station_name_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/radio_editor_dialog_hint_name" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/internet_radio_station_stream_url_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/radio_editor_dialog_hint_stream_url" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/internet_radio_station_homepage_url_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/radio_editor_dialog_hint_homepage_url" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_rating.xml b/app/src/main/res/layout/dialog_rating.xml new file mode 100644 index 0000000..f1d1d87 --- /dev/null +++ b/app/src/main/res/layout/dialog_rating.xml @@ -0,0 +1,20 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <RatingBar + android:id="@+id/rating_bar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="12dp" + android:numStars="5" + android:rating="0" + android:stepSize="1" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_server_signup.xml b/app/src/main/res/layout/dialog_server_signup.xml new file mode 100644 index 0000000..69597d3 --- /dev/null +++ b/app/src/main/res/layout/dialog_server_signup.xml @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.core.widget.NestedScrollView + android:id="@+id/home_radio_station_sector" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/server_name_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/server_signup_dialog_hint_name" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/username_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/server_signup_dialog_hint_username" + android:inputType="textShortMessage" + android:textCursorDrawable="@null" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="password_toggle" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/password_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/server_signup_dialog_hint_password" + android:inputType="textPassword" + android:textCursorDrawable="@null" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/server_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/server_signup_dialog_hint_url" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/local_address_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/server_signup_dialog_hint_local_address" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + </com.google.android.material.textfield.TextInputLayout> + + <CheckBox + android:id="@+id/low_security_checkbox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:text="@string/server_signup_dialog_action_low_security" /> + </LinearLayout> + </androidx.core.widget.NestedScrollView> +</androidx.constraintlayout.widget.ConstraintLayout> + + + diff --git a/app/src/main/res/layout/dialog_server_unreachable.xml b/app/src/main/res/layout/dialog_server_unreachable.xml new file mode 100644 index 0000000..bff4e94 --- /dev/null +++ b/app/src/main/res/layout/dialog_server_unreachable.xml @@ -0,0 +1,14 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/server_unreachable_dialog_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_share_update.xml b/app/src/main/res/layout/dialog_share_update.xml new file mode 100644 index 0000000..ddf279c --- /dev/null +++ b/app/src/main/res/layout/dialog_share_update.xml @@ -0,0 +1,51 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/share_description_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/share_update_dialog_hint_description" + android:inputType="textNoSuggestions" + android:textCursorDrawable="@null" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + style="@style/Widget.Material3.TextInputLayout.OutlinedBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:textColorHint="?android:textColorHint" + app:endIconMode="clear_text" + app:endIconTint="?android:textColorSecondary" + app:errorEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/share_expiration_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:longClickable="false" + android:textIsSelectable="false" + android:hint="@string/share_update_dialog_hint_expiration_date" + android:inputType="textShortMessage" + android:textCursorDrawable="@null" /> + + </com.google.android.material.textfield.TextInputLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_starred_album_sync.xml b/app/src/main/res/layout/dialog_starred_album_sync.xml new file mode 100644 index 0000000..5b9343d --- /dev/null +++ b/app/src/main/res/layout/dialog_starred_album_sync.xml @@ -0,0 +1,14 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/starred_album_sync_dialog_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_starred_artist_sync.xml b/app/src/main/res/layout/dialog_starred_artist_sync.xml new file mode 100644 index 0000000..ca41742 --- /dev/null +++ b/app/src/main/res/layout/dialog_starred_artist_sync.xml @@ -0,0 +1,14 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/starred_artist_sync_dialog_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_starred_sync.xml b/app/src/main/res/layout/dialog_starred_sync.xml new file mode 100644 index 0000000..2bbedca --- /dev/null +++ b/app/src/main/res/layout/dialog_starred_sync.xml @@ -0,0 +1,14 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/starred_sync_dialog_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_streaming_cache_storage.xml b/app/src/main/res/layout/dialog_streaming_cache_storage.xml new file mode 100644 index 0000000..8ae48b2 --- /dev/null +++ b/app/src/main/res/layout/dialog_streaming_cache_storage.xml @@ -0,0 +1,23 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/streaming_cache_storage_dialog_summary" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="24dp" + android:layout_marginBottom="4dp" + android:text="@string/streaming_cache_storage_dialog_sub_summary" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_track_info.xml b/app/src/main/res/layout/dialog_track_info.xml new file mode 100644 index 0000000..ae72877 --- /dev/null +++ b/app/src/main/res/layout/dialog_track_info.xml @@ -0,0 +1,499 @@ +<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp"> + + <ImageView + android:id="@+id/track_cover_info_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginEnd="8dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/trak_title_info_text_view" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/trak_title_info_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@+id/trak_artist_info_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/track_cover_info_image_view" + app:layout_constraintTop_toTopOf="@+id/track_cover_info_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/trak_artist_info_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/track_cover_info_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/trak_title_info_text_view" + app:layout_constraintTop_toBottomOf="@+id/trak_title_info_text_view" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <TextView + android:id="@+id/trak_transcoding_info_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" /> + + <LinearLayout + android:id="@+id/title_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp"> + + <TextView + android:id="@+id/title_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_title" /> + + <TextView + android:id="@+id/title_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/album_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/album_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_album" /> + + <TextView + android:id="@+id/album_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/artist_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/artist_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_artist" /> + + <TextView + android:id="@+id/artist_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/track_number_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/track_number_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_track_number" /> + + <TextView + android:id="@+id/track_number_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/year_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/year_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_year" /> + + <TextView + android:id="@+id/year_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/genre_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/genre_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_genre" /> + + <TextView + android:id="@+id/genre_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/size_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/size_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_size" /> + + <TextView + android:id="@+id/size_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/content_type_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/content_type_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_content_type" /> + + <TextView + android:id="@+id/content_type_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/suffix_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/suffix_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_suffix" /> + + <TextView + android:id="@+id/suffix_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/transcoded_content_type_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/transcoded_content_type_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_transcoded_content_type" /> + + <TextView + android:id="@+id/transcoded_content_type_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/transcoded_suffix_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/transcoded_suffix_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_transcoded_suffix" /> + + <TextView + android:id="@+id/transcoded_suffix_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/duration_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/duration_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_duration" /> + + <TextView + android:id="@+id/duration_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/bitrate_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/bitrate_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_bitrate" /> + + <TextView + android:id="@+id/bitrate_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/sampling_rate_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/sampling_rate_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_sampling_rate" /> + + <TextView + android:id="@+id/sampling_rate_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/bit_depth_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/bit_depth_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_bit_depth" /> + + <TextView + android:id="@+id/bit_depth_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/path_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/path_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_path" /> + + <TextView + android:id="@+id/path_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" + android:layout_marginVertical="8dp" /> + + <LinearLayout + android:id="@+id/disc_number_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/disc_number_key_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:paddingEnd="8dp" + android:text="@string/track_info_disc_number" /> + + <TextView + android:id="@+id/disc_number_value_sector" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="7" + android:text="@string/label_placeholder" /> + </LinearLayout> + </LinearLayout> +</androidx.core.widget.NestedScrollView> + diff --git a/app/src/main/res/layout/fragment_album_catalogue.xml b/app/src/main/res/layout/fragment_album_catalogue.xml new file mode 100644 index 0000000..7197763 --- /dev/null +++ b/app/src/main/res/layout/fragment_album_catalogue.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/album_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/album_catalogue_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + + <LinearLayout + android:id="@+id/sort_container" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:orientation="horizontal" + android:gravity="center_vertical" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + <TextView + android:id="@+id/albumListSortTextView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.Material3.BodySmall" + android:paddingEnd="8dp" + android:visibility="gone" /> + + <Button + android:id="@+id/album_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_sort_list" /> + + </LinearLayout> + + <ProgressBar + android:id="@+id/album_list_progress_loader" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:visibility="visible" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/album_catalogue_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> diff --git a/app/src/main/res/layout/fragment_album_list_page.xml b/app/src/main/res/layout/fragment_album_list_page.xml new file mode 100644 index 0000000..66ae749 --- /dev/null +++ b/app/src/main/res/layout/fragment_album_list_page.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/album_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + android:id="@+id/page_title_label" + style="@style/TitleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="4dp" + android:paddingBottom="24dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <TextView + android:id="@+id/page_subtitle_label" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="4dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + app:layout_constraintTop_toTopOf="@id/page_title_label" + app:layout_constraintBottom_toBottomOf="@id/page_title_label" + app:layout_constraintStart_toEndOf="@id/page_title_label" /> + + <Button + android:id="@+id/album_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + android:visibility="gone" + app:icon="@drawable/ic_sort_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/album_list_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_album_page.xml b/app/src/main/res/layout/fragment_album_page.xml new file mode 100644 index 0000000..1cf81bc --- /dev/null +++ b/app/src/main/res/layout/fragment_album_page.xml @@ -0,0 +1,265 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/anim_toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/album_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:paddingTop="8dp" + app:layout_scrollFlags="scroll|exitUntilCollapsed"> + + <ImageView + android:id="@+id/album_cover_image_view" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginLeft="64dp" + android:layout_marginTop="8dp" + android:layout_marginRight="64dp" + android:layout_marginBottom="8dp" + app:layout_constraintDimensionRatio="H,1:1" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_name_label" + style="@style/LabelExtraLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="2" + android:paddingTop="8dp" + android:singleLine="false" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="@+id/album_cover_image_view" + app:layout_constraintStart_toStartOf="@+id/album_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/album_cover_image_view" /> + + <FrameLayout + android:id="@+id/album_other_info_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + app:layout_constraintBottom_toBottomOf="@+id/album_name_label" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/album_name_label" + app:layout_constraintTop_toTopOf="@+id/album_name_label"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_arrow_down" /> + </FrameLayout> + + <TextView + android:id="@+id/album_artist_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:ellipsize="end" + android:maxLines="1" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_name_label" /> + + <TextView + android:id="@+id/album_release_year_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_artist_label" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/album_detail_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:animateLayoutChanges="true" + android:paddingTop="12dp" + android:paddingBottom="8dp" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_release_year_label" + tools:visibility="visible"> + + <TextView + android:id="@+id/album_genres_textview" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> + + <TextView + android:id="@+id/album_song_count_duration_textview" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:paddingVertical="2dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_genres_textview" /> + + <TextView + android:id="@+id/album_notes_textview" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:justificationMode="inter_word" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_song_count_duration_textview" /> + + <TextView + android:id="@+id/album_release_years_textview" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:paddingVertical="4dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_notes_textview" /> + + + </androidx.constraintlayout.widget.ConstraintLayout> + + <View + android:id="@+id/upper_button_divider" + style="@style/Divider" + android:layout_marginStart="18dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="18dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_detail_view" /> + + <LinearLayout + android:id="@+id/album_page_button_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingTop="4dp" + android:paddingBottom="4dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/upper_button_divider"> + + <Button + android:id="@+id/album_page_play_button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="4dp" + android:layout_weight="1" + android:padding="10dp" + android:text="@string/album_page_play_button" + android:textAllCaps="false" + app:icon="@drawable/ic_play" + app:iconGravity="textStart" + app:iconPadding="18dp" /> + + <Button + android:id="@+id/album_page_shuffle_button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="4dp" + android:layout_marginEnd="16dp" + android:layout_weight="1" + android:padding="10dp" + android:text="@string/album_page_shuffle_button" + android:textAllCaps="false" + app:icon="@drawable/ic_shuffle" + app:iconGravity="textStart" + app:iconPadding="18dp" /> + </LinearLayout> + + <TextView + android:id="@+id/album_bio_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_page_button_layout" /> + + <View + android:id="@+id/bottom_button_divider" + style="@style/Divider" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:layout_marginBottom="18dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_page_button_layout" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/song_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior"/> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_artist_catalogue.xml b/app/src/main/res/layout/fragment_artist_catalogue.xml new file mode 100644 index 0000000..65b28df --- /dev/null +++ b/app/src/main/res/layout/fragment_artist_catalogue.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/artist_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/artist_catalogue_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="parent" /> + + <Button + android:id="@+id/artist_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_sort_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/artist_catalogue_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_artist_list_page.xml b/app/src/main/res/layout/fragment_artist_list_page.xml new file mode 100644 index 0000000..992491c --- /dev/null +++ b/app/src/main/res/layout/fragment_artist_list_page.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/artist_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + android:id="@+id/page_title_label" + style="@style/TitleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="4dp" + android:paddingBottom="24dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <TextView + android:id="@+id/page_subtitle_label" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="4dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + app:layout_constraintTop_toTopOf="@id/page_title_label" + app:layout_constraintBottom_toBottomOf="@id/page_title_label" + app:layout_constraintStart_toEndOf="@id/page_title_label" /> + + <Button + android:id="@+id/artist_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + android:visibility="gone" + app:icon="@drawable/ic_sort_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/artist_list_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_artist_page.xml b/app/src/main/res/layout/fragment_artist_page.xml new file mode 100644 index 0000000..37e6a48 --- /dev/null +++ b/app/src/main/res/layout/fragment_artist_page.xml @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/appbar" + android:layout_width="match_parent" + android:layout_height="@dimen/appbar_header_height"> + + <com.google.android.material.appbar.CollapsingToolbarLayout + android:id="@+id/collapsing_toolbar" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:expandedTitleMarginStart="@dimen/activity_margin_content" + app:contentScrim="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <ImageView + android:id="@+id/artist_backdrop_image_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fitsSystemWindows="true" + android:scaleType="centerCrop" + app:layout_collapseMode="parallax" /> + + <View + android:layout_width="match_parent" + android:layout_height="@dimen/appbar_header_height" + android:layout_gravity="top" + android:background="@drawable/gradient_backdrop_background_image" /> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/anim_toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + app:layout_collapseMode="pin" /> + + </com.google.android.material.appbar.CollapsingToolbarLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.core.widget.NestedScrollView + android:id="@+id/fragment_artist_page_nested_scroll_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:orientation="vertical" + android:paddingTop="18dp" + android:paddingBottom="@dimen/global_padding_bottom"> + + <View + android:id="@+id/upper_button_divider" + style="@style/Divider" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" /> + + <LinearLayout + android:id="@+id/album_page_button_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingTop="4dp" + android:paddingBottom="4dp"> + + <Button + android:id="@+id/artist_page_shuffle_button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="4dp" + android:layout_weight="1" + android:padding="10dp" + android:text="@string/artist_page_shuffle_button" + android:textAllCaps="false" + app:icon="@drawable/ic_shuffle" + app:iconGravity="textStart" + app:iconPadding="18dp" /> + + <Button + android:id="@+id/artist_page_radio_button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="4dp" + android:layout_marginEnd="16dp" + android:layout_weight="1" + android:padding="10dp" + android:text="@string/artist_page_radio_button" + android:textAllCaps="false" + app:icon="@drawable/ic_feed" + app:iconGravity="textStart" + app:iconPadding="18dp" /> + </LinearLayout> + + <View + android:id="@+id/bottom_button_divider" + style="@style/Divider" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:layout_marginBottom="12dp" /> + + <LinearLayout + android:id="@+id/artist_page_bio_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="22dp" + android:visibility="gone" + tools:visibility="visible">> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="16dp" + android:paddingEnd="8dp" + android:text="@string/artist_page_title_biography_section" /> + + <TextView + android:id="@+id/bio_more_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="16dp" + android:text="@string/artist_page_title_biography_more_button" /> + </LinearLayout> + + <TextView + android:id="@+id/bio_text_view" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Label and button --> + <LinearLayout + android:id="@+id/artist_page_top_songs_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="22dp" + android:visibility="gone" + tools:visibility="visible">> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="16dp" + android:paddingEnd="8dp" + android:text="@string/artist_page_title_most_streamed_song_section" /> + + <TextView + android:id="@+id/most_streamed_song_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="16dp" + android:text="@string/artist_page_title_most_streamed_song_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/most_streamed_song_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:nestedScrollingEnabled="false" + android:clipToPadding="false" + android:paddingTop="8dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/artist_page_albums_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="8dp" + android:text="@string/artist_page_title_album_section" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/albums_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="8dp"/> + </LinearLayout> + + <LinearLayout + android:id="@+id/similar_artist_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="20dp" + android:text="@string/artist_page_title_album_more_like_this_button" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/similar_artists_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="8dp" /> + + </LinearLayout> + </LinearLayout> + </androidx.core.widget.NestedScrollView> +</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_directory.xml b/app/src/main/res/layout/fragment_directory.xml new file mode 100644 index 0000000..fe581e3 --- /dev/null +++ b/app/src/main/res/layout/fragment_directory.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/directory_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + android:id="@+id/directory_title_label" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="16dp" + android:layout_marginBottom="8dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/directory_back_image_view" + app:layout_constraintStart_toStartOf="parent" /> + + <Button + android:id="@+id/directory_back_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_arrow_back" + app:layout_constraintTop_toTopOf="@+id/directory_title_label" + app:layout_constraintBottom_toBottomOf="@+id/directory_title_label" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/directory_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingTop="12dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_download.xml b/app/src/main/res/layout/fragment_download.xml new file mode 100644 index 0000000..47fd92e --- /dev/null +++ b/app/src/main/res/layout/fragment_download.xml @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <fragment + android:id="@+id/toolbar_fragment" + android:name="com.cappielloantonio.tempo.ui.fragment.ToolbarFragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <ProgressBar + android:id="@+id/loading_progress_bar" + style="@style/Widget.AppCompat.ProgressBar.Horizontal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:indeterminate="true" + android:minWidth="128dp" /> + + <LinearLayout + android:id="@+id/empty_download_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom" + android:visibility="gone"> + + <ImageView + android:id="@+id/empty_description_image_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:maxWidth="240dp" + android:maxHeight="240dp" + android:scaleType="centerInside" + android:src="@drawable/ui_empty_list" /> + + <TextView + android:id="@+id/title_empty_description_label" + style="@style/LabelMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="12dp" + android:text="@string/download_info_empty_title" /> + + <TextView + android:id="@+id/subtitle_empty_description_label" + style="@style/LabelSmall" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:paddingStart="56dp" + android:paddingEnd="56dp" + android:text="@string/download_info_empty_subtitle" /> + </LinearLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/download_downloaded_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingHorizontal="16dp" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/downloaded_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/download_title_section" + app:layout_constraintEnd_toStartOf="@+id/downloaded_refresh_image_view" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/shuffle_downloaded_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/download_shuffle_all_subtitle" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/downloaded_text_view_refreshable" /> + + <ImageView + android:id="@+id/downloaded_refresh_image_view" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_refresh" + android:contentDescription="@string/download_refresh_button_content_description" + app:layout_constraintBottom_toBottomOf="@+id/downloaded_text_view_refreshable" + app:layout_constraintEnd_toStartOf="@id/downloaded_go_back_image_view" + app:layout_constraintStart_toEndOf="@id/downloaded_text_view_refreshable" + app:layout_constraintTop_toTopOf="@+id/downloaded_text_view_refreshable" /> + + <ImageView + android:id="@+id/downloaded_go_back_image_view" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center" + android:layout_marginHorizontal="12dp" + android:background="@drawable/ic_arrow_back" + app:layout_constraintBottom_toBottomOf="@+id/downloaded_text_view_refreshable" + app:layout_constraintEnd_toStartOf="@id/downloaded_group_by_image_view" + app:layout_constraintStart_toEndOf="@id/downloaded_refresh_image_view" + app:layout_constraintTop_toTopOf="@+id/downloaded_text_view_refreshable" /> + + <ImageView + android:id="@+id/downloaded_group_by_image_view" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center" + android:background="@drawable/ic_filter_list" + app:layout_constraintBottom_toBottomOf="@+id/downloaded_text_view_refreshable" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/downloaded_text_view_refreshable" /> + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/downloaded_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:nestedScrollingEnabled="false" + android:paddingHorizontal="12dp" + android:paddingTop="12dp" + android:paddingBottom="@dimen/global_padding_bottom" /> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_equalizer.xml b/app/src/main/res/layout/fragment_equalizer.xml new file mode 100644 index 0000000..dcf2191 --- /dev/null +++ b/app/src/main/res/layout/fragment_equalizer.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/eq_frame_layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ScrollView + android:id="@+id/eq_scroll_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fillViewport="true" + android:padding="16dp"> + + <LinearLayout + android:id="@+id/eq_root_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:id="@+id/equalizer_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/equalizer_fragment_title" + style="@style/HeadlineSmall" + android:layout_gravity="center_horizontal" + android:paddingBottom="16dp" /> + + <LinearLayout + android:id="@+id/equalizer_switch_row" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical" + android:paddingBottom="16dp"> + + <TextView + android:id="@+id/equalizer_switch_label" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + style="@style/LabelMedium" + android:text="@string/equalizer_enable" /> + + <Switch + android:id="@+id/equalizer_switch" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + </LinearLayout> + + <LinearLayout + android:id="@+id/eq_bands_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + </LinearLayout> + + <Button + android:id="@+id/equalizer_reset_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/equalizer_reset" + android:layout_gravity="center_horizontal" + style="@style/Widget.Material3.Button.TextButton" + android:layout_marginTop="24dp"/> + + <Space + android:id="@+id/equalizer_bottom_space" + android:layout_width="match_parent" + android:layout_height="128dp" + android:layout_marginTop="0dp" /> + + </LinearLayout> + </ScrollView> + + <LinearLayout + android:id="@+id/equalizer_not_supported_container" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:layout_gravity="center" + android:visibility="gone"> + + <ImageView + android:id="@+id/equalizer_not_supported_image" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:maxWidth="240dp" + android:maxHeight="240dp" + android:scaleType="centerInside" + android:src="@drawable/ui_eq_not_supported" /> + + <TextView + android:id="@+id/equalizer_not_supported_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/equalizer_not_supported" + android:gravity="center" + style="@style/BodyMedium" + android:layout_marginTop="16dp"/> + </LinearLayout> + +</FrameLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_filter.xml b/app/src/main/res/layout/fragment_filter.xml new file mode 100644 index 0000000..1f09156 --- /dev/null +++ b/app/src/main/res/layout/fragment_filter.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/genre_filter_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/filter_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <Button + android:id="@+id/finish_filtering_text_view_clickable" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_done" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <ProgressBar + android:id="@+id/loading_progress_bar" + style="@style/Widget.AppCompat.ProgressBar.Horizontal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:indeterminate="true" + android:minWidth="128dp" /> + + <androidx.core.widget.NestedScrollView + android:id="@+id/filter_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:fillViewport="true" + android:visibility="gone" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <com.google.android.material.chip.ChipGroup + android:id="@+id/filters_chips_group" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:singleSelection="false" /> + </androidx.core.widget.NestedScrollView> + + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_genre_catalogue.xml b/app/src/main/res/layout/fragment_genre_catalogue.xml new file mode 100644 index 0000000..a5ba1ae --- /dev/null +++ b/app/src/main/res/layout/fragment_genre_catalogue.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/genre_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/genre_catalogue_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <Button + android:id="@+id/filter_genres_text_view_clickable" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_filter_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/genre_list_sort_image_view" /> + + <Button + android:id="@+id/genre_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_sort_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/genre_catalogue_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 0000000..0e9707f --- /dev/null +++ b/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.fragment.HomeFragment"> + + <fragment + android:id="@+id/toolbar_fragment" + android:name="com.cappielloantonio.tempo.ui.fragment.ToolbarFragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <androidx.viewpager2.widget.ViewPager2 + android:id="@+id/homeViewPager" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + +</androidx.coordinatorlayout.widget.CoordinatorLayout> + diff --git a/app/src/main/res/layout/fragment_home_tab_music.xml b/app/src/main/res/layout/fragment_home_tab_music.xml new file mode 100644 index 0000000..c516171 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_tab_music.xml @@ -0,0 +1,978 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/fragment_home_nested_scroll_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <LinearLayout + android:id="@+id/home_linear_layout_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom"> + + <!-- Download/Sync starred --> + <com.google.android.material.card.MaterialCardView + android:id="@+id/home_sync_starred_card" + style="?attr/materialCardViewOutlinedStyle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="16dp" + android:layout_marginTop="16dp" + android:layout_marginBottom="24dp" + android:visibility="gone"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + android:paddingVertical="12dp"> + + <!-- Title, secondary and supporting text --> + <TextView + android:id="@+id/home_sync_starred_title" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_title" + android:textAppearance="?attr/textAppearanceTitleMedium" + android:textFontWeight="600" + app:layout_constraintEnd_toStartOf="@id/vertical_guideline" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/home_sync_starred_subtitle" + style="@style/TitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_subtitle" + android:textAppearance="?attr/textAppearanceBodyMedium" + android:textColor="?android:attr/textColorSecondary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_title" /> + + <TextView + android:id="@+id/home_sync_starred_tracks_to_sync" + style="@style/TitleSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingTop="16dp" + android:text="@string/home_sync_starred_subtitle" + android:textAppearance="?attr/textAppearanceBodyMedium" + android:textColor="?android:attr/textColorSecondary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_subtitle" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:gravity="end" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_tracks_to_sync"> + + <com.google.android.material.button.MaterialButton + android:id="@+id/home_sync_starred_cancel" + style="?attr/materialButtonOutlinedStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:text="@string/home_sync_starred_cancel" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/home_sync_starred_download" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_download" /> + + </LinearLayout> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/vertical_guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.90" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.card.MaterialCardView> + + <!-- Download/Sync starred albums --> + <com.google.android.material.card.MaterialCardView + android:id="@+id/home_sync_starred_albums_card" + style="?attr/materialCardViewOutlinedStyle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="16dp" + android:layout_marginTop="16dp" + android:layout_marginBottom="24dp" + android:visibility="gone"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + android:paddingVertical="12dp"> + + <!-- Title, secondary and supporting text --> + <TextView + android:id="@+id/home_sync_starred_albums_title" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_albums_title" + android:textAppearance="?attr/textAppearanceTitleMedium" + android:textFontWeight="600" + app:layout_constraintEnd_toStartOf="@id/vertical_guideline_albums" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/home_sync_starred_albums_subtitle" + style="@style/TitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_albums_subtitle" + android:textAppearance="?attr/textAppearanceBodyMedium" + android:textColor="?android:attr/textColorSecondary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_albums_title" /> + + <TextView + android:id="@+id/home_sync_starred_albums_to_sync" + style="@style/TitleSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingTop="16dp" + android:text="@string/home_sync_starred_albums_subtitle" + android:textAppearance="?attr/textAppearanceBodyMedium" + android:textColor="?android:attr/textColorSecondary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_albums_subtitle" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:gravity="end" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_albums_to_sync"> + + <com.google.android.material.button.MaterialButton + android:id="@+id/home_sync_starred_albums_cancel" + style="?attr/materialButtonOutlinedStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:text="@string/home_sync_starred_cancel" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/home_sync_starred_albums_download" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_download" /> + + </LinearLayout> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/vertical_guideline_albums" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.90" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.card.MaterialCardView> + + <!-- Download/Sync starred artists --> + <com.google.android.material.card.MaterialCardView + android:id="@+id/home_sync_starred_artists_card" + style="?attr/materialCardViewOutlinedStyle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="16dp" + android:layout_marginTop="16dp" + android:layout_marginBottom="24dp" + android:visibility="gone"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + android:paddingVertical="12dp"> + + <!-- Title, secondary and supporting text --> + <TextView + android:id="@+id/home_sync_starred_artists_title" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_artists_title" + android:textAppearance="?attr/textAppearanceTitleMedium" + android:textFontWeight="600" + app:layout_constraintEnd_toStartOf="@id/vertical_guideline_artists" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/home_sync_starred_artists_subtitle" + style="@style/TitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_artists_subtitle" + android:textAppearance="?attr/textAppearanceBodyMedium" + android:textColor="?android:attr/textColorSecondary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_artists_title" /> + + <TextView + android:id="@+id/home_sync_starred_artists_to_sync" + style="@style/TitleSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingTop="16dp" + android:text="@string/home_sync_starred_artists_subtitle" + android:textAppearance="?attr/textAppearanceBodyMedium" + android:textColor="?android:attr/textColorSecondary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_artists_subtitle" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:gravity="end" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_sync_starred_artists_to_sync"> + + <com.google.android.material.button.MaterialButton + android:id="@+id/home_sync_starred_artists_cancel" + style="?attr/materialButtonOutlinedStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:text="@string/home_sync_starred_cancel" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/home_sync_starred_artists_download" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/home_sync_starred_download" /> + + </LinearLayout> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/vertical_guideline_artists" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.90" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.card.MaterialCardView> + + <!-- Discover music --> + <LinearLayout + android:id="@+id/home_discover_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/discovery_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_discovery" /> + + <TextView + android:id="@+id/discovery_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_discovery_shuffle_all_button" /> + </LinearLayout> + + <!-- slideview --> + <androidx.viewpager2.widget.ViewPager2 + android:id="@+id/discover_song_view_pager" + android:layout_width="match_parent" + android:layout_height="212dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="16dp" /> + </LinearLayout> + + <!-- Similar tracks --> + <LinearLayout + android:id="@+id/home_similar_tracks_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/similar_tracks_pre_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_subtitle_made_for_you" + android:textAllCaps="true" /> + + <TextView + android:id="@+id/similar_tracks_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_made_for_you" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/similar_tracks_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Best of --> + <LinearLayout + android:id="@+id/home_best_of_artist_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/most_streamed_song_pre_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_subtitle_best_of" + android:textAllCaps="true" /> + + <TextView + android:id="@+id/best_of_artist_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_best_of" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/best_of_artist_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Radio Artist --> + <LinearLayout + android:id="@+id/home_radio_artist_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/radio_artist_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_radio_station" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/radio_artist_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <View + android:id="@+id/after_radio_artist_divider" + style="@style/Divider" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:visibility="gone" + tools:visibility="visible" /> + + <!-- Grid tracks --> + <LinearLayout + android:id="@+id/home_grid_tracks_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/grid_tracks_pre_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_last_week" + android:textAllCaps="true" /> + + <TextView + android:id="@+id/grid_tracks_text_view" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_top_songs" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/top_songs_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + + </LinearLayout> + + <View + android:id="@+id/after_grid_divider" + style="@style/Divider" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:visibility="gone" + tools:visibility="visible" /> + + <!-- Favorites --> + <LinearLayout + android:id="@+id/starred_tracks_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/starred_tracks_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_starred_tracks" /> + + <TextView + android:id="@+id/starred_tracks_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_starred_tracks_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/starred_tracks_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/starred_albums_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/starred_albums_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_starred_albums" /> + + <TextView + android:id="@+id/starred_albums_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_starred_albums_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/starred_albums_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/starred_artists_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/starred_artists_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_starred_artists" /> + + <TextView + android:id="@+id/starred_artists_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_starred_artists_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/starred_artists_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <View + android:id="@+id/after_favorites_divider" + style="@style/Divider" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:visibility="gone" + tools:visibility="visible" /> + + <LinearLayout + android:id="@+id/home_new_releases_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- New releases --> + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_new_releases" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/new_releases_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Fashback --> + <LinearLayout + android:id="@+id/home_flashback_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_flashback" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/years_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <View + style="@style/Divider" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:visibility="gone" + tools:visibility="visible" /> + + <!-- Most played albums --> + <LinearLayout + android:id="@+id/home_most_played_albums_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/most_played_albums_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_most_played" /> + + <TextView + android:id="@+id/most_played_albums_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_most_played_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/most_played_albums_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Recently played albums --> + <LinearLayout + android:id="@+id/home_recently_played_albums_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/recently_played_albums_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_last_played" /> + + + <TextView + android:id="@+id/recently_played_albums_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_last_played_see_all_button" /> + + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recently_played_albums_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Recently added albums --> + <LinearLayout + android:id="@+id/home_recently_added_albums_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/recently_added_albums_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_recently_added" /> + + + <TextView + android:id="@+id/recently_added_albums_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/home_title_recently_added_see_all_button" /> + + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recently_added_albums_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Playlists --> + <LinearLayout + android:id="@+id/pinned_playlists_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/pinned_playlists_text_view" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_pinned_playlists" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/pinned_playlists_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Shares --> + <LinearLayout + android:id="@+id/shares_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/shares_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_shares" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/shares_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <Button + android:id="@+id/home_sector_rearrangement_button" + style="@style/Widget.Material3.Button.TextButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:text="@string/home_option_reorganize" + android:visibility="gone" + tools:visibility="visible"/> + </LinearLayout> +</androidx.core.widget.NestedScrollView> + diff --git a/app/src/main/res/layout/fragment_home_tab_podcast.xml b/app/src/main/res/layout/fragment_home_tab_podcast.xml new file mode 100644 index 0000000..3daf014 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_tab_podcast.xml @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.core.widget.NestedScrollView + android:id="@+id/home_podcast_sector" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom"> + + <TextView + android:id="@+id/podcast_channels_pre_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_subtitle_new_podcast_channel" + android:textAllCaps="true" + android:textColor="?attr/colorPrimary" + android:textStyle="bold" /> + + <LinearLayout + android:id="@+id/home_podcast_channels_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="8dp" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_podcast_channels" /> + + <TextView + android:id="@+id/podcast_channels_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingTop="12dp" + android:paddingEnd="16dp" + android:text="@string/home_title_podcast_channels_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/podcast_channels_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:nestedScrollingEnabled="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <View + android:id="@+id/upper_button_divider" + style="@style/Divider" + android:layout_marginHorizontal="16dp" /> + + <LinearLayout + android:id="@+id/home_newest_podcasts_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_newest_podcasts" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/newest_podcasts_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:nestedScrollingEnabled="false" + android:paddingTop="8dp" /> + </LinearLayout> + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + <LinearLayout + android:id="@+id/empty_podcast_layout" + android:layout_width="match_parent" + android:layout_height="0dp" + android:gravity="center" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <ImageView + android:id="@+id/empty_description_image_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:maxWidth="240dp" + android:maxHeight="240dp" + android:scaleType="centerInside" + android:src="@drawable/ui_empty_podcast" /> + + <TextView + android:id="@+id/title_empty_description_label" + style="@style/LabelMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="12dp" + android:text="@string/podcast_info_empty_title" /> + + <TextView + android:id="@+id/subtitle_empty_description_label" + style="@style/LabelSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="56dp" + android:paddingEnd="56dp" + android:text="@string/podcast_info_empty_subtitle" /> + + <View + style="@style/Divider" + android:layout_width="64dp" + android:layout_marginTop="12dp" + android:layout_marginBottom="12dp" /> + + <TextView + android:id="@+id/hide_section_button" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:gravity="center" + android:text="@string/podcast_info_empty_button" /> + </LinearLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_tab_radio.xml b/app/src/main/res/layout/fragment_home_tab_radio.xml new file mode 100644 index 0000000..3086d06 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_tab_radio.xml @@ -0,0 +1,118 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <TextView + android:id="@+id/internet_radio_station_pre_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/home_subtitle_new_internet_radio_station" + android:textAllCaps="true" + android:textColor="?attr/colorPrimary" + android:textStyle="bold" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + + <TextView + android:id="@+id/internet_radio_station_title_text_view" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="@string/home_title_internet_radio_station" + app:layout_constraintTop_toBottomOf="@id/internet_radio_station_pre_text_view" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + + <androidx.core.widget.NestedScrollView + android:id="@+id/home_radio_station_sector" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/internet_radio_station_title_text_view"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/internet_radio_station_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + <LinearLayout + android:id="@+id/empty_radio_station_layout" + android:layout_width="match_parent" + android:layout_height="0dp" + android:gravity="center" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/internet_radio_station_title_text_view"> + + <ImageView + android:id="@+id/empty_description_image_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:maxWidth="240dp" + android:maxHeight="240dp" + android:scaleType="centerInside" + android:src="@drawable/ui_empty_radio_station" /> + + <TextView + android:id="@+id/title_empty_description_label" + style="@style/LabelMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="12dp" + android:text="@string/radio_station_info_empty_title" /> + + <TextView + android:id="@+id/subtitle_empty_description_label" + style="@style/LabelSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="56dp" + android:paddingEnd="56dp" + android:text="@string/radio_station_info_empty_subtitle" /> + + <View + style="@style/Divider" + android:layout_width="64dp" + android:layout_marginTop="12dp" + android:layout_marginBottom="12dp" /> + + <TextView + android:id="@+id/hide_section_button" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:gravity="center" + android:text="@string/radio_station_info_empty_button" /> + </LinearLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_index.xml b/app/src/main/res/layout/fragment_index.xml new file mode 100644 index 0000000..2447b88 --- /dev/null +++ b/app/src/main/res/layout/fragment_index.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/index_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + android:id="@+id/index_title_label" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/index_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingTop="12dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <com.cappielloantonio.tempo.helper.recyclerview.FastScrollbar + android:id="@+id/fast_scrollbar" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_marginBottom="@dimen/global_padding_bottom" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_landing.xml b/app/src/main/res/layout/fragment_landing.xml new file mode 100644 index 0000000..3be63ee --- /dev/null +++ b/app/src/main/res/layout/fragment_landing.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.fragment.LandingFragment" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml new file mode 100644 index 0000000..c96fada --- /dev/null +++ b/app/src/main/res/layout/fragment_library.xml @@ -0,0 +1,273 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <fragment + android:id="@+id/toolbar_fragment" + android:name="com.cappielloantonio.tempo.ui.fragment.ToolbarFragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <androidx.core.widget.NestedScrollView + android:id="@+id/fragment_library_nested_scroll_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <LinearLayout + android:id="@+id/library_linear_layout_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="@dimen/global_padding_bottom"> + + <!-- Music Folder --> + <LinearLayout + android:id="@+id/library_music_folder_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="8dp" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:text="@string/library_title_music_folder" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/music_folder_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:nestedScrollingEnabled="false" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Album --> + <LinearLayout + android:id="@+id/library_album_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Album --> + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/album_catalogue_sample_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_album" /> + + <TextView + android:id="@+id/album_catalogue_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_album_see_all_button" /> + + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/album_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/library_artist_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Artist --> + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/artist_catalogue_sample_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_artist" /> + + + <TextView + android:id="@+id/artist_catalogue_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_artist_see_all_button" /> + + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/artist_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/library_genres_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Genre --> + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/genre_catalogue_sample_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_genre" /> + + + <TextView + android:id="@+id/genre_catalogue_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_genre_see_all_button" /> + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/genre_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/library_playlist_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + <!-- Playlist --> + <!-- Label and button --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> + + <TextView + android:id="@+id/playlist_catalogue_sample_text_view_refreshable" + style="@style/TitleLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_playlist" /> + + <TextView + android:id="@+id/playlist_catalogue_text_view_clickable" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/library_title_playlist_see_all_button" /> + + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/playlist_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:nestedScrollingEnabled="false" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + </LinearLayout> + </androidx.core.widget.NestedScrollView> +</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml new file mode 100644 index 0000000..c619cc0 --- /dev/null +++ b/app/src/main/res/layout/fragment_login.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/server_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/login_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <TextView + android:id="@+id/no_server_added_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:gravity="center" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + android:text="@string/login_empty" + android:visibility="gone" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/server_list_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingBottom="@dimen/global_padding_bottom" + android:visibility="gone" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> diff --git a/app/src/main/res/layout/fragment_player_bottom_sheet.xml b/app/src/main/res/layout/fragment_player_bottom_sheet.xml new file mode 100644 index 0000000..08da103 --- /dev/null +++ b/app/src/main/res/layout/fragment_player_bottom_sheet.xml @@ -0,0 +1,16 @@ +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <include + android:id="@+id/player_body_layout" + layout="@layout/player_body_bottom_sheet" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + + <include + android:id="@+id/player_header_layout" + layout="@layout/player_header_bottom_sheet" + android:layout_width="match_parent" + android:layout_height="@dimen/bottom_sheet_peek_height" /> +</FrameLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_playlist_catalogue.xml b/app/src/main/res/layout/fragment_playlist_catalogue.xml new file mode 100644 index 0000000..a8bfe84 --- /dev/null +++ b/app/src/main/res/layout/fragment_playlist_catalogue.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/album_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/playlist_catalogue_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="parent" /> + + <Button + android:id="@+id/playlist_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_sort_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/playlist_catalogue_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="12dp" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_playlist_page.xml b/app/src/main/res/layout/fragment_playlist_page.xml new file mode 100644 index 0000000..87d7e85 --- /dev/null +++ b/app/src/main/res/layout/fragment_playlist_page.xml @@ -0,0 +1,207 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/anim_toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/playlist_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed"> + + <ImageView + android:id="@+id/playlist_cover_image_view_top_left" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginStart="64dp" + android:layout_marginTop="8dp" + app:layout_constraintDimensionRatio="H,1:1" + app:layout_constraintEnd_toStartOf="@id/playlist_cover_image_view_top_right" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/playlist_cover_image_view_top_right" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="64dp" + app:layout_constraintDimensionRatio="H,1:1" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/playlist_cover_image_view_top_left" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/playlist_cover_image_view_bottom_left" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginStart="64dp" + android:layout_marginBottom="8dp" + app:layout_constraintDimensionRatio="H,1:1" + app:layout_constraintEnd_toStartOf="@id/playlist_cover_image_view_bottom_right" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/playlist_cover_image_view_top_left" /> + + <ImageView + android:id="@+id/playlist_cover_image_view_bottom_right" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginEnd="64dp" + android:layout_marginBottom="8dp" + app:layout_constraintDimensionRatio="H,1:1" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/playlist_cover_image_view_bottom_left" + app:layout_constraintTop_toTopOf="@id/playlist_cover_image_view_bottom_left" /> + + + <TextView + android:id="@+id/playlist_name_label" + style="@style/LabelExtraLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:ellipsize="end" + android:maxLines="2" + android:paddingTop="8dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_cover_image_view_bottom_left" /> + + <TextView + android:id="@+id/playlist_song_count_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:ellipsize="end" + android:maxLines="1" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_name_label" /> + + <TextView + android:id="@+id/playlist_duration_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_song_count_label" /> + + <View + android:id="@+id/upper_button_divider" + style="@style/Divider" + android:layout_marginStart="18dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="18dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_duration_label" /> + + <LinearLayout + android:id="@+id/playlist_page_button_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingTop="4dp" + android:paddingBottom="4dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/upper_button_divider"> + + <Button + android:id="@+id/playlist_page_play_button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="4dp" + android:layout_weight="1" + android:padding="10dp" + android:text="@string/playlist_page_play_button" + android:textAllCaps="false" + app:icon="@drawable/ic_play" + app:iconGravity="textStart" + app:iconPadding="18dp" /> + + <Button + android:id="@+id/playlist_page_shuffle_button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="4dp" + android:layout_marginEnd="16dp" + android:layout_weight="1" + android:padding="10dp" + android:text="@string/playlist_page_shuffle_button" + android:textAllCaps="false" + app:icon="@drawable/ic_shuffle" + app:iconGravity="textStart" + app:iconPadding="18dp" /> + </LinearLayout> + + <TextView + android:id="@+id/album_bio_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:text="@string/label_placeholder" + android:textAlignment="center" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_page_button_layout" /> + + <View + android:id="@+id/bottom_button_divider" + style="@style/Divider" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" + android:layout_marginBottom="18dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_page_button_layout" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/song_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior"/> + + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_podcast_channel_catalogue.xml b/app/src/main/res/layout/fragment_podcast_channel_catalogue.xml new file mode 100644 index 0000000..9a954a7 --- /dev/null +++ b/app/src/main/res/layout/fragment_podcast_channel_catalogue.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/podcast_channel_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + android:text="@string/podcast_channel_catalogue_title_expanded" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/podcast_channel_catalogue_recycler_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_podcast_channel_page.xml b/app/src/main/res/layout/fragment_podcast_channel_page.xml new file mode 100644 index 0000000..f8aeaf5 --- /dev/null +++ b/app/src/main/res/layout/fragment_podcast_channel_page.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/podcast_channel_page_info_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + android:id="@+id/podcast_channel_description_label" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="8dp" + android:text="@string/podcast_channel_page_title_description_section" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/podcast_channel_description_text_view" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/podcast_channel_description_label" /> + + <View + android:id="@+id/upper_button_divider" + style="@style/Divider" + android:layout_marginHorizontal="16dp" + android:layout_marginTop="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/podcast_channel_description_text_view" /> + + <TextView + android:id="@+id/podcast_episodes_section_label" + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:paddingStart="16dp" + android:paddingEnd="8dp" + android:paddingBottom="12dp" + android:text="@string/podcast_channel_page_title_episode_section" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/upper_button_divider" /> + + <Button + android:id="@+id/podcast_episodes_filter_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_filter_list" + app:layout_constraintBottom_toBottomOf="@+id/podcast_episodes_section_label" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/podcast_episodes_section_label" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/podcast_episodes_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingTop="16dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml new file mode 100644 index 0000000..eec6e6f --- /dev/null +++ b/app/src/main/res/layout/fragment_search.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.core.widget.NestedScrollView + android:id="@+id/search_result_nested_scroll_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/searchbar_scrolling_view_behavior"> + + <!-- Search result --> + <LinearLayout + android:id="@+id/search_result_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="64dp" + android:paddingBottom="@dimen/global_padding_bottom"> + + <!-- Artist --> + <LinearLayout + android:id="@+id/search_artist_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="8dp" + android:visibility="gone"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="20dp" + android:paddingEnd="16dp" + android:text="@string/search_title_artist" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/search_result_artist_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Album --> + <LinearLayout + android:id="@+id/search_album_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="8dp" + android:visibility="gone"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="20dp" + android:paddingEnd="16dp" + android:text="@string/search_title_album" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/search_result_album_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + + <!-- Songs --> + <LinearLayout + android:id="@+id/search_song_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="8dp" + android:visibility="gone"> + + <TextView + style="@style/TitleLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="20dp" + android:paddingEnd="16dp" + android:text="@string/search_title_song" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/search_result_tracks_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp" /> + </LinearLayout> + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + <com.google.android.material.appbar.AppBarLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <com.google.android.material.search.SearchBar + android:id="@+id/search_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/search_hint"> + + </com.google.android.material.search.SearchBar> + </com.google.android.material.appbar.AppBarLayout> + + <com.google.android.material.search.SearchView + android:id="@+id/search_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:hint="@string/search_hint" + app:layout_anchor="@id/search_bar"> + + <!-- Content goes here (ScrollView, RecyclerView, etc.). --> + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scrollbars="none" + android:paddingBottom="@dimen/global_padding_bottom"> + + <LinearLayout + android:id="@+id/search_view_suggestion_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"/> + </ScrollView> + </com.google.android.material.search.SearchView> +</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml new file mode 100644 index 0000000..3e8d993 --- /dev/null +++ b/app/src/main/res/layout/fragment_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingTop="20dp" + android:paddingBottom="@dimen/global_padding_bottom" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_song_list_page.xml b/app/src/main/res/layout/fragment_song_list_page.xml new file mode 100644 index 0000000..be4bdbc --- /dev/null +++ b/app/src/main/res/layout/fragment_song_list_page.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorSurface" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" /> + + <androidx.coordinatorlayout.widget.CoordinatorLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/app_bar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/album_info_sector" + android:layout_width="match_parent" + android:layout_height="172dp" + android:background="?attr/colorSurface" + android:clipChildren="false" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + + <TextView + android:id="@+id/page_title_label" + style="@style/TitleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="4dp" + android:paddingBottom="24dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <TextView + android:id="@+id/page_subtitle_label" + style="@style/TitleMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="4dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="24dp" + app:layout_constraintTop_toTopOf="@id/page_title_label" + app:layout_constraintBottom_toBottomOf="@id/page_title_label" + app:layout_constraintStart_toEndOf="@id/page_title_label" /> + + <Button + android:id="@+id/song_list_sort_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + android:visibility="gone" + app:cornerRadius="30dp" + app:icon="@drawable/ic_sort_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/song_list_shuffle_image_view" /> + + <Button + android:id="@+id/song_list_shuffle_image_view" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_shuffle" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </com.google.android.material.appbar.AppBarLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/song_list_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingTop="12dp" + android:paddingBottom="@dimen/global_padding_bottom" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + </androidx.coordinatorlayout.widget.CoordinatorLayout> +</LinearLayout> + diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml new file mode 100644 index 0000000..3661258 --- /dev/null +++ b/app/src/main/res/layout/fragment_toolbar.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.google.android.material.appbar.AppBarLayout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/appbar" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|enterAlways|snap"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <ImageView + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="8dp" + android:background="@drawable/ic_toolbar_tempo" /> + + <TextView + style="@style/HeadlineMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/app_name" /> + </LinearLayout> + </com.google.android.material.appbar.MaterialToolbar> +</com.google.android.material.appbar.AppBarLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/inner_fragment_player_controller.xml b/app/src/main/res/layout/inner_fragment_player_controller.xml new file mode 100644 index 0000000..9499e90 --- /dev/null +++ b/app/src/main/res/layout/inner_fragment_player_controller.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.media3.ui.PlayerControlView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/now_playing_media_controller_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:controller_layout_id="@layout/inner_fragment_player_controller_layout" + app:repeat_toggle_modes="all|one" + app:show_shuffle_button="true" + app:show_rewind_button="false" + app:show_fastforward_button="false" + app:show_timeout="0" /> \ No newline at end of file diff --git a/app/src/main/res/layout/inner_fragment_player_controller_layout.xml b/app/src/main/res/layout/inner_fragment_player_controller_layout.xml new file mode 100644 index 0000000..2974758 --- /dev/null +++ b/app/src/main/res/layout/inner_fragment_player_controller_layout.xml @@ -0,0 +1,414 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/now_playing_media_controller_layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/player_media_quality_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginVertical="8dp" + android:gravity="center" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <com.google.android.material.chip.Chip + android:id="@+id/player_media_extension" + style="@style/Widget.Material3.Chip.Suggestion" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checked="true" + android:clickable="false" + android:text="Unknown" + app:chipStrokeWidth="0dp" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/player_media_bitrate" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintHorizontal_chainStyle="packed"/> + + <TextView + android:id="@+id/player_media_bitrate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + app:layout_constraintTop_toTopOf="@id/player_media_extension" + app:layout_constraintBottom_toBottomOf="@id/player_media_extension" + app:layout_constraintStart_toEndOf="@id/player_media_extension" + app:layout_constraintEnd_toEndOf="parent"/> + + <ImageButton + android:id="@+id/player_info_track" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="16dp" + android:layout_marginEnd="8dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@id/player_media_extension" + app:layout_constraintBottom_toBottomOf="@id/player_media_extension" + app:srcCompat="@drawable/ic_info_stream" + app:tint="?attr/colorOnPrimaryContainer" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <include + android:id="@+id/player_asset_link_row" + layout="@layout/view_asset_link_row" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/player_media_quality_sector" /> + + <androidx.viewpager2.widget.ViewPager2 + android:id="@+id/player_media_cover_view_pager" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginTop="8dp" + android:clipToPadding="false" + app:layout_constraintBottom_toTopOf="@id/guideline" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/player_asset_link_row" /> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintGuide_percent="0.575" /> + + <TextView + android:id="@+id/player_media_title_label" + style="@style/HeadlineLarge" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="24dp" + android:ellipsize="marquee" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/button_favorite" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/rating_container" /> + + <TextView + android:id="@+id/player_artist_name_label" + style="@style/TitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:ellipsize="marquee" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/button_favorite" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/player_media_title_label" /> + + <LinearLayout + android:id="@+id/rating_container" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="0dp" + android:orientation="horizontal" + android:gravity="center" + android:scaleX="0.8" + android:scaleY="0.8" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/guideline"> + + <RatingBar + android:id="@+id/song_rating_bar" + style="?android:attr/ratingBarStyleIndicator" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:numStars="5" + android:stepSize="1" + android:rating="0" + android:isIndicator="false" /> + + <TextView + android:id="@+id/rating_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:textSize="12sp" + android:textColor="?attr/colorOnSurfaceVariant" + android:text=""/> + </LinearLayout> + + <ToggleButton + android:id="@+id/button_favorite" + android:layout_width="26dp" + android:layout_height="26dp" + android:layout_marginEnd="24dp" + android:background="@drawable/button_favorite_selector" + android:checked="false" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintBottom_toBottomOf="@+id/player_media_title_label" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/player_media_title_label" /> + + <TextView + android:id="@+id/exo_position" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginStart="24dp" + android:paddingBottom="4dp" + android:text="@string/label_placeholder" + android:textColor="@color/titleTextColor" + android:textSize="12sp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/exo_progress" /> + + <androidx.media3.ui.DefaultTimeBar + android:id="@id/exo_progress" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="16dp" + app:bar_height="2dp" + app:buffered_color="?attr/colorOnSecondaryContainer" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/player_artist_name_label" + app:played_color="?attr/colorOnPrimaryContainer" + app:scrubber_color="?attr/colorOnPrimaryContainer" + app:unplayed_color="?attr/colorPrimaryContainer" /> + + <TextView + android:id="@+id/exo_duration" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginEnd="24dp" + android:paddingBottom="4dp" + android:text="@string/label_placeholder" + android:textColor="@color/titleTextColor" + android:textSize="12sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/exo_progress" /> + + <View + android:id="@+id/placeholder_view_left" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_left" + app:layout_constraintEnd_toStartOf="@+id/placeholder_view_middle_left" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_left" /> + + <View + android:id="@+id/placeholder_view_middle_left" + android:layout_width="42dp" + android:layout_height="42dp" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toEndOf="@id/placeholder_view_left" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" /> + + <View + android:id="@+id/player_play_pause_placeholder_view" + android:layout_width="70dp" + android:layout_height="70dp" + android:layout_marginTop="0dp" + app:layout_constraintBottom_toTopOf="@+id/player_quick_action_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/exo_progress" + app:layout_constraintVertical_bias=".45" /> + + <View + android:id="@+id/placeholder_view_middle_right" + android:layout_width="42dp" + android:layout_height="42dp" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@id/placeholder_view_right" + app:layout_constraintStart_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" /> + + <View + android:id="@+id/placeholder_view_right" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginEnd="24dp" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_right" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right" /> + + <Button + android:id="@+id/player_playback_speed_button" + style="@style/Widget.Material3.Button.TextButton" + android:layout_width="64dp" + android:layout_height="64dp" + android:layout_marginStart="24dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_left" + app:layout_constraintEnd_toStartOf="@+id/placeholder_view_middle_left" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_left" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_shuffle" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginStart="24dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_left" + app:layout_constraintEnd_toStartOf="@+id/placeholder_view_middle_left" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_left" + app:srcCompat="@drawable/ic_shuffle" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_rew" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + android:src="@drawable/ic_replay" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toEndOf="@id/placeholder_view_left" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_prev" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintStart_toEndOf="@id/placeholder_view_left" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:srcCompat="@drawable/ic_skip_previous" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@id/exo_play_pause" + style="@style/ExoStyledControls.Button.Center.PlayPause" + android:layout_width="80dp" + android:layout_height="80dp" + android:layout_marginTop="0dp" + app:layout_constraintBottom_toTopOf="@+id/player_quick_action_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/exo_progress" + app:layout_constraintVertical_bias=".45" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_next" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@id/placeholder_view_right" + app:layout_constraintStart_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:srcCompat="@drawable/ic_skip_next" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_ffwd" + android:layout_width="42dp" + android:layout_height="42dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintEnd_toStartOf="@id/placeholder_view_right" + app:layout_constraintStart_toEndOf="@+id/player_play_pause_placeholder_view" + app:layout_constraintTop_toTopOf="@+id/player_play_pause_placeholder_view" + app:srcCompat="@drawable/ic_forward" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ImageButton + android:id="@+id/exo_repeat_toggle" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_marginEnd="24dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:scaleType="fitCenter" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_right" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right" + app:srcCompat="@drawable/ic_repeat" + app:tint="?attr/colorOnPrimaryContainer" /> + + <ToggleButton + android:id="@+id/player_skip_silence_toggle_button" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginEnd="24dp" + android:background="@drawable/button_skip_silence_selector" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintBottom_toBottomOf="@+id/placeholder_view_middle_right" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right" + app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right" + app:tint="?attr/colorOnPrimaryContainer" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/player_quick_action_view" + android:layout_width="match_parent" + android:layout_height="@dimen/now_playing_bottom_peek_height" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + <ImageButton + android:id="@+id/player_open_queue_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="16dp" + android:background="?attr/selectableItemBackgroundBorderless" + app:layout_constraintStart_toEndOf="@+id/player_open_equalizer_button" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:srcCompat="@drawable/ic_queue" /> + + <ImageButton + android:id="@+id/player_open_equalizer_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="16dp" + android:background="?attr/selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@+id/player_open_queue_button" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:srcCompat="@drawable/ic_eq" /> + + </androidx.constraintlayout.widget.ConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/inner_fragment_player_cover.xml b/app/src/main/res/layout/inner_fragment_player_cover.xml new file mode 100644 index 0000000..8eae8bd --- /dev/null +++ b/app/src/main/res/layout/inner_fragment_player_cover.xml @@ -0,0 +1,136 @@ +<androidx.constraintlayout.widget.ConstraintLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingHorizontal="24dp"> + + <ImageView + android:id="@+id/now_playing_song_cover_image_view" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintDimensionRatio="1:1" + app:layout_constraintTop_toTopOf="parent" /> + + <Button + android:id="@+id/now_playing_tap_button" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_margin="16dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="64dp" + android:alpha="0.7" + app:icon="@drawable/ic_tap" + app:layout_constraintEnd_toEndOf="@+id/now_playing_song_cover_image_view" + app:layout_constraintBottom_toBottomOf="@+id/now_playing_song_cover_image_view" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/now_playing_song_cover_button_group" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:animateLayoutChanges="true" + android:background="@drawable/gradient_player_cover_background_image" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <Button + android:id="@+id/inner_button_top_left" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_margin="4dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_file_download" + app:layout_constraintBottom_toTopOf="@+id/horizontal_guideline" + app:layout_constraintEnd_toStartOf="@+id/vertical_guideline" /> + + <Button + android:id="@+id/inner_button_top_right" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_margin="4dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_playlist_add" + app:layout_constraintBottom_toTopOf="@+id/horizontal_guideline" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" /> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/horizontal_guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintGuide_percent="0.50" /> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/vertical_guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.50" /> + + <Button + android:id="@+id/inner_button_bottom_left" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_margin="4dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_mix_from_here" + app:layout_constraintEnd_toStartOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/horizontal_guideline" /> + + <Button + android:id="@+id/inner_button_bottom_right" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_margin="4dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_bookmark" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/horizontal_guideline" /> + + <Button + android:id="@+id/inner_button_bottom_right_alternative" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_margin="4dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_lyrics" + app:layout_constraintStart_toEndOf="@+id/vertical_guideline" + app:layout_constraintTop_toBottomOf="@+id/horizontal_guideline" /> + + </androidx.constraintlayout.widget.ConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/inner_fragment_player_lyrics.xml b/app/src/main/res/layout/inner_fragment_player_lyrics.xml new file mode 100644 index 0000000..5ece899 --- /dev/null +++ b/app/src/main/res/layout/inner_fragment_player_lyrics.xml @@ -0,0 +1,99 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingHorizontal="24dp"> + + <ImageView + android:id="@+id/empty_description_image_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:maxWidth="240dp" + android:maxHeight="240dp" + android:scaleType="centerInside" + android:src="@drawable/ui_empty_description" + app:layout_constraintBottom_toTopOf="@id/title_empty_description_label" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/title_empty_description_label" + style="@style/LabelMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="12dp" + android:text="@string/description_empty_title" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/empty_description_image_view" /> + + <androidx.core.widget.NestedScrollView + android:id="@+id/now_playing_song_lyrics_sroll_view" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintDimensionRatio="1:1" + app:layout_constraintTop_toTopOf="parent"> + + <TextView + android:id="@+id/now_playing_song_lyrics_text_view" + style="@style/BodyLarge" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + </androidx.core.widget.NestedScrollView> + + <com.google.android.material.button.MaterialButton + android:id="@+id/download_lyrics_button" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_margin="16dp" + android:alpha="0.7" + android:contentDescription="@string/player_lyrics_download_content_description" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + android:visibility="gone" + app:cornerRadius="64dp" + app:icon="@drawable/ic_download" + app:layout_constraintBottom_toTopOf="@+id/sync_lyrics_tap_button" + app:layout_constraintEnd_toEndOf="@+id/now_playing_song_lyrics_sroll_view" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/sync_lyrics_tap_button" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_margin="16dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="64dp" + android:alpha="0.7" + android:visibility="visible" + app:icon="@drawable/ic_lyrics_sync_lock" + app:layout_constraintEnd_toEndOf="@+id/now_playing_song_lyrics_sroll_view" + app:layout_constraintBottom_toBottomOf="@+id/now_playing_song_lyrics_sroll_view" /> + + <TextView + android:id="@+id/temp_lyrics_line_text_view" + style="@style/BodyLarge" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + android:visibility="invisible"/> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/inner_fragment_player_queue.xml b/app/src/main/res/layout/inner_fragment_player_queue.xml new file mode 100644 index 0000000..72a70a2 --- /dev/null +++ b/app/src/main/res/layout/inner_fragment_player_queue.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <TextView + android:id="@+id/player_clean_queue_button" + style="@style/TitleMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:gravity="center" + android:text="@string/player_queue_clean_all_button" /> + + <com.cappielloantonio.tempo.helper.recyclerview.NestedScrollableHost + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/player_queue_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="40dp" + android:paddingTop="8dp" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + </com.cappielloantonio.tempo.helper.recyclerview.NestedScrollableHost> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/player_shuffle_queue_fab" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:layout_margin="16dp" + android:contentDescription="@string/content_description_shuffle_button" + app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior" + app:srcCompat="@drawable/ic_shuffle" /> +</androidx.coordinatorlayout.widget.CoordinatorLayout> + diff --git a/app/src/main/res/layout/item_home_catalogue_podcast_channel.xml b/app/src/main/res/layout/item_home_catalogue_podcast_channel.xml new file mode 100644 index 0000000..3644ec1 --- /dev/null +++ b/app/src/main/res/layout/item_home_catalogue_podcast_channel.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/podcast_channel_catalogue_cover_image_view" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintDimensionRatio="W, 1:1" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/podcast_channel_title_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingTop="8dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/podcast_channel_catalogue_cover_image_view" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_discover_song.xml b/app/src/main/res/layout/item_home_discover_song.xml new file mode 100644 index 0000000..6e4ccee --- /dev/null +++ b/app/src/main/res/layout/item_home_discover_song.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingHorizontal="16dp"> + + <ImageView + android:id="@+id/discover_song_cover_image_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scaleType="centerCrop" + android:pivotX="50%" + android:pivotY="50%" + android:background="?attr/colorSurfaceContainerHighest" + android:foreground="@drawable/gradient_discover_background_image" /> + + <TextView + android:id="@+id/title_discover_song_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="16dp" + android:layout_marginTop="18dp" + android:layout_marginRight="16dp" + android:ellipsize="end" + android:fontFamily="@font/inter" + android:maxLines="2" + android:textColor="@color/gradientTitleColor" + android:textFontWeight="400" + android:textSize="20sp" /> + + <TextView + android:id="@+id/album_discover_song_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/title_discover_song_label" + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:drawablePadding="10dp" + android:ellipsize="end" + android:fontFamily="@font/inter" + android:maxLines="1" + android:textColor="@color/gradientSubtitleColor" + android:textFontWeight="400" + android:textSize="14sp" /> +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_grid_track.xml b/app/src/main/res/layout/item_home_grid_track.xml new file mode 100644 index 0000000..9d1a4d6 --- /dev/null +++ b/app/src/main/res/layout/item_home_grid_track.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.cappielloantonio.tempo.helper.recyclerview.SquareLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/track_cover_image_view" + android:layout_width="156dp" + android:layout_height="156dp" + android:layout_gravity="center" /> +</com.cappielloantonio.tempo.helper.recyclerview.SquareLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_internet_radio_station.xml b/app/src/main/res/layout/item_home_internet_radio_station.xml new file mode 100644 index 0000000..3060637 --- /dev/null +++ b/app/src/main/res/layout/item_home_internet_radio_station.xml @@ -0,0 +1,71 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingTop="3dp" + android:paddingBottom="3dp"> + + <ImageView + android:id="@+id/internet_radio_station_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/cover_image_separator" + android:layout_width="12dp" + android:layout_height="52dp" + app:layout_constraintBottom_toBottomOf="@+id/internet_radio_station_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/internet_radio_station_title_text_view" + app:layout_constraintStart_toEndOf="@+id/internet_radio_station_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/internet_radio_station_cover_image_view" /> + + <TextView + android:id="@+id/internet_radio_station_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@id/internet_radio_station_subtitle_text_view" + app:layout_constraintEnd_toStartOf="@+id/internet_radio_station_more_button" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toTopOf="@+id/internet_radio_station_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/internet_radio_station_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/internet_radio_station_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/internet_radio_station_more_button" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toBottomOf="@+id/internet_radio_station_title_text_view" /> + + <ImageView + android:id="@+id/internet_radio_station_more_button" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + app:layout_constraintBottom_toBottomOf="@id/internet_radio_station_subtitle_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/internet_radio_station_cover_image_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_podcast_episode.xml b/app/src/main/res/layout/item_home_podcast_episode.xml new file mode 100644 index 0000000..d259672 --- /dev/null +++ b/app/src/main/res/layout/item_home_podcast_episode.xml @@ -0,0 +1,120 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingHorizontal="16dp"> + + <ImageView + android:id="@+id/podcast_cover_image_view" + android:layout_width="96dp" + android:layout_height="96dp" + android:layout_gravity="center" + app:layout_constraintBottom_toTopOf="@+id/podcast_upper_divider" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/podcast_title_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="12dp" + android:ellipsize="end" + android:maxLines="5" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@+id/podcast_subtitle_label" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/podcast_cover_image_view" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_chainStyle="packed" /> + + + <TextView + android:id="@+id/podcast_subtitle_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="12dp" + android:ellipsize="end" + android:maxLines="2" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@id/podcast_upper_divider" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/podcast_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/podcast_title_label" /> + + <View + android:id="@+id/podcast_upper_divider" + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:layout_marginTop="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/podcast_cover_image_view" /> + + <TextView + android:id="@+id/podcast_description_text" + style="@style/LabelSmall" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="7" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/podcast_upper_divider" /> + + <Button + android:id="@+id/podcast_play_button" + style="@style/Widget.Material3.Button.TonalButton.Icon" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginTop="12dp" + android:layout_marginBottom="12dp" + android:insetLeft="0dp" + android:insetTop="0dp" + android:insetRight="0dp" + android:insetBottom="0dp" + app:cornerRadius="30dp" + app:icon="@drawable/ic_play" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/podcast_description_text" /> + + <TextView + android:id="@+id/podcast_releases_and_duration_label" + style="@style/LabelSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/podcast_play_button" + app:layout_constraintStart_toEndOf="@+id/podcast_play_button" + app:layout_constraintTop_toTopOf="@+id/podcast_play_button" /> + + <Button + android:id="@+id/podcast_more_button" + style="@style/Widget.Material3.Button.IconButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + app:icon="@drawable/ic_more_vert" + app:layout_constraintBottom_toBottomOf="@+id/podcast_play_button" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/podcast_play_button" /> + + <Button + android:id="@+id/podcast_download_request_button" + style="@style/Widget.Material3.Button.IconButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + app:icon="@drawable/ic_podcast_download" + app:layout_constraintBottom_toBottomOf="@+id/podcast_play_button" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/podcast_play_button" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/item_home_similar_track.xml b/app/src/main/res/layout/item_home_similar_track.xml new file mode 100644 index 0000000..4a5d76b --- /dev/null +++ b/app/src/main/res/layout/item_home_similar_track.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="8dp"> + + <ImageView + android:id="@+id/track_cover_image_view" + android:layout_width="172dp" + android:layout_height="172dp" + android:layout_gravity="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/title_track_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="2" + android:paddingTop="8dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/track_cover_image_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_year.xml b/app/src/main/res/layout/item_home_year.xml new file mode 100644 index 0000000..702c107 --- /dev/null +++ b/app/src/main/res/layout/item_home_year.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:card_view="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingEnd="12dp" + android:paddingBottom="8dp"> + + <androidx.cardview.widget.CardView + android:id="@+id/card_view" + android:layout_width="172dp" + android:layout_height="72dp" + android:layout_gravity="center" + card_view:cardCornerRadius="4dp" + card_view:cardElevation="2dp" + card_view:cardPreventCornerOverlap="false" + card_view:cardUseCompatPadding="true"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal"> + + <View + android:layout_width="6dp" + android:layout_height="match_parent" + android:background="?attr/colorPrimary" /> + + <TextView + android:id="@+id/year_label" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" + android:gravity="center" + android:paddingStart="8dp" + android:text="@string/label_placeholder" + android:textAlignment="gravity" /> + + </LinearLayout> + </androidx.cardview.widget.CardView> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_album.xml b/app/src/main/res/layout/item_horizontal_album.xml new file mode 100644 index 0000000..af1ff7f --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_album.xml @@ -0,0 +1,65 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingTop="2dp" + android:paddingBottom="2dp"> + + <ImageView + android:id="@+id/album_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@+id/album_artist_text_view" + app:layout_constraintEnd_toStartOf="@+id/album_more_button" + app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/album_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/album_artist_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/album_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/album_more_button" + app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/album_title_text_view" /> + + <FrameLayout + android:id="@+id/album_more_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + app:layout_constraintBottom_toBottomOf="@+id/album_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/album_cover_image_view"> + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_artist.xml b/app/src/main/res/layout/item_horizontal_artist.xml new file mode 100644 index 0000000..764f14a --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_artist.xml @@ -0,0 +1,67 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingTop="2dp" + android:paddingBottom="2dp"> + + <ImageView + android:id="@+id/artist_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/artist_name_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@id/artist_info_text_view" + app:layout_constraintEnd_toStartOf="@+id/artist_more_button" + app:layout_constraintStart_toEndOf="@+id/artist_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/artist_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/artist_info_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="16dp" + android:singleLine="true" + android:text="@string/label_placeholder" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/artist_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/artist_more_button" + app:layout_constraintStart_toEndOf="@+id/artist_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/artist_name_text_view" /> + + <FrameLayout + android:id="@+id/artist_more_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + app:layout_constraintBottom_toBottomOf="@+id/artist_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/artist_cover_image_view"> + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_download.xml b/app/src/main/res/layout/item_horizontal_download.xml new file mode 100644 index 0000000..0fbbb00 --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_download.xml @@ -0,0 +1,88 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:orientation="horizontal"> + + <LinearLayout + android:id="@+id/divider" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginEnd="16dp" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <TextView + android:id="@+id/downloaded_item_pre_text_view" + style="@style/LabelExtraSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" /> + + <View + style="@style/Divider" + android:layout_gravity="center_vertical" /> + </LinearLayout> + + <ImageView + android:id="@+id/item_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginTop="8dp" + android:layout_marginEnd="12dp" + app:layout_constraintEnd_toStartOf="@id/downloaded_item_title_text_view" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/divider" /> + + <TextView + android:id="@+id/downloaded_item_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintVertical_chainStyle="packed" + app:layout_constraintEnd_toStartOf="@+id/downloaded_item_more_button" + app:layout_constraintStart_toEndOf="@+id/item_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/item_cover_image_view" + app:layout_constraintBottom_toTopOf="@id/downloaded_item_subtitle_text_view"/> + + <TextView + android:id="@+id/downloaded_item_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:paddingBottom="6dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintTop_toBottomOf="@id/downloaded_item_title_text_view" + app:layout_constraintEnd_toStartOf="@+id/downloaded_item_more_button" + app:layout_constraintStart_toStartOf="@+id/downloaded_item_title_text_view" + app:layout_constraintBottom_toBottomOf="@+id/item_cover_image_view" /> + + <FrameLayout + android:id="@+id/downloaded_item_more_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingVertical="12dp" + android:paddingStart="12dp" + app:layout_constraintBottom_toBottomOf="@+id/item_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/item_cover_image_view" > + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_home_sector.xml b/app/src/main/res/layout/item_horizontal_home_sector.xml new file mode 100644 index 0000000..52f9f6e --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_home_sector.xml @@ -0,0 +1,26 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal"> + + <CheckBox + android:id="@+id/home_sector_title_check_box" + android:layout_width="0dp" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + + <ImageView + android:id="@+id/home_sector_rearranger_image_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/ic_drag_handle" + app:layout_constraintBottom_toBottomOf="@+id/home_sector_title_check_box" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/home_sector_title_check_box" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_playlist.xml b/app/src/main/res/layout/item_horizontal_playlist.xml new file mode 100644 index 0000000..457c9cd --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_playlist.xml @@ -0,0 +1,65 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingTop="2dp" + android:paddingBottom="2dp"> + + <ImageView + android:id="@+id/playlist_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/playlist_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@id/playlist_subtitle_text_view" + app:layout_constraintEnd_toStartOf="@+id/playlist_more_button" + app:layout_constraintStart_toEndOf="@+id/playlist_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/playlist_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/playlist_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/playlist_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/playlist_more_button" + app:layout_constraintStart_toEndOf="@+id/playlist_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/playlist_title_text_view" /> + + <FrameLayout + android:id="@+id/playlist_more_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + app:layout_constraintBottom_toBottomOf="@+id/playlist_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/playlist_cover_image_view"> + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_playlist_dialog.xml b/app/src/main/res/layout/item_horizontal_playlist_dialog.xml new file mode 100644 index 0000000..894c50a --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_playlist_dialog.xml @@ -0,0 +1,37 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + + <TextView + android:id="@+id/playlist_dialog_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/playlist_dialog_count_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:paddingBottom="8dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/playlist_dialog_title_text_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml b/app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml new file mode 100644 index 0000000..ffe19ba --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml @@ -0,0 +1,89 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingTop="3dp" + android:paddingBottom="3dp"> + + <ImageView + android:id="@+id/playlist_dialog_song_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/playlist_dialog_song_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingTop="10dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/playlist_dialog_song_handle_button" + app:layout_constraintStart_toEndOf="@+id/playlist_dialog_song_cover_image_view" + app:layout_constraintTop_toTopOf="parent" /> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingEnd="12dp" + app:layout_constrainedWidth="true" + app:layout_constraintEnd_toStartOf="@+id/playlist_dialog_song_handle_button" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toEndOf="@+id/playlist_dialog_song_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/playlist_dialog_song_title_text_view"> + + <TextView + android:id="@+id/playlist_dialog_album_artist_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:ellipsize="end" + android:maxLines="1" + android:paddingStart="12dp" + android:paddingEnd="4dp" + android:text="@string/label_placeholder" /> + + <TextView + android:id="@+id/queue_separator_text_view" + style="@style/LabelSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/label_dot_separator" /> + + <TextView + android:id="@+id/playlist_dialog_song_duration_text_view" + style="@style/LabelSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:maxLines="1" + android:paddingStart="4dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" /> + </LinearLayout> + + <ImageView + android:id="@+id/playlist_dialog_song_handle_button" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_drag_handle" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_podcast_channel.xml b/app/src/main/res/layout/item_horizontal_podcast_channel.xml new file mode 100644 index 0000000..33b9dbf --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_podcast_channel.xml @@ -0,0 +1,64 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingTop="3dp" + android:paddingBottom="3dp"> + + <ImageView + android:id="@+id/podcast_channel_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/podcast_channel_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingTop="10dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/podcast_channel_more_button" + app:layout_constraintStart_toEndOf="@+id/podcast_channel_cover_image_view" + app:layout_constraintTop_toTopOf="parent" /> + + + <TextView + android:id="@+id/podcast_channel_description_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:singleLine="true" + android:paddingStart="12dp" + android:paddingEnd="16dp" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/podcast_channel_more_button" + app:layout_constraintStart_toEndOf="@+id/podcast_channel_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/podcast_channel_title_text_view" /> + + <ImageView + android:id="@+id/podcast_channel_more_button" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:gravity="center_vertical" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_share.xml b/app/src/main/res/layout/item_horizontal_share.xml new file mode 100644 index 0000000..f48b05c --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_share.xml @@ -0,0 +1,65 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingTop="2dp" + android:paddingBottom="2dp"> + + <ImageView + android:id="@+id/share_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/share_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@+id/share_subtitle_text_view" + app:layout_constraintEnd_toStartOf="@+id/share_button" + app:layout_constraintStart_toEndOf="@+id/share_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/share_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/share_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingHorizontal="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/share_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/share_button" + app:layout_constraintStart_toEndOf="@+id/share_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/share_title_text_view" /> + + <FrameLayout + android:id="@+id/share_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + app:layout_constraintBottom_toBottomOf="@+id/share_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/share_cover_image_view"> + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_track.xml b/app/src/main/res/layout/item_horizontal_track.xml new file mode 100644 index 0000000..dfead0f --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_track.xml @@ -0,0 +1,228 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingTop="2dp" + android:paddingBottom="2dp"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/different_disk_divider_sector" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginHorizontal="16dp" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible"> + + <TextView + android:id="@+id/disc_title_text_view" + style="@style/LabelSmall" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + tools:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/different_disk_divider" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/different_disk_divider" + style="@style/Divider" + android:layout_width="0dp" + app:layout_constraintBottom_toBottomOf="@+id/disc_title_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/disc_title_text_view" + app:layout_constraintTop_toTopOf="@+id/disc_title_text_view"/> + </androidx.constraintlayout.widget.ConstraintLayout> + + <ImageView + android:id="@+id/song_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/different_disk_divider_sector" /> + + <View + android:id="@+id/cover_art_overlay" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:background="#80000000" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/song_cover_image_view" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/different_disk_divider_sector" /> + + <ImageView + android:id="@+id/play_pause_icon" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_gravity="center" + android:layout_marginStart="28dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/different_disk_divider_sector" /> + + <TextView + android:id="@+id/track_number_text_view" + style="@style/LabelLarge" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="16dp" + android:gravity="center" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/different_disk_divider_sector" /> + + <View + android:id="@+id/cover_image_separator" + android:layout_width="12dp" + android:layout_height="52dp" + app:layout_constraintBottom_toBottomOf="@+id/song_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/search_result_song_title_text_view" + app:layout_constraintStart_toEndOf="@+id/song_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/song_cover_image_view" /> + + <TextView + android:id="@+id/search_result_song_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toTopOf="@+id/search_result_song_subtitle_text_view" + app:layout_constraintEnd_toStartOf="@+id/rating_indicator_image_view" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toTopOf="@+id/song_cover_image_view" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/search_result_song_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@+id/song_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/rating_indicator_image_view" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toBottomOf="@+id/search_result_song_title_text_view" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/rating_indicator_image_view" + android:layout_width="42dp" + android:layout_height="wrap_content" + android:paddingVertical="8dp" + app:layout_constraintBottom_toBottomOf="@+id/song_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/search_result_download_indicator_image_view" + app:layout_constraintStart_toEndOf="@+id/search_result_song_title_text_view" + app:layout_constraintTop_toTopOf="@+id/song_cover_image_view"> + + <ImageView + android:id="@+id/preferred_icon" + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_favorite" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> + + <LinearLayout + android:id="@+id/rating_bar_layout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/preferred_icon"> + + <ImageView + android:id="@+id/one_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/two_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/three_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/four_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/five_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + </LinearLayout> + </androidx.constraintlayout.widget.ConstraintLayout> + + <FrameLayout + android:id="@+id/search_result_download_indicator_image_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/song_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/search_result_song_more_button" + app:layout_constraintStart_toEndOf="@+id/rating_indicator_image_view" + app:layout_constraintTop_toTopOf="@+id/song_cover_image_view" + tools:visibility="visible"> + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_download" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> + + <FrameLayout + android:id="@+id/search_result_song_more_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="12dp" + app:layout_constraintBottom_toBottomOf="@+id/song_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/search_result_download_indicator_image_view" + app:layout_constraintTop_toTopOf="@+id/song_cover_image_view"> + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_more_vert" + android:foreground="?android:attr/selectableItemBackgroundBorderless" /> + </FrameLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_album.xml b/app/src/main/res/layout/item_library_album.xml new file mode 100644 index 0000000..8283279 --- /dev/null +++ b/app/src/main/res/layout/item_library_album.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="8dp"> + + <ImageView + android:id="@+id/album_cover_image_view" + android:layout_width="172dp" + android:layout_height="172dp" + android:layout_gravity="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_name_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingTop="8dp" + android:scrollHorizontally="true" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_cover_image_view" /> + + <TextView + android:id="@+id/artist_name_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_name_label" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_artist.xml b/app/src/main/res/layout/item_library_artist.xml new file mode 100644 index 0000000..76f3cc9 --- /dev/null +++ b/app/src/main/res/layout/item_library_artist.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="8dp"> + + <ImageView + android:id="@+id/artist_cover_image_view" + android:layout_width="172dp" + android:layout_height="172dp" + android:layout_gravity="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/artist_name_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:maxWidth="172dp" + android:paddingTop="8dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/artist_cover_image_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_artist_page_or_similar_album.xml b/app/src/main/res/layout/item_library_artist_page_or_similar_album.xml new file mode 100644 index 0000000..6ae1c18 --- /dev/null +++ b/app/src/main/res/layout/item_library_artist_page_or_similar_album.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="8dp"> + + <ImageView + android:id="@+id/artist_page_album_cover_image_view" + android:layout_width="256dp" + android:layout_height="256dp" + android:layout_gravity="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_name_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:maxWidth="256dp" + android:paddingTop="8dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/artist_page_album_cover_image_view" /> + + <TextView + android:id="@+id/artist_name_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_name_label" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_catalogue_album.xml b/app/src/main/res/layout/item_library_catalogue_album.xml new file mode 100644 index 0000000..e38a1d1 --- /dev/null +++ b/app/src/main/res/layout/item_library_catalogue_album.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/album_catalogue_cover_image_view" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintDimensionRatio="W, 1:1" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/album_name_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingTop="8dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_catalogue_cover_image_view" /> + + <TextView + android:id="@+id/artist_name_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_name_label" /> + + <View + android:layout_width="match_parent" + android:layout_height="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/artist_name_label"/> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_catalogue_artist.xml b/app/src/main/res/layout/item_library_catalogue_artist.xml new file mode 100644 index 0000000..9e7fb02 --- /dev/null +++ b/app/src/main/res/layout/item_library_catalogue_artist.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/artist_catalogue_cover_image_view" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintDimensionRatio="W, 1:1" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/artist_name_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingTop="8dp" + android:paddingBottom="16dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/artist_catalogue_cover_image_view" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_catalogue_genre.xml b/app/src/main/res/layout/item_library_catalogue_genre.xml new file mode 100644 index 0000000..85b3e5c --- /dev/null +++ b/app/src/main/res/layout/item_library_catalogue_genre.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="54dp" + android:orientation="vertical"> + + <androidx.cardview.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" + android:id="@+id/card_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" + card_view:cardCornerRadius="4dp" + card_view:cardElevation="2dp" + card_view:cardPreventCornerOverlap="false" + card_view:cardUseCompatPadding="true"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal"> + + <View + android:layout_width="6dp" + android:layout_height="match_parent" + android:background="?attr/colorPrimary" /> + + <TextView + android:id="@+id/genre_label" + style="@style/LabelMedium" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:gravity="center" + android:paddingStart="8dp" + android:text="@string/label_placeholder" + android:textAlignment="gravity" /> + + </LinearLayout> + </androidx.cardview.widget.CardView> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_genre.xml b/app/src/main/res/layout/item_library_genre.xml new file mode 100644 index 0000000..b636d2f --- /dev/null +++ b/app/src/main/res/layout/item_library_genre.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingEnd="8dp" + android:paddingBottom="4dp"> + + <androidx.cardview.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" + android:id="@+id/card_view" + android:layout_width="196dp" + android:layout_height="54dp" + android:layout_gravity="center" + card_view:cardCornerRadius="4dp" + card_view:cardElevation="2dp" + card_view:cardPreventCornerOverlap="false" + card_view:cardUseCompatPadding="true"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal"> + + <View + android:layout_width="6dp" + android:layout_height="match_parent" + android:background="?attr/colorPrimary" /> + + <TextView + android:id="@+id/genre_label" + style="@style/LabelMedium" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:gravity="center_vertical" + android:paddingStart="8dp" + android:text="@string/label_placeholder" + android:textAlignment="gravity" /> + + </LinearLayout> + </androidx.cardview.widget.CardView> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_music_directory.xml b/app/src/main/res/layout/item_library_music_directory.xml new file mode 100644 index 0000000..c355800 --- /dev/null +++ b/app/src/main/res/layout/item_library_music_directory.xml @@ -0,0 +1,70 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingTop="4dp" + android:paddingBottom="4dp"> + + <ImageView + android:id="@+id/music_directory_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/cover_image_separator" + android:layout_width="12dp" + android:layout_height="52dp" + app:layout_constraintBottom_toBottomOf="@+id/music_directory_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/music_directory_title_text_view" + app:layout_constraintStart_toEndOf="@+id/music_directory_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/music_directory_cover_image_view" /> + + <TextView + android:id="@+id/music_directory_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@id/music_directory_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/music_directory_more_button" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toTopOf="@+id/music_directory_cover_image_view" /> + + <ImageView + android:id="@+id/music_directory_more_button" + android:layout_width="22dp" + android:layout_height="22dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_navigate_next" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:visibility="invisible" + app:layout_constraintBottom_toBottomOf="@id/music_directory_title_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/music_directory_title_text_view" /> + + <ImageView + android:id="@+id/music_directory_play_button" + android:layout_width="22dp" + android:layout_height="22dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_play" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:visibility="invisible" + app:layout_constraintBottom_toBottomOf="@id/music_directory_title_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/music_directory_title_text_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_music_folder.xml b/app/src/main/res/layout/item_library_music_folder.xml new file mode 100644 index 0000000..bee61da --- /dev/null +++ b/app/src/main/res/layout/item_library_music_folder.xml @@ -0,0 +1,53 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingTop="4dp" + android:paddingBottom="4dp"> + + <ImageView + android:id="@+id/music_folder_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/cover_image_separator" + android:layout_width="12dp" + android:layout_height="52dp" + app:layout_constraintBottom_toBottomOf="@+id/music_folder_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/music_folder_title_text_view" + app:layout_constraintStart_toEndOf="@+id/music_folder_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/music_folder_cover_image_view" /> + + <TextView + android:id="@+id/music_folder_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:layout_marginEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@id/music_folder_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/music_folder_more_button" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toTopOf="@+id/music_folder_cover_image_view" /> + + <ImageView + android:id="@+id/music_folder_more_button" + android:layout_width="22dp" + android:layout_height="22dp" + android:layout_marginStart="4dp" + android:layout_marginEnd="4dp" + android:background="@drawable/ic_navigate_next" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + app:layout_constraintBottom_toBottomOf="@id/music_folder_title_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/music_folder_title_text_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_music_index.xml b/app/src/main/res/layout/item_library_music_index.xml new file mode 100644 index 0000000..2a31972 --- /dev/null +++ b/app/src/main/res/layout/item_library_music_index.xml @@ -0,0 +1,57 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clipChildren="false" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingTop="3dp" + android:paddingBottom="3dp"> + + <ImageView + android:id="@+id/music_index_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_margin="2dp" + android:background="?attr/colorSurfaceVariant" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/cover_image_separator" + android:layout_width="12dp" + android:layout_height="52dp" + app:layout_constraintBottom_toBottomOf="@+id/music_index_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/music_index_title_text_view" + app:layout_constraintStart_toEndOf="@+id/music_index_cover_image_view" + app:layout_constraintTop_toTopOf="@+id/music_index_cover_image_view" /> + + <TextView + android:id="@+id/music_index_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintBottom_toBottomOf="@id/music_index_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/music_index_more_button" + app:layout_constraintStart_toEndOf="@+id/cover_image_separator" + app:layout_constraintTop_toTopOf="@+id/music_index_cover_image_view" /> + + <ImageView + android:id="@+id/music_index_more_button" + android:layout_width="22dp" + android:layout_height="22dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_navigate_next" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + app:layout_constraintBottom_toBottomOf="@id/music_index_title_text_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/music_index_title_text_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_similar_artist.xml b/app/src/main/res/layout/item_library_similar_artist.xml new file mode 100644 index 0000000..5d2d631 --- /dev/null +++ b/app/src/main/res/layout/item_library_similar_artist.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="8dp"> + + <ImageView + android:id="@+id/similar_artist_cover_image_view" + android:layout_width="256dp" + android:layout_height="256dp" + android:layout_gravity="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/artist_name_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:maxWidth="256dp" + android:paddingTop="8dp" + android:singleLine="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/similar_artist_cover_image_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_login_server.xml b/app/src/main/res/layout/item_login_server.xml new file mode 100644 index 0000000..cb3a9e7 --- /dev/null +++ b/app/src/main/res/layout/item_login_server.xml @@ -0,0 +1,39 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:foreground="?attr/selectableItemBackground"> + + <TextView + android:id="@+id/server_name_text_view" + style="@style/LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:singleLine="true" + android:paddingStart="20dp" + android:paddingTop="12dp" + android:paddingEnd="12dp" + android:paddingBottom="4dp" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + <TextView + android:id="@+id/server_address_text_view" + style="@style/LabelSmall" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:singleLine="true" + android:paddingStart="20dp" + android:paddingEnd="12dp" + android:paddingBottom="12dp" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/server_name_text_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_player_queue_song.xml b/app/src/main/res/layout/item_player_queue_song.xml new file mode 100644 index 0000000..baf28ac --- /dev/null +++ b/app/src/main/res/layout/item_player_queue_song.xml @@ -0,0 +1,152 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:foreground="?attr/selectableItemBackground" + android:orientation="horizontal" + android:paddingHorizontal="16dp" + android:paddingTop="3dp" + android:paddingBottom="3dp"> + + <ImageView + android:id="@+id/queue_song_cover_image_view" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_gravity="center" + android:layout_margin="2dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/cover_art_overlay" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_marginStart="2dp" + android:background="#80000000" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/play_pause_icon" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_gravity="center" + android:layout_margin="14dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/queue_song_title_text_view" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingTop="10dp" + android:paddingEnd="12dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constraintEnd_toStartOf="@+id/rating_indicator_image_view" + app:layout_constraintStart_toEndOf="@+id/queue_song_cover_image_view" + app:layout_constraintTop_toTopOf="@id/queue_song_cover_image_view" + app:layout_constraintBottom_toTopOf="@id/queue_song_subtitle_text_view" + app:layout_constraintVertical_chainStyle="packed"/> + + <TextView + android:id="@+id/queue_song_subtitle_text_view" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="marquee" + android:paddingStart="12dp" + android:paddingEnd="4dp" + android:singleLine="true" + android:text="@string/label_placeholder" + app:layout_constrainedWidth="true" + app:layout_constraintEnd_toEndOf="@+id/queue_song_title_text_view" + app:layout_constraintStart_toEndOf="@+id/queue_song_cover_image_view" + app:layout_constraintTop_toBottomOf="@+id/queue_song_title_text_view" + app:layout_constraintBottom_toBottomOf="@+id/queue_song_cover_image_view"/> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/rating_indicator_image_view" + android:layout_width="42dp" + android:layout_height="wrap_content" + android:paddingVertical="8dp" + android:layout_marginHorizontal="12dp" + app:layout_constraintBottom_toBottomOf="@+id/queue_song_cover_image_view" + app:layout_constraintEnd_toStartOf="@+id/queue_song_holder_image" + app:layout_constraintStart_toEndOf="@+id/queue_song_title_text_view" + app:layout_constraintTop_toTopOf="@+id/queue_song_cover_image_view"> + + <ImageView + android:id="@+id/preferred_icon" + android:layout_width="18dp" + android:layout_height="18dp" + android:background="@drawable/ic_favorite" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> + + <LinearLayout + android:id="@+id/rating_bar_layout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/preferred_icon"> + + <ImageView + android:id="@+id/one_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/two_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/three_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/four_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + <ImageView + android:id="@+id/five_star_icon" + android:layout_width="8dp" + android:layout_height="8dp" + tools:src="@drawable/ic_star" /> + + </LinearLayout> + </androidx.constraintlayout.widget.ConstraintLayout> + + <ImageView + android:id="@+id/queue_song_holder_image" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:src="@drawable/ic_drag_handle" + app:layout_constraintBottom_toBottomOf="@+id/queue_song_cover_image_view" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/rating_indicator_image_view" + app:layout_constraintTop_toTopOf="@+id/queue_song_cover_image_view" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_search_suggestion.xml b/app/src/main/res/layout/item_search_suggestion.xml new file mode 100644 index 0000000..37e8257 --- /dev/null +++ b/app/src/main/res/layout/item_search_suggestion.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:focusable="true" + android:paddingLeft="16dp" + android:paddingTop="16dp" + android:paddingRight="16dp" + android:paddingBottom="16dp"> + + <ImageView + android:id="@+id/search_suggestion_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/ic_history" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" /> + + <TextView + android:id="@+id/search_suggestion_title" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_marginHorizontal="12dp" + android:text="@string/label_placeholder" + android:textAppearance="?attr/textAppearanceBody2" + app:layout_constraintBottom_toBottomOf="@id/search_suggestion_icon" + app:layout_constraintEnd_toStartOf="@id/search_suggestion_delete_icon" + app:layout_constraintStart_toEndOf="@id/search_suggestion_icon" + app:layout_constraintTop_toTopOf="@id/search_suggestion_icon" /> + + <ImageView + android:id="@+id/search_suggestion_delete_icon" + android:layout_width="20dp" + android:layout_height="20dp" + android:background="?selectableItemBackgroundBorderless" + android:src="@drawable/ic_close" + app:layout_constraintBottom_toBottomOf="@id/search_suggestion_icon" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/search_suggestion_title" + app:layout_constraintTop_toTopOf="@id/search_suggestion_icon" + tools:ignore="ContentDescription" /> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/layout_fast_scrollbar.xml b/app/src/main/res/layout/layout_fast_scrollbar.xml new file mode 100644 index 0000000..fb7ce11 --- /dev/null +++ b/app/src/main/res/layout/layout_fast_scrollbar.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<merge xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="wrap_content" + android:layout_height="match_parent"> + + <TextView + android:id="@+id/fastscroller_bubble" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="end" + android:background="@drawable/fast_scrollbar_bubble" + android:gravity="center" + android:textColor="?attr/colorOnPrimary" + android:textSize="48sp" + android:visibility="visible" + tools:text="A" /> + + <ImageView + android:id="@+id/fastscroller_handle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:src="@drawable/fast_scrollbar_handle" /> +</merge> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_toolbar.xml b/app/src/main/res/layout/layout_toolbar.xml new file mode 100644 index 0000000..3661258 --- /dev/null +++ b/app/src/main/res/layout/layout_toolbar.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.google.android.material.appbar.AppBarLayout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/appbar" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/colorSurface" + app:layout_scrollFlags="scroll|enterAlways|snap"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <ImageView + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="8dp" + android:background="@drawable/ic_toolbar_tempo" /> + + <TextView + style="@style/HeadlineMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:text="@string/app_name" /> + </LinearLayout> + </com.google.android.material.appbar.MaterialToolbar> +</com.google.android.material.appbar.AppBarLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/player_body_bottom_sheet.xml b/app/src/main/res/layout/player_body_bottom_sheet.xml new file mode 100644 index 0000000..5f7e0d5 --- /dev/null +++ b/app/src/main/res/layout/player_body_bottom_sheet.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.viewpager2.widget.ViewPager2 xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/player_body_bottom_sheet_view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/colorSurface" /> \ No newline at end of file diff --git a/app/src/main/res/layout/player_header_bottom_sheet.xml b/app/src/main/res/layout/player_header_bottom_sheet.xml new file mode 100644 index 0000000..2636ca9 --- /dev/null +++ b/app/src/main/res/layout/player_header_bottom_sheet.xml @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="@dimen/bottom_sheet_peek_height" + android:background="?attr/colorSurface" + android:clipChildren="false"> + + <ImageView + android:id="@+id/player_header_media_cover_image" + android:layout_width="42dp" + android:layout_height="42dp" + android:layout_gravity="center" + android:layout_marginStart="12dp" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/player_header_media_title_label" + style="@style/LabelMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + app:layout_constraintVertical_chainStyle="packed" + app:layout_constraintEnd_toStartOf="@+id/placeholder_left_view" + app:layout_constraintStart_toEndOf="@+id/player_header_media_cover_image" + app:layout_constraintTop_toTopOf="@+id/player_header_media_cover_image" + app:layout_constraintBottom_toTopOf="@+id/player_header_media_artist_label"/> + + <TextView + android:id="@+id/player_header_media_artist_label" + style="@style/LabelSmall" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:paddingStart="8dp" + android:paddingEnd="8dp" + app:layout_constraintEnd_toStartOf="@+id/placeholder_left_view" + app:layout_constraintStart_toEndOf="@+id/player_header_media_cover_image" + app:layout_constraintTop_toBottomOf="@+id/player_header_media_title_label" + app:layout_constraintBottom_toBottomOf="@+id/player_header_media_cover_image"/> + + <View + android:id="@+id/placeholder_left_view" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toStartOf="@+id/player_header_button" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/placeholder_right_view" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageButton + android:id="@+id/player_header_bookmark_media_button" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_bookmark_sync" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:visibility="gone" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toStartOf="@+id/player_header_button" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageButton + android:id="@+id/player_header_rewind_media_button" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_replay" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:visibility="gone" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toStartOf="@+id/player_header_button" + app:layout_constraintTop_toTopOf="parent" /> + + <ToggleButton + android:id="@+id/player_header_button" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/button_play_pause_selector" + android:checked="false" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:text="" + android:textOff="" + android:textOn="" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toStartOf="@+id/placeholder_right_view" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageButton + android:id="@+id/player_header_next_media_button" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_skip_next" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageButton + android:id="@+id/player_header_fast_forward_media_button" + android:layout_width="28dp" + android:layout_height="28dp" + android:layout_marginStart="12dp" + android:layout_marginEnd="12dp" + android:background="@drawable/ic_forward" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:visibility="gone" + app:layout_constraintBottom_toTopOf="@+id/player_header_seek_bar" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <SeekBar + android:id="@+id/player_header_seek_bar" + android:layout_width="match_parent" + android:layout_height="2dp" + android:background="?attr/colorSurface" + android:clickable="false" + android:paddingStart="0dp" + android:paddingEnd="0dp" + android:thumb="@android:color/transparent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/view_asset_link_row.xml b/app/src/main/res/layout/view_asset_link_row.xml new file mode 100644 index 0000000..7060db5 --- /dev/null +++ b/app/src/main/res/layout/view_asset_link_row.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.google.android.material.chip.ChipGroup xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/asset_link_chip_group" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + android:paddingTop="4dp" + android:paddingBottom="4dp" + app:singleLine="true" + app:selectionRequired="false" + app:singleSelection="false"> + + <com.google.android.material.chip.Chip + android:id="@+id/asset_link_song_chip" + style="@style/Widget.Material3.Chip.Assist" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checkable="false" + android:clickable="true" + android:ellipsize="end" + android:maxLines="1" + android:text="" + app:chipIcon="@drawable/ic_link" + app:chipIconTint="?attr/colorOnSurfaceVariant" + app:rippleColor="@color/ripple_material_light" /> + + <com.google.android.material.chip.Chip + android:id="@+id/asset_link_album_chip" + style="@style/Widget.Material3.Chip.Assist" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checkable="false" + android:clickable="true" + android:ellipsize="end" + android:maxLines="1" + android:text="" + app:chipIcon="@drawable/ic_link" + app:chipIconTint="?attr/colorOnSurfaceVariant" + app:rippleColor="@color/ripple_material_light" /> + + <com.google.android.material.chip.Chip + android:id="@+id/asset_link_artist_chip" + style="@style/Widget.Material3.Chip.Assist" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checkable="false" + android:clickable="true" + android:ellipsize="end" + android:maxLines="1" + android:text="" + app:chipIcon="@drawable/ic_link" + app:chipIconTint="?attr/colorOnSurfaceVariant" + app:rippleColor="@color/ripple_material_light" /> +</com.google.android.material.chip.ChipGroup> diff --git a/app/src/main/res/layout/widget_layout_compact.xml b/app/src/main/res/layout/widget_layout_compact.xml new file mode 100644 index 0000000..78fb72f --- /dev/null +++ b/app/src/main/res/layout/widget_layout_compact.xml @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/root" + android:layout_width="match_parent" + android:layout_height="64dp" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:paddingTop="4dp" + android:paddingBottom="4dp" + android:background="@drawable/widget_bg"> + + <ImageView + android:id="@+id/album_art" + android:layout_width="50dp" + android:layout_height="50dp" + android:layout_centerVertical="true" + android:scaleType="centerCrop" + android:contentDescription="@string/widget_content_desc_album_art"/> + + <LinearLayout + android:id="@+id/texts" + android:orientation="vertical" + android:layout_toRightOf="@id/album_art" + android:layout_toEndOf="@id/album_art" + android:layout_toLeftOf="@id/controls" + android:layout_toStartOf="@id/controls" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_marginStart="8dp"> + + <TextView + android:id="@+id/title" + android:maxLines="1" + android:ellipsize="end" + android:textStyle="bold" + android:textSize="14sp" + android:textColor="@color/widget_title" + android:includeFontPadding="false" + android:freezesText="true" + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + + <TextView + android:id="@+id/subtitle" + android:maxLines="1" + android:ellipsize="end" + android:textSize="12sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + + <TextView + android:id="@+id/album" + android:maxLines="1" + android:ellipsize="end" + android:textSize="11sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dp" + android:visibility="gone"/> + + <ProgressBar + android:id="@+id/progress" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="2dp" + android:layout_marginTop="2dp" + android:indeterminate="false" + android:max="1000" + android:progress="0" + android:progressBackgroundTint="@color/widget_subtitle" + android:progressTint="@color/widget_icon_tint"/> + + <LinearLayout + android:id="@+id/timing" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dp" + android:orientation="horizontal"> + + <TextView + android:id="@+id/time_elapsed" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/widget_time_elapsed_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="10sp" + android:includeFontPadding="false"/> + + <TextView + android:id="@+id/time_total" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="end" + android:text="@string/widget_time_duration_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="10sp" + android:includeFontPadding="false"/> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls_secondary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginTop="4dp" + android:visibility="gone"> + + <ImageButton + android:id="@+id/btn_shuffle" + android:layout_width="36dp" + android:layout_height="36dp" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_shuffle" + android:src="@drawable/ic_shuffle" + android:tint="@color/widget_icon_tint"/> + + <ImageButton + android:id="@+id/btn_repeat" + android:layout_width="36dp" + android:layout_height="36dp" + android:layout_marginStart="4dp" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_repeat" + android:src="@drawable/ic_repeat" + android:tint="@color/widget_icon_tint"/> + </LinearLayout> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" + android:orientation="horizontal" + android:gravity="center" + android:layout_width="wrap_content" + android:layout_height="match_parent"> + + <ImageButton + android:id="@+id/btn_prev" + android:layout_width="48dp" + android:layout_height="48dp" + android:background="@android:color/transparent" + android:src="@drawable/ic_skip_previous" + android:contentDescription="@string/widget_content_desc_prev" + android:tint="@color/widget_icon_tint"/> + + <ImageButton + android:id="@+id/btn_play_pause" + android:layout_width="48dp" + android:layout_height="48dp" + android:background="@android:color/transparent" + android:src="@drawable/ic_play" + android:contentDescription="@string/widget_content_desc_play_pause" + android:tint="@color/widget_icon_tint"/> + + <ImageButton + android:id="@+id/btn_next" + android:layout_width="48dp" + android:layout_height="48dp" + android:background="@android:color/transparent" + android:src="@drawable/ic_skip_next" + android:contentDescription="@string/widget_content_desc_next" + android:tint="@color/widget_icon_tint"/> + </LinearLayout> +</RelativeLayout> diff --git a/app/src/main/res/layout/widget_layout_large.xml b/app/src/main/res/layout/widget_layout_large.xml new file mode 100644 index 0000000..70c626b --- /dev/null +++ b/app/src/main/res/layout/widget_layout_large.xml @@ -0,0 +1,189 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/root" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:minHeight="200dp" + android:orientation="vertical" + android:padding="16dp" + android:background="@drawable/widget_bg"> + + <LinearLayout + android:id="@+id/header" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:baselineAligned="false"> + + <ImageView + android:id="@+id/album_art" + android:layout_width="150dp" + android:layout_height="150dp" + android:scaleType="centerCrop" + android:contentDescription="@string/widget_content_desc_album_art" /> + + <LinearLayout + android:id="@+id/text_container" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_marginStart="16dp" + android:layout_weight="1" + android:orientation="vertical" + android:gravity="center_vertical"> + + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textStyle="bold" + android:textSize="18sp" + android:textColor="@color/widget_title" + android:includeFontPadding="false" + android:freezesText="true" /> + + <TextView + android:id="@+id/subtitle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textSize="14sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" /> + + <TextView + android:id="@+id/album" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dp" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textSize="13sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" + android:visibility="invisible" /> + </LinearLayout> + </LinearLayout> + + <ProgressBar + android:id="@+id/progress" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="6dp" + android:layout_marginTop="16dp" + android:indeterminate="false" + android:max="1000" + android:progress="0" + android:progressBackgroundTint="@color/widget_subtitle" + android:progressTint="@color/widget_icon_tint" /> + + <LinearLayout + android:id="@+id/timing" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:orientation="horizontal"> + + <TextView + android:id="@+id/time_elapsed" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/widget_time_elapsed_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="12sp" /> + + <TextView + android:id="@+id/time_total" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="end" + android:text="@string/widget_time_duration_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="12sp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginBottom="4dp" + android:gravity="center" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/btn_prev" + android:layout_width="0dp" + android:layout_height="52dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_prev" + android:src="@drawable/ic_skip_previous" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_play_pause" + android:layout_width="0dp" + android:layout_height="56dp" + android:layout_marginStart="6dp" + android:layout_marginEnd="6dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_play_pause" + android:src="@drawable/ic_play" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_next" + android:layout_width="0dp" + android:layout_height="52dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_next" + android:src="@drawable/ic_skip_next" + android:tint="@color/widget_icon_tint" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls_secondary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center"> + + <ImageButton + android:id="@+id/btn_shuffle" + android:layout_width="0dp" + android:layout_height="44dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_shuffle" + android:src="@drawable/ic_shuffle" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_repeat" + android:layout_width="0dp" + android:layout_height="44dp" + android:layout_marginStart="6dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_repeat" + android:src="@drawable/ic_repeat" + android:tint="@color/widget_icon_tint" /> + </LinearLayout> + +</LinearLayout> diff --git a/app/src/main/res/layout/widget_layout_large_short.xml b/app/src/main/res/layout/widget_layout_large_short.xml new file mode 100644 index 0000000..6a715f6 --- /dev/null +++ b/app/src/main/res/layout/widget_layout_large_short.xml @@ -0,0 +1,198 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/root" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:minHeight="172dp" + android:padding="16dp" + android:orientation="vertical" + android:background="@drawable/widget_bg"> + + <LinearLayout + android:id="@+id/header" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:orientation="horizontal" + android:baselineAligned="false" + android:gravity="center_vertical"> + + <FrameLayout + android:id="@+id/album_art_container" + android:layout_width="90dp" + android:layout_height="90dp" + android:layout_gravity="center_vertical"> + + <ImageView + android:id="@+id/album_art" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scaleType="centerCrop" + android:contentDescription="@string/widget_content_desc_album_art" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/text_container" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_marginStart="16dp" + android:layout_weight="1" + android:orientation="vertical" + android:gravity="center_vertical"> + + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textStyle="bold" + android:textSize="18sp" + android:textColor="@color/widget_title" + android:includeFontPadding="false" + android:freezesText="true" /> + + <TextView + android:id="@+id/subtitle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textSize="14sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" /> + + <TextView + android:id="@+id/album" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dp" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textSize="13sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" + android:visibility="invisible" /> + </LinearLayout> + </LinearLayout> + + <ProgressBar + android:id="@+id/progress" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="6dp" + android:layout_marginTop="12dp" + android:indeterminate="false" + android:max="1000" + android:progress="0" + android:progressBackgroundTint="@color/widget_subtitle" + android:progressTint="@color/widget_icon_tint" /> + + <LinearLayout + android:id="@+id/timing" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dp" + android:orientation="horizontal"> + + <TextView + android:id="@+id/time_elapsed" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/widget_time_elapsed_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="12sp" /> + + <TextView + android:id="@+id/time_total" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="end" + android:text="@string/widget_time_duration_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="12sp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls_secondary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical"> + + <ImageButton + android:id="@+id/btn_shuffle" + android:layout_width="0dp" + android:layout_height="46dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_shuffle" + android:src="@drawable/ic_shuffle" + android:tint="@color/widget_icon_tint" /> + + <LinearLayout + android:id="@+id/controls" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_marginEnd="6dp" + android:layout_weight="3" + android:gravity="center" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/btn_prev" + android:layout_width="0dp" + android:layout_height="46dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_prev" + android:src="@drawable/ic_skip_previous" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_play_pause" + android:layout_width="0dp" + android:layout_height="48dp" + android:layout_marginStart="6dp" + android:layout_marginEnd="6dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_play_pause" + android:src="@drawable/ic_play" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_next" + android:layout_width="0dp" + android:layout_height="46dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_next" + android:src="@drawable/ic_skip_next" + android:tint="@color/widget_icon_tint" /> + </LinearLayout> + + <ImageButton + android:id="@+id/btn_repeat" + android:layout_width="0dp" + android:layout_height="46dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_repeat" + android:src="@drawable/ic_repeat" + android:tint="@color/widget_icon_tint" /> + </LinearLayout> + +</LinearLayout> diff --git a/app/src/main/res/layout/widget_layout_medium.xml b/app/src/main/res/layout/widget_layout_medium.xml new file mode 100644 index 0000000..802da82 --- /dev/null +++ b/app/src/main/res/layout/widget_layout_medium.xml @@ -0,0 +1,216 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/root" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:minHeight="120dp" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:paddingTop="8dp" + android:paddingBottom="12dp" + android:orientation="horizontal" + android:baselineAligned="false" + android:background="@drawable/widget_bg"> + + <FrameLayout + android:id="@+id/album_art_container" + android:layout_width="100dp" + android:layout_height="100dp" + android:layout_gravity="center_vertical"> + + <ImageView + android:id="@+id/album_art" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scaleType="centerCrop" + android:contentDescription="@string/widget_content_desc_album_art" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/content" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_marginStart="12dp" + android:layout_weight="1" + android:orientation="vertical" + android:weightSum="1"> + + <LinearLayout + android:id="@+id/text_container" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:orientation="vertical"> + + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textStyle="bold" + android:textSize="16sp" + android:textColor="@color/widget_title" + android:includeFontPadding="false" + android:freezesText="true" /> + + <LinearLayout + android:id="@+id/subtitle_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="1dp" + android:orientation="horizontal" + android:gravity="center_vertical" + android:baselineAligned="false"> + + <TextView + android:id="@+id/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:layout_weight="1" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:textSize="13sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" /> + + <TextView + android:id="@+id/album" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:scrollHorizontally="true" + android:gravity="end" + android:textAlignment="viewEnd" + android:textSize="12sp" + android:textColor="@color/widget_subtitle" + android:includeFontPadding="false" + android:freezesText="true" + android:visibility="gone" /> + </LinearLayout> + </LinearLayout> + + <ProgressBar + android:id="@+id/progress" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="3dp" + android:layout_marginTop="4dp" + android:indeterminate="false" + android:max="1000" + android:progress="0" + android:progressBackgroundTint="@color/widget_subtitle" + android:progressTint="@color/widget_icon_tint" /> + + <LinearLayout + android:id="@+id/timing" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dp" + android:orientation="horizontal"> + + <TextView + android:id="@+id/time_elapsed" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/widget_time_elapsed_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="10sp" /> + + <TextView + android:id="@+id/time_total" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="end" + android:text="@string/widget_time_duration_placeholder" + android:textColor="@color/widget_subtitle" + android:textSize="10sp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls_secondary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:gravity="center" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/btn_shuffle" + android:layout_width="0dp" + android:layout_height="32dp" + android:layout_marginEnd="1dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_shuffle" + android:src="@drawable/ic_shuffle" + android:tint="@color/widget_icon_tint" /> + + <LinearLayout + android:id="@+id/controls" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="3" + android:gravity="center" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/btn_prev" + android:layout_width="0dp" + android:layout_height="32dp" + android:layout_marginStart="1dp" + android:layout_marginEnd="1dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_prev" + android:src="@drawable/ic_skip_previous" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_play_pause" + android:layout_width="0dp" + android:layout_height="34dp" + android:layout_marginStart="1dp" + android:layout_marginEnd="1dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_play_pause" + android:src="@drawable/ic_play" + android:tint="@color/widget_icon_tint" /> + + <ImageButton + android:id="@+id/btn_next" + android:layout_width="0dp" + android:layout_height="32dp" + android:layout_marginStart="1dp" + android:layout_marginEnd="1dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_next" + android:src="@drawable/ic_skip_next" + android:tint="@color/widget_icon_tint" /> + </LinearLayout> + + <ImageButton + android:id="@+id/btn_repeat" + android:layout_width="0dp" + android:layout_height="32dp" + android:layout_marginStart="1dp" + android:layout_weight="1" + android:background="@android:color/transparent" + android:contentDescription="@string/widget_content_desc_repeat" + android:src="@drawable/ic_repeat" + android:tint="@color/widget_icon_tint" /> + </LinearLayout> + </LinearLayout> +</LinearLayout> diff --git a/app/src/main/res/layout/widget_preview_compact.xml b/app/src/main/res/layout/widget_preview_compact.xml new file mode 100644 index 0000000..e863603 --- /dev/null +++ b/app/src/main/res/layout/widget_preview_compact.xml @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/root" + android:layout_width="match_parent" + android:layout_height="64dp" + android:paddingLeft="8dp" + android:paddingTop="0dp" + android:paddingRight="0dp" + android:paddingBottom="8dp" + android:background="@drawable/widget_bg"> + + <ImageView + android:id="@+id/album_art" + android:layout_width="50dp" + android:layout_height="50dp" + android:layout_centerVertical="true" + android:scaleType="centerCrop" + android:src="@drawable/ic_splash_logo" + android:contentDescription="@string/widget_content_desc_album_art"/> + + <LinearLayout + android:id="@+id/texts" + android:orientation="vertical" + android:layout_toEndOf="@id/album_art" + android:layout_toStartOf="@id/controls" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_marginStart="8dp"> + + <TextView + android:id="@+id/title" + android:maxLines="1" + android:ellipsize="end" + android:textStyle="bold" + android:textSize="14sp" + android:textColor="@color/widget_title" + android:text="@string/widget_not_playing" + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + + <TextView + android:id="@+id/subtitle" + android:maxLines="1" + android:ellipsize="end" + android:textSize="12sp" + android:textColor="@color/widget_subtitle" + android:text="@string/widget_placeholder_subtitle" + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </LinearLayout> + + <LinearLayout + android:id="@+id/controls" + android:layout_alignParentEnd="true" + android:orientation="horizontal" + android:gravity="center" + android:layout_width="wrap_content" + android:layout_height="match_parent"> + + <ImageButton android:id="@+id/btn_prev" + android:layout_width="48dp" android:layout_height="48dp" + android:background="@android:color/transparent" + android:src="@drawable/ic_skip_previous" + android:tint="@color/widget_icon_tint" + android:contentDescription="@string/widget_content_desc_prev"/> + + <ImageButton android:id="@+id/btn_play_pause" + android:layout_width="48dp" android:layout_height="48dp" + android:background="@android:color/transparent" + android:src="@drawable/ic_play" + android:tint="@color/widget_icon_tint" + android:contentDescription="@string/widget_content_desc_play_pause"/> + + <ImageButton android:id="@+id/btn_next" + android:layout_width="48dp" android:layout_height="48dp" + android:background="@android:color/transparent" + android:src="@drawable/ic_skip_next" + android:tint="@color/widget_icon_tint" + android:contentDescription="@string/widget_content_desc_next"/> + </LinearLayout> +</RelativeLayout> diff --git a/app/src/main/res/menu/album_page_menu.xml b/app/src/main/res/menu/album_page_menu.xml new file mode 100644 index 0000000..1e3f6d7 --- /dev/null +++ b/app/src/main/res/menu/album_page_menu.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/action_download_album" + android:icon="@drawable/ic_file_download" + android:title="@string/menu_download_all_button" + app:showAsAction="never" /> + <item + android:id="@+id/action_add_to_playlist" + android:icon="@drawable/ic_add" + android:title="@string/menu_add_to_playlist_button" + app:showAsAction="never" /> + <item + android:id="@+id/action_rate_album" + android:icon="@drawable/ic_add" + android:title="@string/menu_rate_album" + app:showAsAction="never" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/artist_list_menu.xml b/app/src/main/res/menu/artist_list_menu.xml new file mode 100644 index 0000000..7cc7d34 --- /dev/null +++ b/app/src/main/res/menu/artist_list_menu.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <item + android:id="@+id/action_search" + android:title="@string/search_title_artist" + android:icon="@drawable/ic_search" + app:showAsAction="ifRoom|collapseActionView" + app:actionViewClass="androidx.appcompat.widget.SearchView" /> + +</menu> diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml new file mode 100644 index 0000000..3d59df4 --- /dev/null +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/homeFragment" + android:icon="@drawable/ic_home" + android:title="@string/menu_home_label" /> + <item + android:id="@+id/libraryFragment" + android:icon="@drawable/ic_graphic_eq" + android:title="@string/menu_library_label" /> + <item + android:id="@+id/downloadFragment" + android:icon="@drawable/ic_play_for_work" + android:title="@string/menu_download_label" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/directory_page_menu.xml b/app/src/main/res/menu/directory_page_menu.xml new file mode 100644 index 0000000..342d24a --- /dev/null +++ b/app/src/main/res/menu/directory_page_menu.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/action_download_directory" + android:icon="@drawable/ic_file_download" + android:title="@string/menu_download_all_button" + android:visible="false" + app:showAsAction="never" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/download_popup_menu.xml b/app/src/main/res/menu/download_popup_menu.xml new file mode 100644 index 0000000..6607d22 --- /dev/null +++ b/app/src/main/res/menu/download_popup_menu.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_download_group_by_track" + android:title="@string/menu_group_by_track" /> + <item + android:id="@+id/menu_download_group_by_album" + android:title="@string/menu_group_by_album" /> + <item + android:id="@+id/menu_download_group_by_artist" + android:title="@string/menu_group_by_artist" /> + <item + android:id="@+id/menu_download_group_by_genre" + android:title="@string/menu_group_by_genre" /> + + <item + android:id="@+id/menu_download_group_by_year" + android:title="@string/menu_group_by_year" /> + <item + android:id="@+id/menu_download_set_directory" + android:title="@string/download_directory_set" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/filter_podcast_episode_popup_menu.xml b/app/src/main/res/menu/filter_podcast_episode_popup_menu.xml new file mode 100644 index 0000000..d6fea4e --- /dev/null +++ b/app/src/main/res/menu/filter_podcast_episode_popup_menu.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_podcast_filter_download" + android:title="@string/menu_filter_download" /> + <item + android:id="@+id/menu_podcast_filter_all" + android:title="@string/menu_filter_all" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/filter_top_songs_popup_menu.xml b/app/src/main/res/menu/filter_top_songs_popup_menu.xml new file mode 100644 index 0000000..c9fca25 --- /dev/null +++ b/app/src/main/res/menu/filter_top_songs_popup_menu.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_last_week_name" + android:title="@string/menu_last_week_name" /> + <item + android:id="@+id/menu_last_month_name" + android:title="@string/menu_last_month_name" /> + <item + android:id="@+id/menu_last_year_name" + android:title="@string/menu_last_year_name" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/login_page_menu.xml b/app/src/main/res/menu/login_page_menu.xml new file mode 100644 index 0000000..f92dc46 --- /dev/null +++ b/app/src/main/res/menu/login_page_menu.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/action_add" + android:icon="@drawable/ic_add" + android:iconTint="@color/titleTextColor" + android:title="@string/menu_add_button" + app:showAsAction="always" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/main_page_menu.xml b/app/src/main/res/menu/main_page_menu.xml new file mode 100644 index 0000000..70df390 --- /dev/null +++ b/app/src/main/res/menu/main_page_menu.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/action_search" + android:icon="@drawable/ic_search" + android:title="@string/menu_search_button" + app:showAsAction="always" /> + + <item + android:id="@+id/media_route_menu_item" + android:title="@string/media_route_menu_title" + app:actionProviderClass="androidx.mediarouter.app.MediaRouteActionProvider" + app:showAsAction="always" /> + + <item + android:id="@+id/action_settings" + android:icon="@drawable/ic_settings" + android:title="@string/menu_settings_button" + app:showAsAction="never" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/playlist_page_menu.xml b/app/src/main/res/menu/playlist_page_menu.xml new file mode 100644 index 0000000..6164be9 --- /dev/null +++ b/app/src/main/res/menu/playlist_page_menu.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/action_search" + android:icon="@drawable/ic_search" + android:title="@string/menu_search_button" + app:actionViewClass="android.widget.SearchView" + app:showAsAction="ifRoom" /> + + <item + android:id="@+id/action_download_playlist" + android:icon="@drawable/ic_file_download" + android:title="@string/menu_download_all_button" + app:showAsAction="never" /> + <item + android:id="@+id/action_pin_playlist" + android:icon="@drawable/ic_add" + android:title="@string/menu_pin_button" + app:showAsAction="never" /> + <item + android:id="@+id/action_unpin_playlist" + android:icon="@drawable/ic_close" + android:title="@string/menu_unpin_button" + app:showAsAction="never" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_album_popup_menu.xml b/app/src/main/res/menu/sort_album_popup_menu.xml new file mode 100644 index 0000000..f3cd210 --- /dev/null +++ b/app/src/main/res/menu/sort_album_popup_menu.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_album_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_album_sort_artist" + android:title="@string/menu_sort_artist" /> + <item + android:id="@+id/menu_album_sort_year" + android:title="@string/menu_sort_year" /> + <item + android:id="@+id/menu_album_sort_random" + android:title="@string/menu_sort_random" /> + <item + android:id="@+id/menu_album_sort_recently_added" + android:title="@string/menu_sort_recently_added" /> + <item + android:id="@+id/menu_album_sort_recently_played" + android:title="@string/menu_sort_recently_played" /> + <item + android:id="@+id/menu_album_sort_most_played" + android:title="@string/menu_sort_most_played" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_artist_popup_menu.xml b/app/src/main/res/menu/sort_artist_popup_menu.xml new file mode 100644 index 0000000..4253d92 --- /dev/null +++ b/app/src/main/res/menu/sort_artist_popup_menu.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_artist_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_artist_sort_random" + android:title="@string/menu_sort_random" /> + <item + android:id="@+id/menu_artist_sort_album_count" + android:title="@string/menu_sort_album_count" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_genre_popup_menu.xml b/app/src/main/res/menu/sort_genre_popup_menu.xml new file mode 100644 index 0000000..ea5fe7c --- /dev/null +++ b/app/src/main/res/menu/sort_genre_popup_menu.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_genre_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_genre_sort_random" + android:title="@string/menu_sort_random" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_horizontal_album_popup_menu.xml b/app/src/main/res/menu/sort_horizontal_album_popup_menu.xml new file mode 100644 index 0000000..7a2fe09 --- /dev/null +++ b/app/src/main/res/menu/sort_horizontal_album_popup_menu.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_horizontal_album_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_horizontal_album_sort_most_recently_starred" + android:title="@string/menu_sort_most_recently_starred" /> + <item + android:id="@+id/menu_horizontal_album_sort_least_recently_starred" + android:title="@string/menu_sort_least_recently_starred" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_horizontal_artist_popup_menu.xml b/app/src/main/res/menu/sort_horizontal_artist_popup_menu.xml new file mode 100644 index 0000000..f1ce130 --- /dev/null +++ b/app/src/main/res/menu/sort_horizontal_artist_popup_menu.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_horizontal_artist_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_horizontal_artist_sort_most_recently_starred" + android:title="@string/menu_sort_most_recently_starred" /> + <item + android:id="@+id/menu_horizontal_artist_sort_least_recently_starred" + android:title="@string/menu_sort_least_recently_starred" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_playlist_popup_menu.xml b/app/src/main/res/menu/sort_playlist_popup_menu.xml new file mode 100644 index 0000000..143ad62 --- /dev/null +++ b/app/src/main/res/menu/sort_playlist_popup_menu.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_playlist_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_playlist_sort_random" + android:title="@string/menu_sort_random" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_song_popup_menu.xml b/app/src/main/res/menu/sort_song_popup_menu.xml new file mode 100644 index 0000000..44f0058 --- /dev/null +++ b/app/src/main/res/menu/sort_song_popup_menu.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_song_sort_name" + android:title="@string/menu_sort_name" /> + <item + android:id="@+id/menu_song_sort_most_recently_starred" + android:title="@string/menu_sort_most_recently_starred" /> + <item + android:id="@+id/menu_song_sort_least_recently_starred" + android:title="@string/menu_sort_least_recently_starred" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/menu/toolbar_menu.xml b/app/src/main/res/menu/toolbar_menu.xml new file mode 100644 index 0000000..bc6d073 --- /dev/null +++ b/app/src/main/res/menu/toolbar_menu.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <item + android:id="@+id/action_search" + android:icon="@drawable/ic_search" + android:title="@string/menu_search_button" + app:actionViewClass="android.widget.SearchView" + app:showAsAction="ifRoom" /> +</menu> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@color/ic_launcher_background"/> + <foreground android:drawable="@drawable/ic_launcher_foreground"/> +</adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@color/ic_launcher_background"/> + <foreground android:drawable="@drawable/ic_launcher_foreground"/> +</adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..a798f3f385da67b445d19e48e43c809271750f19 GIT binary patch literal 1580 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..6664ee2ec5fb06d111580a18d57b43cff82cba96 GIT binary patch literal 3136 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 acRF<Rtton}Nq_zDvuB_E?89GEgMa~Mp91Ir literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..bb29009a572f4b0fc254b68739ab5d1fc98d0320 GIT binary patch literal 1114 zcmV-g1f}~@Nk&Fe1ONb6MM6+kP&iCR1ONapFTe{B?<XmeY}K~1H$2AC^{?nDc%vua zGyiki2INSR6iJa))64MMJr?gYJyn<)rz;^jlB7to$nG9kX8!7ab#HrT8t8Nr1^|K# zcXxU1A{h+`Kn9`^gaUB6y9R&&1R(+e2to)-mxHHtRKKej8{~gAUndt#Fg1N$+_%?q zH^1VrAJzZJ3hr^(i!6u$B8oF+1VKR%0fLZ75CVY#K?2J{j9nPQfZ*_6AqxbnMhc4{ z5}`o|G6{i1h6x#vVIV_PWFCZuAYc*%K?sNl1VIoX24xV4fFgt-l;H@WC@c>ovj(He z&e5RUj4K)AX?o;=BZCORP+WX14}(Fx{GST(P=~fBQADv1%atelZy{o}(T86B(2ryL zY-li}Obv$0V&UWRO^e^}@#~|s^ZB+gdpz{xm3KWT{QcWN`@h~h=6lyHNrsDzGiMTF zy5uu%E*6-m<P)@-x|R9J-nDXR3|b-B1)(Z|qxN5=fL6Do?-jV!?W|d$ZgoRr3UzDE z3TRAeOaZNKjg8enn-d}uw8rrHGj`5C|I(+kW-_Awk?)=^Kl*m`>FYakIor&L+1f~E zBWlO%eH7;ntT$`?zQVHZAe10jd&RD$e^MasU@%Bu-v0e>0!MDgyDh%LFT~~Sa0tP- z^OtvNOlfDI)vay{Y1p<IcC)GNPR!bNoYZZcOq|qiYTLGr7`1KNW{f&ce(j!f&75BO zzu$Zj{ht7-q<osgUDYmIfDQ_wg#h^Z?FVN85@c%-@cmy>CU^LYQnsc)iK)8yTTkgJ z{7OzuOX032#=MZ8%5vasR%!}z7m3mDq#UK^={izdi!2?fRni>Xx0gKvlZ}+;1|~Zw z1Ps*R-LHFJZzbR10$?YTT@=E`EA(ht&)ft>%box*XzH{{L3B4O|3Cn6>ug1op^F<G zJ!9_lA#@KbxmPD+a{E*i7!pL|j^2Z(%$yv|F28_+ohi8-o^as?%FXQQs5!%cU6BfI zP06+JbB6by+?Qc9_Yw0#`8XIG9y(+2e$@)`!GIu|ICASsu1DN{w0!YW6@egPH!l6# zwRLGluEyh+h0E6C!q4RVU2Ma}r9*p<HsszV{J3!0IuxG_W3Q6dT%bq=Yl4UmRxVnC zD<9sByhE(HIhzwie7t7$T48wdI5BtT=Gj7qc%K-Zjl4ygd-BQ618}lbxN<rw?j~9} z(J`|_ILLi$EC`}u!ikGU#6qPbXN~pc5ITSYfNdjvB3B#R(V_DvQs59aP6oYfnl!B6 zps7u73KJFtaPbRN005Uht|0dfpzO9$p4*vhDlTLXo0;t2vX#9!z=ZdImaZeUH9gDH zkvd9Gp>9TES_*eH@o){ODTD0NZ^Bg_jCfrpTT&`j@zt@TM}Vse;$?+W8bFjOU%6UU g#460IBC3_jm&ukii|S>|afj;JlGZi9a!0A81V1km>Hq)$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..3c9b839208bc6e8dab005a8f3ed64d9e13cd2887 GIT binary patch literal 1994 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..6e97e90e9bb2d9981a7090815b6c2153c32a6419 GIT binary patch literal 2142 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 Ux%c4_nLh&XzX$IBCLd9^6opG2T>t<8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..3c626ea46a398a20f647beed6e43c23a95c88477 GIT binary patch literal 3158 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..027987a13c18a99ece8bf8938d41b4d31df73453 GIT binary patch literal 6736 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..feb9feb57fa6b0c9fd57a6f3c469b061d7fec825 GIT binary patch literal 4234 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..6a92327b937e85c2368a73fb6b8a1395318046ed GIT binary patch literal 9266 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 US6#I*;lYLp4G%V0mL+AcJ7qZX!2kdN literal 0 HcmV?d00001 diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 0000000..8568198 --- /dev/null +++ b/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,355 @@ +<?xml version="1.0" encoding="utf-8"?> +<navigation xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/nav_graph" + app:startDestination="@id/landingFragment"> + <fragment + android:id="@+id/landingFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.LandingFragment" + android:label="fragment_landing" + tools:layout="@layout/fragment_landing"> + <action + android:id="@+id/action_landingFragment_to_loginFragment" + app:destination="@id/loginFragment" + app:popUpTo="@id/landingFragment" + app:popUpToInclusive="true" /> + <action + android:id="@+id/action_landingFragment_to_homeFragment" + app:destination="@id/homeFragment" + app:popUpTo="@id/landingFragment" + app:popUpToInclusive="true" /> + </fragment> + <fragment + android:id="@+id/loginFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.LoginFragment" + android:label="LoginFragment" + tools:layout="@layout/fragment_login"> + <action + android:id="@+id/action_loginFragment_to_homeFragment" + app:destination="@id/homeFragment" + app:popUpTo="@id/loginFragment" + app:popUpToInclusive="true" /> + </fragment> + <fragment + android:id="@+id/homeFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.HomeFragment" + android:label="HomeFragment" + tools:layout="@layout/fragment_home"> + <action + android:id="@+id/action_homeFragment_to_loginFragment" + app:destination="@id/loginFragment" + app:popUpTo="@id/homeFragment" + app:popUpToInclusive="true" /> + <action + android:id="@+id/action_homeFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + <action + android:id="@+id/action_homeFragment_to_albumListPageFragment" + app:destination="@id/albumListPageFragment" /> + <action + android:id="@+id/action_homeFragment_to_settingsFragment" + app:destination="@id/settingsFragment" /> + <action + android:id="@+id/action_homeFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + <action + android:id="@+id/action_homeFragment_to_artistPageFragment" + app:destination="@id/artistPageFragment" /> + <action + android:id="@+id/action_homeFragment_to_artistListPageFragment" + app:destination="@id/artistListPageFragment" /> + <action + android:id="@+id/action_homeFragment_to_searchFragment" + app:destination="@id/searchFragment" /> + <action + android:id="@+id/action_homeFragment_to_playlistPageFragment" + app:destination="@id/playlistPageFragment" /> + <action + android:id="@+id/action_homeFragment_to_podcastChannelCatalogueFragment" + app:destination="@id/podcastChannelCatalogueFragment" /> + </fragment> + <fragment + android:id="@+id/libraryFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.LibraryFragment" + android:label="LibraryFragment" + tools:layout="@layout/fragment_library"> + <action + android:id="@+id/action_libraryFragment_to_artistCatalogueFragment" + app:destination="@id/artistCatalogueFragment" /> + <action + android:id="@+id/action_libraryFragment_to_albumCatalogueFragment" + app:destination="@id/albumCatalogueFragment" /> + <action + android:id="@+id/action_libraryFragment_to_genreCatalogueFragment" + app:destination="@id/genreCatalogueFragment" /> + <action + android:id="@+id/action_libraryFragment_to_playlistCatalogueFragment" + app:destination="@id/playlistCatalogueFragment" /> + <action + android:id="@+id/action_libraryFragment_to_artistPageFragment" + app:destination="@id/artistPageFragment" /> + <action + android:id="@+id/action_libraryFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + <action + android:id="@+id/action_libraryFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + <action + android:id="@+id/action_libraryFragment_to_playlistPageFragment" + app:destination="@id/playlistPageFragment" /> + <action + android:id="@+id/action_libraryFragment_to_settingsFragment" + app:destination="@id/settingsFragment" /> + <action + android:id="@+id/action_libraryFragment_to_searchFragment" + app:destination="@id/searchFragment" /> + <action + android:id="@+id/action_libraryFragment_to_albumListPageFragment" + app:destination="@id/albumListPageFragment" /> + <action + android:id="@+id/action_libraryFragment_to_indexFragment" + app:destination="@id/indexFragment" /> + </fragment> + <fragment + android:id="@+id/downloadFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.DownloadFragment" + android:label="DownloadFragment" + tools:layout="@layout/fragment_download"> + <action + android:id="@+id/action_downloadFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + <action + android:id="@+id/action_downloadFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + <action + android:id="@+id/action_downloadFragment_to_albumListPageFragment" + app:destination="@id/albumListPageFragment" /> + <action + android:id="@+id/action_downloadFragment_to_artistListPageFragment" + app:destination="@id/artistListPageFragment" /> + <action + android:id="@+id/action_downloadFragment_to_settingsFragment" + app:destination="@id/settingsFragment" /> + <action + android:id="@+id/action_downloadFragment_to_searchFragment" + app:destination="@id/searchFragment" /> + <action + android:id="@+id/action_downloadFragment_to_playlistPageFragment" + app:destination="@id/playlistPageFragment" /> + <action + android:id="@+id/action_downloadFragment_to_playlistCatalogueFragment" + app:destination="@id/playlistCatalogueFragment" /> + </fragment> + <fragment + android:id="@+id/settingsFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.SettingsFragment" + android:label="SettingsFragment" + tools:layout="@layout/fragment_settings"> + <action + android:id="@+id/action_settingsFragment_to_loginFragment" + app:destination="@id/loginFragment" + app:popUpTo="@id/homeFragment" + app:popUpToInclusive="true" /> + <action + android:id="@+id/action_settingsFragment_to_equalizerFragment" + app:destination="@id/equalizerFragment" /> + </fragment> + <fragment + android:id="@+id/searchFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.SearchFragment" + android:label="SearchFragment" + tools:layout="@layout/fragment_search"> + <action + android:id="@+id/action_searchFragment_to_artistPageFragment" + app:destination="@id/artistPageFragment" /> + <action + android:id="@+id/action_searchFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + <action + android:id="@+id/action_searchFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + </fragment> + <fragment + android:id="@+id/filterFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.FilterFragment" + android:label="FilterFragment" + tools:layout="@layout/fragment_filter"> + <action + android:id="@+id/action_filterFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + </fragment> + <fragment + android:id="@+id/artistCatalogueFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.ArtistCatalogueFragment" + android:label="ArtistCatalogueFragment" + tools:layout="@layout/fragment_artist_catalogue"> + <action + android:id="@+id/action_artistCatalogueFragment_to_artistPageFragment" + app:destination="@id/artistPageFragment" /> + </fragment> + <fragment + android:id="@+id/albumCatalogueFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.AlbumCatalogueFragment" + android:label="AlbumCatalogueFragment" + tools:layout="@layout/fragment_album_catalogue"> + <action + android:id="@+id/action_albumCatalogueFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + </fragment> + <fragment + android:id="@+id/genreCatalogueFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.GenreCatalogueFragment" + android:label="GenreCatalogueFragment" + tools:layout="@layout/fragment_genre_catalogue"> + <action + android:id="@+id/action_genreCatalogueFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + <action + android:id="@+id/action_genreCatalogueFragment_to_filterFragment" + app:destination="@id/filterFragment" /> + </fragment> + <fragment + android:id="@+id/playlistCatalogueFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.PlaylistCatalogueFragment" + android:label="PlaylistCatalogueFragment" + tools:layout="@layout/fragment_playlist_catalogue"> + <action + android:id="@+id/action_playlistCatalogueFragment_to_playlistPageFragment" + app:destination="@id/playlistPageFragment" /> + </fragment> + + <fragment + android:id="@+id/artistPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.ArtistPageFragment" + android:label="ArtistPageFragment" + tools:layout="@layout/fragment_artist_page"> + <action + android:id="@+id/action_artistPageFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + <action + android:id="@+id/action_artistPageFragment_to_songListPageFragment" + app:destination="@id/songListPageFragment" /> + </fragment> + <fragment + android:id="@+id/albumPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.AlbumPageFragment" + android:label="AlbumPageFragment" + tools:layout="@layout/fragment_album_page"> + <action + android:id="@+id/action_albumPageFragment_to_artistPageFragment" + app:destination="@id/artistPageFragment" /> + </fragment> + <fragment + android:id="@+id/songListPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.SongListPageFragment" + android:label="SongListPageFragment" + tools:layout="@layout/fragment_song_list_page" /> + <fragment + android:id="@+id/albumListPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.AlbumListPageFragment" + android:label="AlbumListPageFragment" + tools:layout="@layout/fragment_album_list_page"> + <action + android:id="@+id/action_albumListPageFragment_to_albumPageFragment" + app:destination="@id/albumPageFragment" /> + </fragment> + <fragment + android:id="@+id/artistListPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.ArtistListPageFragment" + android:label="ArtistListPageFragment" + tools:layout="@layout/fragment_artist_list_page"> + <action + android:id="@+id/action_artistListPageFragment_to_artistPageFragment" + app:destination="@id/artistPageFragment" /> + <action + android:id="@+id/action_artistListPageFragment_to_albumListPageFragment" + app:destination="@id/albumListPageFragment" /> + </fragment> + <fragment + android:id="@+id/playlistPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.PlaylistPageFragment" + android:label="PlaylistPageFragment" + tools:layout="@layout/fragment_playlist_page" /> + <fragment + android:id="@+id/podcastChannelCatalogueFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.PodcastChannelCatalogueFragment" + android:label="PodcastChannelCatalogueFragment" + tools:layout="@layout/fragment_podcast_channel_catalogue"> + <action + android:id="@+id/action_podcastChannelCatalogueFragment_to_podcastChannelPageFragment" + app:destination="@id/podcastChannelPageFragment" /> + </fragment> + <fragment + android:id="@+id/podcastChannelPageFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.PodcastChannelPageFragment" + android:label="PodcastChannelPageFragment" + tools:layout="@layout/fragment_podcast_channel_page" /> + <fragment + android:id="@+id/directoryFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.DirectoryFragment" + android:label="DirectoryFragment" + tools:layout="@layout/fragment_directory"> + <action + android:id="@+id/action_directoryFragment_to_directoryFragment" + app:destination="@id/directoryFragment" /> + </fragment> + <fragment + android:id="@+id/indexFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.IndexFragment" + android:label="IndexFragment" + tools:layout="@layout/fragment_index"> + <action + android:id="@+id/action_indexFragment_to_directoryFragment" + app:destination="@id/directoryFragment" /> + </fragment> + <fragment + android:id="@+id/playerControllerFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.PlayerControllerFragment" + android:label="PlayerControllerFragment" + tools:layout="@layout/inner_fragment_player_controller"> + <action + android:id="@+id/action_playerControllerFragment_to_equalizerFragment" + app:destination="@id/equalizerFragment"/> + </fragment> + <fragment + android:id="@+id/equalizerFragment" + android:name="com.cappielloantonio.tempo.ui.fragment.EqualizerFragment" + android:label="EqualizerFragment" + tools:layout="@layout/fragment_equalizer" /> + <dialog + android:id="@+id/songBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.SongBottomSheetDialog" + android:label="SongBottomSheetDialog" + tools:layout="@layout/bottom_sheet_song_dialog" /> + <dialog + android:id="@+id/artistBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.ArtistBottomSheetDialog" + android:label="ArtistBottomSheetDialog" + tools:layout="@layout/bottom_sheet_artist_dialog" /> + <dialog + android:id="@+id/albumBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.AlbumBottomSheetDialog" + android:label="AlbumBottomSheetDialog" + tools:layout="@layout/bottom_sheet_album_dialog" /> + <dialog + android:id="@+id/downloadBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.DownloadedBottomSheetDialog" + android:label="DownloadBottomSheetDialog" + tools:layout="@layout/bottom_sheet_downloaded_dialog" /> + <dialog + android:id="@+id/podcastEpisodeBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.PodcastEpisodeBottomSheetDialog" + android:label="PodcastEpisodeBottomSheetDialog" + tools:layout="@layout/bottom_sheet_podcast_episode_dialog" /> + <dialog + android:id="@+id/podcastChannelBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.PodcastChannelBottomSheetDialog" + android:label="PodcastChannelBottomSheetDialog" + tools:layout="@layout/bottom_sheet_podcast_channel_dialog" /> + <dialog + android:id="@+id/shareBottomSheetDialog" + android:name="com.cappielloantonio.tempo.ui.fragment.bottomsheetdialog.ShareBottomSheetDialog" + android:label="ShareBottomSheetDialog" + tools:layout="@layout/bottom_sheet_share_dialog" /> +</navigation> \ No newline at end of file diff --git a/app/src/main/res/values-de/arrays.xml b/app/src/main/res/values-de/arrays.xml new file mode 100644 index 0000000..1171900 --- /dev/null +++ b/app/src/main/res/values-de/arrays.xml @@ -0,0 +1,157 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Hell</item> + <item>Dunkel</item> + <item>System Vorgabe</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Hoch</item> + <item>Mittel</item> + <item>Niedrig</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Hoch</item> + <item>Mittel</item> + <item>Niedrig</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Direktes Abspielen</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Direct play</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Zehn Sekunden</item> + <item>Fünf Sekunden</item> + <item>Zwei Sekunden</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Hoch</item> + <item>Mittel</item> + <item>Niedrig</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Deaktiviert</item> + <item>Titel</item> + <item>Album</item> + <item>Automatisch</item> + </string-array> + <string-array name="replay_gain_values"> + <item>Deaktiviert</item> + <item>Titel</item> + <item>Album</item> + <item>Automatisch</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml new file mode 100644 index 0000000..f225344 --- /dev/null +++ b/app/src/main/res/values-de/strings.xml @@ -0,0 +1,419 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Bei Problemen besuche https://dontkillmyapp.com. Dort findest Du detaillierte Anweisungen wie Du Energiesparfunktionen, welche die App-Performance beeinflussen können, deaktivieren kannst.</string> + <string name="activity_battery_optimizations_summary">Bitte deaktiviere die Batterieoptimierung, damit die Medienwiedergabe bei ausgeschaltetem Bildschirm richtig funktioniert.</string> + <string name="activity_battery_optimizations_title">Batterie Optimierung</string> + <string name="activity_info_offline_mode">Offlinebetrieb</string> + <string name="album_bottom_sheet_add_to_playlist">Zu Playliste hinzufügen</string> + <string name="album_bottom_sheet_add_to_queue">Zur Warteschlange hinzufügen</string> + <string name="album_bottom_sheet_download_all">Alle herunterladen</string> + <string name="album_bottom_sheet_go_to_artist">Gehe zu Künstler</string> + <string name="album_bottom_sheet_instant_mix">Sofort-Mix</string> + <string name="album_bottom_sheet_play_next">Nächsten Titel spielen</string> + <string name="album_bottom_sheet_remove_all">Alle entfernen</string> + <string name="album_bottom_sheet_shuffle">Mischen</string> + <string name="album_bottom_sheet_share">Teilen</string> + <string name="album_catalogue_title">Alben</string> + <string name="album_catalogue_title_expanded">Alben durchsuchen</string> + <string name="album_error_retrieving_artist">Error retrieving artist</string> + <string name="album_list_page_downloaded">Heruntergeladene Alben</string> + <string name="album_list_page_most_played">Oft gehörte Alben</string> + <string name="album_list_page_new_releases">Neue Releases</string> + <string name="album_list_page_recently_added">Kürzlich hinzugefügte Alben</string> + <string name="album_list_page_recently_played">Kürzlich gespielte Alben</string> + <string name="album_list_page_starred">Lieblingsalben</string> + <string name="album_list_page_title">Alben</string> + <string name="album_page_extra_info_button">Ähnliches</string> + <string name="album_page_play_button">Wiedergabe</string> + <string name="album_page_release_date_label">Veröffentlicht am %1$s</string> + <string name="album_page_release_dates_label">Veröffentlicht am %1$s, ursprünglich %2$s</string> + <string name="album_page_shuffle_button">Zufällige Wiedergabe</string> + <string name="album_page_tracks_count_and_duration">%1$d Tracks • %2$d Minuten</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Suche…</string> + <string name="artist_bottom_sheet_instant_mix">Instant mix</string> + <string name="artist_bottom_sheet_shuffle">Mischen</string> + <string name="artist_catalogue_title">Künstler</string> + <string name="artist_catalogue_title_expanded">Künstler durchsuchen</string> + <string name="artist_error_retrieving_radio">Fehler beim Abruf des Künstlerradios</string> + <string name="artist_error_retrieving_tracks">Fehler beim Abruf der Tracks des Künstlers</string> + <string name="artist_list_page_downloaded">Heruntergeladene Künstler</string> + <string name="artist_list_page_starred">Lieblingskünstler</string> + <string name="artist_list_page_title">Künstler</string> + <string name="artist_page_radio_button">Radio</string> + <string name="artist_page_shuffle_button">Mischen</string> + <string name="artist_page_switch_layout_button">Layout umschalten</string> + <string name="artist_page_title_album_more_like_this_button">Ähnliches</string> + <string name="artist_page_title_album_section">Alben</string> + <string name="artist_page_title_biography_more_button">Mehr</string> + <string name="artist_page_title_biography_section">Biographie</string> + <string name="artist_page_title_most_streamed_song_section">Oft gestreamte Tracks</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Alles</string> + <string name="battery_optimization_negative_button">Ignorieren</string> + <string name="battery_optimization_neutral_button">Nicht wieder fragen</string> + <string name="battery_optimization_positive_button">Ausschalten</string> + <string name="connection_alert_dialog_negative_button">Abbrechen</string> + <string name="connection_alert_dialog_neutral_button">Enable data saver</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">Der Zugriff auf den Subsonic server ohne Wi-Fi Verbindung ist deaktiviert. Du kannst das in den App-Einstellungen ändern.</string> + <string name="connection_alert_dialog_title">Wi-Fi ist nicht verbuden</string> + <string name="content_description_shuffle_button">Mischen</string> + <string name="delete_download_storage_dialog_negative_button">Abbrechen</string> + <string name="delete_download_storage_dialog_positive_button">Weiter</string> + <string name="delete_download_storage_dialog_summary">Wenn Du weitermachst werden alle zuvor heruntergeladenen Inhalte gelöscht.</string> + <string name="delete_download_storage_dialog_title">Heruntergeladene Inhalte löschen</string> + <string name="description_empty_title">Keine Beschreibung verfügbar</string> + <string name="disc_titlefull">Disk %1$s - %2$s</string> + <string name="disc_titleless">Disk %1$s</string> + <string name="download_directory_dialog_negative_button">Abbrechen</string> + <string name="download_directory_dialog_positive_button">Herunterladen</string> + <string name="download_directory_dialog_summary">Alle Tracks in diesem Verzeichnis werden heruntergeladen. Tracks in Unterverzeichnisses werden nicht heruntergeladen.</string> + <string name="download_directory_dialog_title">Tracks herunterladen</string> + <string name="download_info_empty_subtitle">Wenn Du einen Track heruntergeladen hast findest Du ihn hier</string> + <string name="download_info_empty_title">Bisher keine Downloads!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s items</string> + <string name="download_item_single_subtitle_formatter">%1$s items</string> + <string name="download_shuffle_all_subtitle">Alle mischen</string> + <string name="download_storage_dialog_sub_summary">Neustart der Anwendung ist nötig.</string> + <string name="download_storage_dialog_summary">Das Ändern des Speicherorts löscht alle Inhalte im zuvor gewählten Speicherort.</string> + <string name="download_storage_dialog_title">Wähle den Speicherort aus</string> + <string name="download_storage_external_dialog_positive_button">Extern</string> + <string name="download_storage_internal_dialog_negative_button">Intern</string> + <string name="download_title_section">Downloads</string> + <string name="downloaded_bottom_sheet_add_to_queue">Zur Warteschlange hinzufügen</string> + <string name="downloaded_bottom_sheet_play_next">Nächsten Titel spielen</string> + <string name="downloaded_bottom_sheet_remove">Entfernen</string> + <string name="downloaded_bottom_sheet_remove_all">Alle entfernen</string> + <string name="downloaded_bottom_sheet_shuffle">Mischen</string> + <string name="empty_string" /> + <string name="error_required">Benötigt</string> + <string name="error_server_prefix">http or https prefix benötigt</string> + <string name="exo_download_notification_channel_name">Downloads</string> + <string name="filter_info_selection">Wähle mindestens zwei Filter aus</string> + <string name="filter_title">Filter</string> + <string name="filter_title_expanded">Genres filtern</string> + <string name="genre_catalogue_title">Genre Übersicht</string> + <string name="genre_catalogue_title_expanded">Genres durchsuchen</string> + <string name="github_update_dialog_negative_button">Später erinnern</string> + <string name="github_update_dialog_neutral_button">Unterstütze mich</string> + <string name="github_update_dialog_positive_button">Jetzt herunterladen</string> + <string name="github_update_dialog_summary">Es gibt eine neue Version der App auf Github.</string> + <string name="github_update_dialog_title">Update verfügbar</string> + <string name="home_rearrangement_dialog_negative_button">Abbrechen</string> + <string name="home_rearrangement_dialog_neutral_button">Zurücksetzen</string> + <string name="home_rearrangement_dialog_positive_button">Sichern</string> + <string name="home_rearrangement_dialog_title">Startseite anpassen</string> + <string name="home_rearrangement_dialog_subtitle">Die Anwendung muss neu gestartet werden, um die Änderungen auszuführen.</string> + <string name="home_section_music">Musik</string> + <string name="home_section_podcast">Podcast</string> + <string name="home_section_radio">Radio</string> + <string name="home_subtitle_best_of">Top Tracks Deiner Lieblingskünstler</string> + <string name="home_subtitle_made_for_you">Ein Mix von einem deiner Lieblingslieder erstellen</string> + <string name="home_subtitle_new_internet_radio_station">Radio hinzufügen</string> + <string name="home_subtitle_new_podcast_channel">Podcast Kanal hinzufügen</string> + <string name="home_sync_starred_cancel">Abbrechen</string> + <string name="home_sync_starred_download">Download</string> + <string name="home_sync_starred_subtitle">Das Herunterladen dieser Tracks kann erheblichen Datenverbrauch verursachen</string> + <string name="home_sync_starred_title">Einige Lieblingslieder müssen synchronisiert werden</string> + <string name="home_title_best_of">Best Of</string> + <string name="home_title_discovery">Entdeckungsreise</string> + <string name="home_title_discovery_shuffle_all_button">Alle mischen</string> + <string name="home_title_flashback">Flashback</string> + <string name="home_title_internet_radio_station">Internet Radios</string> + <string name="home_title_last_played">Zuletzt gespielt</string> + <string name="home_title_last_played_see_all_button">Alle zeigen</string> + <string name="home_title_last_week">Letzte Woche</string> + <string name="home_title_last_month">Letzter Monat</string> + <string name="home_title_last_year">Letztes Jahr</string> + <string name="home_title_made_for_you">Wie für Dich gemacht</string> + <string name="home_title_most_played">Oft gespielt</string> + <string name="home_title_most_played_see_all_button">Alle zeigen</string> + <string name="home_title_new_releases">Neue Releases</string> + <string name="home_title_newest_podcasts">Neueste Podcasts</string> + <string name="home_title_pinned_playlists">Playlisten</string> + <string name="home_title_podcast_channels">Kanäle</string> + <string name="home_title_podcast_channels_see_all_button">Alle zeigen</string> + <string name="home_title_radio_station">Radio Stationen</string> + <string name="home_title_recently_added">Kürzlich hinzugefügt</string> + <string name="home_title_recently_added_see_all_button">Alle zeigen</string> + <string name="home_title_shares">Shares</string> + <string name="home_title_starred_albums">★ Lieblingsalben</string> + <string name="home_title_starred_albums_see_all_button">Alle zeigen</string> + <string name="home_title_starred_artists">★ Lieblingskünstler</string> + <string name="home_title_starred_artists_see_all_button">Alle zeigen</string> + <string name="home_title_starred_tracks">★ Lieblingslieder</string> + <string name="home_title_starred_tracks_see_all_button">Alle zeigen</string> + <string name="home_title_top_songs">Deine Top Songs</string> + <string name="home_option_reorganize">Neu anordnen</string> + <string name="library_title_album">Alben</string> + <string name="library_title_album_see_all_button">Alle zeigen</string> + <string name="library_title_artist">Künstler</string> + <string name="library_title_artist_see_all_button">Alle zeigen</string> + <string name="library_title_genre">Genres</string> + <string name="library_title_genre_see_all_button">Alle zeigen</string> + <string name="library_title_music_folder">Sammlung</string> + <string name="library_title_playlist">Playlisten</string> + <string name="library_title_playlist_see_all_button">Alle zeigen</string> + <string name="login_empty">Kein Server hinzugefügt</string> + <string name="login_title">Subsonic Server</string> + <string name="login_title_expanded">Subsonic Server</string> + <string name="media_route_menu_title">Cast</string> + <string name="menu_add_button">Hinzufügen</string> + <string name="menu_add_to_playlist_button">Zu Playliste hinzufügen</string> + <string name="menu_download_all_button">Alle Herunterladen</string> + <string name="menu_download_label">Downloads</string> + <string name="menu_filter_all">Alle</string> + <string name="menu_filter_download">Heruntergeladen</string> + <string name="menu_group_by_album">Album</string> + <string name="menu_group_by_artist">Künstler</string> + <string name="menu_group_by_genre">Genre</string> + <string name="menu_group_by_track">Track</string> + <string name="menu_group_by_year">Jahr</string> + <string name="menu_home_label">Start</string> + <string name="menu_last_week_name">Letzte Woche</string> + <string name="menu_last_month_name">Letzter Monat</string> + <string name="menu_last_year_name">Letztes Jahr</string> + <string name="menu_library_label">Sammlung</string> + <string name="menu_search_button">Suche</string> + <string name="menu_settings_button">Einstellungen</string> + <string name="menu_sort_artist">Künstler</string> + <string name="menu_sort_name">Name</string> + <string name="menu_sort_random">Zufall</string> + <string name="menu_sort_recently_added">Vor kurzem hinzugefügt</string> + <string name="menu_pin_button">Zur Startseite hinzufügen</string> + <string name="menu_unpin_button">Von Startseite entfernen</string> + <string name="menu_sort_year">Jahr</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Warteschlange leeren</string> + <string name="player_server_priority">Server Priorität</string> + <string name="playlist_catalogue_title">Playlisten</string> + <string name="playlist_catalogue_title_expanded">Playlisten durchsuchen</string> + <string name="playlist_chooser_dialog_empty">Keine Playlisten erstellt</string> + <string name="playlist_chooser_dialog_negative_button">Abbrechen</string> + <string name="playlist_chooser_dialog_neutral_button">Erstellen</string> + <string name="playlist_chooser_dialog_title">Zu einer Playliste hinzufügen</string> + <string name="playlist_chooser_dialog_toast_add_success">Lied zu Playlist hinzugefügt</string> + <string name="playlist_chooser_dialog_toast_add_failure">Titel kann nicht zur Playlist hinzugefügt werden</string> + <string name="playlist_counted_tracks">%1$d Tracks • %2$s</string> + <string name="playlist_duration">Länge • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Zum Löschen lange drücken</string> + <string name="playlist_editor_dialog_hint_name">Name der Playliste</string> + <string name="playlist_editor_dialog_negative_button">Abbrechen</string> + <string name="playlist_editor_dialog_neutral_button">Löschen</string> + <string name="playlist_editor_dialog_positive_button">Speichern</string> + <string name="playlist_editor_dialog_title">Playliste erstellen</string> + <string name="playlist_page_play_button">Wiedergabe</string> + <string name="playlist_page_shuffle_button">Shuffle</string> + <string name="playlist_song_count">Playliste • %1$d Tracks</string> + <string name="podcast_bottom_sheet_add_to_queue">Zur Warteschlange hinzufügen</string> + <string name="podcast_bottom_sheet_delete">Löschen</string> + <string name="podcast_bottom_sheet_download">Download</string> + <string name="podcast_bottom_sheet_go_to_channel">Zum Kanal gehen</string> + <string name="podcast_bottom_sheet_play_next">Nächsten Titel spielen</string> + <string name="podcast_bottom_sheet_remove">Entfernen</string> + <string name="podcast_channel_catalogue_title">Kanäle</string> + <string name="podcast_channel_catalogue_title_expanded">Kanäle durchsuchen</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">RSS Url</string> + <string name="podcast_channel_editor_dialog_title">Podcast Kanal</string> + <string name="podcast_channel_page_title_description_section">Beschreibung</string> + <string name="podcast_channel_page_title_episode_section">Episoden</string> + <string name="podcast_channel_page_title_no_episode_available">Keine Episoden verfügbar</string> + <string name="podcast_episode_download_request_snackbar">Der Request wurde an den Server geschickt.</string> + <string name="podcast_info_empty_button">Hier klicken, um den Bereich auszublenden\nAnwendungsneustart ist notwendig</string> + <string name="podcast_info_empty_subtitle">Wenn Du einen Kanal hinzufügst findest Du ihn hier</string> + <string name="podcast_info_empty_title">Keine Podcasts gefunden.</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">Radio Homepage URL</string> + <string name="radio_editor_dialog_hint_name">Radio Name</string> + <string name="radio_editor_dialog_hint_stream_url">Radio Stream URL</string> + <string name="radio_editor_dialog_negative_button">Abbrechen</string> + <string name="radio_editor_dialog_neutral_button">Löschen</string> + <string name="radio_editor_dialog_positive_button">Speichern</string> + <string name="radio_editor_dialog_title">Internet Radio Station</string> + <string name="radio_station_info_empty_button">Hier klicken, um den Bereich auszublenden\nAnwendungsneustart ist notwendig</string> + <string name="radio_station_info_empty_subtitle">Wenn Du eine Radio Station hinzugefügt hast findest Du sie hier</string> + <string name="radio_station_info_empty_title">Keine Radio Stationen gefunden.</string> + <string name="rating_dialog_negative_button">Abbrechen</string> + <string name="rating_dialog_positive_button">Speichern</string> + <string name="rating_dialog_title">Bewerten</string> + <string name="search_hint">Titel, Künstler oder Alben durchsuchen</string> + <string name="search_info_minimum_characters">Gib mindestens drei Zeichen ein</string> + <string name="search_title_album">Alben</string> + <string name="search_title_artist">Künstler</string> + <string name="search_title_song">Tracks</string> + <string name="server_signup_dialog_action_low_security">Niedrige Sicherheit</string> + <string name="server_signup_dialog_action_delete_toast">Zum Löschen lange drücken</string> + <string name="server_signup_dialog_hint_local_address">Lokale URL</string> + <string name="server_signup_dialog_hint_name">Server Name</string> + <string name="server_signup_dialog_hint_password">Passwort</string> + <string name="server_signup_dialog_hint_url">Server URL</string> + <string name="server_signup_dialog_hint_username">Benutzername</string> + <string name="server_signup_dialog_negative_button">Abbrechen</string> + <string name="server_signup_dialog_neutral_button">Löschen</string> + <string name="server_signup_dialog_positive_button">Speichern</string> + <string name="server_signup_dialog_title">Server hinzufügen</string> + <string name="server_unreachable_dialog_negative_button">Abbrechen</string> + <string name="server_unreachable_dialog_neutral_button">Gehe zum Login</string> + <string name="server_unreachable_dialog_positive_button">Trotzdem weitermachen</string> + <string name="server_unreachable_dialog_summary">Der angefragte Server ist nicht erreichbar. Wenn Du trotzdem weitermachst, wird dieser Dialog für eine Stunden nicht wieder erscheinen.</string> + <string name="server_unreachable_dialog_title">Server nicht erreichbar</string> + <string name="settings_about_summary">Tempus ist ein nativ für Android entwickelter, leichtgewichtiger Open-Source Client für Subsonic.</string> + <string name="settings_about_title">Über</string> + <string name="settings_always_on_display">Immer anzeigen</string> + <string name="settings_audio_transcode_download_format">Transkodierungs-Format</string> + <string name="settings_audio_transcode_download_priority_summary">Diese Option deaktiviert die Transkodierungssettings für Downloads.</string> + <string name="settings_audio_transcode_download_priority_title">Transkodierungseinstellungen des Servers für Downloads bevorzugen.</string> + <string name="settings_audio_transcode_download_summary">Diese Option aktiviert das Transkodieren für heruntergeladene Tracks.</string> + <string name="settings_audio_transcode_download_title">Transkodierte Tracks herunterladen</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Diese Option bittet den Server um die geschätzte Länge des Titels.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Titellänge schätzen</string> + <string name="settings_audio_transcode_priority_summary">Diese Option deaktiviert die weiter unten folgenden Transkodierungseinstellungen.</string> + <string name="settings_audio_transcode_priority_title">Transkodierungseinstellungen des Servers bevorzugen</string> + <string name="settings_audio_transcode_priority_toast">Servereinstellungen zur Transkodierung des Tracks werden bevorzugt</string> + <string name="settings_buffering_strategy">Strategie zum Zwischenspeichern</string> + <string name="settings_buffering_strategy_summary">Zum Anwenden muss die Anwendung neugestartet werden.</string> + <string name="settings_continuous_play_summary">Nach dem Ende der Playliste ähnliche Songs abspielen.</string> + <string name="settings_continuous_play_title">Kontinuierliche Wiedergabe</string> + <string name="settings_audio_transcode_format_download">Transkodierungs-Format für Downloads</string> + <string name="settings_audio_transcode_format_mobile">Transkodierungsformat im mobilen Netz</string> + <string name="settings_audio_transcode_format_wifi">Transkodierungsformat im Wi-Fi</string> + <string name="settings_covers_cache">Größe des Artwork Caches</string> + <string name="settings_data_saving_mode_summary">Um das Datenvolumen zu begrenzen werden keine Cover heruntergeladen.</string> + <string name="settings_data_saving_mode_title">Mobile Datennutzung begrenzen</string> + <string name="settings_delete_download_storage_summary">Wenn Du weitermachst werden alle gespeicherten Inhalte unwiderruflich gelöscht.</string> + <string name="settings_delete_download_storage_title">Gespeicherte Inhalte löschen</string> + <string name="settings_download_storage_title">Download storage</string> + <string name="settings_system_equalizer_summary">Audio Einstellungen anpassen</string> + <string name="settings_system_equalizer_title">System-Equalizer</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Verfolge die Entwicklung</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">Bilder Auflösung anpassen</string> + <string name="settings_language">Sprache</string> + <string name="settings_system_language">Systemsprache</string> + <string name="settings_logout_title">Abmelden</string> + <string name="settings_max_bitrate_download">Bitrate für Downloads</string> + <string name="settings_max_bitrate_mobile">Bitrate bei mobiler Nutzung</string> + <string name="settings_max_bitrate_wifi">Bitrate bei Wi-Fi Nutzung</string> + <string name="settings_media_cache">Größe des Medienfile Caches</string> + <string name="settings_music_directory">Zeige Musikverzeichnisse</string> + <string name="settings_music_directory_summary">Zeige den Bereich für Musikverzeichnisse. Der Server muss das Feature unterstützen.</string> + <string name="settings_podcast">Podcasts anzeigen</string> + <string name="settings_podcast_summary">Zeige den Bereich für Podcasts.</string> + <string name="settings_audio_quality">Zeige Audioqualität</string> + <string name="settings_audio_quality_summary">Die Bitrate und das Audio-Format werden für jeden einzelnen Track angezeigt.</string> + <string name="settings_item_rating">Track Bewertung anzeigen</string> + <string name="settings_item_rating_summary">Zeigt die Bewertung an und ob der Track als Favorit gekennzeichnet ist.</string> + <string name="settings_queue_syncing_countdown">Timer synchronisieren</string> + <string name="settings_queue_syncing_summary">Der Benutzer kann seine Warteschlange speichern und beim Neustart der Anwendung wiederherstellen.</string> + <string name="settings_queue_syncing_title">Warteschlange für diesen User synchronisieren</string> + <string name="settings_radio">Radios anzeigen</string> + <string name="settings_radio_summary">Zeige den Bereich für Radios.</string> + <string name="settings_replay_gain">Set replay gain mode</string> + <string name="settings_rounded_corner">Abgerundete Ecken</string> + <string name="settings_rounded_corner_size">Eckenradius</string> + <string name="settings_rounded_corner_size_summary">Definiert den Eckenradius.</string> + <string name="settings_rounded_corner_summary">Abgerundete Ecken für alle gerenderten Cover. Anwendungsneustart ist notwendig.</string> + <string name="settings_scan_title">Sammlung scannen</string> + <string name="settings_scrobble_title">Musik Scrobbeln aktivieren</string> + <string name="settings_share_title">Teilen von Musik aktivieren</string> + <string name="settings_streaming_cache_size">Größe des Streaming-Caches</string> + <string name="settings_streaming_cache_storage_title">Streaming cache Speicher</string> + <string name="settings_sub_summary_scrobble">Scrobbeln setzt voraus, dass der Server dies unterstützt.</string> + <string name="settings_summary_skip_min_star_rating">Tracks unterhalb einer bestimmten Bewertung werden beim Abspielen eines Künstlerradios, eines Instant-Mix und beim zufälligen Mischen aller Tracks ignoriert.</string> + <string name="settings_summary_replay_gain">Replay-Gain ist ein Feature, das die Lautstärke von Tracks für ein konsistentes Hörerlebnis anpasst. Diese Einstellung funktioniert nur, wenn Tracks die entsprechenden Metadaten haben.</string> + <string name="settings_summary_scrobble">Scrobbeln ist ein Feature, das es erlaubt, Informationen über abgespielte Munsik an einen Musikserver zu senden. Diese Informationen können für personalisierte Empfehlungen genutzt werden.</string> + <string name="settings_summary_share">Diese Option erlaubt es dem Benutzer, Musik mit einem Link zu teilen. Die Funktionalität muss vom Server unterstützt und aktiviert sein und ist auf einzelne Titel, Alben und Wiedergabelisten beschränkt.</string> + <string name="settings_summary_syncing">Den Zustand der Warteschlange synchronisieren. Das beinhaltet die Tracks in der Warteschlange, den aktuell gespielten Track und die Position innerhalb dieses Tracks. Der Server muss dieses Feature unterstützen.</string> + <string name="settings_summary_streaming_cache_size">%1$s \Momentan benutzt: %2$s MiB</string> + <string name="settings_summary_transcoding">Priorität des Transkodierungsmodus. \"Direktes Abspielen\" ändert die Bitrate der Dateien nicht.</string> + <string name="settings_summary_transcoding_estimate_content_length">When der Titel während des Abspielens transkodiert wird, When the file is transcoded on the fly, zeigt die App normalerweise keine Titellänge an. Es ist möglich einen Server, der dies unterstützt, zu bitten, die Titellänge zu schätzen. Die Antwortzeiten könnten sich verlängern.</string> + <string name="settings_summary_transcoding_download">Transkodierte Medien herunterladen. Diese Option deaktiviert den Download-Endpoint und benutzt stattdessen die folgenden Einstellungen. \n\n If \"Transkodierungs-Format\" ist auf \"Direktes Abspielen\" gesetzt, Die Bitrate des Tracks wird nicht geändert.</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Lieblingslieder werden automatisch heruntergeladen.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Lieblingslieder für Offline-Modus sychronisieren</string> + <string name="settings_theme">Design</string> + <string name="settings_title_data">Daten</string> + <string name="settings_title_general">Allgemein</string> + <string name="settings_title_rating">Bewertung</string> + <string name="settings_title_replay_gain">Replay Gain</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Tracks basierend auf ihrer Wertung ignorieren</string> + <string name="settings_title_skip_min_star_rating_dialog">Tracks mit einer Bewertung von:</string> + <string name="settings_title_share">Teilen</string> + <string name="settings_title_syncing">Sychronisierung</string> + <string name="settings_title_transcoding">Transkodierung</string> + <string name="settings_title_transcoding_download">Transkodierung Download</string> + <string name="settings_title_ui">Benutzeroberfläche</string> + <string name="settings_transcoded_download">Transcoded download</string> + <string name="settings_version_title">Version</string> + <string name="settings_wifi_only_summary">Um Erlaubnis fragen bevor über das mobile Netzwerk gestreamed wird.</string> + <string name="settings_wifi_only_title">Warnung bei Streamen ohne Wi-Fi</string> + <string name="share_bottom_sheet_copy_link">Link kopieren</string> + <string name="share_bottom_sheet_delete">Share löschen</string> + <string name="share_bottom_sheet_update">Share aktualisieren</string> + <string name="share_subtitle_item">Ablaufdatum: %1$s</string> + <string name="share_update_dialog_negative_button">Abbrechen</string> + <string name="share_update_dialog_positive_button">Sichern</string> + <string name="share_update_dialog_hint_description">Beschreibung</string> + <string name="share_update_dialog_hint_expiration_date">Ablaufdatum</string> + <string name="share_update_dialog_title">Teilen</string> + <string name="share_unsupported_error">Sharing ist nicht aktiviert oder unterstützt.</string> + <string name="song_bottom_sheet_add_to_playlist">Zu Playliste hinzufügen</string> + <string name="song_bottom_sheet_add_to_queue">Zur Warteschlange hinzufügen</string> + <string name="song_bottom_sheet_download">Download</string> + <string name="song_bottom_sheet_error_retrieving_album">Fehler beim Abruf des Albums</string> + <string name="song_bottom_sheet_error_retrieving_artist">Fehler beim Abruf des Künstlers</string> + <string name="song_bottom_sheet_go_to_album">Zum Album gehen</string> + <string name="song_bottom_sheet_go_to_artist">Zum Künstler gehen</string> + <string name="song_bottom_sheet_share">Teilen</string> + <string name="song_bottom_sheet_instant_mix">Sofort-Mix</string> + <string name="song_bottom_sheet_play_next">Nächsten Titel spielen</string> + <string name="song_bottom_sheet_rate">Bewerten</string> + <string name="song_bottom_sheet_remove">Entfernen</string> + <string name="song_list_page_downloaded">Heruntergeladen</string> + <string name="song_list_page_most_played">Oft gespielte Tracks</string> + <string name="song_list_page_recently_added">Zuletzt hinzugefügte Tracks</string> + <string name="song_list_page_recently_played">Zuletzt gespielte Tracks</string> + <string name="song_list_page_starred">Lieblingslieder</string> + <string name="song_list_page_top">%1$s\'s Top Tracks</string> + <string name="song_list_page_year">Jahr %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Abbrechen</string> + <string name="starred_sync_dialog_neutral_button">Weiter</string> + <string name="starred_sync_dialog_positive_button">Weiter und Herunterladen</string> + <string name="starred_sync_dialog_summary">Das Herunterladen deiner Lieblingslieder kann viel Datenvolumen verbrauchen.</string> + <string name="starred_sync_dialog_title">Lieblingslieder synchronisieren</string> + <string name="streaming_cache_storage_dialog_sub_summary">Anwendung neustarten, um die Änderungen anzuwenden.</string> + <string name="streaming_cache_storage_dialog_summary">Das Ändern des Speicherorts kann zum Verlust von zuvor gecachter Daten am neuen Speicherort führen.</string> + <string name="streaming_cache_storage_dialog_title">Speicherort auswählen</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Extern</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Intern</string> + <string name="support_url">https://buymeacoffee.com/a.cappiello</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">Besonders möchten wir uns bei unDraw bedanken, durch deren Illustrationen wir diese App so schön machen konnten.</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Titel Info</string> + <string name="track_info_title">Titel</string> + <string name="track_info_album">Album</string> + <string name="track_info_artist">Künstler</string> + <string name="track_info_bit_depth">Bit-Tiefe</string> + <string name="track_info_track_number">Track Nummer</string> + <string name="track_info_year">Jahr</string> + <string name="track_info_genre">Genre</string> + <string name="track_info_size">Größe</string> + <string name="track_info_content_type">Inhaltstyp</string> + <string name="track_info_suffix">Suffix</string> + <string name="track_info_transcoded_content_type">Transkodierter Inhaltstyp</string> + <string name="track_info_transcoded_suffix">Transkodiertes Suffix</string> + <string name="track_info_duration">Länge</string> + <string name="track_info_bitrate">Bitrate</string> + <string name="track_info_sampling_rate">Abtastrate</string> + <string name="track_info_path">Pfad</string> + <string name="track_info_disc_number">Disk Nummer</string> + <string name="track_info_summary_downloaded_file">Diese Datei wurde mit den Subsonic APIs heruntergeladen. Der Codec und die Bitrate sind unverändert zur original Datei.</string> + <string name="track_info_summary_server_prioritized">Die Qualität des abzuspielenden Titels wird vom Server bestimmt. Tempus stellt keinen Codec und keine Bitrate für eine potentielle Transkodierung sicher.</string> + <string name="track_info_summary_original_file">Tempus wird nur die original Datei, so wie sie vom Server geliefert wird, lesen. Die Anwendung wird den Server explizit nach einer nicht-transkodierten Version der Datei mit der Bitrate der original Datei fragen.</string> + <string name="track_info_summary_transcoding_codec">Tempus wird den Server bitten, die Datei zu transkodieren. Der vom Benutzer gewünschte Codec ist %1$s, die Bitrate wird dieselbe wie bei der original Datei sein. Die potentielle Transkodierung der Datei in das gewünschte Format ist vom Server abhängig. Dieser kann die Operation gegebenenfalls nicht unterstützen.</string> + <string name="track_info_summary_transcoding_bitrate">Tempus wird den Server bitten, die Bitrate der Datei zu erändern. Die vom Benutzer gewünschte Bitrate ist %1$s, der Codec der Originaldatei wird nicht verändert. Änderungen an der Bitrate der Datei werden vom Server ausgeführt, dieser kann die Operation gegebenenfalls nicht unterstützen.</string> + <string name="track_info_summary_full_transcode">Die Anwendung wird den Server bitten die Datei zu transkodieren und die Bitrate zu verändern. Der vom Benutzer gewünschte Codec ist %1$s, mit der Bitrate %2$s. Änderungen am Codec und an der Bitrate der Datei werden vom Server ausgeführt, dieser kann die Operation gegebenenfalls nicht unterstützen.</string> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-es-rES/arrays.xml b/app/src/main/res/values-es-rES/arrays.xml new file mode 100644 index 0000000..0ed6cfe --- /dev/null +++ b/app/src/main/res/values-es-rES/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Claro</item> + <item>Oscuro</item> + <item>El mismo que el del sistema</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Alto</item> + <item>Medio</item> + <item>Bajo</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Alta</item> + <item>Media</item> + <item>Baja</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Desactivado</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Reproducción directa</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Reproducción directa</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Descarga directa</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Diez segundos</item> + <item>Cinco segundos</item> + <item>Dos segundos</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Alto</item> + <item>Medio</item> + <item>Bajo</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Desactivada</item> + <item>Pista</item> + <item>Álbum</item> + <item>Automático</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>No transcodificar</item> + <item>Configuración del servidor</item> + <item>Formato de transcodificación en Wi-Fi</item> + <item>Formato de transcodificación en red móvil</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Mínimo</item> + <item>Moderado</item> + <item>Agresivo</item> + <item>Extremo</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>0 estrellas como mínimo</item> + <item>1 estrella como mínimo</item> + <item>2 estrellas como mínimo</item> + <item>3 estrellas como mínimo</item> + <item>4 estrellas como mínimo</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml new file mode 100644 index 0000000..cef6b66 --- /dev/null +++ b/app/src/main/res/values-es-rES/strings.xml @@ -0,0 +1,508 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="album_page_tracks_count_and_duration">%1$d pistas • %2$d minutos</string> + <string name="app_name">Tempus</string> + <string name="activity_battery_optimizations_conclusion">Si tienes problemas, visita https://dontkillmyapp.com. Ofrece instrucciones detalladas para desactivar características de ahorro de energía que podrían afectar al rendimiento de la app.</string> + <string name="activity_battery_optimizations_summary">Por favor, desactive las optimizaciones de batería para continuar la reproducción multimedia mientras la pantalla está apagada.</string> + <string name="activity_battery_optimizations_title">Optimizaciones de batería</string> + <string name="activity_info_offline_mode">Modo sin conexión</string> + <string name="album_bottom_sheet_add_to_playlist">Añadir a la lista de reproducción</string> + <string name="album_bottom_sheet_add_to_queue">Añadir a la cola</string> + <string name="album_bottom_sheet_download_all">Descargar todo</string> + <string name="album_bottom_sheet_go_to_artist">Ir al artista</string> + <string name="album_bottom_sheet_instant_mix">Mix instantáneo</string> + <string name="album_bottom_sheet_play_next">Reproducir siguiente</string> + <string name="album_bottom_sheet_remove_all">Eliminar todo</string> + <string name="album_bottom_sheet_share">Compartir</string> + <string name="album_bottom_sheet_shuffle">Aleatorio</string> + <string name="album_catalogue_title">Álbumes</string> + <string name="album_catalogue_title_expanded">Explorar álbumes</string> + <string name="album_error_retrieving_artist">Error al obtener información del artista</string> + <string name="album_list_page_downloaded">Álbumes descargados</string> + <string name="album_list_page_most_played">Álbumes más reproducidos</string> + <string name="album_list_page_new_releases">Nuevos estrenos</string> + <string name="album_list_page_recently_added">Álbumes añadidos recientemente</string> + <string name="album_list_page_recently_played">Álbumes reproducidos recientemente</string> + <string name="album_list_page_starred">Álbumes destacados</string> + <string name="album_list_page_title">Álbumes</string> + <string name="album_page_extra_info_button">Más como esto</string> + <string name="album_page_play_button">Reproducir</string> + <string name="album_page_release_date_label">Estrenado el %1$s</string> + <string name="album_page_release_dates_label">Estrenado el %1$s, originalmente %2$s</string> + <string name="album_page_shuffle_button">Aleatorio</string> + <string name="artist_adapter_radio_station_starting">Buscando…</string> + <string name="artist_bottom_sheet_instant_mix">Mix instantáneo</string> + <string name="artist_bottom_sheet_shuffle">Aleatorio</string> + <string name="artist_catalogue_title">Artistas</string> + <string name="artist_catalogue_title_expanded">Explorar artistas</string> + <string name="artist_error_retrieving_radio">Error al obtener radio del artista</string> + <string name="artist_error_retrieving_tracks">Error al obtener pistas del artista</string> + <string name="artist_list_page_downloaded">Artistas descargados</string> + <string name="artist_list_page_starred">Artistas destacados</string> + <string name="artist_list_page_title">Artistas</string> + <string name="artist_page_radio_button">Radio</string> + <string name="artist_page_shuffle_button">Aleatorio</string> + <string name="artist_page_switch_layout_button">Cambiar disposición</string> + <string name="artist_page_title_album_more_like_this_button">Más como esto</string> + <string name="artist_page_title_album_section">Álbumes</string> + <string name="artist_page_title_biography_more_button">Más</string> + <string name="artist_page_title_biography_section">Biografía</string> + <string name="artist_page_title_most_streamed_song_section">Pistas más reproducidas</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Ver todo</string> + <string name="battery_optimization_negative_button">Ignorar</string> + <string name="battery_optimization_neutral_button">No volver a preguntar</string> + <string name="battery_optimization_positive_button">Desactivar</string> + <string name="connection_alert_dialog_negative_button">Cancelar</string> + <string name="connection_alert_dialog_neutral_button">Habilitar el ahorro de datos</string> + <string name="connection_alert_dialog_positive_button">Aceptar</string> + <string name="connection_alert_dialog_summary">El acceso al servidor de Subsonic en conexiones que no sean Wi-Fi ha sido restringido. Para evitar que este cuadro de diálogo aparezca de nuevo, desactiva la opción de comprobar conexión en las preferencias de la app.</string> + <string name="connection_alert_dialog_title">No te has conectado a una red Wi-Fi</string> + <string name="content_description_shuffle_button">Aleatorio</string> + <string name="delete_download_storage_dialog_negative_button">Cancelar</string> + <string name="delete_download_storage_dialog_positive_button">Continuar</string> + <string name="delete_download_storage_dialog_summary">Por favor, sea consciente de que si continúa, todos los elementos descargados de todos los servidores se eliminarán.</string> + <string name="delete_download_storage_dialog_title">Eliminar elementos guardados</string> + <string name="description_empty_title">Descripción no disponible</string> + <string name="disc_titlefull">Disco %1$s - %2$s</string> + <string name="disc_titleless">Disco %1$s</string> + <string name="download_directory_dialog_negative_button">Cancelar</string> + <string name="download_directory_dialog_positive_button">Descargar</string> + <string name="download_directory_dialog_summary">Se descargarán todas las pistas de esta carpeta. Las pistas en las subcarpetas no se descargarán.</string> + <string name="download_directory_dialog_title">Descargar las pistas</string> + <string name="download_directory_set">Indicar ubicación de descarga</string> + <string name="download_info_empty_subtitle">Una vez que descargues una pista, la encontrarás aquí</string> + <string name="download_info_empty_title">No hay descargas</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s elementos</string> + <string name="download_item_single_subtitle_formatter">%1$s elementos</string> + <string name="download_shuffle_all_subtitle">Todo en aleatorio</string> + <string name="download_storage_dialog_sub_summary">Para aplicar los cambios, reinicia la app.</string> + <string name="download_storage_dialog_summary">Cambiar la carpeta destino de los archivos descargados de un almacenamiento a otro, hará que se eliminen de inmediato todos los archivos descargados en el almacenamiento de origen.</string> + <string name="download_storage_dialog_title">Selecciona una opción de almacenamiento</string> + <string name="download_storage_external_dialog_positive_button">Externo</string> + <string name="download_storage_internal_dialog_negative_button">Interno</string> + <string name="download_storage_directory_dialog_neutral_button">Directorio</string> + <string name="download_title_section">Descargas</string> + <string name="download_refresh_no_changes">No se han encontrado descargas que falten</string> + <string name="download_refresh_button_content_description">Actualizar descargas</string> + <string name="downloaded_bottom_sheet_add_to_queue">Añadir a la cola</string> + <string name="downloaded_bottom_sheet_play_next">Reproducir siguiente</string> + <string name="downloaded_bottom_sheet_remove">Eliminar</string> + <string name="downloaded_bottom_sheet_remove_all">Eliminar todo</string> + <string name="downloaded_bottom_sheet_shuffle">Aleatorio</string> + <string name="error_required">Obligatorio</string> + <string name="error_server_prefix">Se necesita un prefijo http o https</string> + <string name="exo_download_notification_channel_name">Descargas</string> + <string name="exo_controls_heart_on_description">Añadir a favoritos</string> + <string name="cast_expanded_controller_loading">Cargando…</string> + <string name="filter_info_selection">Selecciona dos o más filtros</string> + <string name="filter_title">Filtrar</string> + <string name="filter_artist">Filtrar artistas</string> + <string name="filter_title_expanded">Filtrar géneros</string> + <string name="generic_list_page_count">(%1$d)</string> + <string name="generic_list_page_count_unknown">(+%1$d)</string> + <string name="genre_catalogue_title">Géneros</string> + <string name="genre_catalogue_title_expanded">Explorar géneros</string> + <string name="github_update_dialog_negative_button">Recuérdamelo más tarde</string> + <string name="github_update_dialog_neutral_button">Apóyame</string> + <string name="github_update_dialog_positive_button">Descargar ahora</string> + <string name="github_update_dialog_summary">Hay una nueva versión de la app disponible en Github.</string> + <string name="github_update_dialog_title">Actualización disponible</string> + <string name="home_rearrangement_dialog_negative_button">Cancelar</string> + <string name="home_rearrangement_dialog_neutral_button">Restablecer</string> + <string name="home_rearrangement_dialog_positive_button">Guardar</string> + <string name="home_rearrangement_dialog_title">Reorganizar la página de inicio</string> + <string name="home_rearrangement_dialog_subtitle">Tenga en cuenta que para que los cambios surtan efecto, hay que reiniciar la aplicación.</string> + <string name="home_section_music">Música</string> + <string name="home_section_podcast">Pódcasts</string> + <string name="home_section_radio">Radio</string> + <string name="home_subtitle_best_of">Mejores pistas de tus artistas favoritos</string> + <string name="home_subtitle_made_for_you">Iniciar mix desde una cación que te gustó</string> + <string name="home_subtitle_new_internet_radio_station">Añadir una nueva emisora de radio</string> + <string name="home_subtitle_new_podcast_channel">Añadir un nuevo canal de pódcasts</string> + <string name="home_sync_starred_cancel">Cancelar</string> + <string name="home_sync_starred_download">Descargar</string> + <string name="home_sync_starred_subtitle">Descargar estas pistas usará una gran cantidad de datos</string> + <string name="home_sync_starred_title">Parece que hay algunas pistas destacadas para sincronizar</string> + <string name="home_sync_starred_albums_subtitle">Los álbumes marcados como favoritos estarán disponibles en el modo sin conexión.</string> + <string name="home_sync_starred_artists_subtitle">Has destacado artistas con música que no has descargado</string> + <string name="home_title_best_of">Lo mejor de</string> + <string name="home_title_discovery">Descubrir</string> + <string name="home_title_discovery_shuffle_all_button">Todo en aleatorio</string> + <string name="home_title_flashback">Recuerda</string> + <string name="home_title_internet_radio_station">Emisoras de radio en internet</string> + <string name="home_title_last_played">Reproducido últimamente</string> + <string name="home_title_last_played_see_all_button">Ver todo</string> + <string name="home_title_last_week">La semana pasada</string> + <string name="home_title_last_month">El mes pasado</string> + <string name="home_title_last_year">El año pasado</string> + <string name="home_title_made_for_you">Para ti</string> + <string name="home_title_most_played">Lo más reproducido</string> + <string name="home_title_most_played_see_all_button">Ver todo</string> + <string name="home_title_new_releases">Últimos estrenos</string> + <string name="home_title_newest_podcasts">Últimos pódcasts</string> + <string name="home_title_pinned_playlists">Listas de reproducción</string> + <string name="home_title_podcast_channels">Canales</string> + <string name="home_title_podcast_channels_see_all_button">Ver todo</string> + <string name="home_title_radio_station">Emisoras de radio</string> + <string name="home_title_recently_added">Añadido recientemente</string> + <string name="home_title_recently_added_see_all_button">Ver todo</string> + <string name="home_title_shares">Compartido</string> + <string name="home_title_starred_albums">★ Álbumes destacados</string> + <string name="home_title_starred_albums_see_all_button">Ver todo</string> + <string name="home_title_starred_artists">★ Artistas destacados</string> + <string name="home_title_starred_artists_see_all_button">Ver todo</string> + <string name="home_title_starred_tracks">★ Pistas destacadas</string> + <string name="home_title_starred_tracks_see_all_button">Ver todo</string> + <string name="home_title_top_songs">Tus mejores canciones</string> + <string name="home_option_reorganize">Reorganizar</string> + <string name="library_title_album">Álbumes</string> + <string name="library_title_album_see_all_button">Ver todo</string> + <string name="library_title_artist">Artistas</string> + <string name="library_title_artist_see_all_button">Ver todo</string> + <string name="library_title_genre">Géneros</string> + <string name="library_title_genre_see_all_button">Ver todo</string> + <string name="library_title_music_folder">Carpetas de música</string> + <string name="library_title_playlist">Listas de reproducción</string> + <string name="library_title_playlist_see_all_button">Ver todo</string> + <string name="login_empty">No has añadido ningún servidor</string> + <string name="login_title">Servidores de Subsonic</string> + <string name="login_title_expanded">Servidores de Subsonic</string> + <string name="media_route_menu_title">Emitir</string> + <string name="menu_add_button">Añadir</string> + <string name="menu_add_to_playlist_button">Añadir a la lista de reproducción</string> + <string name="menu_download_all_button">Descargar todo</string> + <string name="menu_rate_album">Valorar álbum</string> + <string name="menu_download_label">Descargas</string> + <string name="menu_filter_all">Todo</string> + <string name="menu_filter_download">Descargado</string> + <string name="menu_group_by_album">Álbum</string> + <string name="menu_group_by_artist">Artista</string> + <string name="settings_scan_result">Escaneo: hay %1$d pistas</string> + <string name="settings_support_title">Soporte al usuario</string> + <string name="settings_image_size">Resolución de la imagen</string> + <string name="settings_language">Idioma</string> + <string name="settings_system_language">Idioma del sistema</string> + <string name="settings_logout_title">Cerrar sesión</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Siga el desarrollo</string> + <string name="settings_github_title">Github</string> + <string name="menu_group_by_genre">Género</string> + <string name="menu_group_by_track">Pista</string> + <string name="menu_group_by_year">Año</string> + <string name="menu_home_label">Inicio</string> + <string name="menu_last_week_name">La semana pasada</string> + <string name="menu_last_month_name">El mes pasado</string> + <string name="menu_last_year_name">El año pasado</string> + <string name="menu_library_label">Biblioteca</string> + <string name="menu_search_button">Buscar</string> + <string name="menu_settings_button">Ajustes</string> + <string name="menu_sort_artist">Artista</string> + <string name="menu_sort_name">Nombre</string> + <string name="menu_sort_random">Aleatorio</string> + <string name="menu_sort_recently_added">Añadido recientemente</string> + <string name="menu_sort_recently_played">Reproducido recientemente</string> + <string name="menu_sort_most_played">Lo más reproducido</string> + <string name="menu_sort_most_recently_starred">Lo más destacado recientemente</string> + <string name="menu_sort_least_recently_starred">Lo menos destacado recientemente</string> + <string name="menu_pin_button">Añadir a la pantalla de inicio</string> + <string name="menu_unpin_button">Eliminar de la pantalla de inicio</string> + <string name="menu_sort_year">Año</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Limpiar la cola de reproducción</string> + <string name="player_queue_save_queue_success">Cola de reproducción guardada</string> + <string name="player_lyrics_download_failure">La letra no se puede descargar</string> + <string name="player_server_priority">Prioridad del servidor</string> + <string name="player_unknown_format">Formato desconocido</string> + <string name="player_transcoding">Transcodificando</string> + <string name="player_transcoding_requested">solicitado</string> + <string name="playlist_catalogue_title">Catálogo de listas de reproducción</string> + <string name="playlist_catalogue_title_expanded">Explorar listas de reproducción</string> + <string name="playlist_chooser_dialog_empty">No hay listas de reproducción</string> + <string name="playlist_chooser_dialog_negative_button">Cancelar</string> + <string name="playlist_chooser_dialog_neutral_button">Crear</string> + <string name="playlist_chooser_dialog_title">Añadir a una lista de reproducción</string> + <string name="playlist_chooser_dialog_toast_add_failure">Error al añadir a la lista</string> + <string name="playlist_chooser_dialog_toast_all_skipped">Todas las pistas se han descartado porque están repetidas</string> + <string name="playlist_counted_tracks">%1$d pistas • %2$s</string> + <string name="playlist_duration">Duración • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Pulsación larga para eliminar</string> + <string name="playlist_editor_dialog_hint_name">Nombre de la lista</string> + <string name="playlist_editor_dialog_negative_button">Cancelar</string> + <string name="playlist_editor_dialog_neutral_button">Eliminar</string> + <string name="playlist_editor_dialog_positive_button">Guardar</string> + <string name="playlist_editor_dialog_title">Editar lista</string> + <string name="playlist_page_play_button">Reproducir</string> + <string name="playlist_page_shuffle_button">Aleatorio</string> + <string name="playlist_song_count">Lista • %1$d pistas</string> + <string name="podcast_bottom_sheet_add_to_queue">Añadir a la cola</string> + <string name="podcast_bottom_sheet_delete">Eliminar</string> + <string name="podcast_bottom_sheet_download">Descargar</string> + <string name="podcast_bottom_sheet_go_to_channel">Ir al canal</string> + <string name="podcast_bottom_sheet_play_next">Reproducir siguiente</string> + <string name="podcast_bottom_sheet_remove">Eliminar</string> + <string name="podcast_channel_catalogue_title">Canales</string> + <string name="podcast_channel_catalogue_title_expanded">Explorar canales</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">URL del feed RSS</string> + <string name="podcast_channel_editor_dialog_title">Canal del pódcast</string> + <string name="podcast_channel_page_title_description_section">Descripción</string> + <string name="podcast_channel_page_title_episode_section">Episodios</string> + <string name="podcast_channel_page_title_no_episode_available">No hay episodios disponibles</string> + <string name="podcast_episode_download_request_snackbar">Petición enviada al servidor</string> + <string name="podcast_info_empty_button">Pulsa para ocultar la sección\nLos cambios serán visibles al reiniciar la app</string> + <string name="podcast_info_empty_subtitle">Una vez que añadas un canal, lo encontrarás aquí</string> + <string name="podcast_info_empty_title">No hay pódcasts</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">URL de la web de la radio</string> + <string name="radio_editor_dialog_hint_name">Nombre de la emisora</string> + <string name="radio_editor_dialog_hint_stream_url">URL de la emisora</string> + <string name="radio_editor_dialog_negative_button">Cancelar</string> + <string name="radio_editor_dialog_neutral_button">Eliminar</string> + <string name="radio_editor_dialog_positive_button">Guardar</string> + <string name="radio_editor_dialog_title">"Emisora "</string> + <string name="radio_station_info_empty_button">Pulsa para ocultar la sección\nLos cambios serán visibles al reiniciar la app</string> + <string name="radio_station_info_empty_subtitle">Una vez que añadas una emisora de radio, la encontrarás aquí</string> + <string name="radio_station_info_empty_title">No hay emisoras de radio</string> + <string name="rating_dialog_negative_button">Cancelar</string> + <string name="rating_dialog_positive_button">Guardar</string> + <string name="rating_dialog_title">Valorar</string> + <string name="search_hint">Buscar pista, artistas o álbumes</string> + <string name="search_info_minimum_characters">Introduzca al menos tres caracteres</string> + <string name="search_title_album">Álbumes</string> + <string name="settings_set_download_folder">Establecer la carpeta de descargas</string> + <string name="settings_system_equalizer_summary">Ajustes de audio</string> + <string name="settings_system_equalizer_title">Ecualizador del sistema</string> + <string name="search_title_artist">Artistas</string> + <string name="search_title_song">Pistas</string> + <string name="server_signup_dialog_action_low_security">Baja seguridad</string> + <string name="server_signup_dialog_action_delete_toast">Pulsación larga para eliminar</string> + <string name="server_signup_dialog_hint_local_address">URL local</string> + <string name="server_signup_dialog_hint_name">Nombre del servidor</string> + <string name="server_signup_dialog_hint_password">Contraseña</string> + <string name="server_signup_dialog_hint_url">URL del servidor</string> + <string name="server_signup_dialog_hint_username">Nombre de usuario</string> + <string name="server_signup_dialog_negative_button">Cancelar</string> + <string name="server_signup_dialog_neutral_button">Eliminar</string> + <string name="server_signup_dialog_positive_button">Guardar</string> + <string name="server_signup_dialog_title">Añadir servidor</string> + <string name="server_unreachable_dialog_negative_button">Cancelar</string> + <string name="server_unreachable_dialog_neutral_button">Ir al inicio de sesión</string> + <string name="server_unreachable_dialog_positive_button">Continuar de todas formas</string> + <string name="server_unreachable_dialog_summary">El servidor no está disponible. Si decide continuar, este diálogo no aparecerá de nuevo durante una hora.</string> + <string name="server_unreachable_dialog_title">No se puede conectar con el servidor</string> + <string name="settings_about_summary">Tempus es un cliente de música Subsonic ligero y de código abierto, diseñado nativamente para Android.</string> + <string name="settings_about_title">Acerca de</string> + <string name="settings_always_on_display">Pantalla siempre activa</string> + <string name="settings_allow_playlist_duplicates_summary">Si está habilitada, no se comprobará si hay pistas repetidas cuando se añadan a la lista.</string> + <string name="settings_audio_transcode_download_format">Formato de transcodificación</string> + <string name="settings_audio_transcode_download_priority_summary">Si está habilitada, Tempus no descargará la pista con las opciones de transcodificación que aparecen a continuación.</string> + <string name="settings_audio_transcode_download_priority_title">Dar prioridad a las opciones del servidor usadas para el streaming en las descargas</string> + <string name="settings_audio_transcode_download_summary">Si está habilitada, Tempus descargará las pistas transcodificadas.</string> + <string name="settings_audio_transcode_download_title">Descargas pistas transcodificadas</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Si está habilitada, se pedirá al servidor la duración estimada de la pista.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Calcular la duración del contenido</string> + <string name="settings_audio_transcode_format_download">Formato de transcodificación para las descargas</string> + <string name="settings_audio_transcode_format_mobile">Formato de transcodificación en red de datos móviles</string> + <string name="settings_audio_transcode_format_wifi">Formato de transcodificación en red Wi-Fi</string> + <string name="settings_audio_transcode_priority_summary">Si está habilitada, Tempus no reproducirá la pista con las opciones de transcodificación que aparecen a continuación.</string> + <string name="settings_audio_transcode_priority_title">Dar prioridad a las opciones de transcodificación del servidor</string> + <string name="settings_audio_transcode_priority_toast">Prioridad a la hora de transcodificar una pista</string> + <string name="settings_buffering_strategy">Estrategia de buffer</string> + <string name="settings_buffering_strategy_summary">Para que los cambios surtan efecto, debes reinciar la app.</string> + <string name="settings_choose_download_folder">Elige una carpeta para descargar los archivos de música</string> + <string name="settings_clear_download_folder">Limpiar la carpeta de descargas</string> + <string name="settings_continuous_play_summary">Permite que la música siga reproduciéndose una vez que la lista de reproducción ha terminado, reproduciendo pistas similares</string> + <string name="settings_continuous_play_title">Reproducción continua</string> + <string name="settings_covers_cache">Tamaño de la caché de portadas de álbumes</string> + <string name="settings_data_saving_mode_summary">Evitar descargar las portadas de álbumes para reducir el uso de datos</string> + <string name="settings_data_saving_mode_title">Limitr el uso de datos móviles</string> + <string name="settings_delete_download_storage_summary">Al continuar se eliminarán de forma irreversible todos los elementos guardados.</string> + <string name="settings_delete_download_storage_title">Eliminar elementos guardados</string> + <string name="settings_download_storage_title">Almacenamiento de descargas</string> + <string name="settings_max_bitrate_download">Tasa de bits para las descargas</string> + <string name="settings_max_bitrate_mobile">Tasa de bits en datos móviles</string> + <string name="settings_max_bitrate_wifi">Tasa de bits en Wi-Fi</string> + <string name="settings_media_cache">Tamaño de la caché multimedia</string> + <string name="settings_music_directory">Mostrar carpetas de música</string> + <string name="settings_music_directory_summary">Si está habilitada, se mostrará la sección de carpetas de música. Tenga en cuenta que para que la navegación funcione correctamente, el servidor debe soportar esta característica.</string> + <string name="settings_podcast">Mostrar pódcasts</string> + <string name="settings_podcast_summary">Si está habilitada, se mostrará la sección de pódcasts. Reinicia la aplicación para que los cambios surtan efecto.</string> + <string name="settings_audio_quality">Mostrar calidad de audio</string> + <string name="settings_audio_quality_summary">La tasa de bits y el formato de audio se mostrarán para cada pista de audio.</string> + <string name="settings_song_rating_summary">Si está habilitada, muestra la valoración de la pista como barra de 5 estrellas en la página del control de reproducción.\n\n*Requiere reiniciar la aplicación</string> + <string name="settings_item_rating">Mostrar valoración de los elementos</string> + <string name="settings_queue_syncing_title">Sincronizar cola de reproducción para este usuario</string> + <string name="settings_show_mini_shuffle_button_summary">Si está habilitada, muestra el botón de reproducción aleatoria y oculta el botón de «Favoritos» en el minirreproductor</string> + <string name="settings_radio">Mostrar emisoras de radio</string> + <string name="settings_auto_download_lyrics_summary">Descargar las letras automáticamente cuando estén disponibles para que se puedan mostrar cuando no hay conexión.</string> + <string name="settings_replay_gain">Configurar el modo de ganancia de reproducción</string> + <string name="settings_rounded_corner">Esquinas redondeadas</string> + <string name="settings_rounded_corner_size">Tamaño de las esquinas</string> + <string name="settings_rounded_corner_summary">Si está habilitada, establece un ángulo de curvatura para todas las portadas de álbumes. Los cambios se aplicarán después de reiniciar la app.</string> + <string name="settings_scan_title">Escanear biblioteca</string> + <string name="streaming_cache_storage_dialog_summary">Cambiar la ubicación de los archivos en caché a otro almacenamiento puede causar el borrado de todos los archivos en caché en el anterior almacenamiento.</string> + <string name="streaming_cache_storage_dialog_title">Seleccióna un tipo de almacenamiento</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Externo</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Interno</string> + <string name="track_info_album">Álbum</string> + <string name="track_info_artist">Artista</string> + <string name="track_info_bit_depth">Profundidad de bits</string> + <string name="track_info_bitrate">Tasa de bits</string> + <string name="track_info_sampling_rate">Tasa de muestreo</string> + <string name="track_info_content_type">Tipo de contenido</string> + <string name="track_info_dialog_positive_button">Aceptar</string> + <string name="track_info_transcoded_content_type">Tipo de contenido en la transcodificación</string> + <string name="track_info_transcoded_suffix">Extensión en la transcodificación</string> + <string name="track_info_year">Año</string> + <string name="track_info_summary_transcoding_codec">La aplicación pedirá al servidor transcodificar el archivo. El códec solicitado por el usuario es %1$s, mientras que la tasa de bits será la misma que la del archivo de origen. La posible transcodificación del archivo al formato seleccionado dependerá del servidor, que podrá soportar, o no, la operación.</string> + <string name="track_info_title">Título</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">Agradecimientos a unDraw, ya que sin sus ilustraciones no podríamos haber hecho esta aplicación más bonita.</string> + <string name="settings_scrobble_title">Habilitar el rastreo de música (scrobbling)</string> + <string name="settings_streaming_cache_size">Tamaño de la caché de streaming</string> + <string name="settings_streaming_cache_storage_title">Almacenamiento de la caché de streaming</string> + <string name="settings_share_title">Habilitar el uso compartido de música</string> + <string name="settings_sub_summary_scrobble">Debe saber que el scrobbling necesita que el servidor tenga habilitada esta característica</string> + <string name="settings_summary_syncing">Devuelve el estado de la cola de reproducción para este usuario. Esto incluye las pistas en la cola, la pista que se está reproduciendo actualmente y su posición. El servidor debe soportar esta característica.</string> + <string name="settings_summary_streaming_cache_size">%1$s\nEn uso: %2$s MiB</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="track_info_track_number">Número de pista</string> + <string name="settings_item_rating_summary">Si está habilitada, se mostrará la valoración del elemento y si está marcado como favorito.</string> + <string name="settings_queue_syncing_countdown">Temporizador de sincronización</string> + <string name="settings_queue_syncing_summary">Si está habilitada, el usuario podrá guardar la cola de reproducción y restaurarla cuando abra la aplicación.</string> + <string name="settings_radio_summary">Si está habilitada, se mostrará la sección de emisoras de radio. Reinicia la app para que los cambios surtan efecto.</string> + <string name="settings_rounded_corner_size_summary">Establece la proporción del ángulo de curvatura.</string> + <string name="track_info_dialog_title">Información de la pista</string> + <string name="track_info_disc_number">Número de disco</string> + <string name="track_info_duration">Duración</string> + <string name="track_info_genre">Género</string> + <string name="track_info_path">Ruta del archivo</string> + <string name="track_info_size">Tamaño</string> + <string name="track_info_suffix">Extensión</string> + <string name="settings_summary_skip_min_star_rating">Cuando estás escuchando una radio del artista, un mix instantáneo, o cuando se reproduce música en modo aleatorio, las pistas por debajo de cierta valoración se ignorarán.</string> + <string name="settings_summary_replay_gain">La ganancia de reproducción es una característica que permite ajustar el nivel de volumen de las pistas de audio para una experiencia auditiva coherente. Esta opción solo es efectiva si la pista contiene los metadatos necesarios.</string> + <string name="settings_summary_scrobble">El scrobbling es una característica que permite a tu dispositivo enviar información sobre las pistas que escuchas al servidor de música. Esta información ayuda a crear recomendaciones personalizadas basadas en tus gustos musicales.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Sincronizar pistas destacadas para uso sin conexión</string> + <string name="settings_theme">Tema</string> + <string name="settings_title_data">Datos</string> + <string name="settings_title_general">General</string> + <string name="settings_title_playlist">Lista de reproducción</string> + <string name="settings_title_rating">Valoraciones</string> + <string name="settings_title_replay_gain">Ganancia de reproducción</string> + <string name="settings_title_scrobble">Rastreo de música (scrobble)</string> + <string name="settings_title_skip_min_star_rating">Ignorar pistas según su valoración</string> + <string name="settings_title_skip_min_star_rating_dialog">Pistas con una valoración de:</string> + <string name="settings_title_share">Compartir</string> + <string name="settings_title_syncing">Sincronización</string> + <string name="settings_title_transcoding">Transcodificación</string> + <string name="settings_title_transcoding_download">Transcodificación en descargas</string> + <string name="settings_title_ui">Interfaz de usuario</string> + <string name="settings_transcoded_download">Descargas transcodificadas</string> + <string name="settings_version_title">Versión</string> + <string name="settings_wifi_only_title">Aviso de streaming solo por Wi-Fi</string> + <string name="share_bottom_sheet_copy_link">Copiar enlace</string> + <string name="share_update_dialog_negative_button">Cancelar</string> + <string name="share_update_dialog_positive_button">Guardar</string> + <string name="share_update_dialog_title">Compartir</string> + <string name="song_bottom_sheet_rate">Valorar</string> + <string name="song_bottom_sheet_remove">Eliminar</string> + <string name="song_bottom_sheet_share">Compartir</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Cancelar</string> + <string name="starred_sync_dialog_neutral_button">Continuar</string> + <string name="starred_sync_dialog_positive_button">Continuar y descargar</string> + <string name="share_bottom_sheet_delete">Eliminar compartición</string> + <string name="share_bottom_sheet_update">Actualizar compartición</string> + <string name="share_subtitle_item">Fecha de caducidad: %1$s</string> + <string name="share_no_expiration">Nunca</string> + <string name="share_unsupported_error">El uso compartido no está soportado o no está habilitado</string> + <string name="asset_link_debug_toast">Enlace de recurso: %1$s</string> + <string name="share_update_dialog_hint_description">Descripción</string> + <string name="share_update_dialog_hint_expiration_date">Fecha de caducidad</string> + <string name="song_bottom_sheet_add_to_queue">Añadir a la cola</string> + <string name="song_bottom_sheet_download">Descargar</string> + <string name="settings_summary_share">Permite al usuario compartir música con un link. La característica debe estar soportada y habilitada en el servidor y está limitada a pistas individuales, álbumes y listas de reproducción.</string> + <string name="settings_wifi_only_summary">Pide la confirmación del usuario antes de usar los datos móviles.</string> + <string name="song_bottom_sheet_add_to_playlist">Añadir a la lista</string> + <string name="song_bottom_sheet_error_retrieving_album">Error al obtener información del álbum</string> + <string name="song_bottom_sheet_error_retrieving_artist">Error al obtener información del artista</string> + <string name="song_bottom_sheet_go_to_album">Ir al álbum</string> + <string name="song_bottom_sheet_go_to_artist">Ir al artista</string> + <string name="song_bottom_sheet_instant_mix">Mix instantáneo</string> + <string name="song_bottom_sheet_play_next">Reproducir siguiente</string> + <string name="song_list_page_downloaded">Descargado</string> + <string name="song_list_page_most_played">Pistas más reproducidas</string> + <string name="song_list_page_recently_added">Pistas añadidas recientemente</string> + <string name="song_list_page_recently_played">Pistas reproducidas recientemente</string> + <string name="song_list_page_starred">Pistas destacadas</string> + <string name="song_list_page_top">Las mejores pistas de %1$s</string> + <string name="song_list_page_year">Año %1$d</string> + <string name="settings_summary_transcoding">La prioridad que se aplica al modo de transcodificación. Si se selecciona \"Reproducción directa\", la tasa de bits del archivo no cambiará.</string> + <string name="starred_sync_dialog_summary">Descargar las pistas destacadas podría consumir una gran cantidad de datos</string> + <string name="starred_sync_dialog_title">Sincronizar las pistas destacadas</string> + <string name="starred_album_sync_dialog_title">Sincronizar álbumes favoritos</string> + <string name="streaming_cache_storage_dialog_sub_summary">Para que los cambios tengan efecto, reinicia la app.</string> + <string name="settings_summary_transcoding_download">Descarga los archivos multimedia transcodificados. Si esta opción está habilitada, no se usará el endpoint de descarga, sino las siguientes opciones.\n\nSi el formato de transcodificación para las descargas se establece en \"Descarga directa\", no se modificará la tasa de bits del archivo.</string> + <string name="settings_summary_transcoding_estimate_content_length">Cuando el archivo se transcodifica en tiempo real, el cliente normalmente no muestra la duración de la pista. Es posible solicitar a los servidores que soporten esta característica, que calculen la duración de la pista que se está reproduciendo, pero los tiempos de respuesta podrían aumentar.</string> + <string name="settings_sync_starred_albums_for_offline_use_title">Sincronizar álbumes favoritos para uso sin conexión</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Si está habilitada, las pistas destacadas se descargarán para uso sin conexión.</string> + <string name="track_info_summary_downloaded_file">El archivo se ha descargado usando las APIs de Subsonic. El códec y la tasa de bits del archivo se mantienen sin cambios respecto al archivo de origen.</string> + <string name="track_info_summary_full_transcode">La aplicación pedirá al servidor transcodificar el archivo y modificar su tasa de bits. El códec pedido por el usuario es %1$s, con una tasa de bits de %2$s. Cualquier cambio en el códec y tasa de bits del archivo en el formato elegido será manejado por el servidor, que puede, o no, soportar esta operación.</string> + <string name="track_info_summary_original_file">La aplicación solo leerá el archivo original ofrecido por el servidor. La app pedirá al servidor, de forma explícita, el archivo sin transcodificar con la tasa de bits de origen.</string> + <string name="track_info_summary_server_prioritized">La calidad del archivo a reproducir queda a decisión del servidor. La app no forzará la elección del códec y la tasa de bits para ninguna posible transcodificación.</string> + <string name="track_info_summary_transcoding_bitrate">La aplicación pedirá al servidor modificar la tasa de bits del archivo. El usuario ha pedido una tasa de bits de %1$s, mientras que el códec del archivo origen se mantendrá sin cambios. Cualquier cambio en la tasa de bits del archivo en el formato seleccionado será realizado por el servidor, que podrá soportar, o no, la operación.</string> + <string name="playlist_chooser_dialog_toast_add_success">Se ha añadido a la lista</string> + <string name="settings_song_rating">Mostrar valoración de las pistas</string> + <string name="home_sync_starred_albums_title">Sincronizar álbumes favoritos</string> + <string name="settings_sync_starred_artists_for_offline_use_title">Sincronizar artistas destacados para uso sin conexión</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">Si está habilitada, los álbumes favoritos se descargarán para uso sin conexión.</string> + <string name="starred_artist_sync_dialog_title">Sincronizar artistas destacados</string> + <string name="starred_album_sync_dialog_summary">Descargar los álbumes favoritos puede consumir una gran cantidad de datos.</string> + <string name="equalizer_fragment_title">Ecualizador</string> + <string name="equalizer_reset">Restablecer</string> + <string name="equalizer_enable">Habilitar</string> + <string name="equalizer_not_supported">No disponible en este dispositivo</string> + <string name="settings_app_equalizer">Ecualizador</string> + <string name="settings_app_equalizer_summary">Abrir el ecualizador integrado</string> + <string name="settings_download_folder_cleared">Se ha limpiado la carpeta de descargas.</string> + <string name="settings_download_folder_set">Se ha establecido la carpeta de descargas</string> + <string name="widget_label">Widget de Tempus</string> + <string name="widget_not_playing">En pausa</string> + <string name="widget_placeholder_subtitle">Abrir Tempus</string> + <string name="widget_time_duration_placeholder">0:00</string> + <string name="widget_content_desc_album_art">Portada del álbum</string> + <string name="widget_content_desc_play_pause">Reproducir o pausar</string> + <string name="widget_content_desc_next">Siguiente pista</string> + <string name="widget_content_desc_repeat">Cambiar modo de repetición</string> + <string name="widget_content_desc_shuffle">Activar/desactivar aleatorio</string> + <string name="widget_content_desc_prev">Pista anterior</string> + <string name="download_refresh_no_directory">Establece una carpeta de descarga para actualizar tus descargas</string> + <string name="home_sync_starred_artists_title">Sincronizar artistas destacados</string> + <string name="player_lyrics_download_content_description">Descargar letras para uso sin conexión</string> + <string name="player_lyrics_downloaded_content_description">Letras descargadas para uso sin conexión</string> + <string name="player_lyrics_download_success">Letra guardada para uso sin conexión</string> + <string name="settings_allow_playlist_duplicates">Permitir añadir pistas repetidas a la lista</string> + <string name="settings_support_summary">Participa en las discusiones y el soporte de la comunidad</string> + <string name="settings_show_mini_shuffle_button">Mostrar el botón «Aleatorio»</string> + <string name="settings_auto_download_lyrics">Descargar automáticamente las letras</string> + <string name="starred_artist_sync_dialog_summary">Descargar los artistas destacados podría consumir una gran cantidad de datos.</string> + <string name="settings_sync_starred_artists_for_offline_use_summary">Si está habilitada, los artistas destacados se descargarán para uso sin conexión.</string> + <string name="widget_time_elapsed_placeholder">0:00</string> + <string name="exo_controls_heart_off_description">Eliminar de favoritos</string> + <string name="asset_link_chip_text">%1$s • %2$s</string> + <string name="asset_link_copied_toast">Copiado %1$s al portapapeles</string> + <string name="settings_album_detail">Mostrar los detalles del álbum</string> + <string name="settings_album_detail_summary">Si está habilitada, muestra los detalles del álbum, como el género, el número de pistas, etc. en la página de álbum</string> + <string name="asset_link_clipboard_label">Enlace de recurso de Tempus</string> + <string name="asset_link_label_song">UID de la pista</string> + <string name="asset_link_label_album">UID del álbum</string> + <string name="asset_link_label_artist">UID del artista</string> + <string name="asset_link_label_playlist">UID de la lista de reproducción</string> + <string name="asset_link_label_genre">UID del género</string> + <string name="asset_link_label_year">UID del año</string> + <string name="asset_link_label_unknown">UID del recurso</string> + <string name="asset_link_error_unsupported">Enlace de recurso no válido</string> + <string name="asset_link_error_song">No se ha podido abrir la pista</string> + <string name="asset_link_error_album">No se ha podido abrir el álbum</string> + <string name="asset_link_error_artist">No se ha podido abrir el artista</string> + <string name="asset_link_error_playlist">No se ha podido abrir la lista de reproducción</string> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-fr/arrays.xml b/app/src/main/res/values-fr/arrays.xml new file mode 100644 index 0000000..7d0198c --- /dev/null +++ b/app/src/main/res/values-fr/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Clair</item> + <item>Sombre</item> + <item>Système</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Grand</item> + <item>Moyen</item> + <item>Petit</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Haute</item> + <item>Moyenne</item> + <item>Basse</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Désactivé</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Lecture directe</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Lecture directe</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Téléchargement direct</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Dix secondes</item> + <item>Cinq secondes</item> + <item>Deux secondes</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Grand</item> + <item>Moyen</item> + <item>Petit</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Désactivé</item> + <item>Piste</item> + <item>Album</item> + <item>Auto</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Ne pas transcoder</item> + <item>Réglages du serveur</item> + <item>Format de transcodage (Wi-FI)</item> + <item>Format de transcodage (Mobile)</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Minimum</item> + <item>Modérée</item> + <item>Agressive</item> + <item>Extrême</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>0 étoile minimum</item> + <item>1 étoile minimum</item> + <item>2 étoiles minimum</item> + <item>3 étoiles minimum</item> + <item>4 étoiles minimum</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000..b3d5d16 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,449 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Si vous rencontrez un problème, visitez https://dontkillmyapp.com. Des instructions pour désactiver les fonctions de sauvegarde d\'énergie qui pourrait affecter les performance de l\'app y sont disponibles.</string> + <string name="activity_battery_optimizations_summary">Veuillez désactiver les optimisations de la batterie pour permettre la lecture des médias lorsque l\'écran est éteint.</string> + <string name="activity_battery_optimizations_title">Optimisations de la batterie</string> + <string name="activity_info_offline_mode">Mode hors-ligne</string> + <string name="album_bottom_sheet_add_to_playlist">Ajouter à une playlist</string> + <string name="album_bottom_sheet_add_to_queue">Ajouter à la file d\'attente</string> + <string name="album_bottom_sheet_download_all">Télécharger tout</string> + <string name="album_bottom_sheet_go_to_artist">Aller à l\'artiste</string> + <string name="album_bottom_sheet_instant_mix">Mix instantané</string> + <string name="album_bottom_sheet_play_next">Lire après</string> + <string name="album_bottom_sheet_remove_all">Retirer tout</string> + <string name="album_bottom_sheet_share">Partager</string> + <string name="album_bottom_sheet_shuffle">Mélanger</string> + <string name="album_catalogue_title">Albums</string> + <string name="album_catalogue_title_expanded">Parcourir les Albums</string> + <string name="album_error_retrieving_artist">Erreur de récupération de l\'artiste</string> + <string name="album_list_page_downloaded">Albums téléchargés</string> + <string name="album_list_page_most_played">Albums les plus joués</string> + <string name="album_list_page_new_releases">Nouvelles sorties</string> + <string name="album_list_page_recently_added">Albums récemment ajoutés</string> + <string name="album_list_page_recently_played">Albums récemment joués</string> + <string name="album_list_page_starred">Albums favoris</string> + <string name="album_list_page_title">Albums</string> + <string name="album_page_extra_info_button">Similaire</string> + <string name="album_page_play_button">Lire</string> + <string name="album_page_release_date_label">Sorti le %1$s</string> + <string name="album_page_release_dates_label">Sorti le %1$s, initialement %2$s</string> + <string name="album_page_shuffle_button">Mélanger</string> + <string name="album_page_tracks_count_and_duration">%1$d titres • %2$d minutes</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Recherche…</string> + <string name="artist_bottom_sheet_instant_mix">Mix instantané</string> + <string name="artist_bottom_sheet_shuffle">Mélanger</string> + <string name="artist_catalogue_title">Artistes</string> + <string name="artist_catalogue_title_expanded">Parcourir les artistes</string> + <string name="artist_error_retrieving_radio">Erreur de récupération de la radio de l\'artiste</string> + <string name="artist_error_retrieving_tracks">Erreur de récupération des titres de l\'artiste</string> + <string name="artist_list_page_downloaded">Artistes téléchargés</string> + <string name="artist_list_page_starred">Artistes favoris</string> + <string name="artist_list_page_title">Artistes</string> + <string name="artist_page_radio_button">Radio</string> + <string name="artist_page_shuffle_button">Mélanger</string> + <string name="artist_page_switch_layout_button">Changer la disposition</string> + <string name="artist_page_title_album_more_like_this_button">Similaire</string> + <string name="artist_page_title_album_section">Albums</string> + <string name="artist_page_title_biography_more_button">Plus</string> + <string name="artist_page_title_biography_section">Biographie</string> + <string name="artist_page_title_most_streamed_song_section">Musiques les plus streamées</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Voir tout</string> + <string name="battery_optimization_negative_button">Ignorer</string> + <string name="battery_optimization_neutral_button">Ne pas me redemander</string> + <string name="battery_optimization_positive_button">Désactiver</string> + <string name="connection_alert_dialog_negative_button">Annuler</string> + <string name="connection_alert_dialog_neutral_button">Activer l\'économie de données</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">L\'accès au serveur Subsonic sur des connexions autres que le Wi-Fi a été bloqué. Pour empêcher cette alerte de réapparaître, désactiver la vérification de la connexion dans les paramètres de l\'app.</string> + <string name="connection_alert_dialog_title">Wi-Fi déconnecté</string> + <string name="content_description_shuffle_button">Mélanger</string> + <string name="delete_download_storage_dialog_negative_button">Annuler</string> + <string name="delete_download_storage_dialog_positive_button">Continuer</string> + <string name="delete_download_storage_dialog_summary">Attention, la poursuite de cette action entraînera la suppression définitive de tous les éléments sauvegardés et téléchargés à partir de tous les serveurs</string> + <string name="delete_download_storage_dialog_title">Supprimer les éléments téléchargés</string> + <string name="description_empty_title">Aucune description disponible</string> + <string name="disc_titlefull">Disque %1$s - %2$s</string> + <string name="disc_titleless">Disque %1$s</string> + <string name="download_directory_dialog_negative_button">Annuler</string> + <string name="download_directory_dialog_positive_button">Télécharger</string> + <string name="download_directory_dialog_summary">Toutes les pistes dans ce dossier seront téléchargées. Les pistes dans les sous-dossiers ne seront pas téléchargées.</string> + <string name="download_directory_dialog_title">Télécharger toutes les pistes.</string> + <string name="download_info_empty_subtitle">Dès que vous téléchargerez une musique, vous la trouverez ici</string> + <string name="download_info_empty_title">Aucun téléchargement pour l\'instant</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s éléments</string> + <string name="download_item_single_subtitle_formatter">%1$s éléments</string> + <string name="download_shuffle_all_subtitle">Tout mélanger</string> + <string name="download_storage_dialog_sub_summary">Redémarrez l\'application pour appliquer les changements.</string> + <string name="download_storage_dialog_summary">Modifier le chemin de stockage des téléchargements entraînera la suppression immédiate de tous les fichiers précédemment téléchargés dans le nouvel espace de stockage.</string> + <string name="download_storage_dialog_title">Sélectionnez l\'option de stockage</string> + <string name="download_storage_external_dialog_positive_button">Externe</string> + <string name="download_storage_internal_dialog_negative_button">Interne</string> + <string name="download_title_section">Téléchargements</string> + <string name="downloaded_bottom_sheet_add_to_queue">Ajouter à la liste d\'attente</string> + <string name="downloaded_bottom_sheet_play_next">Lire juste après</string> + <string name="downloaded_bottom_sheet_remove">Retirer</string> + <string name="downloaded_bottom_sheet_remove_all">Retirer tout</string> + <string name="downloaded_bottom_sheet_shuffle">Mélanger</string> + <string name="empty_string" /> + <string name="error_required">Requis</string> + <string name="error_server_prefix">préfixe http ou https requis</string> + <string name="exo_download_notification_channel_name">Téléchargements</string> + <string name="filter_info_selection">Sélectionnez deux filtres ou plus</string> + <string name="filter_title">Filtrer</string> + <string name="filter_artist">Filtrer par artiste</string> + <string name="filter_title_expanded">Filtrer par genre</string> + <string name="generic_list_page_count">(%1$d)</string> + <string name="generic_list_page_count_unknown">(+%1$d)</string> + <string name="genre_catalogue_title">Catalogue des Genres</string> + <string name="genre_catalogue_title_expanded">Parcourir les Genres</string> + <string name="github_update_dialog_negative_button">Me rappeler plus tard</string> + <string name="github_update_dialog_neutral_button">Me soutenir</string> + <string name="github_update_dialog_positive_button">Télécharger maintenant</string> + <string name="github_update_dialog_summary">Une version plus récente de l\'app est disponible sur Github.</string> + <string name="github_update_dialog_title">Mise à jour disponible</string> + <string name="home_rearrangement_dialog_negative_button">Annuler</string> + <string name="home_rearrangement_dialog_neutral_button">Réinitialiser</string> + <string name="home_rearrangement_dialog_positive_button">Sauvegarder</string> + <string name="home_rearrangement_dialog_title">Réorganiser l\'écran d\'accueil</string> + <string name="home_rearrangement_dialog_subtitle">Veuillez noter que ces changements ne s\'appliqueront qu\'après redémarrage de l\'application.</string> + <string name="home_section_music">Musique</string> + <string name="home_section_podcast">Podcast</string> + <string name="home_section_radio">Radio</string> + <string name="home_subtitle_best_of">Meilleurs morceaux de vos artistes préférés</string> + <string name="home_subtitle_made_for_you">Commencez le mix à partir d\'une chanson que vous aimez</string> + <string name="home_subtitle_new_internet_radio_station">Ajouter une radio</string> + <string name="home_subtitle_new_podcast_channel">Ajouter une chaîne de podcasts</string> + <string name="home_sync_starred_cancel">Annuler</string> + <string name="home_sync_starred_download">Télécharger</string> + <string name="home_sync_starred_subtitle">Télécharger ces titres peut entraîner une utilisation importante de données</string> + <string name="home_sync_starred_title">On dirait qu\'il y a des titres favoris à synchroniser</string> + <string name="home_sync_starred_albums_title">Synchroniser les albums favoris</string> + <string name="home_sync_starred_albums_subtitle">Les albums marqués d\'une étoile seront disponibles hors-ligne</string> + <string name="home_title_best_of">Best of</string> + <string name="home_title_discovery">Découverte</string> + <string name="home_title_discovery_shuffle_all_button">Tout mélanger</string> + <string name="home_title_flashback">Flashback</string> + <string name="home_title_internet_radio_station">Stations Radio Internet</string> + <string name="home_title_last_played">Écouté dernièrement</string> + <string name="home_title_last_played_see_all_button">Voir tout</string> + <string name="home_title_last_week">Sur la dernière semaine</string> + <string name="home_title_last_month">Sur le dernier mois</string> + <string name="home_title_last_year">Sur la dernière année</string> + <string name="home_title_made_for_you">Faits pour vous</string> + <string name="home_title_most_played">Les plus écoutés</string> + <string name="home_title_most_played_see_all_button">Voir tout</string> + <string name="home_title_new_releases">Nouvelles sorties</string> + <string name="home_title_newest_podcasts">Nouveau podcasts</string> + <string name="home_title_pinned_playlists">Playlists</string> + <string name="home_title_podcast_channels">Chaînes</string> + <string name="home_title_podcast_channels_see_all_button">Voir tout</string> + <string name="home_title_radio_station">Stations radio</string> + <string name="home_title_recently_added">Ajouté récemment</string> + <string name="home_title_recently_added_see_all_button">Voir tout</string> + <string name="home_title_shares">Partages</string> + <string name="home_title_starred_albums">★ Albums favoris</string> + <string name="home_title_starred_albums_see_all_button">Voir tout</string> + <string name="home_title_starred_artists">★ Artistes favoris</string> + <string name="home_title_starred_artists_see_all_button">Voir tout</string> + <string name="home_title_starred_tracks">★ Titres favoris</string> + <string name="home_title_starred_tracks_see_all_button">Voir tout</string> + <string name="home_title_top_songs">Vos morceaux préférés</string> + <string name="home_option_reorganize">Réorganiser</string> + <string name="library_title_album">Albums</string> + <string name="library_title_album_see_all_button">Voir tout</string> + <string name="library_title_artist">Artistes</string> + <string name="library_title_artist_see_all_button">Voir tout</string> + <string name="library_title_genre">Genres</string> + <string name="library_title_genre_see_all_button">Voir tout</string> + <string name="library_title_music_folder">Dossiers de musiques</string> + <string name="library_title_playlist">Playlists</string> + <string name="library_title_playlist_see_all_button">Voir tout</string> + <string name="login_empty">Aucun serveur ajouté</string> + <string name="login_title">Serveurs Subsonic</string> + <string name="login_title_expanded">Serveurs Subsonic</string> + <string name="media_route_menu_title">Cast</string> + <string name="menu_add_button">Ajouter</string> + <string name="menu_add_to_playlist_button">Ajouter à une playlist</string> + <string name="menu_download_all_button">Télécharger tout</string> + <string name="menu_rate_album">Noter l\'album</string> + <string name="menu_download_label">Téléchargé</string> + <string name="menu_filter_all">Tout</string> + <string name="menu_filter_download">Téléchargé</string> + <string name="menu_group_by_album">Album</string> + <string name="menu_group_by_artist">Artiste</string> + <string name="menu_group_by_genre">Genre</string> + <string name="menu_group_by_track">Piste</string> + <string name="menu_group_by_year">Année</string> + <string name="menu_home_label">Accueil</string> + <string name="menu_last_week_name">Sur la dernière semaine</string> + <string name="menu_last_month_name">Sur le dernier mois</string> + <string name="menu_last_year_name">Sur la dernière année</string> + <string name="menu_library_label">Bibliothèque</string> + <string name="menu_search_button">Rechercher</string> + <string name="menu_settings_button">Paramètres</string> + <string name="menu_sort_artist">Artiste</string> + <string name="menu_sort_name">Nom</string> + <string name="menu_sort_random">Aléatoire</string> + <string name="menu_sort_recently_added">Récemment ajoutés</string> + <string name="menu_sort_recently_played">Récemment lus</string> + <string name="menu_sort_most_played">Plus lus</string> + <string name="menu_sort_most_recently_starred">Favoris les plus récents</string> + <string name="menu_sort_least_recently_starred">Favoris les plus anciens</string> + <string name="menu_pin_button">Ajouter à l\'écran d\'accueil</string> + <string name="menu_unpin_button">Retirer de l\'écran d\'accueil</string> + <string name="menu_sort_year">Année</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Vider la file d\'attente</string> + <string name="player_queue_save_queue_success">File d\'attente sauvegardée</string> + <string name="player_server_priority">Priorité serveur</string> + <string name="player_unknown_format">Format inconnu</string> + <string name="player_transcoding">Transcodage</string> + <string name="player_transcoding_requested">demandé</string> + <string name="playlist_catalogue_title">Catalogue des Playlists</string> + <string name="playlist_catalogue_title_expanded">Parcourir les playlists</string> + <string name="playlist_chooser_dialog_empty">Pas de playlist</string> + <string name="playlist_chooser_dialog_negative_button">Annuler</string> + <string name="playlist_chooser_dialog_neutral_button">Créer</string> + <string name="playlist_chooser_dialog_title">Ajouter à une playlist</string> + <string name="playlist_chooser_dialog_toast_add_success">Titre ajouté à la playlist</string> + <string name="playlist_chooser_dialog_toast_add_failure">Échec d\'ajout du titre à la playlist</string> + <string name="playlist_counted_tracks">%1$d titres • %2$s</string> + <string name="playlist_duration">Durée • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Appui long pour supprimer</string> + <string name="playlist_editor_dialog_hint_name">Nom de la playlist</string> + <string name="playlist_editor_dialog_negative_button">Annuler</string> + <string name="playlist_editor_dialog_neutral_button">Supprimer</string> + <string name="playlist_editor_dialog_positive_button">Enregistrer</string> + <string name="playlist_editor_dialog_title">Créer une playlist</string> + <string name="playlist_page_play_button">Lire</string> + <string name="playlist_page_shuffle_button">Mélanger</string> + <string name="playlist_song_count">Playlist • %1$d titres</string> + <string name="podcast_bottom_sheet_add_to_queue">Ajouter à la liste d\'attente</string> + <string name="podcast_bottom_sheet_delete">Supprimer</string> + <string name="podcast_bottom_sheet_download">Télécharger</string> + <string name="podcast_bottom_sheet_go_to_channel">Aller à la chaîne</string> + <string name="podcast_bottom_sheet_play_next">Lire juste après</string> + <string name="podcast_bottom_sheet_remove">Retirer</string> + <string name="podcast_channel_catalogue_title">Chaînes</string> + <string name="podcast_channel_catalogue_title_expanded">Parcourir les chaînes</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">Url RSS</string> + <string name="podcast_channel_editor_dialog_title">Chaîne</string> + <string name="podcast_channel_page_title_description_section">Description</string> + <string name="podcast_channel_page_title_episode_section">Épisodes</string> + <string name="podcast_channel_page_title_no_episode_available">Aucun épisode disponible</string> + <string name="podcast_episode_download_request_snackbar">Votre requête a été envoyée au serveur</string> + <string name="podcast_info_empty_button">Cliquez pour cacher la section\nLes changements seront visibles au redémarrage de l\'app</string> + <string name="podcast_info_empty_subtitle">Dès que vous ajouterez une chaîne, vous la retrouverez ici</string> + <string name="podcast_info_empty_title">Aucun podcast trouvé!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">URL de la page d\'accueil de la radio</string> + <string name="radio_editor_dialog_hint_name">Nom de la radio</string> + <string name="radio_editor_dialog_hint_stream_url">URL du flux radio</string> + <string name="radio_editor_dialog_negative_button">Annuler</string> + <string name="radio_editor_dialog_neutral_button">Supprimer</string> + <string name="radio_editor_dialog_positive_button">Enregistrer</string> + <string name="radio_editor_dialog_title">Station Radio Internet</string> + <string name="radio_station_info_empty_button">Cliquez pour cacher la section\nLes changements seront visibles au redémarrage de l\'app</string> + <string name="radio_station_info_empty_subtitle">Dès que vous ajouterez une station radio, vous la retrouverez ici</string> + <string name="radio_station_info_empty_title">Aucune station trouvée!</string> + <string name="rating_dialog_negative_button">Annuler</string> + <string name="rating_dialog_positive_button">Enregistrer</string> + <string name="rating_dialog_title">Noter</string> + <string name="search_hint">Rechercher des titres, artistes ou albums</string> + <string name="search_info_minimum_characters">Entrez 3 caractères minimum</string> + <string name="search_title_album">Albums</string> + <string name="search_title_artist">Artistes</string> + <string name="search_title_song">Pistes</string> + <string name="server_signup_dialog_action_low_security">Sécurité basse</string> + <string name="server_signup_dialog_action_delete_toast">Appui long pour supprimer</string> + <string name="server_signup_dialog_hint_local_address">URL local</string> + <string name="server_signup_dialog_hint_name">Nom du serveur</string> + <string name="server_signup_dialog_hint_password">Mot de passe</string> + <string name="server_signup_dialog_hint_url">URL du serveur</string> + <string name="server_signup_dialog_hint_username">Nom d\'utilisateur</string> + <string name="server_signup_dialog_negative_button">Annuler</string> + <string name="server_signup_dialog_neutral_button">Supprimer</string> + <string name="server_signup_dialog_positive_button">Enregistrer</string> + <string name="server_signup_dialog_title">Ajouter un serveur</string> + <string name="server_unreachable_dialog_negative_button">Annuler</string> + <string name="server_unreachable_dialog_neutral_button">Aller à la connexion</string> + <string name="server_unreachable_dialog_positive_button">Continuer quand même</string> + <string name="server_unreachable_dialog_summary">Le serveur est injoignable. Si vous décidez de continuer, cette fenêtre n\'apparaîtra plus pendant une heure.</string> + <string name="server_unreachable_dialog_title">Serveur injoignable</string> + <string name="settings_about_summary">Tempus est un client open source et léger pour Subsonic, développé et compilé nativement pour Android.</string> + <string name="settings_about_title">À propos</string> + <string name="settings_always_on_display">Toujours visible</string> + <string name="settings_audio_transcode_download_format">Format de transcodage</string> + <string name="settings_audio_transcode_download_priority_summary">Si activé, Tempus ne forcera pas le téléchargement de la piste avec les paramètres de transcodage ci-dessous.</string> + <string name="settings_audio_transcode_download_priority_title">Prioriser les paramètres du serveurs, utilisés pour le streaming, dans les téléchargements</string> + <string name="settings_audio_transcode_download_summary">Si activé, Tempus téléchargera les pistes transcodées.</string> + <string name="settings_audio_transcode_download_title">Télécharger les pistes transcodées</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Si activé, une estimation de la durée de la piste sera demandée au serveur.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Estimer la durée du contenu</string> + <string name="settings_audio_transcode_format_download">Format de transcodage pour les téléchargements</string> + <string name="settings_audio_transcode_format_mobile">Format de transcodage (mobile)</string> + <string name="settings_audio_transcode_format_wifi">Format de transcodage (Wi-Fi)</string> + <string name="settings_audio_transcode_priority_summary">Si activé, Tempus ne forcera pas le streaming des pistes avec les paramètres ci-dessous.</string> + <string name="settings_audio_transcode_priority_title">Prioriser les paramètres de transcodage du serveur</string> + <string name="settings_audio_transcode_priority_toast">La priorité au transcodage de la piste est donnée au serveur</string> + <string name="settings_buffering_strategy">Stratégie de mise en mémoire tampon</string> + <string name="settings_buffering_strategy_summary">Redémarrez l\'application pour appliquer les changements.</string> + <string name="settings_continuous_play_summary">Permet de prolonger la lecture après la fin d\'une playlist avec des titres similaires</string> + <string name="settings_continuous_play_title">Lecture continue</string> + <string name="settings_covers_cache">Taille du cache des illustrations</string> + <string name="settings_data_saving_mode_summary">Pour réduire la consommation de données, éviter de télécharger les illustrations.</string> + <string name="settings_data_saving_mode_title">Limiter l\'utilisation des données mobiles</string> + <string name="settings_delete_download_storage_summary">Continuer entraînera la suppression irréversible de tous les éléments sauvegardés.</string> + <string name="settings_delete_download_storage_title">Supprimer les éléments sauvegardés</string> + <string name="settings_download_storage_title">Stockage des téléchargements</string> + <string name="settings_system_equalizer_summary">Ajuster les paramètres audios</string> + <string name="settings_system_equalizer_title">Égaliseur du système</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Suivre le développement</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">Définir la résolution des images</string> + <string name="settings_language">Langue</string> + <string name="settings_logout_title">Se déconnecter</string> + <string name="settings_max_bitrate_download">Débit binaire pour les téléchargements</string> + <string name="settings_max_bitrate_mobile">Débit binaire en données mobile</string> + <string name="settings_max_bitrate_wifi">Débit binaire en Wi-Fi</string> + <string name="settings_media_cache">Taille du cache des fichiers audio</string> + <string name="settings_music_directory">Afficher les dossiers</string> + <string name="settings_music_directory_summary">Si activé, rend possible la navigation dans les répertoires. À noter que pour que la navigation dans les dossiers fonctionne correctement, le serveur doit supporter cette fonctionnalité.</string> + <string name="settings_podcast">Voir les podcasts</string> + <string name="settings_podcast_summary">Si activé, rend visible la section Podcast. Redémarrez l\'application pour appliquer ce paramètre.</string> + <string name="settings_audio_quality">Afficher la qualité audio</string> + <string name="settings_audio_quality_summary">Le débit binaire et le format audio seront affichés pour chaque piste.</string> + <string name="settings_song_rating">Afficher la note de la piste</string> + <string name="settings_song_rating_summary">Si activé, rend visible la note de la piste sur sa page\n\n*Nécessite le redémarrage de l\'application</string> + <string name="settings_item_rating">Afficher la note</string> + <string name="settings_item_rating_summary">Si activé, la note et le statut de mise en favori de l\'élément seront affichés.</string> + <string name="settings_queue_syncing_countdown">Minuteur de synchronisation</string> + <string name="settings_queue_syncing_summary">Si activé, l\'utilisateur pourra sauvegarder sa file d\'attente et la recharger au démarrage de l\'application.</string> + <string name="settings_queue_syncing_title">Synchroniser la file d\'attente pour cet utilisateur</string> + <string name="settings_radio">Voir les radios</string> + <string name="settings_radio_summary">Si activé, rend visible la section Radio</string> + <string name="settings_replay_gain">Ajuster le Replay Gain</string> + <string name="settings_rounded_corner">Coins arrondis</string> + <string name="settings_rounded_corner_size">Taille des arrondis</string> + <string name="settings_rounded_corner_size_summary">Définit l\'ampleur de l\'angle de courbure.</string> + <string name="settings_rounded_corner_summary">Si activé, arrondi les angles des illustrations. Les modifications prendront effet au redémarrage.</string> + <string name="settings_scan_title">Scanner la bibliothèque</string> + <string name="settings_scrobble_title">Activer le scrobbling</string> + <string name="settings_system_language">Langue du système</string> + <string name="settings_share_title">Activer le partage de musique</string> + <string name="settings_streaming_cache_size">Taille du cache de streaming</string> + <string name="settings_streaming_cache_storage_title">Emplacement du cache de streaming</string> + <string name="settings_sub_summary_scrobble">À noter que le scrobbling doit être activé sur le serveur pour qu\'il puisse recevoir ces données</string> + <string name="settings_summary_skip_min_star_rating">Lors de l\'écoute de la radio d\'un artiste, d\'un mix instantané ou de tout la bibliothèque en aléatoire, les pistes en dessous d\'une certaine note seront ignorées.</string> + <string name="settings_summary_replay_gain">Le Replay Gain est une fonctionnalité qui vous permet d\'ajuster le volume des pistes audio pour une expérience d\'écoute cohérente. Fonctionne uniquement si la piste contient les métadonnées nécessaires.</string> + <string name="settings_summary_scrobble">Le scrobbling permet à votre appareil d\'envoyer des informations sur les musiques que vous écoutez au serveur afin de créer des recommendations personnalisées basées sur vos préférences musicales.</string> + <string name="settings_summary_share">Permet à l\'utilisateur de partager de la musique via un lien. Cette fonctionnalité doit être supportée et activée sur le serveur et est limitée aux pistes, albums et playlists individuellement.</string> + <string name="settings_summary_syncing">Renvoie l\'état de la file d\'attente de cet utilisateur. Cela inclut les pistes dans la file, la piste actuellement écoutée et la position dans la piste. Cette fonctionnalité doit être supportée par le serveur.</string> + <string name="settings_summary_streaming_cache_size">%1$s \nUtilisé actuellement : %2$s MiB</string> + <string name="settings_summary_transcoding">Le mode de transcodage à prioriser. Si réglé sur \"Lecture directe\", le débit binaire du fichier ne sera pas modifié.</string> + <string name="settings_summary_transcoding_download">Télécharge les médias transcodés. Si activé, les paramètres de transcodage suivants seront utilisés pour les téléchargements.\n\n Si le format de transcodage est reglé à \"Téléchargement direct\", le débit binaire du fichier ne sera pas modifé.</string> + <string name="settings_summary_transcoding_estimate_content_length">Quand le fichier est transcodé à la volée, en général, le client n\'affiche pas la durée de la piste. Il est possible de demander aux serveurs qui le supportent d\'estimer la durée de la piste écoutée, mais les temps de réponses peuvent être plus longs.</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">Si activé, les albums favoris seront téléchargés pour l\'écoute hors-ligne</string> + <string name="settings_sync_starred_albums_for_offline_use_title">Synchronisation des albums favoris pour écoute hors-ligne</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Si activé, les pistes favorites seront téléchargées pour l\'écoute hors-ligne</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Synchronisation des pistes favorites pour écoute hors-ligne</string> + <string name="settings_theme">Thème</string> + <string name="settings_title_data">Données</string> + <string name="settings_title_general">Géneral</string> + <string name="settings_title_rating">Note</string> + <string name="settings_title_replay_gain">Replay Gain</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Ignorer des musiques selon leur note</string> + <string name="settings_title_skip_min_star_rating_dialog">Musiques avec une note de :</string> + <string name="settings_title_share">Partage</string> + <string name="settings_title_syncing">Synchronisation</string> + <string name="settings_title_transcoding">Transcodage</string> + <string name="settings_title_transcoding_download">Transcodage des téléchargements</string> + <string name="settings_title_ui">UI</string> + <string name="settings_transcoded_download">Transcodage des téléchargements</string> + <string name="settings_version_title">Version</string> + <string name="settings_wifi_only_summary">Demander confirmation à l\'utilisateur avant de streamer sur le réseau mobile.</string> + <string name="settings_wifi_only_title">Alerte de streaming sur données mobiles</string> + <string name="share_bottom_sheet_copy_link">Copier le lien</string> + <string name="share_bottom_sheet_delete">Supprimer le partage</string> + <string name="share_bottom_sheet_update">Mettre à jour le partage</string> + <string name="share_subtitle_item">Date d\'expiration : %1$s</string> + <string name="share_unsupported_error">Le partage n\'est pas supporté ou pas activé</string> + <string name="share_update_dialog_hint_description">Description</string> + <string name="share_update_dialog_hint_expiration_date">Date d\'expiration</string> + <string name="share_update_dialog_negative_button">Annuler</string> + <string name="share_update_dialog_positive_button">Enregistrer</string> + <string name="share_update_dialog_title">Partager</string> + <string name="song_bottom_sheet_add_to_playlist">Ajouter à une playlist</string> + <string name="song_bottom_sheet_add_to_queue">Ajouter à la file d\'attente</string> + <string name="song_bottom_sheet_download">Télécharger</string> + <string name="song_bottom_sheet_error_retrieving_album">Erreur de récupération de l\'album</string> + <string name="song_bottom_sheet_error_retrieving_artist">Erreur de récupération de l\'artiste</string> + <string name="song_bottom_sheet_go_to_album">Aller à l\'album</string> + <string name="song_bottom_sheet_go_to_artist">Aller à l\'artiste</string> + <string name="song_bottom_sheet_instant_mix">Mix instantané</string> + <string name="song_bottom_sheet_play_next">Lire juste après</string> + <string name="song_bottom_sheet_rate">Noter</string> + <string name="song_bottom_sheet_remove">Retirer</string> + <string name="song_bottom_sheet_share">Partager</string> + <string name="song_list_page_downloaded">Téléchargé</string> + <string name="song_list_page_most_played">Titres les plus joués</string> + <string name="song_list_page_recently_added">Titres ajoutés récemment</string> + <string name="song_list_page_recently_played">Titrés joués récemment</string> + <string name="song_list_page_starred">Titres favoris</string> + <string name="song_list_page_top">Les meilleurs titres de %1$s</string> + <string name="song_list_page_year">Année %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Annuler</string> + <string name="starred_sync_dialog_neutral_button">Continuer</string> + <string name="starred_sync_dialog_positive_button">Continuer et télécharger</string> + <string name="starred_sync_dialog_summary">Le téléchargement des titres favoris pourrait consommer beaucoup de données.</string> + <string name="starred_sync_dialog_title">Synchroniser les titres favoris</string> + <string name="starred_album_sync_dialog_summary">Le téléchargement des titres favoris pourrait consommer beaucoup de données.</string> + <string name="starred_album_sync_dialog_title">Synchroniser les albums favoris</string> + <string name="streaming_cache_storage_dialog_sub_summary">Veuillez redémarrer l\'app pour appliquer les changements.</string> + <string name="streaming_cache_storage_dialog_summary">Modifier le chemin de stockage des fichiers mis en cache risque de provoquer la suppression de tous les fichiers précédemment mis en cache dans le nouvel espace de stockage.</string> + <string name="streaming_cache_storage_dialog_title">Sélectionner une option de stockage</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Externe</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Interne</string> + <string name="support_url">https://buymeacoffee.com/a.cappiello</string> + <string name="track_info_album">Album</string> + <string name="track_info_artist">Artiste</string> + <string name="track_info_bit_depth">Résolution audio</string> + <string name="track_info_bitrate">Débit binaire</string> + <string name="track_info_content_type">Type de contenu</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Infos piste</string> + <string name="track_info_disc_number">Numéro de disque</string> + <string name="track_info_duration">Durée</string> + <string name="track_info_genre">Genre</string> + <string name="track_info_path">Chemin</string> + <string name="track_info_sampling_rate">Fréquence d\'échantillonnage</string> + <string name="track_info_size">Taille</string> + <string name="track_info_suffix">Suffixe</string> + <string name="track_info_summary_downloaded_file">Le fichier a été téléchargé depuis les APIs Subsonic. Le codec et le débit binaire du fichier demeurent identiques à ceux du fichier d\'origine.</string> + <string name="track_info_summary_full_transcode">L\'application demandera au serveur de transcoder le fichier et de modifier son débit binaire. Le codec demandé par l\'utilisateur est %1$s, avec un débit binaire de %2$s. Toute modification éventuelle du codec et du débit binaire du fichier dans le format choisi sera gérée par le serveur, qui peut ou non prendre en charge l\'opération.</string> + <string name="track_info_summary_original_file">L\'application ne lira que le fichier original tel que fourni par le serveur. L\'application demandera explicitement au serveur le fichier non transcodé avec le débit binaire de la source originale.</string> + <string name="track_info_summary_server_prioritized">La qualité du fichier à lire est laissée à l\'appréciation du serveur. L\'application n\'impose pas le choix du codec et du débit binaire pour un éventuel transcodage.</string> + <string name="track_info_summary_transcoding_bitrate">L\'application demandera au serveur de modifier le débit binaire du fichier. L\'utilisateur a choisi un débit binaire de %1$s, tandis que le codec du fichier restera le même. Toute modification du débit binaire du fichier dans le format choisi sera effectuée par le serveur, qui peut ou non prendre en charge l\'opération. </string> + <string name="track_info_summary_transcoding_codec">L\'application demandera au serveur de transcoder le fichier. Le codec choisi par l\'utilisateur est le %1$s, tandis que le débit binaire sera le même que celui du fichier source. Le transcodage éventuel du fichier dans le codec choisi dépend du serveur, qui peut ou non prendre en charge l\'opération.</string> + <string name="track_info_title">Titre</string> + <string name="track_info_track_number">Numéro de piste</string> + <string name="track_info_transcoded_content_type">Transcodé type de contenu</string> + <string name="track_info_transcoded_suffix">Transcodé suffixe</string> + <string name="track_info_year">Année</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">Un grand merci à unDraw, nous n\'aurions pas pu rendre cette application aussi belle sans leurs illustrations.</string> + <string name="undraw_url">https://undraw.co/</string> + <plurals name="home_sync_starred_albums_count"> + <item quantity="one">%d album à synchroniser</item> + <item quantity="other">%d albums à synchroniser</item> + </plurals> + <string name="equalizer_fragment_title">Égaliseur</string> + <string name="equalizer_reset">Réinitialiser</string> + <string name="equalizer_enable">Activer</string> + <string name="equalizer_not_supported">Non supporté sur cet appareil</string> + <string name="settings_app_equalizer">Égaliseur</string> + <string name="settings_app_equalizer_summary">Ouvrir l\'égaliseur intégré</string> +</resources> diff --git a/app/src/main/res/values-it/arrays.xml b/app/src/main/res/values-it/arrays.xml new file mode 100644 index 0000000..e0520bf --- /dev/null +++ b/app/src/main/res/values-it/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Chiaro</item> + <item>Scuro</item> + <item>Predefinito del sistema</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Alto</item> + <item>Medio</item> + <item>Basso</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Alto</item> + <item>Medio</item> + <item>Basso</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Disabilitato</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Originale</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Originale</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Originale</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Riproduzione diretta</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Riproduzione diretta</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Download diretto</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Dieci secondi</item> + <item>Cinque secondi</item> + <item>Due secondi</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Alto</item> + <item>Medio</item> + <item>Basso</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Disabilitato</item> + <item>Traccia</item> + <item>Album</item> + <item>Auto</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Non transcodificare</item> + <item>Impostazioni del server</item> + <item>Formato transcodifica Wi-Fi</item> + <item>Formato transcodifica mobile</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Minimo</item> + <item>Moderato</item> + <item>Aggressivo</item> + <item>Estremo</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>Minimo 0 stelle</item> + <item>Minimo 1 stella</item> + <item>Minimo 2 stelle</item> + <item>Minimo 3 stelle</item> + <item>Minimo 4 stelle</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 0000000..96a0c30 --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,417 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Se hai problemi, visita https://dontkillmyapp.com. Qui trovi istruzioni dettagliate su come disabilitare le funzionalità di risparmio energetico che potrebbero influire sulle prestazioni dell\'app.</string> + <string name="activity_battery_optimizations_summary">Per favore, disabilita le ottimizzazioni della batteria per la riproduzione multimediale quando lo schermo è spento.</string> + <string name="activity_battery_optimizations_title">Ottimizzazioni della Batteria</string> + <string name="activity_info_offline_mode">Modalità offline</string> + <string name="album_bottom_sheet_add_to_playlist">Aggiungi alla playlist</string> + <string name="album_bottom_sheet_add_to_queue">Aggiungi alla coda</string> + <string name="album_bottom_sheet_download_all">Scarica tutto</string> + <string name="album_bottom_sheet_go_to_artist">Vai all\'artista</string> + <string name="album_bottom_sheet_instant_mix">Mix istantaneo</string> + <string name="album_bottom_sheet_play_next">Riproduci successivo</string> + <string name="album_bottom_sheet_remove_all">Rimuovi tutto</string> + <string name="album_bottom_sheet_share">Condividi</string> + <string name="album_bottom_sheet_shuffle">Riproduzione casuale</string> + <string name="album_catalogue_title">Album</string> + <string name="album_catalogue_title_expanded">Sfoglia Album</string> + <string name="album_error_retrieving_artist">Errore nel recupero dell\'artista</string> + <string name="album_list_page_downloaded">Album scaricati</string> + <string name="album_list_page_most_played">Album più riprodotti</string> + <string name="album_list_page_new_releases">Nuove uscite</string> + <string name="album_list_page_recently_added">Album aggiunti di recente</string> + <string name="album_list_page_recently_played">Album riprodotti di recente</string> + <string name="album_list_page_starred">Album preferiti</string> + <string name="album_list_page_title">Album</string> + <string name="album_page_extra_info_button">Simili a questo</string> + <string name="album_page_play_button">Riproduci</string> + <string name="album_page_release_date_label">Rilasciato il %1$s</string> + <string name="album_page_release_dates_label">Rilasciato il %1$s, originariamente il %2$s</string> + <string name="album_page_shuffle_button">Riproduzione casuale</string> + <string name="album_page_tracks_count_and_duration">%1$d brani • %2$d minuti</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Ricerca in corso…</string> + <string name="artist_bottom_sheet_instant_mix">Mix istantaneo</string> + <string name="artist_bottom_sheet_shuffle">Riproduzione casuale</string> + <string name="artist_catalogue_title">Artisti</string> + <string name="artist_catalogue_title_expanded">Sfoglia Artisti</string> + <string name="artist_error_retrieving_radio">Errore nel recupero della radio dell\'artista</string> + <string name="artist_error_retrieving_tracks">Errore nel recupero dei brani dell\'artista</string> + <string name="artist_list_page_downloaded">Artisti scaricati</string> + <string name="artist_list_page_starred">Artisti preferiti</string> + <string name="artist_list_page_title">Artisti</string> + <string name="artist_page_radio_button">Radio</string> + <string name="artist_page_shuffle_button">Riproduzione casuale</string> + <string name="artist_page_switch_layout_button">Cambia layout</string> + <string name="artist_page_title_album_more_like_this_button">Simili a questo</string> + <string name="artist_page_title_album_section">Album</string> + <string name="artist_page_title_biography_more_button">Altro</string> + <string name="artist_page_title_biography_section">Biografia</string> + <string name="artist_page_title_most_streamed_song_section">Brani più ascoltati</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Vedi tutto</string> + <string name="battery_optimization_negative_button">Ignora</string> + <string name="battery_optimization_neutral_button">Non chiedere di nuovo</string> + <string name="battery_optimization_positive_button">Disabilita</string> + <string name="connection_alert_dialog_negative_button">Annulla</string> + <string name="connection_alert_dialog_neutral_button">Attiva risparmio dati</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">L\'accesso al server Subsonic è stato limitato alle connessioni Wi-Fi. Per evitare che questo avviso riappaia, disabilita il controllo connessione nelle impostazioni dell\'app.</string> + <string name="connection_alert_dialog_title">Wi-Fi non connesso</string> + <string name="content_description_shuffle_button">Riproduzione casuale</string> + <string name="delete_download_storage_dialog_negative_button">Annulla</string> + <string name="delete_download_storage_dialog_positive_button">Continua</string> + <string name="delete_download_storage_dialog_summary">Attenzione, procedendo questa azione eliminerà definitivamente tutti gli elementi scaricati da tutti i server.</string> + <string name="delete_download_storage_dialog_title">Elimina elementi salvati</string> + <string name="description_empty_title">Descrizione non disponibile</string> + <string name="disc_titlefull">Disco %1$s - %2$s</string> + <string name="disc_titleless">Disco %1$s</string> + <string name="download_directory_dialog_negative_button">Annulla</string> + <string name="download_directory_dialog_positive_button">Scarica</string> + <string name="download_directory_dialog_summary">Tutti i brani in questa cartella verranno scaricati. I brani nelle sottocartelle non verranno scaricati.</string> + <string name="download_directory_dialog_title">Scarica i brani</string> + <string name="download_info_empty_subtitle">Una volta scaricato un brano, lo troverai qui</string> + <string name="download_info_empty_title">Nessun download ancora!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s elementi</string> + <string name="download_item_single_subtitle_formatter">%1$s elementi</string> + <string name="download_shuffle_all_subtitle">Riproduzione casuale di tutto</string> + <string name="download_storage_dialog_sub_summary">Per rendere effettive le modifiche, riavvia l\'app.</string> + <string name="download_storage_dialog_summary">Cambiare la destinazione dei file scaricati da una memoria all\'altra eliminerà immediatamente tutti i file scaricati precedentemente nella vecchia memoria.</string> + <string name="download_storage_dialog_title">Seleziona opzione di memoria</string> + <string name="download_storage_external_dialog_positive_button">Esterna</string> + <string name="download_storage_internal_dialog_negative_button">Interna</string> + <string name="download_title_section">Download</string> + <string name="downloaded_bottom_sheet_add_to_queue">Aggiungi alla coda</string> + <string name="downloaded_bottom_sheet_play_next">Riproduci successivo</string> + <string name="downloaded_bottom_sheet_remove">Rimuovi</string> + <string name="downloaded_bottom_sheet_remove_all">Rimuovi tutto</string> + <string name="downloaded_bottom_sheet_shuffle">Riproduzione casuale</string> + <string name="empty_string" /> + <string name="error_required">Obbligatorio</string> + <string name="error_server_prefix">Prefisso http o https richiesto</string> + <string name="exo_download_notification_channel_name">Download</string> + <string name="filter_info_selection">Seleziona due o più filtri</string> + <string name="filter_title">Filtro</string> + <string name="filter_title_expanded">Filtra Generi</string> + <string name="genre_catalogue_title">Catalogo dei Generi</string> + <string name="genre_catalogue_title_expanded">Sfoglia Generi</string> + <string name="github_update_dialog_negative_button">Ricordamelo più tardi</string> + <string name="github_update_dialog_neutral_button">Supportami</string> + <string name="github_update_dialog_positive_button">Scarica ora</string> + <string name="github_update_dialog_summary">È disponibile una nuova versione dell\'app su Github.</string> + <string name="github_update_dialog_title">Aggiornamento disponibile</string> + <string name="home_rearrangement_dialog_negative_button">Annulla</string> + <string name="home_rearrangement_dialog_neutral_button">Reimposta</string> + <string name="home_rearrangement_dialog_positive_button">Salva</string> + <string name="home_rearrangement_dialog_title">Riorganizza home</string> + <string name="home_rearrangement_dialog_subtitle">Si prega di notare che per rendere effettive le modifiche è necessario riavviare l\'applicazione.</string> + <string name="home_subtitle_best_of">Le migliori canzoni dei tuoi artisti preferiti</string> + <string name="home_subtitle_made_for_you">Inizia un mix da una canzone che ti è piaciuta</string> + <string name="home_subtitle_new_internet_radio_station">Aggiungi una nuova radio</string> + <string name="home_subtitle_new_podcast_channel">Aggiungi un nuovo canale podcast</string> + <string name="home_sync_starred_cancel">Annulla</string> + <string name="home_sync_starred_download">Scarica</string> + <string name="home_sync_starred_subtitle">Scaricare questi brani potrebbe comportare un uso significativo di dati</string> + <string name="home_sync_starred_title">Sembra che ci siano brani da sincronizzare con una stella</string> + <string name="home_title_best_of">Il meglio di</string> + <string name="home_title_discovery">Scoperta</string> + <string name="home_title_discovery_shuffle_all_button">Mescola tutto</string> + <string name="home_title_flashback">Flashback</string> + <string name="home_title_internet_radio_station">Stazioni radio internet</string> + <string name="home_title_last_played">Ultimi ascolti</string> + <string name="home_title_last_played_see_all_button">Vedi tutto</string> + <string name="home_title_last_week">La scorsa settimana</string> + <string name="home_title_last_month">Il mese scorso</string> + <string name="home_title_last_year">L\'anno scorso</string> + <string name="home_title_made_for_you">Fatto per te</string> + <string name="home_title_most_played">Più ascoltati</string> + <string name="home_title_most_played_see_all_button">Vedi tutto</string> + <string name="home_title_new_releases">Nuove uscite</string> + <string name="home_title_newest_podcasts">Podcast più recenti</string> + <string name="home_title_pinned_playlists">Playlist</string> + <string name="home_title_podcast_channels">Canali</string> + <string name="home_title_podcast_channels_see_all_button">Vedi tutto</string> + <string name="home_title_radio_station">Stazioni radio</string> + <string name="home_title_recently_added">Aggiunti di recente</string> + <string name="home_title_recently_added_see_all_button">Vedi tutto</string> + <string name="home_title_shares">Condivisioni</string> + <string name="home_title_starred_albums">★ Album con stella</string> + <string name="home_title_starred_albums_see_all_button">Vedi tutto</string> + <string name="home_title_starred_artists">★ Artisti con stella</string> + <string name="home_title_starred_artists_see_all_button">Vedi tutto</string> + <string name="home_title_starred_tracks">★ Brani con stella</string> + <string name="home_title_starred_tracks_see_all_button">Vedi tutto</string> + <string name="home_title_top_songs">I tuoi migliori brani</string> + <string name="home_option_reorganize">Riorganizza</string> + <string name="label_dot_separator" translatable="false">•</string> + <string name="label_placeholder" translatable="false">--</string> + <string name="library_title_album">Album</string> + <string name="library_title_album_see_all_button">Vedi tutto</string> + <string name="library_title_artist">Artisti</string> + <string name="library_title_artist_see_all_button">Vedi tutto</string> + <string name="library_title_genre">Generi</string> + <string name="library_title_genre_see_all_button">Vedi tutto</string> + <string name="library_title_music_folder">Cartelle musicali</string> + <string name="library_title_playlist">Playlist</string> + <string name="library_title_playlist_see_all_button">Vedi tutto</string> + <string name="login_empty">Nessun server aggiunto</string> + <string name="login_title">Server Subsonic</string> + <string name="login_title_expanded">Server Subsonic</string> + <string name="media_route_menu_title">Trasmetti</string> + <string name="menu_add_button">Aggiungi</string> + <string name="menu_add_to_playlist_button">Aggiungi alla playlist</string> + <string name="menu_download_all_button">Scarica tutto</string> + <string name="menu_download_label">Scarica</string> + <string name="menu_filter_all">Tutti</string> + <string name="menu_filter_download">Scaricati</string> + <string name="menu_group_by_album">Album</string> + <string name="menu_group_by_artist">Artista</string> + <string name="menu_group_by_genre">Genere</string> + <string name="menu_group_by_track">Brano</string> + <string name="menu_group_by_year">Anno</string> + <string name="menu_home_label">Home</string> + <string name="menu_last_week_name">La scorsa settimana</string> + <string name="menu_last_month_name">Il mese scorso</string> + <string name="menu_last_year_name">L\'anno scorso</string> + <string name="menu_library_label">Libreria</string> + <string name="menu_search_button">Cerca</string> + <string name="menu_settings_button">Impostazioni</string> + <string name="menu_sort_artist">Artista</string> + <string name="menu_sort_name">Nome</string> + <string name="menu_sort_random">Casuale</string> + <string name="menu_sort_recently_added">Aggiunti di recente</string> + <string name="menu_pin_button">Aggiungi alla schermata home</string> + <string name="menu_unpin_button">Rimuovi dalla schermata home</string> + <string name="menu_sort_year">Anno</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Svuota coda di riproduzione</string> + <string name="player_queue_save_queue_success">Salvato</string> + <string name="player_server_priority">Priorità server</string> + <string name="playlist_catalogue_title">Catalogo playlist</string> + <string name="playlist_catalogue_title_expanded">Sfoglia le playlist</string> + <string name="playlist_chooser_dialog_empty">Nessuna playlist creata</string> + <string name="playlist_chooser_dialog_negative_button">Annulla</string> + <string name="playlist_chooser_dialog_neutral_button">Crea</string> + <string name="playlist_chooser_dialog_title">Aggiungi a una playlist</string> + <string name="playlist_chooser_dialog_toast_add_success">Aggiunta di un brano alla playlist</string> + <string name="playlist_chooser_dialog_toast_add_failure">Impossibile aggiungere un brano alla playlist</string> + <string name="playlist_counted_tracks">%1$d brani • %2$s</string> + <string name="playlist_duration">Durata • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Premi a lungo per eliminare</string> + <string name="playlist_editor_dialog_hint_name">Nome della playlist</string> + <string name="playlist_editor_dialog_negative_button">Annulla</string> + <string name="playlist_editor_dialog_neutral_button">Elimina</string> + <string name="playlist_editor_dialog_positive_button">Salva</string> + <string name="playlist_editor_dialog_title">Modifica playlist</string> + <string name="playlist_page_play_button">Riproduci</string> + <string name="playlist_page_shuffle_button">Mescola</string> + <string name="playlist_song_count">Playlist • %1$d brani</string> + <string name="podcast_bottom_sheet_add_to_queue">Aggiungi alla coda</string> + <string name="podcast_bottom_sheet_delete">Elimina</string> + <string name="podcast_bottom_sheet_download">Scarica</string> + <string name="podcast_bottom_sheet_go_to_channel">Vai al canale</string> + <string name="podcast_bottom_sheet_play_next">Riproduci dopo</string> + <string name="podcast_bottom_sheet_remove">Rimuovi</string> + <string name="podcast_channel_catalogue_title">Canali</string> + <string name="podcast_channel_catalogue_title_expanded">Sfoglia Canali</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">URL RSS</string> + <string name="podcast_channel_editor_dialog_title">Canale Podcast</string> + <string name="podcast_channel_page_title_description_section">Descrizione</string> + <string name="podcast_channel_page_title_episode_section">Episodi</string> + <string name="podcast_channel_page_title_no_episode_available">Nessun episodio disponibile</string> + <string name="podcast_episode_download_request_snackbar">La tua richiesta è stata inviata al server</string> + <string name="podcast_info_empty_button">Clicca per nascondere la sezione\nGli effetti saranno visibili al riavvio</string> + <string name="podcast_info_empty_subtitle">Una volta aggiunto un canale, lo troverai qui</string> + <string name="podcast_info_empty_title">Nessun podcast trovato!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">URL Homepage Radio</string> + <string name="radio_editor_dialog_hint_name">Nome Radio</string> + <string name="radio_editor_dialog_hint_stream_url">URL Stream Radio</string> + <string name="radio_editor_dialog_negative_button">Annulla</string> + <string name="radio_editor_dialog_neutral_button">Elimina</string> + <string name="radio_editor_dialog_positive_button">Salva</string> + <string name="radio_editor_dialog_title">Stazione Radio Internet</string> + <string name="radio_station_info_empty_button">Clicca per nascondere la sezione\nGli effetti saranno visibili al riavvio</string> + <string name="radio_station_info_empty_subtitle">Una volta aggiunta una stazione radio, la troverai qui</string> + <string name="radio_station_info_empty_title">Nessuna stazione trovata!</string> + <string name="rating_dialog_negative_button">Annulla</string> + <string name="rating_dialog_positive_button">Salva</string> + <string name="rating_dialog_title">Valuta</string> + <string name="search_hint">Cerca titolo, artisti o album</string> + <string name="search_info_minimum_characters">Inserisci almeno tre caratteri</string> + <string name="search_title_album">Album</string> + <string name="search_title_artist">Artisti</string> + <string name="search_title_song">Brani</string> + <string name="server_signup_dialog_action_low_security">Bassa sicurezza</string> + <string name="server_signup_dialog_action_delete_toast">Premi a lungo per eliminare</string> + <string name="server_signup_dialog_hint_local_address">URL locale</string> + <string name="server_signup_dialog_hint_name">Nome Server</string> + <string name="server_signup_dialog_hint_password">Password</string> + <string name="server_signup_dialog_hint_url">URL Server</string> + <string name="server_signup_dialog_hint_username">Nome utente</string> + <string name="server_signup_dialog_negative_button">Annulla</string> + <string name="server_signup_dialog_neutral_button">Elimina</string> + <string name="server_signup_dialog_positive_button">Salva</string> + <string name="server_signup_dialog_title">Aggiungi server</string> + <string name="server_unreachable_dialog_negative_button">Annulla</string> + <string name="server_unreachable_dialog_neutral_button">Vai al login</string> + <string name="server_unreachable_dialog_positive_button">Continua comunque</string> + <string name="server_unreachable_dialog_summary">Il server richiesto non è disponibile. Se scegli di continuare, questo messaggio non apparirà per la prossima ora.</string> + <string name="server_unreachable_dialog_title">Server irraggiungibile</string> + <string name="settings_about_summary">Tempus è un client musicale open source e leggero per Subsonic, progettato e costruito nativamente per Android.</string> + <string name="settings_about_title">Informazioni</string> + <string name="settings_always_on_display">Sempre attivo</string> + <string name="settings_audio_transcode_download_format">Formato transcodifica</string> + <string name="settings_audio_transcode_download_priority_summary">Se abilitato, Tempus non forzerà il download del brano con le impostazioni di transcodifica sottostanti.</string> + <string name="settings_audio_transcode_download_priority_title">Dare priorità alle impostazioni del server per lo streaming nei download</string> + <string name="settings_audio_transcode_download_summary">Se abilitato, Tempus scaricherà i brani transcodificati.</string> + <string name="settings_audio_transcode_download_title">Scarica brani transcodificati</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Se abilitato, verrà richiesto al server di fornire la durata stimata del brano.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Stima della lunghezza del contenuto</string> + <string name="settings_audio_transcode_format_download">Formato transcodifica per download</string> + <string name="settings_audio_transcode_format_mobile">Formato transcodifica su mobile</string> + <string name="settings_audio_transcode_format_wifi">Formato transcodifica su Wi-Fi</string> + <string name="settings_audio_transcode_priority_summary">Se abilitato, Tempus non forzerà lo streaming del brano con le impostazioni di transcodifica sottostanti.</string> + <string name="settings_audio_transcode_priority_title">Dare priorità alle impostazioni di transcodifica del server</string> + <string name="settings_audio_transcode_priority_toast">Priorità di transcodifica del brano assegnata al server</string> + <string name="settings_buffering_strategy">Strategia di buffering</string> + <string name="settings_buffering_strategy_summary">Perché la modifica abbia effetto è necessario riavviare manualmente l\'app.</string> + <string name="settings_continuous_play_summary">Consente alla musica di continuare a suonare dopo la fine di una playlist, riproducendo brani simili</string> + <string name="settings_continuous_play_title">Riproduzione continua</string> + <string name="settings_covers_cache">Dimensione della cache delle copertine</string> + <string name="settings_data_saving_mode_summary">Per ridurre il consumo di dati, evita di scaricare le copertine.</string> + <string name="settings_data_saving_mode_title">Limita utilizzo dei dati mobili</string> + <string name="settings_delete_download_storage_summary">Continuando, tutti gli elementi salvati verranno eliminati in modo irreversibile.</string> + <string name="settings_delete_download_storage_title">Elimina elementi salvati</string> + <string name="settings_download_storage_title">Archivio download</string> + <string name="settings_system_equalizer_summary">Regola le impostazioni audio</string> + <string name="settings_system_equalizer_title">Equalizzatore di sistema</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Segui lo sviluppo</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">Imposta risoluzione delle immagini</string> + <string name="settings_language">Lingua</string> + <string name="settings_logout_title">Esci</string> + <string name="settings_max_bitrate_download">Bitrate per download</string> + <string name="settings_max_bitrate_mobile">Bitrate su mobile</string> + <string name="settings_max_bitrate_wifi">Bitrate su Wi-Fi</string> + <string name="settings_media_cache">Dimensione della cache dei file multimediali</string> + <string name="settings_music_directory">Mostra directory musicali</string> + <string name="settings_music_directory_summary">Se abilitato, mostra la sezione delle directory musicali. Nota che per la navigazione nelle cartelle è necessario che il server supporti questa funzionalità.</string> + <string name="settings_podcast">Mostra podcast</string> + <string name="settings_podcast_summary">Se abilitato, mostra la sezione podcast. Riavvia l\'app per rendere effettive le modifiche.</string> + <string name="settings_audio_quality">Mostra qualità audio</string> + <string name="settings_audio_quality_summary">Il bitrate e il formato audio saranno mostrati per ogni traccia.</string> + <string name="settings_item_rating">Mostra valutazione</string> + <string name="settings_item_rating_summary">Se abilitato, verrà mostrata la valutazione dell\'elemento e se è contrassegnato come preferito.</string> + <string name="settings_queue_syncing_countdown">Timer sincronizzazione</string> + <string name="settings_queue_syncing_summary">Se abilitato, l\'utente avrà la possibilità di salvare la propria coda di riproduzione e potrà caricare lo stato all\'apertura dell\'applicazione.</string> + <string name="settings_queue_syncing_title">Sincronizza coda di riproduzione per questo utente</string> + <string name="settings_radio">Mostra radio</string> + <string name="settings_radio_summary">Se abilitato, mostra la sezione radio. Riavvia l\'app per applicare completamente le modifiche.</string> + <string name="settings_replay_gain">Imposta modalità di guadagno di riproduzione</string> + <string name="settings_rounded_corner">Angoli arrotondati</string> + <string name="settings_rounded_corner_size">Dimensione angoli</string> + <string name="settings_rounded_corner_size_summary">Imposta la magnitudine dell\'angolo di curvatura.</string> + <string name="settings_rounded_corner_summary">Se abilitato, imposta un angolo di curvatura per tutte le copertine visualizzate. Le modifiche avranno effetto al riavvio.</string> + <string name="settings_scan_title">Scansiona libreria</string> + <string name="settings_scrobble_title">Abilita scrobbling musicale</string> + <string name="settings_share_title">Abilita condivisione musicale</string> + <string name="settings_streaming_cache_size">Dimensione cache streaming</string> + <string name="settings_streaming_cache_storage_title">Archiviazione cache streaming</string> + <string name="settings_sub_summary_scrobble">È importante notare che lo scrobbling si basa anche sul fatto che il server sia abilitato a ricevere questi dati.</string> + <string name="settings_summary_skip_min_star_rating">Quando si ascolta la radio di un artista, un mix istantaneo o quando si mescolano tutti i brani, i brani sotto una certa valutazione dell\'utente verranno ignorati.</string> + <string name="settings_summary_replay_gain">Il guadagno di riproduzione è una funzionalità che consente di regolare il livello del volume delle tracce audio per un\'esperienza di ascolto coerente. Questa impostazione è efficace solo se la traccia contiene i metadati necessari.</string> + <string name="settings_summary_scrobble">Lo scrobbling è una funzionalità che consente al tuo dispositivo di inviare informazioni sulle canzoni che ascolti al server musicale. Queste informazioni aiutano a creare raccomandazioni personalizzate in base alle tue preferenze musicali.</string> + <string name="settings_summary_share">Permette all\'utente di condividere musica tramite un link. La funzionalità deve essere supportata e abilitata sul server ed è limitata a brani, album e playlist singoli.</string> + <string name="settings_summary_syncing">Restituisce lo stato della coda di riproduzione per questo utente. Ciò include i brani nella coda di riproduzione, il brano attualmente in riproduzione e la posizione all\'interno di questo brano. Il server deve supportare questa funzionalità.</string> + <string name="settings_summary_streaming_cache_size">%1$s \nAttualmente in uso: %2$s MiB</string> + <string name="settings_summary_transcoding">Priorità data alla modalità di transcoding. Se impostato su "Riproduzione diretta", il bitrate del file non verrà modificato.</string> + <string name="settings_summary_transcoding_download">Scarica media transcodificati. Se abilitato, l\'endpoint di download non verrà utilizzato, ma le impostazioni seguenti. \n\n Se "Formato di transcodifica per i download" è impostato su "Download diretto", il bitrate del file non verrà modificato.</string> + <string name="settings_summary_transcoding_estimate_content_length">Quando il file viene transcodificato al volo, il client di solito non mostra la lunghezza della traccia. È possibile richiedere ai server che supportano la funzionalità di stimare la durata della traccia in riproduzione, ma i tempi di risposta possono essere più lunghi.</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Se abilitato, le tracce contrassegnate verranno scaricate per l\'uso offline.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Sincronizza tracce contrassegnate per uso offline</string> + <string name="settings_theme">Tema</string> + <string name="settings_title_data">Dati</string> + <string name="settings_title_general">Generale</string> + <string name="settings_title_rating">Valutazione</string> + <string name="settings_title_replay_gain">Guadagno di riproduzione</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Ignora brani in base alla valutazione</string> + <string name="settings_title_skip_min_star_rating_dialog">Brani con una valutazione di:</string> + <string name="settings_title_share">Condividi</string> + <string name="settings_title_syncing">Sincronizzazione</string> + <string name="settings_title_transcoding">Transcoding</string> + <string name="settings_title_transcoding_download">Download di Transcoding</string> + <string name="settings_title_ui">Interfaccia utente</string> + <string name="settings_transcoded_download">Download transcodificato</string> + <string name="settings_version_summary" translatable="false">3.1.0</string> + <string name="settings_version_title">Versione</string> + <string name="settings_wifi_only_summary">Chiedi conferma all\'utente prima di effettuare streaming su rete mobile.</string> + <string name="settings_wifi_only_title">Streaming solo tramite Wi-Fi avviso</string> + <string name="share_bottom_sheet_copy_link">Copia link</string> + <string name="share_bottom_sheet_delete">Elimina condivisione</string> + <string name="share_bottom_sheet_update">Aggiorna condivisione</string> + <string name="share_subtitle_item">Data di scadenza: %1$s</string> + <string name="share_unsupported_error">La condivisione non è supportata o non è abilitata</string> + <string name="share_update_dialog_hint_description">Descrizione</string> + <string name="share_update_dialog_hint_expiration_date">Data di scadenza</string> + <string name="share_update_dialog_negative_button">Annulla</string> + <string name="share_update_dialog_positive_button">Salva</string> + <string name="share_update_dialog_title">Condividi</string> + <string name="song_bottom_sheet_add_to_playlist">Aggiungi alla playlist</string> + <string name="song_bottom_sheet_add_to_queue">Aggiungi alla coda</string> + <string name="song_bottom_sheet_download">Scarica</string> + <string name="song_bottom_sheet_error_retrieving_album">Errore nel recupero dell\'album</string> + <string name="song_bottom_sheet_error_retrieving_artist">Errore nel recupero dell\'artista</string> + <string name="song_bottom_sheet_go_to_album">Vai all\'album</string> + <string name="song_bottom_sheet_go_to_artist">Vai all\'artista</string> + <string name="song_bottom_sheet_instant_mix">Mix istantaneo</string> + <string name="song_bottom_sheet_play_next">Riproduci dopo</string> + <string name="song_bottom_sheet_rate">Valuta</string> + <string name="song_bottom_sheet_remove">Rimuovi</string> + <string name="song_bottom_sheet_share">Condividi</string> + <string name="song_list_page_downloaded">Scaricato</string> + <string name="song_list_page_most_played">Tracce più riprodotte</string> + <string name="song_list_page_recently_added">Tracce aggiunte di recente</string> + <string name="song_list_page_recently_played">Tracce riprodotte di recente</string> + <string name="song_list_page_starred">Tracce contrassegnate</string> + <string name="song_list_page_top">Le migliori tracce di %1$s</string> + <string name="song_list_page_year">Anno %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Annulla</string> + <string name="starred_sync_dialog_neutral_button">Continua</string> + <string name="starred_sync_dialog_positive_button">Continua e scarica</string> + <string name="starred_sync_dialog_summary">Il download delle tracce contrassegnate potrebbe richiedere una grande quantità di dati.</string> + <string name="starred_sync_dialog_title">Sincronizza tracce contrassegnate</string> + <string name="streaming_cache_storage_dialog_sub_summary">Per rendere effettive le modifiche, riavvia l\'app.</string> + <string name="streaming_cache_storage_dialog_summary">Cambiare la destinazione dei file memorizzati nella cache da un\'unità di archiviazione a un\'altra può comportare la cancellazione di eventuali file memorizzati nella cache in precedenza nell\'altra unità di archiviazione.</string> + <string name="streaming_cache_storage_dialog_title">Seleziona opzione di archiviazione</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Esterno</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Interno</string> + <string name="support_url">https://buymeacoffee.com/a.cappiello</string> + <string name="track_info_album">Album</string> + <string name="track_info_artist">Artista</string> + <string name="track_info_bitrate">Bitrate</string> + <string name="track_info_content_type">Tipo di contenuto</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Info traccia</string> + <string name="track_info_disc_number">Numero del disco</string> + <string name="track_info_duration">Durata</string> + <string name="track_info_genre">Genere</string> + <string name="track_info_path">Percorso</string> + <string name="track_info_size">Dimensione</string> + <string name="track_info_suffix">Suffisso</string> + <string name="track_info_summary_downloaded_file">Il file è stato scaricato utilizzando le API Subsonic. Il codec e il bitrate del file rimangono invariati rispetto al file sorgente.</string> + <string name="track_info_summary_full_transcode">L\'applicazione richiederà al server di transcodedare il file e modificare il suo bitrate. Il codec richiesto dall\'utente è %1$s, con un bitrate di %2$s. Eventuali modifiche al codec e al bitrate del file nel formato scelto saranno gestite dal server, che potrebbe o meno supportare l\'operazione.</string> + <string name="track_info_summary_original_file">L\'applicazione leggerà solo il file originale fornito dal server. L\'app richiederà esplicitamente al server il file non transcodedato con il bitrate della sorgente originale.</string> + <string name="track_info_summary_server_prioritized">La qualità del file da riprodurre è lasciata alla decisione del server. L\'app non imporrà la scelta di codec e bitrate per eventuali transcoding.</string> + <string name="track_info_summary_transcoding_bitrate">L\'applicazione richiederà al server di modificare il bitrate del file. L\'utente ha richiesto un bitrate di %1$s, mentre il codec del file sorgente rimarrà lo stesso. Eventuali modifiche al bitrate del file nel formato scelto saranno effettuate dal server, che potrebbe o meno supportare l\'operazione.</string> + <string name="track_info_summary_transcoding_codec">L\'applicazione richiederà al server di transcodedare il file. Il codec richiesto dall\'utente è %1$s, mentre il bitrate sarà lo stesso del file sorgente. L\'eventuale transcoding del file nel formato scelto dipende dal server, in quanto potrebbe o meno supportare l\'operazione.</string> + <string name="track_info_title">Titolo</string> + <string name="track_info_track_number">Numero traccia</string> + <string name="track_info_transcoded_content_type">Tipo di contenuto transcodedato</string> + <string name="track_info_transcoded_suffix">Suffisso transcodedato</string> + <string name="track_info_year">Anno</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">Un ringraziamento speciale va a unDraw, senza le cui illustrazioni non avremmo potuto rendere questa applicazione più bella.</string> + <string name="undraw_url">https://undraw.co/</string> +</resources> diff --git a/app/src/main/res/values-ko/arrays.xml b/app/src/main/res/values-ko/arrays.xml new file mode 100644 index 0000000..2ae1c2c --- /dev/null +++ b/app/src/main/res/values-ko/arrays.xml @@ -0,0 +1,242 @@ +<resources> + <string-array name="theme_list_titles"> + <item>라이트</item> + <item>다크</item> + <item>시스템 기본</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>높음</item> + <item>중간</item> + <item>낮음</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>높음</item> + <item>중간</item> + <item>낮음</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>원본</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>원본</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>원본</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>직접 재생</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>직접 재생</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>직접 다운로드</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>10초</item> + <item>5초</item> + <item>2초</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>높음</item> + <item>중간</item> + <item>낮음</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>비활성</item> + <item>트랙</item> + <item>앨범</item> + <item>자동</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>트랜스코딩 하지 않음</item> + <item>서버 셋팅</item> + <item>Wi-Fi 트랜스코딩 포맷</item> + <item>모바일 트랜스코딩 포맷</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>최소한</item> + <item>보통</item> + <item>적극적</item> + <item>최대한</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>최소 별점 0</item> + <item>최소 별점 1</item> + <item>최소 별점 2</item> + <item>최소 별점 3</item> + <item>최소 별점 4</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000..a61c935 --- /dev/null +++ b/app/src/main/res/values-ko/strings.xml @@ -0,0 +1,427 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">문제가 있을 시 https://dontkillmyapp.com에 방문해 주세요. 앱 성능에 영향을 줄 수 있는 절전 기능을 비활성화하는 방법에 대한 자세한 설명을 찾을 수 있습니다.</string> + <string name="activity_battery_optimizations_summary">화면이 꺼진 상태에서 음악 재생을 하기 위해서는 배터리 최적화를 비활성화 해주세요.</string> + <string name="activity_battery_optimizations_title">배터리 최적화</string> + <string name="activity_info_offline_mode">오프라인 모드</string> + <string name="album_bottom_sheet_add_to_playlist">플레이리스트에 추가</string> + <string name="album_bottom_sheet_add_to_queue">재생목록에 추가</string> + <string name="album_bottom_sheet_download_all">모두 다운로드</string> + <string name="album_bottom_sheet_go_to_artist">아티스트로 이동</string> + <string name="album_bottom_sheet_instant_mix">인스턴트 믹스</string> + <string name="album_bottom_sheet_play_next">다음 재생</string> + <string name="album_bottom_sheet_remove_all">모두 제거</string> + <string name="album_bottom_sheet_share">공유</string> + <string name="album_bottom_sheet_shuffle">셔플</string> + <string name="album_catalogue_title">앨범</string> + <string name="album_catalogue_title_expanded">앨범 찾아보기</string> + <string name="album_error_retrieving_artist">아티스트를 검색하던 중 오류가 발생했습니다.</string> + <string name="album_list_page_downloaded">다운로드한 앨범</string> + <string name="album_list_page_most_played">가장 많이 재생한 앨범</string> + <string name="album_list_page_new_releases">New releases</string> + <string name="album_list_page_recently_added">최근 추가한 앨범</string> + <string name="album_list_page_recently_played">최근 재생한 앨범</string> + <string name="album_list_page_starred">즐겨찾기한 앨범</string> + <string name="album_list_page_title">앨범</string> + <string name="album_page_extra_info_button">유사항목 더 보기</string> + <string name="album_page_play_button">재생</string> + <string name="album_page_release_dates_label">%1$s에 발매, %2$s에 최초 발매됨</string> + <string name="album_page_shuffle_button">셔플</string> + <string name="album_page_tracks_count_and_duration">%1$d 곡 • %2$d 분</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">탐색 중…</string> + <string name="artist_bottom_sheet_instant_mix">인스턴트 믹스</string> + <string name="artist_bottom_sheet_shuffle">셔플</string> + <string name="artist_catalogue_title">아티스트</string> + <string name="artist_catalogue_title_expanded">아티스트 찾아보기</string> + <string name="artist_error_retrieving_radio">아티스트의 라디오를 검색하는 중에 오류가 발생했습니다.</string> + <string name="artist_error_retrieving_tracks">아티스트의 트랙을 검색하는 중에 오류가 발생했습니다.</string> + <string name="artist_list_page_downloaded">다운로드한 아티스트</string> + <string name="artist_list_page_starred">즐겨찾기한 아티스트</string> + <string name="artist_list_page_title">아티스트</string> + <string name="artist_page_radio_button">라디오</string> + <string name="artist_page_shuffle_button">셔플</string> + <string name="artist_page_switch_layout_button">레이아웃 전환</string> + <string name="artist_page_title_album_more_like_this_button">유사한 항목 더 보기</string> + <string name="artist_page_title_album_section">앨범</string> + <string name="artist_page_title_biography_more_button">더 보기</string> + <string name="artist_page_title_biography_section">약력</string> + <string name="artist_page_title_most_streamed_song_section">가장 많이 스트리밍한 음악</string> + <string name="artist_page_title_most_streamed_song_see_all_button">모두 보기</string> + <string name="battery_optimization_negative_button">무시</string> + <string name="battery_optimization_neutral_button">다시 묻지 않기</string> + <string name="battery_optimization_positive_button">비활성</string> + <string name="connection_alert_dialog_negative_button">취소</string> + <string name="connection_alert_dialog_neutral_button">데이터 세이버 활성</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">Wi-Fi가 연결되지 않은 상태에서 Subsonic 서버에 대한 액세스가 제한되었습니다. 이 경고를 다시 보지 않으려면 앱 설정에서 연결 확인을 비활성화 해주세요.</string> + <string name="connection_alert_dialog_title">Wi-Fi가 연결되지 않음</string> + <string name="content_description_shuffle_button">셔플</string> + <string name="delete_download_storage_dialog_negative_button">취소</string> + <string name="delete_download_storage_dialog_positive_button">계속</string> + <string name="delete_download_storage_dialog_summary">계속할 시 서버에서 다운로드한 모든 저장 항목이 영구적으로 삭제됩니다.</string> + <string name="delete_download_storage_dialog_title">저장된 항목 삭제</string> + <string name="description_empty_title">설명 란이 비어있습니다.</string> + <string name="disc_titlefull">디스크 %1$s - %2$s</string> + <string name="disc_titleless">디스크 %1$s</string> + <string name="download_directory_dialog_negative_button">취소</string> + <string name="download_directory_dialog_positive_button">다운로드</string> + <string name="download_directory_dialog_summary">하위 폴더를 제외한 해당 폴더의 모든 트랙이 다운로드됩니다.</string> + <string name="download_directory_dialog_title">트랙 다운로드</string> + <string name="download_info_empty_subtitle">음악을 다운로드하면 여기 표시됩니다.</string> + <string name="download_info_empty_title">다운로드 하지 않음</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s 항목</string> + <string name="download_item_single_subtitle_formatter">%1$s 항목</string> + <string name="download_shuffle_all_subtitle">모두 셔플</string> + <string name="download_storage_dialog_sub_summary">변경 사항을 저장하려면 앱을 다시 시작하세요.</string> + <string name="download_storage_dialog_summary">다운로드한 파일을 다른 저장소로 변경하면 기존 저장소에서 다운로드한 파일은 즉시 삭제됩니다.</string> + <string name="download_storage_dialog_title">저장소 옵션 선택</string> + <string name="download_storage_external_dialog_positive_button">외부</string> + <string name="download_storage_internal_dialog_negative_button">내부</string> + <string name="download_title_section">다운로드</string> + <string name="downloaded_bottom_sheet_add_to_queue">재생목록에 추가</string> + <string name="downloaded_bottom_sheet_play_next">다음 재생</string> + <string name="downloaded_bottom_sheet_remove">제거</string> + <string name="downloaded_bottom_sheet_remove_all">모두 제거</string> + <string name="downloaded_bottom_sheet_shuffle">셔플</string> + <string name="empty_string" /> + <string name="error_required">필수 항목</string> + <string name="error_server_prefix">http 또는 https 접두사가 필요합니다.</string> + <string name="exo_download_notification_channel_name">다운로드</string> + <string name="filter_info_selection">둘 이상의 필터를 선택해 주세요.</string> + <string name="filter_title">필터</string> + <string name="filter_artist">아티스트 필터링</string> + <string name="filter_title_expanded">장르 필터링</string> + <string name="genre_catalogue_title">장르 카탈로그</string> + <string name="genre_catalogue_title_expanded">장르 찾아보기</string> + <string name="home_section_radio">라디오</string> + <string name="home_subtitle_best_of">최애 아티스트의 인기곡</string> + <string name="home_subtitle_made_for_you">좋아하는 음악으로 믹스를 시작해 보세요.</string> + <string name="home_subtitle_new_internet_radio_station">새 라디오 추가</string> + <string name="home_subtitle_new_podcast_channel">새 팟캐스트 채널 추가</string> + <string name="home_sync_starred_cancel">취소</string> + <string name="home_sync_starred_download">다운로드</string> + <string name="home_sync_starred_subtitle">트랙 다운로드 시 많은 데이터 사용량이 발생할 수 있습니다.</string> + <string name="home_sync_starred_title">동기화가 필요한 즐겨찾기 트랙이 있는 것 같습니다.</string> + <string name="home_title_best_of">Best of</string> + <string name="home_title_discovery">Discovery</string> + <string name="home_title_discovery_shuffle_all_button">모두 셔플</string> + <string name="home_title_flashback">Flashback</string> + <string name="home_title_internet_radio_station">인터넷 라디오 스테이션</string> + <string name="home_title_last_played">최근 재생</string> + <string name="home_title_last_played_see_all_button">모두 보기</string> + <string name="home_title_last_week">지난 주</string> + <string name="home_title_last_year">지난 해</string> + <string name="home_title_made_for_you">Made for you</string> + <string name="home_title_most_played">가장 많이 재생</string> + <string name="home_title_most_played_see_all_button">모두 보기</string> + <string name="home_title_new_releases">New releases</string> + <string name="home_title_newest_podcasts">새로운 팟캐스트</string> + <string name="home_title_pinned_playlists">재생목록</string> + <string name="home_title_podcast_channels">채널</string> + <string name="home_title_podcast_channels_see_all_button">모두 보기</string> + <string name="home_title_radio_station">라디오 스테이션</string> + <string name="home_title_recently_added">최근 추가</string> + <string name="home_title_recently_added_see_all_button">모두 보기</string> + <string name="home_title_shares">공유</string> + <string name="home_title_starred_albums">★ 즐겨찾기한 앨범</string> + <string name="home_title_starred_albums_see_all_button">모두 보기</string> + <string name="home_title_starred_artists">★ 즐겨찾기한 아티스트</string> + <string name="home_title_starred_artists_see_all_button">모두 보기</string> + <string name="home_title_starred_tracks">★ 즐겨찾기한 트랙</string> + <string name="home_title_starred_tracks_see_all_button">모두 보기</string> + <string name="home_title_top_songs">자주 플레이한 음악</string> + <string name="home_option_reorganize">다시 정렬</string> + <string name="library_title_album">앨범</string> + <string name="library_title_album_see_all_button">모두 보기</string> + <string name="library_title_artist">아티스트</string> + <string name="library_title_artist_see_all_button">모두 보기</string> + <string name="library_title_genre">장르</string> + <string name="library_title_genre_see_all_button">모두 보기</string> + <string name="library_title_music_folder">음악 폴더</string> + <string name="library_title_playlist">플레이리스트</string> + <string name="library_title_playlist_see_all_button">모두 보기</string> + <string name="login_empty">서버가 없습니다.</string> + <string name="login_title">Subsonic 서버</string> + <string name="login_title_expanded">Subsonic 서버</string> + <string name="media_route_menu_title">Cast</string> + <string name="menu_add_button">추가</string> + <string name="menu_add_to_playlist_button">플레이리스트에 추가</string> + <string name="menu_download_all_button">모두 다운로드</string> + <string name="menu_rate_album">앨범 평점 매기기</string> + <string name="menu_download_label">다운로드</string> + <string name="menu_filter_all">모두</string> + <string name="menu_filter_download">다운로드한</string> + <string name="menu_group_by_album">앨범</string> + <string name="menu_group_by_artist">아티스트</string> + <string name="menu_group_by_genre">장르</string> + <string name="menu_group_by_track">트랙</string> + <string name="menu_group_by_year">년도</string> + <string name="menu_home_label">홈</string> + <string name="menu_last_year_name">지난 해</string> + <string name="menu_library_label">라이브러리</string> + <string name="menu_search_button">검색</string> + <string name="menu_settings_button">설정</string> + <string name="menu_sort_artist">아티스트</string> + <string name="menu_sort_name">이름</string> + <string name="menu_sort_random">랜덤</string> + <string name="menu_unpin_button">홈화면에서 제거</string> + <string name="menu_sort_year">년도</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">재생목록 비우기</string> + <string name="player_server_priority">서버 우선순위</string> + <string name="playlist_catalogue_title">플레이리스트 카탈로그</string> + <string name="playlist_catalogue_title_expanded">플레이리스트 찾아보기</string> + <string name="playlist_chooser_dialog_empty">플레이리스트가 없습니다.</string> + <string name="playlist_chooser_dialog_negative_button">취소</string> + <string name="playlist_chooser_dialog_neutral_button">생성</string> + <string name="playlist_chooser_dialog_title">플레이리스트 추가</string> + <string name="playlist_chooser_dialog_toast_add_success">재생 목록에 음악 추가</string> + <string name="playlist_chooser_dialog_toast_add_failure">재생 목록에 음악을 추가하지 못했습니다.</string> + <string name="playlist_counted_tracks">%1$d 트랙 • %2$s</string> + <string name="playlist_duration">재생시간 • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">길게 눌러 삭제하기</string> + <string name="playlist_editor_dialog_hint_name">플레이리스트 이름</string> + <string name="playlist_editor_dialog_negative_button">취소</string> + <string name="playlist_editor_dialog_neutral_button">삭제</string> + <string name="playlist_editor_dialog_positive_button">저장</string> + <string name="playlist_editor_dialog_title">플레이리스트 수정</string> + <string name="playlist_page_play_button">재생</string> + <string name="playlist_page_shuffle_button">셔플</string> + <string name="playlist_song_count">플레이리스트 • %1$d 곡</string> + <string name="podcast_bottom_sheet_add_to_queue">재생목록에 추가</string> + <string name="podcast_bottom_sheet_delete">제거</string> + <string name="podcast_bottom_sheet_download">다운로드</string> + <string name="podcast_bottom_sheet_go_to_channel">채널로 이동</string> + <string name="podcast_bottom_sheet_play_next">다음 재생</string> + <string name="podcast_bottom_sheet_remove">제거</string> + <string name="podcast_channel_catalogue_title">채널</string> + <string name="podcast_channel_catalogue_title_expanded">채널 찾아보기</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">RSS Url</string> + <string name="podcast_channel_editor_dialog_title">팟캐스트 채널</string> + <string name="podcast_channel_page_title_description_section">설명</string> + <string name="podcast_channel_page_title_episode_section">에피소드</string> + <string name="podcast_channel_page_title_no_episode_available">가능한 에피소드가 없습니다.</string> + <string name="podcast_episode_download_request_snackbar">요청이 서버로 전송되었습니다.</string> + <string name="podcast_info_empty_button">섹션을 숨기려면 클릭하세요.\n다시 시작하면 적용됩니다.</string> + <string name="podcast_info_empty_subtitle">채널을 추가하면 표시됩니다.</string> + <string name="podcast_info_empty_title">팟캐스트를 찾을 수 없습니다.</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">라디오 홈페이지 URL</string> + <string name="radio_editor_dialog_hint_name">라디오 이름</string> + <string name="radio_editor_dialog_hint_stream_url">라디오 스트리밍 URL</string> + <string name="radio_editor_dialog_negative_button">취소</string> + <string name="radio_editor_dialog_neutral_button">삭제</string> + <string name="radio_editor_dialog_positive_button">저장</string> + <string name="radio_editor_dialog_title">인터넷 라디오 섹션</string> + <string name="radio_station_info_empty_button">섹션을 숨기려면 클릭하세요.\n다시 시작하면 적용됩니다.</string> + <string name="radio_station_info_empty_subtitle">라디오 스테이션을 추가하면 표시됩니다.</string> + <string name="radio_station_info_empty_title">스테이션을 찾을 수 없습니다.</string> + <string name="rating_dialog_negative_button">취소</string> + <string name="rating_dialog_positive_button">저장</string> + <string name="rating_dialog_title">별점</string> + <string name="search_hint">제목, 아티스트, 앨범 검색</string> + <string name="search_info_minimum_characters">3자 이상 입력하세요.</string> + <string name="search_title_album">앨범</string> + <string name="search_title_artist">아티스트</string> + <string name="search_title_song">음악</string> + <string name="server_signup_dialog_action_low_security">낮은 보안</string> + <string name="server_signup_dialog_hint_name">서버 이름</string> + <string name="server_signup_dialog_hint_password">암호</string> + <string name="server_signup_dialog_hint_url">서버 URL</string> + <string name="server_signup_dialog_hint_username">사용자 이름</string> + <string name="server_signup_dialog_negative_button">취소</string> + <string name="server_signup_dialog_neutral_button">삭제</string> + <string name="server_signup_dialog_positive_button">저장</string> + <string name="server_signup_dialog_title">서버 추가</string> + <string name="server_unreachable_dialog_negative_button">취소</string> + <string name="server_unreachable_dialog_neutral_button">로그인으로 이동</string> + <string name="server_unreachable_dialog_positive_button">무시하고 계속</string> + <string name="server_unreachable_dialog_summary">요청한 서버를 사용할 수 없습니다. 계속하면 한 시간 동안 더 이상 경고하지 않습니다.</string> + <string name="server_unreachable_dialog_title">서버에 연결할 수 없음</string> + <string name="settings_about_summary">Tempus는 안드로이드용 경량 Subsonic 오픈 소스 음악 클라이언트입니다.</string> + <string name="settings_about_title">About</string> + <string name="settings_audio_transcode_download_format">트랜스코딩 포맷</string> + <string name="settings_audio_transcode_download_priority_summary">활성화 시, 아래 트랜스코딩 설정으로 트랙 강제 다운로드를 하지 않습니다.</string> + <string name="settings_audio_transcode_download_priority_title">다운로드 스트리밍에 사용할 서버 설정 우선순위 지정</string> + <string name="settings_audio_transcode_download_summary">활성화 시, 트랜스코딩된 트랙을 다운로드합니다.</string> + <string name="settings_audio_transcode_download_title">트랜스코딩 트랙 다운로드</string> + <string name="settings_audio_transcode_estimate_content_length_summary">활성화 시, 서버가 트랙의 예상 재생 시간을 묻습니다.</string> + <string name="settings_audio_transcode_estimate_content_length_title">예상 재생 시간</string> + <string name="settings_audio_transcode_format_download">다운로드용 트랜스코딩 포맷</string> + <string name="settings_audio_transcode_format_mobile">데이터 사용 시 트랜스코딩 포맷</string> + <string name="settings_audio_transcode_format_wifi">Wi-Fi 사용 시 트랜스코딩 포맷</string> + <string name="settings_audio_transcode_priority_summary">활성화 시, 아래 트랜스코딩 설정으로 트랙 강제 스트리밍을 하지 않습니다.</string> + <string name="settings_audio_transcode_priority_title">서버 트랜스코딩 우선순위 설정</string> + <string name="settings_audio_transcode_priority_toast">서버에 적용할 트랙 트랜스코딩 우선순위</string> + <string name="settings_buffering_strategy">버퍼링 전략</string> + <string name="settings_buffering_strategy_summary">변경 사항을 적용하려면 앱을 수동으로 다시 시작해야 합니다.</string> + <string name="settings_covers_cache">앨범 커버 캐시 크기</string> + <string name="settings_data_saving_mode_summary">데이터 소비를 줄이려면 앨범 커버 다운로드를 피하세요.</string> + <string name="settings_data_saving_mode_title">모바일 데이터 사용량 제한</string> + <string name="settings_delete_download_storage_summary">계속하면 저장된 모든 항목을 완전히 삭제합니다.</string> + <string name="settings_delete_download_storage_title">저장된 항목 삭제</string> + <string name="settings_download_storage_title">스토리지 다운로드</string> + <string name="settings_system_equalizer_summary">오디오 설정 적용</string> + <string name="settings_system_equalizer_title">시스템 이퀄라이저</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Follow the development</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">이미지 해상도 설정</string> + <string name="settings_language">언어</string> + <string name="settings_logout_title">로그아웃</string> + <string name="settings_max_bitrate_download">다운로드 비트 전송률</string> + <string name="settings_max_bitrate_mobile">데이터 사용 시 비트 전송률</string> + <string name="settings_max_bitrate_wifi">Wi-Fi 사용 시 비트 전송률</string> + <string name="settings_media_cache">미디어 파일 캐시 크기</string> + <string name="settings_music_directory">음악 디렉토리 보기</string> + <string name="settings_music_directory_summary">활성화 시, 음악 디렉터리 섹션을 표시합니다. 폴더 탐색이 제대로 작동하려면 서버가 이 기능을 지원해야 합니다.</string> + <string name="settings_podcast">팟캐스트 보기</string> + <string name="settings_podcast_summary">활성화 시, 팟캐스트 섹션을 표시합니다.</string> + <string name="settings_item_rating_summary">활성화 시 평점과 즐겨찾기 여부가 표시됩니다</string> + <string name="settings_queue_syncing_countdown">동기화 타이머</string> + <string name="settings_queue_syncing_summary">활성화 시, 재생목록을 저장하여 재실행 시 상태를 불러올 수 있습니다.</string> + <string name="settings_queue_syncing_title">사용자의 재생목록 동기화</string> + <string name="settings_radio">라디오 보기</string> + <string name="settings_radio_summary">활성화 시, 라디오 섹션을 표시합니다.</string> + <string name="settings_replay_gain">replay gain 모드 설정</string> + <string name="settings_rounded_corner">모서리를 둥글게 하기</string> + <string name="settings_rounded_corner_size">모서리 크기</string> + <string name="settings_rounded_corner_size_summary">모서리의 곡률 각도를 설정합니다.</string> + <string name="settings_rounded_corner_summary">활성화 시, 렌더링된 모든 앨범 커버의 곡률 각도를 설정합니다. 다시 시작하면 적용됩니다.</string> + <string name="settings_scan_title">라이브러리 스캔</string> + <string name="settings_scrobble_title">음악 스크로블링 활성화</string> + <string name="settings_system_language">시스템 언어</string> + <string name="settings_share_title">음악 공유 활성화</string> + <string name="settings_streaming_cache_storage_title">스트리밍 캐시 저장공간</string> + <string name="settings_sub_summary_scrobble">스크로블링은 이 데이터를 수신할 수 있는 서버에 의존합니다.</string> + <string name="settings_summary_skip_min_star_rating">아티스트의 라디오를 들을 때, 인스턴트 믹스를 들을 때, 전체를 셔플할 때 특정 별점 이하의 트랙은 무시됩니다.</string> + <string name="settings_summary_replay_gain">Replay gain은 일관된 청취 경험을 위해 오디오 트랙의 볼륨 레벨을 조정할 수 있는 기능입니다. 이 설정은 필요한 메타데이터가 트랙에 포함된 경우에만 유효합니다.</string> + <string name="settings_summary_scrobble">스크로블링은 기기에서 들은 음악 정보를 음악 서버로 보내는 기능입니다. 이 정보는 음악 선호도에 따른 맞춤 추천을 생성하는 데 사용합니다.</string> + <string name="settings_summary_share">링크를 통해 음악을 공유할 수 있습니다. 이 기능은 서버 측에서 지원 및 활성화되어야 하며 개별 트랙, 앨범, 재생 목록으로 제한됩니다.</string> + <string name="settings_summary_syncing">사용자의 재생목록의 상태를 반환합니다. 재생목록의 트랙, 현재 재생 중인 트랙, 트랙 번호가 포함됩니다. 서버가 이 기능을 지원해야 합니다.</string> + <string name="settings_summary_streaming_cache_size">%1$s \n사용 중: %2$s MiB </string> + <string name="settings_summary_transcoding">트랜스코딩 모드에 우선순위가 부여됩니다. \"직접 재생\"으로 설정하면 파일의 비트 전송률이 변경되지 않습니다.</string> + <string name="settings_summary_transcoding_download">트랜스코딩된 미디어를 다운로드합니다. 활성화하면 다운로드 endpoint를 사용하지 않고 다음 설정이 사용됩니다. \n\n \"다운로드용 트랜스코딩 포맷\"이 \"직접 다운로드\"로 설정된 경우 파일의 비트 전송률은 변경되지 않습니다.</string> + <string name="settings_summary_transcoding_estimate_content_length">파일이 즉시 트랜스코딩되면 일반적으로 트랙 길이를 표시하지 않습니다. 트랙의 재생시간을 추정하는 기능을 지원한다면 서버에 요청할 수 있지만 응답 시간이 필요할 수 있습니다.</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">활성화 시, 즐겨찾기 앨범을 오프라인으로 사용할 수 있도록 다운로드합니다.</string> + <string name="settings_sync_starred_albums_for_offline_use_title">오프라인 사용을 위해 즐겨찾기 앨범 동기화</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">활성화 시, 즐겨찾기 트랙을 오프라인으로 사용할 수 있도록 다운로드합니다.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">오프라인 사용을 위해 즐겨찾기 트랙 동기화</string> + <string name="settings_theme">테마</string> + <string name="settings_title_data">데이터</string> + <string name="settings_title_general">일반</string> + <string name="settings_title_rating">별점</string> + <string name="settings_title_replay_gain">Replay Gain</string> + <string name="settings_title_scrobble">스크로블링</string> + <string name="settings_title_skip_min_star_rating">별점 기준으로 트랙 무시</string> + <string name="settings_title_skip_min_star_rating_dialog">음악 별점:</string> + <string name="settings_title_share">공유</string> + <string name="settings_title_syncing">동기화</string> + <string name="settings_title_transcoding">트랜스코딩</string> + <string name="settings_title_transcoding_download">트랜스코딩 다운로드</string> + <string name="settings_title_ui">UI</string> + <string name="settings_transcoded_download">트랜스코딩된 다운로드</string> + <string name="settings_version_title">버전</string> + <string name="settings_wifi_only_summary">모바일 데이터로 스트리밍하려 할 시 확인창을 띄웁니다.</string> + <string name="settings_wifi_only_title">Wi-Fi로만 스트리밍 확인창</string> + <string name="share_bottom_sheet_copy_link">링크 복사</string> + <string name="share_bottom_sheet_delete">공유 삭제</string> + <string name="share_bottom_sheet_update">공유 업데이트</string> + <string name="share_subtitle_item">만료일: %1$s</string> + <string name="share_unsupported_error">공유 기능을 지원하지 않거나 활성화되지 않았습니다.</string> + <string name="share_update_dialog_hint_description">설명</string> + <string name="share_update_dialog_hint_expiration_date">만료일</string> + <string name="share_update_dialog_negative_button">취소</string> + <string name="share_update_dialog_positive_button">저장</string> + <string name="share_update_dialog_title">공유</string> + <string name="song_bottom_sheet_add_to_playlist">플레이리스트에 추가</string> + <string name="song_bottom_sheet_add_to_queue">재생목록에 추가</string> + <string name="song_bottom_sheet_download">다운로드</string> + <string name="song_bottom_sheet_error_retrieving_album">앨범 검색 중 오류가 발생했습니다.</string> + <string name="song_bottom_sheet_error_retrieving_artist">아티스트 검색 중 오류가 발생했습니다.</string> + <string name="song_bottom_sheet_go_to_album">앨범으로 이동</string> + <string name="song_bottom_sheet_go_to_artist">아티스트로 이동</string> + <string name="song_bottom_sheet_instant_mix">인스턴트 믹스</string> + <string name="song_bottom_sheet_play_next">다음 재생</string> + <string name="song_bottom_sheet_rate">별점</string> + <string name="song_bottom_sheet_remove">제거</string> + <string name="song_bottom_sheet_share">공유</string> + <string name="song_list_page_downloaded">다운로드됨</string> + <string name="song_list_page_most_played">가장 많이 재생한 트랙</string> + <string name="song_list_page_recently_added">최근 추가한 트랙</string> + <string name="song_list_page_recently_played">최근 재생한 트랙</string> + <string name="song_list_page_starred">즐겨찾기한 트랙</string> + <string name="song_list_page_top">%1$s\의 top tracks</string> + <string name="song_list_page_year">년도 %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">취소</string> + <string name="starred_sync_dialog_neutral_button">계속</string> + <string name="starred_sync_dialog_positive_button">계속해서 다운로드</string> + <string name="starred_sync_dialog_summary">즐겨찾기한 트랙을 다운로드할 시 많은 양의 데이터가 필요할 수 있습니다.</string> + <string name="starred_sync_dialog_title">즐겨찾기 한 트랙 동기화</string> + <string name="track_info_album">앨범</string> + <string name="track_info_artist">아티스트</string> + <string name="track_info_bitrate">비트 전송률</string> + <string name="track_info_content_type">컨텐츠 타입</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">트랙 정보</string> + <string name="track_info_disc_number">디스크 번호</string> + <string name="track_info_duration">재생 시간</string> + <string name="track_info_genre">장르</string> + <string name="track_info_path">경로</string> + <string name="track_info_sampling_rate">샘플링 레이트</string> + <string name="track_info_size">크기</string> + <string name="track_info_suffix">접미사</string> + <string name="track_info_summary_downloaded_file">파일은 Subsonic API를 사용하여 다운로드되었습니다. 파일의 코덱과 비트 전송률은 소스 파일과 동일하게 유지됩니다.</string> + <string name="track_info_summary_full_transcode">서버에 파일을 트랜스코딩하고 비트 전송률을 수정하도록 요청합니다. 사용자가 요청한 코덱은 %1$s이고 비트 전송률은 %2$s입니다. 선택한 형식의 파일 코덱 및 비트 전송률에 대한 변경 사항은 서버에서 수행하며 서버가 이를 지원하지 않을 수 있습니다.</string> + <string name="track_info_summary_original_file">서버에서 제공한 원본 파일만 읽습니다. 앱은 원본 소스의 비트 전송률을 사용하여 트랜스코딩되지 않은 파일을 서버에 명시적으로 요청합니다.</string> + <string name="track_info_summary_server_prioritized">파일의 품질을 서버 설정에 맞춥니다. 앱은 잠재적인 트랜스코딩에 대해 코덱 및 비트 전송률 선택을 강제하지 않습니다.</string> + <string name="track_info_summary_transcoding_bitrate">서버에 파일의 비트 전송률을 수정하도록 요청합니다. 사용자가 %1$s의 비트 전송률을 요청해도 소스 파일의 코덱은 동일하게 유지됩니다. 선택한 형식의 파일 비트 전송률에 대한 변경 사항은 서버에서 수행하며 서버가 이를 지원하지 않을 수 있습니다.</string> + <string name="track_info_summary_transcoding_codec">서버에 파일을 트랜스코딩 하도록 요청합니다. 사용자가 요청한 코덱은 %1$s이고 비트 전송률은 소스 파일과 동일합니다. 서버가 기능을 지원할 시에만 선택한 형식으로 트랜스코딩 됩니다.</string> + <string name="track_info_title">타이틀</string> + <string name="track_info_track_number">트랙 번호</string> + <string name="track_info_transcoded_content_type">트랜스코딩된 콘텐츠 유형</string> + <string name="track_info_transcoded_suffix">트랜스코딩된 접미사</string> + <string name="track_info_year">년도</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">이 앱을 일러스트로 더 다채롭게 꾸밀 수 있도록 해준 unDraw 에 특별히 감사드립니다.</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="home_rearrangement_dialog_subtitle">이 작업은 시간이 소요되며, 다시 시작 후 적용됩니다</string> + <string name="home_section_music">음악</string> + <string name="home_section_podcast">팟캐스트</string> + <string name="home_title_last_month">지난 달</string> + <string name="menu_last_week_name">지난 주</string> + <string name="menu_last_month_name">지난 달</string> + <string name="menu_sort_recently_added">최근에 추가됨</string> + <string name="menu_sort_recently_played">최근에 재생됨</string> + <string name="menu_sort_most_played">많이 재생됨</string> + <string name="menu_sort_least_recently_starred">즐겨찾기 오래된순</string> + <string name="menu_pin_button">홈화면에 추가</string> + <string name="album_page_release_date_label">%1$s에 발매됨</string> + <string name="settings_audio_quality">오디오 품질 표시하기</string> + <string name="settings_audio_quality_summary">오디오 트랙에 비트레이트와 포맷이 표시됩니다.</string> + <string name="settings_song_rating">음악 별점 표시하기</string> + <string name="settings_streaming_cache_size">스트리밍 캐시 크기</string> + <string name="streaming_cache_storage_dialog_sub_summary">변경 사항을 저장하려면 앱을 다시 시작하세요.</string> + <string name="streaming_cache_storage_dialog_summary">캐시 파일을 다른 저장소로 변경하면 기존의 캐시 파일이 삭제될 수 있습니다.</string> + <string name="streaming_cache_storage_dialog_title">저장소 옵션 선택</string> + <string name="streaming_cache_storage_external_dialog_positive_button">외부</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">내부</string> + <string name="github_update_dialog_negative_button">나중에 다시 알려주기</string> + <string name="github_update_dialog_positive_button">지금 다운로드 받기</string> + <string name="github_update_dialog_summary">Github에 최신 버전이 존재합니다</string> + <string name="github_update_dialog_title">업데이트 가능</string> + <string name="home_rearrangement_dialog_negative_button">취소</string> + <string name="home_rearrangement_dialog_neutral_button">초기화</string> + <string name="home_rearrangement_dialog_positive_button">저장</string> + <string name="home_rearrangement_dialog_title">홈 다시 정렬</string> + <string name="home_sync_starred_albums_title">즐겨찾기한 앨범 동기화</string> + <string name="menu_sort_most_recently_starred">즐겨찾기 최신순</string> + <string name="player_unknown_format">즐겨찾기 오래된순</string> + <string name="player_transcoding">트랜스코딩</string> + <string name="server_signup_dialog_action_delete_toast">길게 눌러 삭제하기</string> + <string name="settings_song_rating_summary">활성화 시, 별점이 음악 페이지에서 숨겨집니다 \n*다시 시작이 필요합니다</string> + <string name="starred_album_sync_dialog_summary">즐겨찾기한 앨범을 다운로드할 시 많은 양의 데이터가 필요할 수 있습니다.</string> + <string name="starred_album_sync_dialog_title">즐겨찾기 한 앨범 동기화</string> + <string name="settings_item_rating">평점 표시하기</string> +</resources> diff --git a/app/src/main/res/values-night-v35/styles.xml b/app/src/main/res/values-night-v35/styles.xml new file mode 100644 index 0000000..5c22b69 --- /dev/null +++ b/app/src/main/res/values-night-v35/styles.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar"> + <item name="colorPrimary">@color/md_theme_dark_primary</item> + <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item> + <item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item> + <item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item> + <item name="colorSecondary">@color/md_theme_dark_secondary</item> + <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item> + <item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item> + <item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer + </item> + <item name="colorTertiary">@color/md_theme_dark_tertiary</item> + <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item> + <item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item> + <item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer + </item> + <item name="colorError">@color/md_theme_dark_error</item> + <item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item> + <item name="colorOnError">@color/md_theme_dark_onError</item> + <item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item> + <item name="android:colorBackground">@color/md_theme_dark_background</item> + <item name="colorOnBackground">@color/md_theme_dark_onBackground</item> + <item name="colorSurface">@color/md_theme_dark_surface</item> + <item name="colorOnSurface">@color/md_theme_dark_onSurface</item> + <item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item> + <item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item> + <item name="colorOutline">@color/md_theme_dark_outline</item> + <item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item> + <item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item> + <item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item> + + <item name="android:windowLightStatusBar">false</item> + <item name="android:statusBarColor">?attr/colorSurface</item> + <item name="android:navigationBarColor">?attr/colorSurface</item> + <item name="android:scrollbars">none</item> + + <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item> + </style> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..6a3ae6f --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="titleTextColor">#DADADA</color> + <color name="subtitleTextColor">#9B9B9B</color> + <color name="dividerColor">#404040</color> + + <color name="lyricsTextColor">#DADADA</color> + <color name="shadowsLyricsTextColor">#606060</color> + + <color name="searchPlaceholderColor">#CFCFCF</color> + <color name="searchColor">#DADADA</color> +</resources> + diff --git a/app/src/main/res/values-night/colors_widget.xml b/app/src/main/res/values-night/colors_widget.xml new file mode 100644 index 0000000..7bda2da --- /dev/null +++ b/app/src/main/res/values-night/colors_widget.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="widget_bg">#CC000000</color> + <color name="widget_title">#FFFFFFFF</color> + <color name="widget_subtitle">#B3FFFFFF</color> + <color name="widget_icon_tint">#FFFFFFFF</color> +</resources> diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..e62f234 --- /dev/null +++ b/app/src/main/res/values-night/styles.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar"> + <item name="colorPrimary">@color/md_theme_dark_primary</item> + <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item> + <item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item> + <item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item> + <item name="colorSecondary">@color/md_theme_dark_secondary</item> + <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item> + <item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item> + <item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item> + <item name="colorTertiary">@color/md_theme_dark_tertiary</item> + <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item> + <item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item> + <item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item> + <item name="colorError">@color/md_theme_dark_error</item> + <item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item> + <item name="colorOnError">@color/md_theme_dark_onError</item> + <item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item> + <item name="android:colorBackground">@color/md_theme_dark_background</item> + <item name="colorOnBackground">@color/md_theme_dark_onBackground</item> + <item name="colorSurface">@color/md_theme_dark_surface</item> + <item name="colorOnSurface">@color/md_theme_dark_onSurface</item> + <item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item> + <item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item> + <item name="colorOutline">@color/md_theme_dark_outline</item> + <item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item> + <item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item> + <item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item> + + <item name="android:windowLightStatusBar">false</item> + <item name="android:statusBarColor">?attr/colorSurface</item> + <item name="android:navigationBarColor">?attr/colorSurface</item> + <item name="android:scrollbars">none</item> + </style> + + <style name="Divider"> + <item name="android:layout_width">match_parent</item> + <item name="android:layout_height">0.5dp</item> + <item name="android:background">@color/dividerColor</item> + </style> + + <style name="NoConnectionTextView"> + <item name="background">?attr/colorErrorContainer</item> + <item name="android:textColor">?attr/colorOnErrorContainer</item> + </style> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-pl/arrays.xml b/app/src/main/res/values-pl/arrays.xml new file mode 100644 index 0000000..f310591 --- /dev/null +++ b/app/src/main/res/values-pl/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Jasny</item> + <item>Ciemny</item> + <item>Domyślny systemu</item> + </string-array> + <string-array name="theme_list_values"> + <item>jasny</item> + <item>ciemny</item> + <item>domyślny</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Duży</item> + <item>Średni</item> + <item>Mały</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Duża</item> + <item>Średnia</item> + <item>Mała</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Wyłączone</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Oryginalny</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Oryginalny</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Oryginalny</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Odtwarzanie bezpośrednie</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Odtwarzanie bezpośrednie</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Pobieranie bezpośrednie</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Dziesięć sekund</item> + <item>Pięć sekund</item> + <item>Dwie sekundy</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Duży</item> + <item>Średni</item> + <item>Mały</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Wyłączony</item> + <item>Utwór</item> + <item>Album</item> + <item>Auto</item> + </string-array> + <string-array name="replay_gain_values"> + <item>wyłączony</item> + <item>utwór</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Nie transkoduj</item> + <item>Ustawienia serwera</item> + <item>Format transkodowania Wi-FI</item> + <item>Format transkodowania sieci komórkowej</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Minimalna</item> + <item>Średnia</item> + <item>Agresywna</item> + <item>Ekstremalna</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>Minimum 0 gwiazdek</item> + <item>Minimum 1 gwiazdka</item> + <item>Minimum 2 gwiazdki</item> + <item>Minimum 3 gwiazdki</item> + <item>Minimum 4 gwiazdki</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000..61c200e --- /dev/null +++ b/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,525 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Jeżeli masz problemy odwiedź stronę https://dontkillmyapp.com. Podaje ona dokładne instrukcje na temat tego jak wyłączyć funkcje oszczędzania energii które mogą wpływać na wydajność aplikacji.</string> + <string name="activity_battery_optimizations_summary">Wyłącz optymalizacje baterii aby odtwarzać media przy wyłączonym ekranie.</string> + <string name="activity_battery_optimizations_title">Optymalizcje Baterii</string> + <string name="activity_info_offline_mode">Tryb offline</string> + <string name="album_bottom_sheet_add_to_playlist">Dodaj do playlisty</string> + <string name="album_bottom_sheet_add_to_queue">Dodaj do kolejki</string> + <string name="album_bottom_sheet_download_all">Pobierz wszystkie</string> + <string name="album_bottom_sheet_go_to_artist">Przejdź do wykonawcy</string> + <string name="album_bottom_sheet_instant_mix">Natychmiastowy mix</string> + <string name="album_bottom_sheet_play_next">Odtwórz jako następne</string> + <string name="album_bottom_sheet_remove_all">Usuń wszystkie</string> + <string name="album_bottom_sheet_share">Udostępnij</string> + <string name="album_bottom_sheet_shuffle">Odtwórz losowo</string> + <string name="album_catalogue_title">Albumy</string> + <string name="album_catalogue_title_expanded">Przeglądaj Albumy</string> + <string name="album_error_retrieving_artist">Błąd podczas pobierania wykonawcy</string> + <string name="album_list_page_downloaded">Pobrane albumy</string> + <string name="album_list_page_most_played">Najczęściej odtwarzane albumy</string> + <string name="album_list_page_new_releases">Nowe wydania</string> + <string name="album_list_page_recently_added">Albumy dodane niedawno</string> + <string name="album_list_page_recently_played">Albumy odtwarzane niedawno</string> + <string name="album_list_page_starred">Albumy oznaczone gwiazdką</string> + <string name="album_list_page_title">Albumy</string> + <string name="album_page_extra_info_button">Więcej podobnych</string> + <string name="album_page_play_button">Odtwarzaj</string> + <string name="album_page_release_date_label">Wydane %1$s</string> + <string name="album_page_release_dates_label">Wydane %1$s, oryginalnie %2$s</string> + <string name="album_page_shuffle_button">Odtwarzaj losowo</string> + <string name="album_page_tracks_count_and_duration">%1$d utworów • %2$d minut</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Szukanie…</string> + <string name="artist_bottom_sheet_instant_mix">Natychmiastowy mix mix</string> + <string name="artist_bottom_sheet_shuffle">Odtwórz losowo</string> + <string name="artist_catalogue_title">Wykonawcy</string> + <string name="artist_catalogue_title_expanded">Przeglądaj wykonawców</string> + <string name="artist_error_retrieving_radio">Błąd podczas pobierania radia wykonawcy</string> + <string name="artist_error_retrieving_tracks">Błąd podczas pobierania utworów wykonawcy</string> + <string name="artist_list_page_downloaded">Pobrani wykonawcy</string> + <string name="artist_list_page_starred">Wykonawcy oznaczeni gwiazdką</string> + <string name="artist_list_page_title">Wykonawcy</string> + <string name="artist_page_radio_button">Radio</string> + <string name="artist_page_shuffle_button">Odtwarzanie losowe</string> + <string name="artist_page_switch_layout_button">Zmień układ</string> + <string name="artist_page_title_album_more_like_this_button">Więcej podobnych</string> + <string name="artist_page_title_album_section">Albumy</string> + <string name="artist_page_title_biography_more_button">Więcej</string> + <string name="artist_page_title_biography_section">Biografia</string> + <string name="artist_page_title_most_streamed_song_section">Najczęsciej słuchane utwory</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Zobacz wszystkie</string> + <string name="battery_optimization_negative_button">Ignoruj</string> + <string name="battery_optimization_neutral_button">Nie pytaj ponownie</string> + <string name="battery_optimization_positive_button">Wyłącz</string> + <string name="connection_alert_dialog_negative_button">Anuluj</string> + <string name="connection_alert_dialog_neutral_button">Włącz oszczędzanie danych</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">Dostęp do serwera Subsonic na połaczeniach innych niż Wi-Fi został ograniczony. Aby zapobiec ponownemu pojawieniu się tej informacji, wyłącz sprawdzanie połączenia w ustawieniach aplikacji.</string> + <string name="connection_alert_dialog_title">Nie połączono z Wi-Fi</string> + <string name="content_description_shuffle_button">Odtwarzanie losowe</string> + <string name="delete_download_storage_dialog_negative_button">Anuluj</string> + <string name="delete_download_storage_dialog_positive_button">Kontynuuj</string> + <string name="delete_download_storage_dialog_summary">Miej na uwadze to że kontynuowanie tej operacji spowoduje usunięcie wszystkich pobranych plików z wszystkich serwerów.</string> + <string name="delete_download_storage_dialog_title">Usuwanie zapisanych plików</string> + <string name="description_empty_title">Brak opisu</string> + <string name="disc_titlefull">Płyta %1$s - %2$s</string> + <string name="disc_titleless">Płyta %1$s</string> + <string name="download_directory_dialog_negative_button">Anuluj</string> + <string name="download_directory_dialog_positive_button">Pobierz</string> + <string name="download_directory_dialog_summary">Wszystkie utwory w tym folderze zostaną pobrane. Utwory dostępne w subfolderach nie zostaną pobrane.</string> + <string name="download_directory_dialog_title">Pobierz utwory</string> + <string name="download_info_empty_subtitle">Gdy pobierzesz piosenkę, znajdziesz ją tutaj</string> + <string name="download_info_empty_title">Narazie brak pobranych!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s elementów</string> + <string name="download_item_single_subtitle_formatter">%1$s element</string> + <string name="download_shuffle_all_subtitle">Odtwórz losowo wszystkie</string> + <string name="download_storage_dialog_sub_summary">Aby zmiany przyniosły efekt, zrestartuj aplikację.</string> + <string name="download_storage_dialog_summary">Zmiana lokalizacji pobieranych plików z jednej na drugą spowoduje natychmiastowe usunięcie wcześniej pobranych plików w drugiej lokalizacji</string> + <string name="download_storage_dialog_title">Wybieranie pamięci</string> + <string name="download_storage_external_dialog_positive_button">Zewnętrzna</string> + <string name="download_storage_internal_dialog_negative_button">Wewnętrzna</string> + <string name="download_title_section">Pobrane</string> + <string name="downloaded_bottom_sheet_add_to_queue">Dodaj do kolejki</string> + <string name="downloaded_bottom_sheet_play_next">Odtwarzaj jako następne</string> + <string name="downloaded_bottom_sheet_remove">Usuń</string> + <string name="downloaded_bottom_sheet_remove_all">Usuń wszystkie</string> + <string name="downloaded_bottom_sheet_shuffle">Odtwarzaj losowo</string> + <string name="empty_string" /> + <string name="error_required">Wymagane</string> + <string name="error_server_prefix">wymagany jest prefiks http lub https</string> + <string name="exo_download_notification_channel_name">Pobieranie</string> + <string name="exo_controls_heart_off_description">Wyłącz serce</string> + <string name="exo_controls_heart_on_description">Włącz serce</string> + <string name="cast_expanded_controller_loading">Ładowanie…</string> + <string name="filter_info_selection">Wybierz dwa lub więcej filtrów</string> + <string name="filter_title">Filtry</string> + <string name="filter_artist">Filtruj wykonawców</string> + <string name="filter_title_expanded">Filtruj Gatunki</string> + <string name="generic_list_page_count">(%1$d)</string> + <string name="generic_list_page_count_unknown">(+%1$d)</string> + <string name="genre_catalogue_title">Katalog Gatunków</string> + <string name="genre_catalogue_title_expanded">Przeglądaj Gatunki</string> + <string name="github_update_dialog_negative_button">Przypomnij mi później</string> + <string name="github_update_dialog_neutral_button">Wesprzyj mnie</string> + <string name="github_update_dialog_positive_button">Pobierz teraz</string> + <string name="github_update_dialog_summary">Nowa wersja aplikacji jest dostępna na GitHubie.</string> + <string name="github_update_dialog_title">Dostępna aktualizacja</string> + <string name="home_rearrangement_dialog_negative_button">Anuluj</string> + <string name="home_rearrangement_dialog_neutral_button">Reset</string> + <string name="home_rearrangement_dialog_positive_button">Zapisz</string> + <string name="home_rearrangement_dialog_title">Zmień układ strony głównej</string> + <string name="home_rearrangement_dialog_subtitle">Weź pod uwagę to że, żeby zmiany nastąpiły, musisz zrestartować aplikację.</string> + <string name="home_section_music">Muzyka</string> + <string name="home_section_podcast">Podcasty</string> + <string name="home_section_radio">Radio</string> + <string name="home_subtitle_best_of">Top piosenki od twoich ulubionych wykonawców</string> + <string name="home_subtitle_made_for_you">Stwórz miks z piosenki którą lubisz</string> + <string name="home_subtitle_new_internet_radio_station">Dodaj nowe radio</string> + <string name="home_subtitle_new_podcast_channel">Dodaj nowy kanał podcastów</string> + <string name="home_sync_starred_cancel">Anuluj</string> + <string name="home_sync_starred_download">Pobierz</string> + <string name="home_sync_starred_subtitle">Pobieranie tych utworów może zużyć dużo danych</string> + <string name="home_sync_starred_title">Wygląda na to że, są utwory oznaczone gwiazdką</string> + <string name="home_sync_starred_albums_title">Synchronizacja albumów oznaczonych gwiazdką</string> + <string name="home_sync_starred_albums_subtitle">Albumy oznaczone gwiazdką będą dostępne offline</string> + <string name="home_sync_starred_artists_title">Synchronizacja wykonawców oznaczonych gwiazdką</string> + <string name="home_sync_starred_artists_subtitle">Masz wykonawców oznaczonych gwiazdką, bez pobranej muzyki</string> + <string name="home_title_best_of">Najlepsze</string> + <string name="home_title_discovery">Odkrywanie</string> + <string name="home_title_discovery_shuffle_all_button">Odtwórz wszystkie losowo</string> + <string name="home_title_flashback">Podróż w czasie</string> + <string name="home_title_internet_radio_station">Internetowe stacje radiowe</string> + <string name="home_title_last_played">Ostatnio odtwarzane</string> + <string name="home_title_last_played_see_all_button">Zobacz wszystkie</string> + <string name="home_title_last_week">Ostatni tydzień</string> + <string name="home_title_last_month">Ostatni miesiąc</string> + <string name="home_title_last_year">Ostatni rok</string> + <string name="home_title_made_for_you">Stworzone dla ciebie</string> + <string name="home_title_most_played">Najczęściej odtwarzane</string> + <string name="home_title_most_played_see_all_button">Zobacz wszystkie</string> + <string name="home_title_new_releases">Nowe wydania</string> + <string name="home_title_newest_podcasts">Najnowsze podcasty</string> + <string name="home_title_pinned_playlists">Playlisty</string> + <string name="home_title_podcast_channels">Kanały</string> + <string name="home_title_podcast_channels_see_all_button">Zobacz wszystkie</string> + <string name="home_title_radio_station">Stacje radiowe</string> + <string name="home_title_recently_added">Ostatnio dodane</string> + <string name="home_title_recently_added_see_all_button">Zobacz wszystkie</string> + <string name="home_title_shares">Udostępnienia</string> + <string name="home_title_starred_albums">★ Albumy oznaczone gwiazdką</string> + <string name="home_title_starred_albums_see_all_button">Zobacz wszystkie</string> + <string name="home_title_starred_artists">★ Wykonawcy oznaczeni gwiazdką</string> + <string name="home_title_starred_artists_see_all_button">Zobacz wszystkich</string> + <string name="home_title_starred_tracks">★ Utwory oznaczone gwiazdką</string> + <string name="home_title_starred_tracks_see_all_button">Zobacz wszystkie</string> + <string name="home_title_top_songs">Twoje top piosenki</string> + <string name="home_option_reorganize">Zmiana układu</string> + <string name="label_dot_separator" translatable="false">•</string> + <string name="label_placeholder" translatable="false">--</string> + <string name="library_title_album">Albumy</string> + <string name="library_title_album_see_all_button">Zobacz wszystkie</string> + <string name="library_title_artist">Wykonawcy</string> + <string name="library_title_artist_see_all_button">Zobacz wszystkich</string> + <string name="library_title_genre">Gatunki</string> + <string name="library_title_genre_see_all_button">Zobacz wszystkie</string> + <string name="library_title_music_folder">Foldery z muzyką</string> + <string name="library_title_playlist">Playlisty</string> + <string name="library_title_playlist_see_all_button">Zobacz wszystkie</string> + <string name="login_empty">Brak dodanych serwerów</string> + <string name="login_title">Serwery Subsonic</string> + <string name="login_title_expanded">Serwery Subsonic</string> + <string name="media_route_menu_title">Przesyłanie</string> + <string name="menu_add_button">Dodaj</string> + <string name="menu_add_to_playlist_button">Dodaj do playlisty</string> + <string name="menu_download_all_button">Pobierz wszystko</string> + <string name="menu_rate_album">Oceń album</string> + <string name="menu_download_label">Pobrane</string> + <string name="menu_filter_all">Wszystko</string> + <string name="menu_filter_download">Pobrane</string> + <string name="menu_group_by_album">Albumy</string> + <string name="menu_group_by_artist">Wykonawcy</string> + <string name="menu_group_by_genre">Gatkunki</string> + <string name="menu_group_by_track">Utwory</string> + <string name="menu_group_by_year">Rok</string> + <string name="menu_home_label">Strona główna</string> + <string name="menu_last_week_name">Ostatni tydzień</string> + <string name="menu_last_month_name">Ostatni miesiąc</string> + <string name="menu_last_year_name">Ostatni rok</string> + <string name="menu_library_label">Biblioteka</string> + <string name="menu_search_button">Szukaj</string> + <string name="menu_settings_button">Ustawienia</string> + <string name="menu_sort_artist">Wykonawca</string> + <string name="menu_sort_name">Nazwa</string> + <string name="menu_sort_random">Losowo</string> + <string name="menu_sort_recently_added">Ostatnio dodane</string> + <string name="menu_sort_recently_played">Ostatnio odtwarzane</string> + <string name="menu_sort_most_played">Najczęściej odtwarzane</string> + <string name="menu_sort_most_recently_starred">Ostatnio oznaczone największą liczbą gwiazdek</string> + <string name="menu_sort_least_recently_starred">Ostatnio oznaczone najniższą liczbą gwiazdek</string> + <string name="menu_pin_button">Dodaj do ekranu głównego</string> + <string name="menu_unpin_button">Usuń z ekranu głównego</string> + <string name="menu_sort_year">Rok</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Wyczyść kolejkę odtwarzania</string> + <string name="player_queue_save_queue_success">Zapisana kolejka odtwarzania</string> + <string name="player_lyrics_download_content_description">Pobierz teksty do odtwarzania offline</string> + <string name="player_lyrics_downloaded_content_description">Teksty pobrane do odtwarzania offline</string> + <string name="player_lyrics_download_success">Zapisano tekst do odtwarzania offline.</string> + <string name="player_lyrics_download_failure">Tekst nie jest dostępny do pobrania.</string> + <string name="player_server_priority">Priorytet Serwerów</string> + <string name="player_unknown_format">Nieznany format</string> + <string name="player_transcoding">Transkodowanie</string> + <string name="player_transcoding_requested">zażądane</string> + <string name="playlist_catalogue_title">Katalog Playlist</string> + <string name="playlist_catalogue_title_expanded">Przeglądaj Playlisty</string> + <string name="playlist_chooser_dialog_empty">Nie utworzono playlist</string> + <string name="playlist_chooser_dialog_negative_button">Anuluj</string> + <string name="playlist_chooser_dialog_neutral_button">Utwórz</string> + <string name="playlist_chooser_dialog_title">Dodaj do playlisty</string> + <string name="playlist_chooser_dialog_toast_add_success">Dodano piosenki do playlisty</string> + <string name="playlist_chooser_dialog_toast_add_failure">Nie udało się dodać piosenek do playlisty</string> + <string name="playlist_chooser_dialog_toast_all_skipped">Pominięto wszystkie piosenki jako duplikaty</string> + <string name="playlist_counted_tracks">%1$d utworów • %2$s</string> + <string name="playlist_duration">Długość • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Przytrzymaj aby usunąć</string> + <string name="playlist_editor_dialog_hint_name">Nazwa Playlisty</string> + <string name="playlist_editor_dialog_negative_button">Anuluj</string> + <string name="playlist_editor_dialog_neutral_button">Usuń</string> + <string name="playlist_editor_dialog_positive_button">Zapisz</string> + <string name="playlist_editor_dialog_title">Edytuj playlistę</string> + <string name="playlist_page_play_button">Odtwórz</string> + <string name="playlist_page_shuffle_button">Odtwarzaj losowo</string> + <string name="playlist_song_count">Playlista • %1$d piosenek</string> + <string name="podcast_bottom_sheet_add_to_queue">Dodaj do kolejki</string> + <string name="podcast_bottom_sheet_delete">Usuń</string> + <string name="podcast_bottom_sheet_download">Pobierz</string> + <string name="podcast_bottom_sheet_go_to_channel">Przejdź do kanału</string> + <string name="podcast_bottom_sheet_play_next">Odtwórz jako następny</string> + <string name="podcast_bottom_sheet_remove">Usuń</string> + <string name="podcast_channel_catalogue_title">Kanały</string> + <string name="podcast_channel_catalogue_title_expanded">Przeglądaj Kanały</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">Url RSS</string> + <string name="podcast_channel_editor_dialog_title">Kanał Podcastu</string> + <string name="podcast_channel_page_title_description_section">Opis</string> + <string name="podcast_channel_page_title_episode_section">Odcinki</string> + <string name="podcast_channel_page_title_no_episode_available">Brak dostępnych odcinków</string> + <string name="podcast_episode_download_request_snackbar">Twoje zapytanie zostało wysłane do serwera</string> + <string name="podcast_info_empty_button">Naciśnij aby ukryć tę sekcję\nEfekty będą widoczne po restarcie</string> + <string name="podcast_info_empty_subtitle">Gdy dodasz kanał, znajdziesz go tutaj</string> + <string name="podcast_info_empty_title">Nie znaleziono podcastów!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">URL Strony Radia</string> + <string name="radio_editor_dialog_hint_name">Nazwa Radia</string> + <string name="radio_editor_dialog_hint_stream_url">URL Z Strumieniem Radia</string> + <string name="radio_editor_dialog_negative_button">Anuluj</string> + <string name="radio_editor_dialog_neutral_button">Usuń</string> + <string name="radio_editor_dialog_positive_button">Zapisz</string> + <string name="radio_editor_dialog_title">Internetowa Stacja Radiowa</string> + <string name="radio_station_info_empty_button">Naciśnij aby ukryć tę sekcję\nEfekty będą widoczne po restarcie</string> + <string name="radio_station_info_empty_subtitle">Gdy dodasz stację radiową, znajdziesz ją tutaj</string> + <string name="radio_station_info_empty_title">Nie znaleziono stacji!</string> + <string name="rating_dialog_negative_button">Anuluj</string> + <string name="rating_dialog_positive_button">Zapisz</string> + <string name="rating_dialog_title">Oceń</string> + <string name="search_hint">Wyszukaj tytuł, wykonawców lub albumy</string> + <string name="search_info_minimum_characters">Wpisz co najmniej trzy znaki</string> + <string name="search_title_album">Albumy</string> + <string name="search_title_artist">Wykonawcy</string> + <string name="search_title_song">Piosenki</string> + <string name="server_signup_dialog_action_low_security">Niskie bezpieczeństwo</string> + <string name="server_signup_dialog_action_delete_toast">Przytrzymaj aby usunąć</string> + <string name="server_signup_dialog_hint_local_address">Lokalny URL</string> + <string name="server_signup_dialog_hint_name">Nazwa Serwera</string> + <string name="server_signup_dialog_hint_password">Hasło</string> + <string name="server_signup_dialog_hint_url">URL Serwera</string> + <string name="server_signup_dialog_hint_username">Nazwa użytkownika</string> + <string name="server_signup_dialog_negative_button">Anuluj</string> + <string name="server_signup_dialog_neutral_button">Usuń</string> + <string name="server_signup_dialog_positive_button">Zapisz</string> + <string name="server_signup_dialog_title">Dodaj serwer</string> + <string name="server_unreachable_dialog_negative_button">Anuluj</string> + <string name="server_unreachable_dialog_neutral_button">Przejdź do logowania</string> + <string name="server_unreachable_dialog_positive_button">Kontynuuj mimo wszystko</string> + <string name="server_unreachable_dialog_summary">Wybrany serwer jest niedostępny. Jeżeli wybierzesz żeby kontynuować ta informacja nie będzie się wyświetlać przez następną godzinę.</string> + <string name="server_unreachable_dialog_title">Serwer jest niedostępny</string> + <string name="settings_about_summary">Tempus jest otwarto-źródłowym i lekkim klientem muzycznym dla Subsonic, stworzonym i zbudowanym natywnie dla Androida.</string> + <string name="settings_about_title">O aplikacji</string> + <string name="settings_always_on_display">Always on display</string> + <string name="settings_allow_playlist_duplicates">Zezwalaj na dodawania duplikatów do playlist</string> + <string name="settings_allow_playlist_duplicates_summary">Jeżeli włączone, duplikaty nie będą sprawdzane podczas dodawania do playlisty.</string> + <string name="settings_audio_transcode_download_format">Format transkodowania</string> + <string name="settings_audio_transcode_download_priority_summary">Jeżeli włączone, Tempus nie będzię wymuszał pobierania utworu z ustawieniami transkodowania wybranymi poniżej.</string> + <string name="settings_audio_transcode_download_priority_title">Priorytetyzuj ustawienia serwera używanego do strumieniowania w pobieraniach</string> + <string name="settings_audio_transcode_download_summary">Jeżeli włączone, Tempus będzie pobierał transkodowane utwory.</string> + <string name="settings_audio_transcode_download_title">Pobieraj transkodowane utwory</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Jeżeli włączone, serwer bedzię odpytywany o przybliżoną długość utworu.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Szacuj długość treści</string> + <string name="settings_audio_transcode_format_download">Format transkodowania dla pobierania</string> + <string name="settings_audio_transcode_format_mobile">Format transkodowania w sieci komórkowej</string> + <string name="settings_audio_transcode_format_wifi">Format transkodowania w sieci Wi-Fi</string> + <string name="settings_audio_transcode_priority_summary">Jeżeli włączone, Tempus nie będzie wymuszał strumieniowania utworu z ustawieniami transkodowania wybranymi poniżej.</string> + <string name="settings_audio_transcode_priority_title">Priorytetyzuj ustawienia transkodowania serwera</string> + <string name="settings_audio_transcode_priority_toast">Priorytet przy transkodowaniu utworu danego serwerowi</string> + <string name="settings_buffering_strategy">Strategia buforowania</string> + <string name="settings_buffering_strategy_summary">Aby zmiany przyniosły efekt, musisz ręcznie zrestartować aplikację.</string> + <string name="settings_choose_download_folder">Wybierz folder dla pobranych plików muzycznych</string> + <string name="settings_clear_download_folder">Wyczyść folder pobierania</string> + <string name="settings_continuous_play_summary">Pozwala muzyce odtwarzać się dalej po końcu playlisty, odtwarza podobne piosenki</string> + <string name="settings_continuous_play_title">Odtwarzanie bez przerwy</string> + <string name="settings_covers_cache">Rozmiar cache dla okładek</string> + <string name="settings_data_saving_mode_summary">Aby zmniejszyć zużycie danych, unikaj pobierania okładek.</string> + <string name="settings_data_saving_mode_title">Ogranicz zużycie danych komórkowych</string> + <string name="settings_delete_download_storage_summary">Zatwierdzenie nieodwracalnie usunie wszystkie zapisane elementy</string> + <string name="settings_delete_download_storage_title">Usuń zapisane elementy</string> + <string name="settings_download_storage_title">Pamięć do pobierania</string> + <string name="settings_download_folder_cleared">Utworzono folder pobierania.</string> + <string name="settings_download_folder_set">Wybrano folder pobierania</string> + <string name="settings_set_download_folder">Ustaw folder pobierania</string> + <string name="settings_system_equalizer_summary">Zmień ustawienia audio</string> + <string name="settings_system_equalizer_title">Korektor systemowy</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Śledź tworzenie aplikacji</string> + <string name="settings_github_title">GitHub</string> + <string name="settings_support_discussion_link">https://github.com/eddyizm/tempus/discussions</string> + <string name="settings_github_update">Aktualizacje</string> + <string name="settings_github_update_title">Sprawdzaj dostępność nowych aktualizacji na githubie</string> + <string name="settings_github_update_summary">Jeżeli używana jest wersja z githuba, domyślnie aplikacja będzie sprawdzać czy są dostępne nowe wydania apk. Kliknij przełącznik aby, wyłączyć automatyczne sprawdzanie</string> + <string name="settings_support_summary">Dołącz do dyskusji i wsparcia społeczności</string> + <string name="settings_support_title">Wsparcie użytkowników</string> + <string name="settings_scan_result">Skanowanie: naliczono %1$d utworów</string> + <string name="settings_image_size">Rozdzielczość obrazów</string> + <string name="settings_language">Język</string> + <string name="settings_logout_title">Wyloguj</string> + <string name="settings_max_bitrate_download">Bitrate dla pobierania</string> + <string name="settings_max_bitrate_mobile">Bitrate dla danych komórkowych</string> + <string name="settings_max_bitrate_wifi">Bitrate dla Wi-Fi</string> + <string name="settings_media_cache">Rozmiar plików cache dla mediów</string> + <string name="settings_music_directory">Pokaż foldery z muzyką</string> + <string name="settings_music_directory_summary">Jeżeli włączone, widoczna będzie sekcja z folderami z muzyką. Weź pod uwagę że żeby funkcja nawigacji po folderach działała poprawnie, serwer musi wspierać tę funkcję.</string> + <string name="settings_podcast">Pokazuj podcasty</string> + <string name="settings_podcast_summary">Jeżeli włączone, widoczna będzie sekcja z podcastami. Zrestartuj aplikację aby, zmiany przyniosły pełny efekt.</string> + <string name="settings_audio_quality">Pokaż jakość audio</string> + <string name="settings_audio_quality_summary">Bitrate i format audio będzie pokazywany dla każdego utworu.</string> + <string name="settings_song_rating">Pokaż ocenę piosenek w gwiazdkach</string> + <string name="settings_song_rating_summary">Jeżeli włączone, pokazuje ocenę w 5 gwiazdkach dla utworu na stronie piosenki\n\n*Wymaga ponownego uruchomienia aplikacji</string> + <string name="settings_item_rating">Pokaż oceny elementów</string> + <string name="settings_item_rating_summary">Jeżeli włączone, ocena elementów oraz czy jest oznaczony jako ulubiony będą pokazywane.</string> + <string name="settings_queue_syncing_countdown">Timer synchronizacji</string> + <string name="settings_queue_syncing_summary">Jeżeli włączone, użytkownik będzie miał możliwość zapisania kolejki i będzie miał możliwość załadowania jej stanu przy otwarciu aplikacji.</string> + <string name="settings_queue_syncing_title">Synchronizuj kolejkę odtwarzania dla tego użytkownika [Niedokończone]</string> + <string name="settings_show_mini_shuffle_button">Pokaż przycisk odtwarzania losowego</string> + <string name="settings_show_mini_shuffle_button_summary">Jeżeli włączone, pokazuje przycisk losowego odtwarzania, i usuwa przycisk serca w mini odtwarzaczu</string> + <string name="settings_radio">Pokaż radio</string> + <string name="settings_radio_summary">Jeżeli włączone, widoczna będzie sekcja radia. Zrestartuj aplikację aby, zmiany przyniosły pełny efekt.</string> + <string name="settings_auto_download_lyrics">Automatyczne pobieranie tesktów</string> + <string name="settings_auto_download_lyrics_summary">Automatycznie zapisuj teksty jeżeli, są dostępne aby, mogły być wyświetlane offline.</string> + <string name="settings_replay_gain">Tryb wzmocnienia głośności przy ponownym odtwarzaniu</string> + <string name="settings_rounded_corner">Zaokrąglone rogi</string> + <string name="settings_rounded_corner_size">Rozmiar rogów</string> + <string name="settings_rounded_corner_size_summary">Ustawia wielkość krzywizny kąta.</string> + <string name="settings_rounded_corner_summary">Jeżeli włączone, ustawia kąt krzywizny dla wszystkich renderowanych okładek. Zmiany przyniosą efekt po restarcie.</string> + <string name="settings_scan_title">Skanuj bibliotekę</string> + <string name="settings_scrobble_title">Włącz scrobbling muzyki</string> + <string name="settings_system_language">Język systemowy</string> + <string name="settings_share_title">Włącz udostępnianie muzyki</string> + <string name="settings_streaming_cache_size">Rozmiar cache dla strumieniowania</string> + <string name="settings_streaming_cache_storage_title">Pamięć cache dla strumieniowania</string> + <string name="settings_sub_summary_scrobble">Ważne jest to że scrobbling polega też na byciu włączonym na serwerze aby otrzymywać te dane.</string> + <string name="settings_summary_skip_min_star_rating">Podczas słuchania radia wykonawcy, natychmiastowego miksu albo podczas odtwarzania losowego, utwory poniżej określonej oceny użytkownika będą ignorowane.</string> + <string name="settings_summary_replay_gain">Wzmocnienie głośności jest funkcją która pozwala tobie na ustawienia poziomu głośności dla utworów aby słuchanie brzmiało cały czas tak samo. To ustawienia działa tylko wtedy kiedy utwór zawiera potrzebne metadane.</string> + <string name="settings_summary_scrobble">Scrobbling jest funkcją która pozwala twojemu urządzeniu na wysyłanie informacji na temat piosenek których słuchasz do serwera muzyki. Te informacje pomagają tworzyć spersonalizowane rekomendacje na podstawie twojego gustu muzycznego.</string> + <string name="settings_summary_share">Pozwala udostępnić użytkownikowi muzykę przez link. Ta funkcjonalność musi być wspierana i włączona na serwerze i jest ograniczona do pojedyńczych utworów, albumów i playlist.</string> + <string name="settings_summary_syncing">Przywraca stan kolejki odtwarzania dla tego użytkownika. Zawiera utwory w kolejce, aktualnie odtwarzany utwór i pozycję w nim. Serwer musi wspierać tę funkcję.\n*To ustawienie nie działa na 100% na wszystkich serwerach/urządzeniach.</string> + <string name="settings_summary_streaming_cache_size">%1$s \nAktualnie w użyciu: %2$s MiB</string> + <string name="settings_summary_transcoding">Priorytet dawany trybowi transkodowania. Jeżeli ustawiony na \"Odtwarzanie bezpośrednie\" bitrate pliku nie zostanie zmieniony.</string> + <string name="settings_summary_transcoding_download">Pobieraj transkdowane media. Jeżeli włączone, endpoint pobierania nie będzie używnany, poza następującymi ustawieniami. \n\n Jeżeli \"Format transkodowania dla pobierania\" jest ustawiony na \"Pobieranie bezpośrednie\" bitrate pliku nie zostanie zmieniony.</string> + <string name="settings_summary_transcoding_estimate_content_length">Kiedy plik jest transkodowany w locie, klient nie pokazuje zwykle długości utworu.Jest możliwe odpytanie serwera który wspiera tą funkcjonalność aby oszacował długość odtwarzanego utworu, ale czasy odpowiedzi mogą być dłuższe.</string> + <string name="settings_sync_starred_artists_for_offline_use_summary">Jeżeli włączone, utwory wykonawców oznaczonych gwiazdką będą pobierane do użycia offline.</string> + <string name="settings_sync_starred_artists_for_offline_use_title">Synchronizuj wykonawców oznacznych gwiazdką do użycia offline</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">Jeżeli włączone, albumy oznaczone gwiazdką będą pobieranew do użycia offline.</string> + <string name="settings_sync_starred_albums_for_offline_use_title">Synchronizuj albumy oznaczone gwiazdką do użycia offline</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Jeżeli włączone, utwory oznaczone gwiazdką będą pobrane do użycia offline.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Zsynchronizuj utwory oznaczone gwiazdką do użycia offline</string> + <string name="settings_theme">Motyw</string> + <string name="settings_title_data">Dane</string> + <string name="settings_title_general">Ogólne</string> + <string name="settings_title_playlist">Playlisty</string> + <string name="settings_title_rating">Oceny</string> + <string name="settings_title_replay_gain">Wzmocnienie głośności przy ponownym odtwarzaniu</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Ignoruj utwory na podstawie oceny</string> + <string name="settings_title_skip_min_star_rating_dialog">Piosenki z oceną:</string> + <string name="settings_title_share">Udostępnianie</string> + <string name="settings_title_syncing">Synchronizacja</string> + <string name="settings_title_transcoding">Transkodowanie</string> + <string name="settings_title_transcoding_download">Transkodowanie Pobrań</string> + <string name="settings_title_ui">Interfejs</string> + <string name="settings_transcoded_download">Transkodowane pobieranie</string> + <string name="settings_version_summary" translatable="false">3.1.0</string> + <string name="settings_version_title">Wersja</string> + <string name="settings_wifi_only_summary">Pytaj o potwierdzenie od użytkownika przed strumieniowaniem przez sieć komórkową.</string> + <string name="settings_wifi_only_title">Alert o strumieniowaniu tylko przez Wi-Fi</string> + <string name="share_bottom_sheet_copy_link">Kopiuj link</string> + <string name="share_bottom_sheet_delete">Usuń udostępnianie</string> + <string name="share_bottom_sheet_update">Zaktualizuj udostępnianie</string> + <string name="share_subtitle_item">Data wygaśnięcia: %1$s</string> + <string name="share_no_expiration">Nigdy</string> + <string name="share_unsupported_error">Udostępnianie nie jest wspierane lub włączone</string> + <string name="asset_link_clipboard_label">Link zasobu Tempus</string> + <string name="asset_link_label_song">UID piosenki</string> + <string name="asset_link_label_album">UID albumu</string> + <string name="asset_link_label_artist">UID wykonmawcy</string> + <string name="asset_link_label_playlist">UID playlisty</string> + <string name="asset_link_label_genre">UID gatunku</string> + <string name="asset_link_label_year">UID roku</string> + <string name="asset_link_label_unknown">UID zasobu</string> + <string name="asset_link_error_unsupported">Niewspierany link zasobu</string> + <string name="asset_link_error_song">Piosenka nie mogła zostać otwarta</string> + <string name="asset_link_error_album">Album nie mógł zostać otwarty</string> + <string name="asset_link_error_artist">Wykonawca nie mógł zostać otwarty</string> + <string name="asset_link_error_playlist">Playlista nie mogła zostać otwarta</string> + <string name="asset_link_chip_text">%1$s • %2$s</string> + <string name="asset_link_copied_toast">Skopiowano %1$s do schowka</string> + <string name="asset_link_debug_toast">Link zasobu: %1$s</string> + <string name="share_update_dialog_hint_description">Opis</string> + <string name="share_update_dialog_hint_expiration_date">Data wygaśnięcia</string> + <string name="share_update_dialog_negative_button">Anuluj</string> + <string name="share_update_dialog_positive_button">Zapisz</string> + <string name="share_update_dialog_title">Udostępnij</string> + <string name="song_bottom_sheet_add_to_playlist">Dodaj do playlisty</string> + <string name="song_bottom_sheet_add_to_queue">Dodaj do kolejki</string> + <string name="song_bottom_sheet_download">Pobierz</string> + <string name="song_bottom_sheet_error_retrieving_album">Błąd podczas pobierania albumu</string> + <string name="song_bottom_sheet_error_retrieving_artist">Błąd podczas pobierania wykonawcy</string> + <string name="song_bottom_sheet_go_to_album">Przejdź do albumu</string> + <string name="song_bottom_sheet_go_to_artist">Przejdź do wykonawcy</string> + <string name="song_bottom_sheet_instant_mix">Natychmiastowy miks</string> + <string name="song_bottom_sheet_play_next">Odtwarzaj jako następne</string> + <string name="song_bottom_sheet_rate">Oceń</string> + <string name="song_bottom_sheet_remove">Usuń</string> + <string name="song_bottom_sheet_share">Udostępnij</string> + <string name="song_list_page_downloaded">Pobrane</string> + <string name="song_list_page_most_played">Najczęściej odtwarzane utwory</string> + <string name="song_list_page_recently_added">Utwory dodane ostatnio</string> + <string name="song_list_page_recently_played">Utwory odtwarzane ostatnio</string> + <string name="song_list_page_starred">Utwory oznaczone gwiazdką</string> + <string name="song_list_page_top">%1$s\ top utwory</string> + <string name="song_list_page_year">Rok %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Anuluj</string> + <string name="starred_sync_dialog_neutral_button">Kontynuuj</string> + <string name="starred_sync_dialog_positive_button">Kontynuuj i pobierz</string> + <string name="starred_sync_dialog_summary">Pobieranie utworów oznaczonych gwiazdką może wymagać dużej ilośći danych.</string> + <string name="starred_sync_dialog_title">Synchronizuj utwory oznaczone gwiazdką</string> + <string name="starred_artist_sync_dialog_summary">Pobieranie utworów artystów oznaczonych gwiazdką może wymagać dużej ilośći danych.</string> + <string name="starred_artist_sync_dialog_title">Synchronizacja wykonawców oznaczonych gwiazdką</string> + <string name="starred_album_sync_dialog_summary">Pobieranie albumów oznaczonych gwiazdką może wymagać dużej ilośći danych.</string> + <string name="starred_album_sync_dialog_title">Synchronizacja albumów oznaczonych gwiazdką</string> + <string name="streaming_cache_storage_dialog_sub_summary">Aby zmiany przyniosły efekt, zrestartuj aplikację.</string> + <string name="streaming_cache_storage_dialog_summary">Zmiana lokalizacji plików cache z jednej na drugą spowoduje natychmiastowe usunięcie wcześniej pobranych plików cache w drugiej lokalizacji.</string> + <string name="streaming_cache_storage_dialog_title">Wybieranie pamięci</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Zewnętrzna</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Wewnętrzna</string> + <string name="support_url">https://ko-fi.com/eddyizm</string> + <string name="track_info_album">Album</string> + <string name="track_info_artist">Wykonawca</string> + <string name="track_info_bit_depth">Głębia bitowa</string> + <string name="track_info_bitrate">Bitrate</string> + <string name="track_info_content_type">Typ Treści</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Informacje o utworze</string> + <string name="track_info_disc_number">Numer płyty</string> + <string name="track_info_duration">Długość</string> + <string name="track_info_genre">Gatunek</string> + <string name="track_info_path">Ścieżka</string> + <string name="track_info_sampling_rate">Częstotliwość próbkowania</string> + <string name="track_info_size">Rozmiar</string> + <string name="track_info_suffix">Sufiks</string> + <string name="track_info_summary_downloaded_file">Plik został pobrany przy użyciu API Subsonic. Kodek i bitrate pliku pozostaje nie zmieniony względem pliku źródłowego.</string> + <string name="track_info_summary_full_transcode">Aplikacja poprosi serwer żeby transkodować plik i zmienić jego bitrate. Użytkownik poprosił o kodek %1$s, z bitratem %2$s. Wszystkie potencjalne zmiany w kodeku i bitratecie pliku w wybranym formacie będą wykonywane przez serwer, który może ale nie musi obsługiwać tych operacji.</string> + <string name="track_info_summary_original_file">Aplikacja będzie tylko odczytywać oryginalne pliki jakie daje serwer. Aplikacja będzie wyłącznie prosić serwer o pliki bez transkodowania z bitratem oryginalnego źródła.</string> + <string name="track_info_summary_server_prioritized">\Jakość odtwarzanego pliku zależy od decyzji serwera. Aplikacja nie będzie monitorować wyboru kodeku i bitrateu dla jakiegokolwiek potencjalnego transkodowania.</string> + <string name="track_info_summary_transcoding_bitrate">Aplikacja poprosi serwer o zmodyfikowanie bitrateu pliku. Użytkownik poprosił o bitrate %1$s, ale kodek pliku źródłowego pozostanie ten sam. Wszystkie potencjalne zmiany w bitracie pliku w wybranym formacie będą wykonywane przez serwer, który może ale nie musi obsługiwać tych operacji.</string> + <string name="track_info_summary_transcoding_codec">Aplikacja poprosi serwer żeby transkodować plik. Kodek wybrany przez użytkownika to %1$s, ale bitrate pliku źródłowego pozostanie ten sam. Wszystkie potencjalne zmiany w kodeku pliku w wybranym formacie będą wykonywane przez serwer, który może ale nie musi obsługiwać tych operacji</string> + <string name="track_info_title">Tytuł</string> + <string name="track_info_track_number">Numer utworu</string> + <string name="track_info_transcoded_content_type">Typ transkodowanej treści</string> + <string name="track_info_transcoded_suffix">Sufiks transkodowania</string> + <string name="track_info_year">Rok</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">Specjalne podziękowania dla unDraw bez którego ilustracji nie mogliśmy uczynić tej aplikacji jeszcze piękniejszą.</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="widget_label">Widget Tempus</string> + <string name="widget_not_playing">Nie odtwarza</string> + <string name="widget_placeholder_subtitle">Otwórz Tempus</string> + <string name="widget_time_elapsed_placeholder">0:00</string> + <string name="widget_time_duration_placeholder">0:00</string> + <string name="widget_content_desc_album_art">Okładka albumu</string> + <string name="widget_content_desc_play_pause">Play lub pauza</string> + <string name="widget_content_desc_next">Następny utwór</string> + <string name="widget_content_desc_prev">Poprzedni utwór</string> + <string name="widget_content_desc_shuffle">Przełącznik odtwarzania losowego</string> + <string name="widget_content_desc_repeat">Zmień tryb powtarzania</string> + <plurals name="home_sync_starred_albums_count"> + <item quantity="one">%d album do zsynchronizowania </item> + <item quantity="other">%d albumów do zsynchrpnizowania</item> + </plurals> + <plurals name="home_sync_starred_artists_count"> + <item quantity="one">%d wykonawca do zsynchronizowania</item> + <item quantity="other">%d wykonawców do zsynchronizowania</item> + </plurals> + <plurals name="songs_download_started"> + <item quantity="one">Pobieranie %d piosenki</item> + <item quantity="other">Pobieranie %d piosenek</item> + </plurals> + <string name="equalizer_fragment_title">Korektor dźwięku</string> + <string name="equalizer_reset">Reset</string> + <string name="equalizer_enable">Włączony</string> + <string name="equalizer_not_supported">Nie wspierane na tym urządzeniu</string> + <string name="settings_app_equalizer">Korektor dźwięku</string> + <string name="settings_app_equalizer_summary">Otwórz wbudowany korektor dźwięku</string> + <string name="settings_album_detail">Pokaż szczegóły albumu</string> + <string name="settings_album_detail_summary">Jeżeli włączone, pokaż szczegóły albumu takie jak gatunek, ilość piosenek itp. na stronie albumu</string> + <string name="settings_artist_sort_by_album_count">Sortuj wykonawców po ilości albumów</string> + <string name="settings_artist_sort_by_album_count_summary">Jeżeli włączone, sortuje wykonawców po ilości albumów. Jeżeli wyłączone, sortuje albumy po nazwach.</string> +</resources> diff --git a/app/src/main/res/values-pt/arrays.xml b/app/src/main/res/values-pt/arrays.xml new file mode 100644 index 0000000..ad32906 --- /dev/null +++ b/app/src/main/res/values-pt/arrays.xml @@ -0,0 +1,242 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Claro</item> + <item>Escuro</item> + <item>Padrão do sistema</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Alta</item> + <item>Média</item> + <item>Baixa</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Alta</item> + <item>Média</item> + <item>Baixa</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Reprodução direta</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Reprodução direta</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Download direto</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Dez segundos</item> + <item>Cinco segundos</item> + <item>Dois segundos</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Alta</item> + <item>Média</item> + <item>Baixa</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Desabilitado</item> + <item>Faixa</item> + <item>Álbum</item> + <item>Automático</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Não transcodifique</item> + <item>Configurações do servidor</item> + <item>Formato de transcodificação para Wi-Fi</item> + <item>Formato de transcodificação para Rede Móvel</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Mínimo</item> + <item>Moderado</item> + <item>Agressivo</item> + <item>Extremo</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>No mínimo 0 estrelas</item> + <item>No mínimo 1 estrela</item> + <item>No mínimo 2 estrelas</item> + <item>No mínimo 3 estrelas</item> + <item>No mínimo 4 estrelas</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000..38facb2 --- /dev/null +++ b/app/src/main/res/values-pt/strings.xml @@ -0,0 +1,369 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Em caso de problemas, visite https://dontkillmyapp.com. Você encontrará instruções detalhadas sobre como desativar quaisquer recursos de economia de energia que possam afetar o desempenho do aplicativo.</string> + <string name="activity_battery_optimizations_summary">Por favor, desative as otimizações de bateria para a reprodução de mídia enquanto a tela estiver desligada.</string> + <string name="activity_battery_optimizations_title">Otimizações de bateria</string> + <string name="activity_info_offline_mode">Modo offline</string> + <string name="album_bottom_sheet_add_to_playlist">Adicionar a uma playlist</string> + <string name="album_bottom_sheet_add_to_queue">Adicionar à fila</string> + <string name="album_bottom_sheet_download_all">Baixar todos</string> + <string name="album_bottom_sheet_go_to_artist">Ir para o(a) artista</string> + <string name="album_bottom_sheet_instant_mix">Mixagem instantânea</string> + <string name="album_bottom_sheet_play_next">Tocar em seguida</string> + <string name="album_bottom_sheet_remove_all">Remover todos</string> + <string name="album_bottom_sheet_share">Compartilhar</string> + <string name="album_bottom_sheet_shuffle">Aleatório</string> + <string name="album_catalogue_title">Álbuns</string> + <string name="album_catalogue_title_expanded">Navegar pelos Álbuns</string> + <string name="album_error_retrieving_artist">Erro ao recuperar artista</string> + <string name="album_list_page_downloaded">Álbuns baixados</string> + <string name="album_list_page_most_played">Álbuns mais reproduzidos</string> + <string name="album_list_page_new_releases">Novos lançamentos</string> + <string name="album_list_page_recently_added">Álbuns recém-adicionados</string> + <string name="album_list_page_recently_played">Álbuns recém-reproduzidos</string> + <string name="album_list_page_starred">Álbuns favoritos</string> + <string name="album_list_page_title">Álbuns</string> + <string name="album_page_extra_info_button">Sugestões semelhantes</string> + <string name="album_page_play_button">Reproduzir</string> + <string name="album_page_shuffle_button">Aleatório</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Procurando…</string> + <string name="artist_bottom_sheet_instant_mix">Mixagem instantânea</string> + <string name="artist_bottom_sheet_shuffle">Aleatório</string> + <string name="artist_catalogue_title">Artistas</string> + <string name="artist_catalogue_title_expanded">Navegar pelos Artistas</string> + <string name="artist_error_retrieving_radio">Erro ao recuperar rádio do artista</string> + <string name="artist_error_retrieving_tracks">Erro ao recuperar faixas do artista</string> + <string name="artist_list_page_downloaded">Artistas baixados</string> + <string name="artist_list_page_starred">Artistas favoritos</string> + <string name="artist_list_page_title">Artistas</string> + <string name="artist_page_radio_button">Rádio</string> + <string name="artist_page_shuffle_button">Aleatório</string> + <string name="artist_page_switch_layout_button">Alternar layout</string> + <string name="artist_page_title_album_more_like_this_button">Sugestões semelhantes</string> + <string name="artist_page_title_album_section">Álbuns</string> + <string name="artist_page_title_biography_more_button">Mais</string> + <string name="artist_page_title_biography_section">Biografia</string> + <string name="artist_page_title_most_streamed_song_section">Músicas Mais Tocadas</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Ver todos</string> + <string name="battery_optimization_negative_button">Ignorar</string> + <string name="battery_optimization_neutral_button">Não perguntar novamente</string> + <string name="battery_optimization_positive_button">Desativar</string> + <string name="connection_alert_dialog_negative_button">Cancelar</string> + <string name="connection_alert_dialog_neutral_button">Ativar economia de dados</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">O acesso ao servidor Subsonic em conexões que não sejam Wi-Fi foi restrito. Para impedir que este aviso apareça novamente, desative a verificação de conexão nas configurações do aplicativo.</string> + <string name="connection_alert_dialog_title">Wi-Fi não conectado</string> + <string name="delete_download_storage_dialog_negative_button">Cancelar</string> + <string name="delete_download_storage_dialog_positive_button">Continuar</string> + <string name="delete_download_storage_dialog_summary">Esteja ciente de que esta ação resultará na exclusão permanente de todos os itens baixados de todos os servidores.</string> + <string name="delete_download_storage_dialog_title">Excluir itens salvos</string> + <string name="description_empty_title">Nenhuma descrição disponível</string> + <string name="download_directory_dialog_negative_button">Cancelar</string> + <string name="download_directory_dialog_positive_button">Download</string> + <string name="download_directory_dialog_summary">Todas as músicas desta pasta serão baixadas. As músicas presentes nas subpastas não serão baixadas.</string> + <string name="download_directory_dialog_title">Baixar as músicas</string> + <string name="download_info_empty_subtitle">Ao baixar uma música, você a encontrará aqui</string> + <string name="download_info_empty_title">Ainda não há downloads!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s itens</string> + <string name="download_item_single_subtitle_formatter">%1$s itens</string> + <string name="download_shuffle_all_subtitle">Aleatório</string> + <string name="download_storage_dialog_sub_summary">Para que as alterações tenham efeito, reinicie o aplicativo.</string> + <string name="download_storage_dialog_summary">Alterar o destino dos arquivos baixados de um armazenamento para outro resultará na exclusão imediata de todos os arquivos baixados anteriormente no outro armazenamento.</string> + <string name="download_storage_dialog_title">Selecione a opção de armazenamento</string> + <string name="download_storage_external_dialog_positive_button">Externo</string> + <string name="download_storage_internal_dialog_negative_button">Interno</string> + <string name="download_title_section">Downloads</string> + <string name="downloaded_bottom_sheet_add_to_queue">Adicionar à fila</string> + <string name="downloaded_bottom_sheet_play_next">Tocar em seguida</string> + <string name="downloaded_bottom_sheet_remove">Remover</string> + <string name="downloaded_bottom_sheet_remove_all">Remover todos</string> + <string name="downloaded_bottom_sheet_shuffle">Aleatório</string> + <string name="empty_string"></string> + <string name="error_required">Obrigatório</string> + <string name="error_server_prefix">É necessário que o método seja http ou https</string> + <string name="exo_download_notification_channel_name">Downloads</string> + <string name="filter_info_selection">Selecione dois ou mais filtros</string> + <string name="filter_title">Filtro</string> + <string name="filter_title_expanded">Filtrar por Gêneros</string> + <string name="genre_catalogue_title">Catálogo de Gêneros</string> + <string name="genre_catalogue_title_expanded">Navegar pelos Gêneros</string> + <string name="home_subtitle_best_of">Músicas populares dos seus artistas favoritos</string> + <string name="home_subtitle_made_for_you">Comece a mixagem de uma música que você favoritou</string> + <string name="home_subtitle_new_internet_radio_station">Adicionar um novo rádio</string> + <string name="home_subtitle_new_podcast_channel">Adicionar um novo canal de podcast</string> + <string name="home_sync_starred_cancel">Cancelar</string> + <string name="home_sync_starred_download">Download</string> + <string name="home_sync_starred_subtitle">O download dessas faixas pode envolver um uso significativo de dados</string> + <string name="home_sync_starred_title">Parece que existem algumas faixas favoritas para sincronizar</string> + <string name="home_title_best_of">Melhor de</string> + <string name="home_title_discovery">Descobrir</string> + <string name="home_title_discovery_shuffle_all_button">Aleatório</string> + <string name="home_title_flashback">Flashback</string> + <string name="home_title_internet_radio_station">Estações de rádio via internet</string> + <string name="home_title_last_played">Reproduções recentes</string> + <string name="home_title_last_played_see_all_button">Ver todos</string> + <string name="home_title_last_week">Semana passada</string> + <string name="home_title_made_for_you">Feito para você</string> + <string name="home_title_most_played">Mais reproduzidas</string> + <string name="home_title_most_played_see_all_button">Ver todos</string> + <string name="home_title_new_releases">Novos lançamentos</string> + <string name="home_title_newest_podcasts">Podcasts mais recentes</string> + <string name="home_title_podcast_channels">Canais</string> + <string name="home_title_podcast_channels_see_all_button">Ver todos</string> + <string name="home_title_radio_station">Estações de rádio</string> + <string name="home_title_recently_added">Adicionado recentemente</string> + <string name="home_title_recently_added_see_all_button">Ver todos</string> + <string name="home_title_shares">Compartilhamentos</string> + <string name="home_title_starred_albums">★ Álbuns favoritos</string> + <string name="home_title_starred_albums_see_all_button">Ver todos</string> + <string name="home_title_starred_artists">★ Artistas favoritos</string> + <string name="home_title_starred_artists_see_all_button">Ver todos</string> + <string name="home_title_starred_tracks">★ Músicas favoritas</string> + <string name="home_title_starred_tracks_see_all_button">Ver todos</string> + <string name="home_title_top_songs">Suas músicas mais ouvidas</string> + <string name="library_title_album">Álbuns</string> + <string name="library_title_album_see_all_button">Ver todos</string> + <string name="library_title_artist">Artistas</string> + <string name="library_title_artist_see_all_button">Ver todos</string> + <string name="library_title_genre">Genêros</string> + <string name="library_title_genre_see_all_button">Ver todos</string> + <string name="library_title_music_folder">Pastas de música</string> + <string name="library_title_playlist">Playlists</string> + <string name="library_title_playlist_see_all_button">Ver todos</string> + <string name="login_empty">Nenhum servidor adicionado</string> + <string name="login_title">Servidores Subsonic</string> + <string name="login_title_expanded">Servidores Subsonic</string> + <string name="media_route_menu_title">Transmitir</string> + <string name="menu_add_button">Adicionar</string> + <string name="menu_add_to_playlist_button">Adicionar a uma playlist</string> + <string name="menu_download_all_button">Baixar todos</string> + <string name="menu_download_label">Download</string> + <string name="menu_filter_all">Todos</string> + <string name="menu_filter_download">Baixados</string> + <string name="menu_group_by_album">Álbum</string> + <string name="menu_group_by_artist">Artista</string> + <string name="menu_group_by_genre">Gênero</string> + <string name="menu_group_by_track">Faixa</string> + <string name="menu_group_by_year">Ano</string> + <string name="menu_home_label">Início</string> + <string name="menu_library_label">Biblioteca</string> + <string name="menu_search_button">Pesquisar</string> + <string name="menu_settings_button">Configurações</string> + <string name="menu_sort_artist">Artista</string> + <string name="menu_sort_name">Nome</string> + <string name="menu_sort_random">Aleatório</string> + <string name="menu_sort_year">Ano</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Limpar fila de reprodução</string> + <string name="player_server_priority">Prioridade do Servidor</string> + <string name="playlist_catalogue_title">Catálogo de Playlists</string> + <string name="playlist_catalogue_title_expanded">Navegar pelas Playlists</string> + <string name="playlist_chooser_dialog_empty">Nenhuma playlist criada</string> + <string name="playlist_chooser_dialog_negative_button">Cancelar</string> + <string name="playlist_chooser_dialog_neutral_button">Criar</string> + <string name="playlist_chooser_dialog_title">Adicionar a uma playlist</string> + <string name="playlist_chooser_dialog_toast_add_success">Adicionada playlist de reprodução</string> + <string name="playlist_chooser_dialog_toast_add_failure">Falha ao adicionar uma playlist de reprodução</string> + <string name="playlist_counted_tracks">%1$d faixas • %2$s</string> + <string name="playlist_duration">Duração • %1$s</string> + <string name="playlist_editor_dialog_hint_name">Nome da playlist</string> + <string name="playlist_editor_dialog_negative_button">Cancelar</string> + <string name="playlist_editor_dialog_neutral_button">Excluir</string> + <string name="playlist_editor_dialog_positive_button">Salvar</string> + <string name="playlist_editor_dialog_title">Editar playlist</string> + <string name="playlist_page_play_button">Reproduzir</string> + <string name="playlist_page_shuffle_button">Aleatório</string> + <string name="playlist_song_count">Playlist • %1$d músicas</string> + <string name="podcast_bottom_sheet_add_to_queue">Adicionar à fila</string> + <string name="podcast_bottom_sheet_delete">Excluir</string> + <string name="podcast_bottom_sheet_download">Download</string> + <string name="podcast_bottom_sheet_go_to_channel">Ir para o canal</string> + <string name="podcast_bottom_sheet_play_next">Tocar em seguida</string> + <string name="podcast_bottom_sheet_remove">Remover</string> + <string name="podcast_channel_catalogue_title">Canais</string> + <string name="podcast_channel_catalogue_title_expanded">Navegar pelos Canais</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">URL do Feed RSS</string> + <string name="podcast_channel_editor_dialog_title">Canal de Podcast</string> + <string name="podcast_channel_page_title_description_section">Descrição</string> + <string name="podcast_channel_page_title_episode_section">Episódios</string> + <string name="podcast_channel_page_title_no_episode_available">Nenhum episódio disponível</string> + <string name="podcast_episode_download_request_snackbar">Sua solicitação foi enviada ao servidor</string> + <string name="podcast_info_empty_button">Clique para ocultar a seção\nOs efeitos serão visíveis ao reiniciar</string> + <string name="podcast_info_empty_subtitle">Ao adicionar um canal, você o encontrará aqui</string> + <string name="podcast_info_empty_title">Nenhum podcast encontrado!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">URL da Página Inicial da Rádio</string> + <string name="radio_editor_dialog_hint_name">Nome da Rádio</string> + <string name="radio_editor_dialog_hint_stream_url">URL de Stream da Rádio</string> + <string name="radio_editor_dialog_negative_button">Cancelar</string> + <string name="radio_editor_dialog_neutral_button">Excluir</string> + <string name="radio_editor_dialog_positive_button">Salvar</string> + <string name="radio_editor_dialog_title">Estação de rádio via internet</string> + <string name="radio_station_info_empty_button">Clique para ocultar a seção\nOs efeitos serão visíveis ao reiniciar</string> + <string name="radio_station_info_empty_subtitle">Ao adicionar uma estação de rádio, você a encontrará aqui</string> + <string name="radio_station_info_empty_title">Nenhuma estação encontrada!</string> + <string name="rating_dialog_negative_button">Cancelar</string> + <string name="rating_dialog_positive_button">Salvar</string> + <string name="rating_dialog_title">Avaliar</string> + <string name="search_hint">Pesquisar por título, artistas ou álbuns</string> + <string name="search_info_minimum_characters">Insira pelo menos três caracteres</string> + <string name="search_title_album">Álbuns</string> + <string name="search_title_artist">Artistas</string> + <string name="search_title_song">Músicas</string> + <string name="server_signup_dialog_action_low_security">Baixa segurança</string> + <string name="server_signup_dialog_hint_name">Nome do Servidor</string> + <string name="server_signup_dialog_hint_password">Senha</string> + <string name="server_signup_dialog_hint_url">URL do servidor</string> + <string name="server_signup_dialog_hint_username">Usuário</string> + <string name="server_signup_dialog_negative_button">Cancelar</string> + <string name="server_signup_dialog_neutral_button">Excluir</string> + <string name="server_signup_dialog_positive_button">Salvar</string> + <string name="server_signup_dialog_title">Adicionar servidor</string> + <string name="server_unreachable_dialog_negative_button">Cancelar</string> + <string name="server_unreachable_dialog_neutral_button">Ir para o login</string> + <string name="server_unreachable_dialog_positive_button">Continuar mesmo assim</string> + <string name="server_unreachable_dialog_summary">O servidor solicitado não está disponível. Se você optar por continuar, essa caixa de diálogo não será exibida pela próxima hora.</string> + <string name="server_unreachable_dialog_title">Servidor inacessível</string> + <string name="settings_about_summary">O Tempus é um cliente de música leve e de código aberto para Subsonic, projetado e desenvolvido nativamente para Android.</string> + <string name="settings_about_title">Sobre</string> + <string name="settings_always_on_display">Tela sempre ativa</string> + <string name="settings_audio_transcode_download_format">Formato de transcodificação</string> + <string name="settings_audio_transcode_download_priority_summary">Se ativado, Tempus não forçará o download da faixa com as configurações de transcodificação abaixo.</string> + <string name="settings_audio_transcode_download_priority_title">Priorizar as configurações do servidor usadas para streaming nos downloads</string> + <string name="settings_audio_transcode_download_summary">Se ativado, Tempus irá baixar faixas transcodificadas.</string> + <string name="settings_audio_transcode_download_title">Baixar faixas transcodificadas</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Se ativado, o servidor será solicitado a informar a duração estimada da faixa.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Calcular tamanho do conteúdo</string> + <string name="settings_audio_transcode_format_download">Formato de transcodificação para downloads</string> + <string name="settings_audio_transcode_format_mobile">Formato de transcodificação na rede móvel</string> + <string name="settings_audio_transcode_format_wifi">Formato de transcodificação no Wi-Fi</string> + <string name="settings_audio_transcode_priority_summary">Se ativado, Tempus não forçará a transmissão da faixa com as configurações de transcodificação abaixo.</string> + <string name="settings_audio_transcode_priority_title">Priorizar configurações de transcodificação do servidor</string> + <string name="settings_audio_transcode_priority_toast">Prioridade na transcodificação da faixa fornecida pelo servidor</string> + <string name="settings_buffering_strategy">Estratégia de buffer</string> + <string name="settings_buffering_strategy_summary">Para que a alteração tenha efeito você deve reiniciar o aplicativo manualmente.</string> + <string name="settings_covers_cache">Tamanho do cache das capas</string> + <string name="settings_data_saving_mode_summary">Para reduzir o consumo de dados, evite baixar capas de álbum.</string> + <string name="settings_data_saving_mode_title">Limitar uso de dados móveis</string> + <string name="settings_delete_download_storage_summary">O processo resultará na exclusão irreversível de todos os itens salvos.</string> + <string name="settings_delete_download_storage_title">Excluir itens salvos</string> + <string name="settings_download_storage_title">Armazenamento dos downloads</string> + <string name="settings_system_equalizer_summary">Ajustar configurações de áudio</string> + <string name="settings_system_equalizer_title">Equalizador do sistema</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Acompanhe o desenvolvimento</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">Definir resolução da imagem</string> + <string name="settings_language">Idioma</string> + <string name="settings_logout_title">Encerrar sessão</string> + <string name="settings_max_bitrate_download">Taxa de bits para os downloads</string> + <string name="settings_max_bitrate_mobile">Taxa de bits para a rede móvel</string> + <string name="settings_max_bitrate_wifi">Bitrate no Wi-Fi</string> + <string name="settings_media_cache">Tamanho do cache dos arquivos de mídia</string> + <string name="settings_music_directory">Mostrar diretórios de música</string> + <string name="settings_music_directory_summary">Se ativado, mostrará a seção do diretório de música. Observe que, para que a navegação na pasta funcione corretamente, o servidor deve oferecer suporte a esse recurso.</string> + <string name="settings_podcast">Mostrar podcast</string> + <string name="settings_podcast_summary">Se ativado, mostrará a seção de podcasts. Reinicie o aplicativo para que as mudanças tenham efeito.</string> + <string name="settings_queue_syncing_countdown">Temporizador de sincronização</string> + <string name="settings_queue_syncing_summary">Se ativado, o usuário poderá salvar sua fila de reprodução e carregar o estado ao abrir o aplicativo.</string> + <string name="settings_queue_syncing_title">Sincronizar a fila de reprodução para este usuário</string> + <string name="settings_radio">Mostrar rádios</string> + <string name="settings_radio_summary">Se ativado, mostrará a seção de rádios. Reinicie o aplicativo para que as mudanças tenham efeito.</string> + <string name="settings_replay_gain">Habilitar o modo Replay Gain</string> + <string name="settings_rounded_corner">Cantos arredondados</string> + <string name="settings_rounded_corner_size">Tamanho dos cantos</string> + <string name="settings_rounded_corner_size_summary">Define a magnitude do ângulo de curvatura.</string> + <string name="settings_rounded_corner_summary">Se ativado, define um ângulo de curvatura para todas as capas renderizadas. As alterações terão efeito ao reiniciar.</string> + <string name="settings_scan_title">Escanear biblioteca</string> + <string name="settings_scrobble_title">Habilitar scrobbling</string> + <string name="settings_share_title">Ativar compartilhamento de música</string> + <string name="settings_sub_summary_scrobble">É importante observar que o scrobbling também depende de o servidor estar habilitado para receber esses dados.</string> + <string name="settings_summary_skip_min_star_rating">Ao ouvir a rádio de um artista, uma mixagem instantânea ou ao reproduzir aleatóriamente, as faixas abaixo de uma determinada classificação de usuário serão ignoradas.</string> + <string name="settings_summary_replay_gain">Replay Gain é um recurso que permite ajustar o nível de volume das faixas para uma experiência de áudio consistente. Esta configuração só é eficaz se a faixa contiver os metadados necessários.</string> + <string name="settings_summary_scrobble">Scrobbling é um recurso que permite ao seu dispositivo enviar informações sobre as músicas que você ouve no servidor de música. Essa informação ajuda a criar recomendações personalizadas com base em suas preferências de música.</string> + <string name="settings_summary_share">Permite ao usuário compartilhar música através de um link. A funcionalidade deve ser suportada e habilitada pelo servidor e se limita a faixas, álbuns e listas de reprodução individuais.</string> + <string name="settings_summary_syncing">Retorna o estado da fila de reprodução para esse usuário. Isso inclui as faixas na fila de reprodução, a faixa sendo reproduzida e a posição nesta faixa. O servidor deve suportar este recurso.</string> + <string name="settings_summary_transcoding">Prioridade dada ao modo de transcodificação. Se definido para \"Reprodução direta\" a taxa de bits do arquivo não será alterada.</string> + <string name="settings_summary_transcoding_download">Baixar mídia transcodificada. Se ativado, o endpoint de download não será usado, e sim, as seguintes configurações. \n\n Se \"Formato de transcodificação para downloads\" estiver definido como \"Download direto\" a taxa de bits do arquivo não será alterada.</string> + <string name="settings_summary_transcoding_estimate_content_length">Quando o arquivo é transcodificado em Tempus real, o cliente geralmente não mostra a duração da faixa. É possível solicitar aos servidores que suportam a funcionalidade, que informem a duração da faixa que está sendo reproduzida, porém, os Tempuss de resposta podem ser mais longos.</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Se ativado, as faixas favoritadas serão baixadas para uso offline.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Sincronizar faixas favoritas para uso offline</string> + <string name="settings_theme">Tema</string> + <string name="settings_title_data">Dados</string> + <string name="settings_title_general">Geral</string> + <string name="settings_title_rating">Classificação</string> + <string name="settings_title_replay_gain">Replay Gain</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Ignorar faixas baseadas na classificação</string> + <string name="settings_title_skip_min_star_rating_dialog">Músicas com uma classificação de:</string> + <string name="settings_title_share">Compartilhar</string> + <string name="settings_title_syncing">Sincronizando</string> + <string name="settings_title_transcoding">Transcodificação</string> + <string name="settings_title_transcoding_download">Transcodificação dos Downloads</string> + <string name="settings_title_ui">UI</string> + <string name="settings_transcoded_download">Transcodificação dos Downloads</string> + <string name="settings_version_title">Versão</string> + <string name="settings_wifi_only_summary">Solicitar confirmação do usuário antes de fazer streaming através da rede móvel.</string> + <string name="settings_wifi_only_title">Alerta de transmissão somente via Wi-Fi</string> + <string name="share_bottom_sheet_copy_link">Copiar link</string> + <string name="share_bottom_sheet_delete">Excluir compartilhamento</string> + <string name="share_bottom_sheet_update">Atualizar compartilhamento</string> + <string name="share_subtitle_item">Data de expiração: %1$s</string> + <string name="share_unsupported_error">O compartilhamento não é suportado ou não está habilitado</string> + <string name="share_update_dialog_hint_description">Descrição</string> + <string name="share_update_dialog_hint_expiration_date">Data de expiração</string> + <string name="share_update_dialog_negative_button">Cancelar</string> + <string name="share_update_dialog_positive_button">Salvar</string> + <string name="share_update_dialog_title">Compartilhar</string> + <string name="song_bottom_sheet_add_to_playlist">Adicionar a uma playlist</string> + <string name="song_bottom_sheet_add_to_queue">Adicionar à fila</string> + <string name="song_bottom_sheet_download">Download</string> + <string name="song_bottom_sheet_error_retrieving_album">Erro ao recuperar álbum</string> + <string name="song_bottom_sheet_error_retrieving_artist">Erro ao recuperar artista</string> + <string name="song_bottom_sheet_go_to_album">Ir para álbum</string> + <string name="song_bottom_sheet_go_to_artist">Ir para artista</string> + <string name="song_bottom_sheet_instant_mix">Mixagem instantânea</string> + <string name="song_bottom_sheet_play_next">Tocar em seguida</string> + <string name="song_bottom_sheet_rate">Avaliar</string> + <string name="song_bottom_sheet_remove">Remover</string> + <string name="song_bottom_sheet_share">Compartilhar</string> + <string name="song_list_page_downloaded">Baixados</string> + <string name="song_list_page_most_played">Músicas mais reproduzidas</string> + <string name="song_list_page_recently_added">Músicas recém-adicionadas</string> + <string name="song_list_page_recently_played">Músicas recém-reproduzidas</string> + <string name="song_list_page_starred">Músicas favoritas</string> + <string name="song_list_page_top">Músicas preferidas de %1$s</string> + <string name="song_list_page_year">Ano %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Cancelar</string> + <string name="starred_sync_dialog_neutral_button">Continuar</string> + <string name="starred_sync_dialog_positive_button">Continuar e baixar</string> + <string name="starred_sync_dialog_summary">O download de faixas favoritadas pode exigir uma grande quantidade de dados.</string> + <string name="starred_sync_dialog_title">Sincronizar músicas favoritas</string> + <string name="track_info_album">Álbum</string> + <string name="track_info_artist">Artista</string> + <string name="track_info_bitrate">Taxa de bits</string> + <string name="track_info_content_type">Tipo de Conteúdo</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Informações da música</string> + <string name="track_info_disc_number">Número do disco</string> + <string name="track_info_duration">Duração</string> + <string name="track_info_genre">Gênero</string> + <string name="track_info_path">Caminho</string> + <string name="track_info_size">Tamanho</string> + <string name="track_info_suffix">Suffix</string> + <string name="track_info_summary_downloaded_file">O arquivo foi baixado usando a API do Subsonic. O codec e a taxa de bits do arquivo permanecem inalterados do arquivo de origem.</string> + <string name="track_info_summary_full_transcode">O aplicativo solicitará ao servidor que transcodifique o arquivo e modifique sua taxa de bits. O codec solicitado pelo usuário é %1$s, com uma taxa de bits de %2$s. Todas as possíveis alterações no codec e na taxa de bits do arquivo no formato escolhido serão tratadas pelo servidor, que pode ou não dar suporte à operação.</string> + <string name="track_info_summary_original_file">O aplicativo só irá ler o arquivo original conforme fornecido pelo servidor. O aplicativo solicitará explicitamente ao servidor o arquivo não transcodificado com a taxa de bits da fonte original.</string> + <string name="track_info_summary_server_prioritized">A qualidade do arquivo a ser reproduzido é de responsabilidade do servidor. O aplicativo não vai impor a escolha do codec e da taxa de bits para qualquer possível transcodificação.</string> + <string name="track_info_summary_transcoding_bitrate">O aplicativo solicitará ao servidor que modifique a taxa de bits do arquivo. A taxa de bits solicitada pelo usuário é de %1$s, enquanto o codec do arquivo de origem permanecerá o mesmo. Todas as possíveis alterações na taxa de bits do arquivo no formato escolhido serão tratadas pelo servidor, que pode ou não dar suporte à operação.</string> + <string name="track_info_summary_transcoding_codec">O aplicativo solicitará ao servidor para transcodificar o arquivo. O codec solicitado pelo usuário é %1$s, enquanto o bitrate do arquivo de origem permanecerá o mesmo. Todas as possíveis alterações no codec do arquivo no formato escolhido serão tratadas pelo servidor, que pode ou não dar suporte à operação.</string> + <string name="track_info_title">Título</string> + <string name="track_info_track_number">Número da faixa</string> + <string name="track_info_transcoded_content_type">Tipo de conteúdo transcodificado</string> + <string name="track_info_transcoded_suffix">Sufixo transcodificado</string> + <string name="track_info_year">Ano</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">Um agradecimento especial ao unDraw, sem cujas ilustrações não poderíamos ter deixado esta aplicação tão bonita.</string> + <string name="undraw_url">https://undraw.co/</string> +</resources> diff --git a/app/src/main/res/values-ru/arrays.xml b/app/src/main/res/values-ru/arrays.xml new file mode 100644 index 0000000..0c2e6ac --- /dev/null +++ b/app/src/main/res/values-ru/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Светлый</item> + <item>Темный</item> + <item>Системный по умолчанию</item> + </string-array> + <string-array name="theme_list_values"> + <item>светлый</item> + <item>темный</item> + <item>по умолчанию</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Высокий</item> + <item>Средний</item> + <item>Низкий</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Высокий</item> + <item>Средний</item> + <item>Низкий</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Отключено</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Оригинал</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Оригинал</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Оригинал</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Прямое воспроизведение</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Прямое воспроизведение</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Прямая загрузка</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Десять секунд</item> + <item>Пять секунд</item> + <item>Две секунды</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Высокий</item> + <item>Средний</item> + <item>Низкий</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Отключенный</item> + <item>Трек</item> + <item>Альбом</item> + <item>Авто</item> + </string-array> + <string-array name="replay_gain_values"> + <item>отключенный</item> + <item>трек</item> + <item>альбом</item> + <item>авто</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Не перекодировать</item> + <item>Настройки сервера</item> + <item>Формат транскодирования Wi-Fi</item> + <item>Формат мобильного транскодирования</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Минимум</item> + <item>Умеренный</item> + <item>Агрессивный</item> + <item>Экстремальный</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>0 звезд минимум</item> + <item>1 звезда минимум</item> + <item>2 звезды минимум</item> + <item>3 звезды минимум</item> + <item>4 звезды минимум</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..e677239 --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,453 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Если у вас возникли проблемы, посетите https://dontkillmyapp.com. Он содержит подробные инструкции о том, как отключить любые функции энергосбережения, которые могут повлиять на производительность приложения.</string> + <string name="activity_battery_optimizations_summary">Пожалуйста, отключите оптимизацию батареи для воспроизведения мультимедиа при выключенном экране.</string> + <string name="activity_battery_optimizations_title">Оптимизация батареи</string> + <string name="activity_info_offline_mode">Автономный режим</string> + <string name="album_bottom_sheet_add_to_playlist">Добавить в плейлист</string> + <string name="album_bottom_sheet_add_to_queue">Добавить в очередь</string> + <string name="album_bottom_sheet_download_all">Скачать все</string> + <string name="album_bottom_sheet_go_to_artist">Перейти к исполнителю</string> + <string name="album_bottom_sheet_instant_mix">Мгновенный микс</string> + <string name="album_bottom_sheet_play_next">Играть дальше</string> + <string name="album_bottom_sheet_remove_all">Убрать все</string> + <string name="album_bottom_sheet_share">Поделиться</string> + <string name="album_bottom_sheet_shuffle">Перемешать</string> + <string name="album_catalogue_title">Альбомы</string> + <string name="album_catalogue_title_expanded">Просмотр альбомов</string> + <string name="album_error_retrieving_artist">Не удалось получить исполнителя.</string> + <string name="album_list_page_downloaded">Скачанные альбомы</string> + <string name="album_list_page_most_played">Самые проигрываемые альбомы</string> + <string name="album_list_page_new_releases">Новые релизы</string> + <string name="album_list_page_recently_added">Недавно добавленные альбомы</string> + <string name="album_list_page_recently_played">Недавно воспроизведенные альбомы</string> + <string name="album_list_page_starred">Помеченные альбомы</string> + <string name="album_list_page_title">Альбомы</string> + <string name="album_page_extra_info_button">Больше подобного</string> + <string name="album_page_play_button">Играть</string> + <string name="album_page_release_date_label">Выпущен %1$s</string> + <string name="album_page_release_dates_label">Выпущен %1$s, оригинал %2$s</string> + <string name="album_page_shuffle_button">Смешать</string> + <string name="album_page_tracks_count_and_duration">%1$d треков • %2$d минут</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Поиск…</string> + <string name="artist_bottom_sheet_instant_mix">Мгновенный микс</string> + <string name="artist_bottom_sheet_shuffle">Смешать</string> + <string name="artist_catalogue_title">Артисты</string> + <string name="artist_catalogue_title_expanded">Просмотр исполнителя</string> + <string name="artist_error_retrieving_radio">Ошибка при получении радио исполнителя.</string> + <string name="artist_error_retrieving_tracks">Ошибка при получении треков исполнителя.</string> + <string name="artist_list_page_downloaded">Скачанные исполнители</string> + <string name="artist_list_page_starred">Рейтинговые исполнители</string> + <string name="artist_list_page_title">Исполнители</string> + <string name="artist_page_radio_button">Радио</string> + <string name="artist_page_shuffle_button">Смешать</string> + <string name="artist_page_switch_layout_button">Переключить раскладку</string> + <string name="artist_page_title_album_more_like_this_button">Больше подобного</string> + <string name="artist_page_title_album_section">Альбомы</string> + <string name="artist_page_title_biography_more_button">Больше</string> + <string name="artist_page_title_biography_section">Биография</string> + <string name="artist_page_title_most_streamed_song_section">Самые прослушиваемые треки</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Посмотреть все</string> + <string name="battery_optimization_negative_button">Игнорировать</string> + <string name="battery_optimization_neutral_button">Больше не спрашивать</string> + <string name="battery_optimization_positive_button">Отключить</string> + <string name="connection_alert_dialog_negative_button">Отмена</string> + <string name="connection_alert_dialog_neutral_button">Включить сохранение данных</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">Доступ к серверу Subsonic по соединениям, отличным от Wi-Fi, ограничен. Чтобы это диалоговое окно предупреждения не появлялось снова, отключите проверку соединения в настройках приложения.</string> + <string name="connection_alert_dialog_title">Wi-Fi не подключен</string> + <string name="content_description_shuffle_button">Перемешать</string> + <string name="delete_download_storage_dialog_negative_button">Отмена</string> + <string name="delete_download_storage_dialog_positive_button">Продолжить</string> + <string name="delete_download_storage_dialog_summary">Имейте в виду, что продолжение этого действия приведет к безвозвратному удалению всех сохраненных элементов, загруженных со всех серверов.</string> + <string name="delete_download_storage_dialog_title">Удалить сохраненные элементы</string> + <string name="description_empty_title">Нет описания</string> + <string name="disc_titlefull">Диск %1$s - %2$s</string> + <string name="disc_titleless">Диск %1$s</string> + <string name="download_directory_dialog_negative_button">Отмена</string> + <string name="download_directory_dialog_positive_button">Загрузить</string> + <string name="download_directory_dialog_summary">Все треки из этой папки будут загружены. Треки, находящиеся в подпапках, не будут загружены.</string> + <string name="download_directory_dialog_title">Скачать треки</string> + <string name="download_info_empty_subtitle">Скачав песню, вы найдете ее здесь.</string> + <string name="download_info_empty_title">Загрузок пока нет!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s товаров</string> + <string name="download_item_single_subtitle_formatter">%1$s предметов</string> + <string name="download_shuffle_all_subtitle">Перемешать все</string> + <string name="download_storage_dialog_sub_summary">Чтобы изменения вступили в силу, перезапустите приложение.</string> + <string name="download_storage_dialog_summary">Изменение места назначения загружаемых файлов из одного хранилища в другое приведет к немедленному удалению всех ранее загруженных файлов в другом хранилище.</string> + <string name="download_storage_dialog_title">Выберите вариант хранения</string> + <string name="download_storage_external_dialog_positive_button">Внешний</string> + <string name="download_storage_internal_dialog_negative_button">Внутренний</string> + <string name="download_title_section">Загрузки</string> + <string name="downloaded_bottom_sheet_add_to_queue">Добавить в очередь</string> + <string name="downloaded_bottom_sheet_play_next">Играть дальше</string> + <string name="downloaded_bottom_sheet_remove">Удалить</string> + <string name="downloaded_bottom_sheet_remove_all">Убрать все</string> + <string name="downloaded_bottom_sheet_shuffle">Смешать</string> + <string name="empty_string"></string> + <string name="error_required">Необходимый</string> + <string name="error_server_prefix">Требуется префикс http или https</string> + <string name="exo_download_notification_channel_name">Загрузки</string> + <string name="filter_info_selection">Выберите два или более фильтров</string> + <string name="filter_title">Фильтр</string> + <string name="filter_artist">Фильтровать исполнителей</string> + <string name="filter_title_expanded">Фильтровать жанры</string> + <string name="genre_catalogue_title">Каталог жанров</string> + <string name="genre_catalogue_title_expanded">Просмотр жанров</string> + <string name="github_update_dialog_negative_button">Напомнить позже</string> + <string name="github_update_dialog_neutral_button">Поддержать меня</string> + <string name="github_update_dialog_positive_button">Скачать сейчас</string> + <string name="github_update_dialog_summary">На Github доступна новая версия приложения.</string> + <string name="github_update_dialog_title">Доступно обновление</string> + <string name="home_rearrangement_dialog_negative_button">Отмена</string> + <string name="home_rearrangement_dialog_neutral_button">Перезагрузить</string> + <string name="home_rearrangement_dialog_positive_button">Сохранять</string> + <string name="home_rearrangement_dialog_title">Настроить главную</string> + <string name="home_rearrangement_dialog_subtitle">Обратите внимание, чтобы внесенные изменения вступили в силу, необходимо перезапустить приложение.</string> + <string name="home_section_music">Музыка</string> + <string name="home_section_podcast">Подкасты</string> + <string name="home_section_radio">Радио</string> + <string name="home_subtitle_best_of">Лучшие треки любимых исполнителей</string> + <string name="home_subtitle_made_for_you">Запустите микс с понравившимся вам треком</string> + <string name="home_subtitle_new_internet_radio_station">Добавить новое радио</string> + <string name="home_subtitle_new_podcast_channel">Добавить новый канал подкаста</string> + <string name="home_sync_starred_cancel">Отмена</string> + <string name="home_sync_starred_download">Скачать</string> + <string name="home_sync_starred_subtitle">Загрузка этих треков может потребовать значительного использования данных</string> + <string name="home_sync_starred_title">Похоже, есть несколько отмеченных треков для синхронизации.</string> + <string name="home_sync_starred_albums_title">Синхронизировать отмеченные альбомы</string> + <string name="home_sync_starred_albums_subtitle">Отмеченные альбомы будут доступны в автономном режиме</string> + <string name="home_title_best_of">Лучшее из</string> + <string name="home_title_discovery">Открытие</string> + <string name="home_title_discovery_shuffle_all_button">Перемешать все</string> + <string name="home_title_flashback">Воспоминание</string> + <string name="home_title_internet_radio_station">Интернет-радиостанции</string> + <string name="home_title_last_played">Последнее воспроизведение</string> + <string name="home_title_last_played_see_all_button">Увидеть все</string> + <string name="home_title_last_week">На прошлой неделе</string> + <string name="home_title_last_month">Прошлый месяц</string> + <string name="home_title_last_year">Прошлый год</string> + <string name="home_title_made_for_you">Сделано для тебя</string> + <string name="home_title_most_played">Самое популярное</string> + <string name="home_title_most_played_see_all_button">Увидеть все</string> + <string name="home_title_new_releases">Новые релизы</string> + <string name="home_title_newest_podcasts">Новейшие подкасты</string> + <string name="home_title_pinned_playlists">Плейлисты</string> + <string name="home_title_podcast_channels">Каналы</string> + <string name="home_title_podcast_channels_see_all_button">Увидеть все</string> + <string name="home_title_radio_station">Радиостанции</string> + <string name="home_title_recently_added">Недавно добавленный</string> + <string name="home_title_recently_added_see_all_button">Увидеть все</string> + <string name="home_title_shares">Общий доступ</string> + <string name="home_title_starred_albums">★ Отмеченные альбомы</string> + <string name="home_title_starred_albums_see_all_button">Увидеть все</string> + <string name="home_title_starred_artists">★ Рейтинговые артисты</string> + <string name="home_title_starred_artists_see_all_button">Увидеть все</string> + <string name="home_title_starred_tracks">★ Отмеченные треки</string> + <string name="home_title_starred_tracks_see_all_button">Увидеть все</string> + <string name="home_title_top_songs">Ваши лучшие треки</string> + <string name="home_option_reorganize">Реорганизовать</string> + <string name="library_title_album">Альбомы</string> + <string name="library_title_album_see_all_button">Увидеть все</string> + <string name="library_title_artist">Исполнители</string> + <string name="library_title_artist_see_all_button">Увидеть все</string> + <string name="library_title_genre">Жанры</string> + <string name="library_title_genre_see_all_button">Увидеть все</string> + <string name="library_title_music_folder">Музыкальные папки</string> + <string name="library_title_playlist">Плейлисты</string> + <string name="library_title_playlist_see_all_button">Увидеть все</string> + <string name="login_empty">Сервер не добавлен</string> + <string name="login_title">Subsonic серверы</string> + <string name="login_title_expanded">Subsonic серверы</string> + <string name="media_route_menu_title">Cast</string> + <string name="menu_add_button">Добавить</string> + <string name="menu_add_to_playlist_button">Добавить в плейлист</string> + <string name="menu_download_all_button">Скачать все</string> + <string name="menu_rate_album">Оценить альбом</string> + <string name="menu_download_label">Скачать</string> + <string name="menu_filter_all">Все</string> + <string name="menu_filter_download">Загружено</string> + <string name="menu_group_by_album">Альбом</string> + <string name="menu_group_by_artist">Исполнитель</string> + <string name="menu_group_by_genre">Жанр</string> + <string name="menu_group_by_track">Трек</string> + <string name="menu_group_by_year">Год</string> + <string name="menu_home_label">Главная</string> + <string name="menu_last_week_name">Прошлая неделя</string> + <string name="menu_last_month_name">Прошлый месяц</string> + <string name="menu_last_year_name">Прошлый год</string> + <string name="menu_library_label">Библиотека</string> + <string name="menu_search_button">Поиск</string> + <string name="menu_settings_button">Настройки</string> + <string name="menu_sort_artist">Исполнитель</string> + <string name="menu_sort_name">Имя</string> + <string name="menu_sort_random">Случайный</string> + <string name="menu_sort_recently_added">Недавно добавленный</string> + <string name="menu_sort_recently_played">Недавно воспроизведенный</string> + <string name="menu_sort_most_played">Самое популярное</string> + <string name="menu_sort_most_recently_starred">Недавно отмеченный</string> + <string name="menu_sort_least_recently_starred">Давно отмеченный</string> + <string name="menu_sort_year">Год</string> + <string name="menu_pin_button">Добавить на главный экран</string> + <string name="menu_unpin_button">Убрать с главного экрана</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Очистить очередь воспроизведения</string> + <string name="player_queue_save_queue_success">Очередь сохранена</string> + <string name="player_server_priority">Приоритет сервера</string> + <string name="player_unknown_format">Неизвестный форма</string> + <string name="player_transcoding">Транскодирование</string> + <string name="player_transcoding_requested">запрошено</string> + <string name="playlist_catalogue_title">Каталог плейлистов</string> + <string name="playlist_catalogue_title_expanded">Просмотр плейлистов</string> + <string name="playlist_chooser_dialog_empty">Плейлисты не созданы</string> + <string name="playlist_chooser_dialog_negative_button">Отмена</string> + <string name="playlist_chooser_dialog_neutral_button">Создать</string> + <string name="playlist_chooser_dialog_title">Добавить в плейлист</string> + <string name="playlist_chooser_dialog_toast_add_success">Добавьте песню в плейлист</string> + <string name="playlist_chooser_dialog_toast_add_failure">Не удалось добавить песню в список воспроизведения</string> + <string name="playlist_counted_tracks">%1$d треков • %2$s</string> + <string name="playlist_duration">Продолжительность • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Долгое нажатие для удаления</string> + <string name="playlist_editor_dialog_hint_name">Название плейлиста</string> + <string name="playlist_editor_dialog_negative_button">Отмена</string> + <string name="playlist_editor_dialog_neutral_button">Удалить</string> + <string name="playlist_editor_dialog_positive_button">Сохранять</string> + <string name="playlist_editor_dialog_title">Редактировать плейлист</string> + <string name="playlist_page_play_button">Воспроизвести</string> + <string name="playlist_page_shuffle_button">Смешать</string> + <string name="playlist_song_count">Плейлист • %1$d треки</string> + <string name="podcast_bottom_sheet_add_to_queue">Добавить в очередь</string> + <string name="podcast_bottom_sheet_delete">Удалить</string> + <string name="podcast_bottom_sheet_download">Скачать</string> + <string name="podcast_bottom_sheet_go_to_channel">Перейти на канал</string> + <string name="podcast_bottom_sheet_play_next">Играть дальше</string> + <string name="podcast_bottom_sheet_remove">Удалить</string> + <string name="podcast_channel_catalogue_title">Каналы</string> + <string name="podcast_channel_catalogue_title_expanded">Просмотр каналов</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">RSS-адрес</string> + <string name="podcast_channel_editor_dialog_title">Подкаст-канал</string> + <string name="podcast_channel_page_title_description_section">Описание</string> + <string name="podcast_channel_page_title_episode_section">Эпизоды</string> + <string name="podcast_channel_page_title_no_episode_available">Нет доступных серий</string> + <string name="podcast_episode_download_request_snackbar">Ваш запрос отправлен на сервер</string> + <string name="podcast_info_empty_button">Нажмите, чтобы скрыть раздел. Изменения будут видны при перезапуске</string> + <string name="podcast_info_empty_subtitle">Добавив канал, вы найдете его здесь</string> + <string name="podcast_info_empty_title">Подкасты не найдены!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">URL-адрес домашней страницы радио</string> + <string name="radio_editor_dialog_hint_name">Название радио</string> + <string name="radio_editor_dialog_hint_stream_url">URL-адрес радиопотока</string> + <string name="radio_editor_dialog_negative_button">Отмена</string> + <string name="radio_editor_dialog_neutral_button">Удалить</string> + <string name="radio_editor_dialog_positive_button">Сохранять</string> + <string name="radio_editor_dialog_title">Интернет-радиостанция</string> + <string name="radio_station_info_empty_button">Нажмите, чтобы скрыть раздел. Изменения будут видны при перезапуске</string> + <string name="radio_station_info_empty_subtitle">Добавив радиостанцию, вы найдете ее здесь</string> + <string name="radio_station_info_empty_title">Станции не найдены!</string> + <string name="rating_dialog_negative_button">Отмена</string> + <string name="rating_dialog_positive_button">Сохранять</string> + <string name="rating_dialog_title">Рейтинг</string> + <string name="search_hint">Поиск по названию, исполнителям или альбомам</string> + <string name="search_info_minimum_characters">Введите не менее трех символов</string> + <string name="search_title_album">Альбомы</string> + <string name="search_title_artist">Исполнители</string> + <string name="search_title_song">Треки</string> + <string name="server_signup_dialog_action_low_security">Низкая безопасность</string> + <string name="server_signup_dialog_action_delete_toast">Долгое нажатие для удаления</string> + <string name="server_signup_dialog_hint_local_address">Локальный URL</string> + <string name="server_signup_dialog_hint_name">Имя сервера</string> + <string name="server_signup_dialog_hint_password">Пароль</string> + <string name="server_signup_dialog_hint_url">URL-адрес сервера</string> + <string name="server_signup_dialog_hint_username">Имя пользователя</string> + <string name="server_signup_dialog_negative_button">Отмена</string> + <string name="server_signup_dialog_neutral_button">Удалить</string> + <string name="server_signup_dialog_positive_button">Сохранить</string> + <string name="server_signup_dialog_title">Добавить сервер</string> + <string name="server_unreachable_dialog_negative_button">Отмена</string> + <string name="server_unreachable_dialog_neutral_button">Перейти к входу</string> + <string name="server_unreachable_dialog_positive_button">Продолжить в любом случае</string> + <string name="server_unreachable_dialog_summary">Запрошенный сервер недоступен. Если вы решите продолжить, это диалоговое окно не появится в течение следующего часа</string> + <string name="server_unreachable_dialog_title">Сервер недоступен</string> + <string name="settings_about_summary">Tempus — это легкий музыкальный клиент с открытым исходным кодом для Subsonic, разработанный и созданный специально для Android.</string> + <string name="settings_about_title">О нас</string> + <string name="settings_album_detail">Показать детали альбома</string> + <string name="settings_album_detail_summary">Если включено, отображать информацию об альбоме, например жанр, количество песен и т. д., на странице альбома.</string> + <string name="settings_allow_playlist_duplicates">Разрешить добавление дубликатов в плейлист</string> + <string name="settings_allow_playlist_duplicates_summary">Если включено, дубликаты не будут проверяться при добавлении в плейлист..</string> + <string name="settings_always_on_display">Всегда на дисплее</string> + <string name="settings_artist_sort_by_album_count">Сортировать исполнителей по количеству альбомов</string> + <string name="settings_artist_sort_by_album_count_summary">Если включено, сортировать исполнителей по количеству альбомов. Если отключено, сортировать по имени.</string> + <string name="settings_audio_transcode_download_format">Формат перекодирования</string> + <string name="settings_audio_transcode_download_priority_summary">Если этот параметр включен, Tempus не будет принудительно загружать трек с настройками перекодирования, указанными ниже.</string> + <string name="settings_audio_transcode_download_priority_title">Установите приоритет настроек сервера, используемых для потоковой передачи при загрузке</string> + <string name="settings_audio_transcode_download_summary">Если этот параметр включен, Tempus будет загружать перекодированные треки.</string> + <string name="settings_audio_transcode_download_title">Скачать перекодированные треки</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Если этот параметр включен, на сервере будет запрошена предполагаемая продолжительность трека.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Оцените длину содержимого</string> + <string name="settings_audio_transcode_format_download">Формат перекодирования для загрузки</string> + <string name="settings_audio_transcode_format_mobile">Формат перекодирования в мобильном телефоне</string> + <string name="settings_audio_transcode_format_wifi">Перекодировать формат в Wi-Fi</string> + <string name="settings_audio_transcode_priority_summary">Если этот параметр включен, Tempus не будет принудительно транслировать трек с настройками перекодирования, указанными ниже.</string> + <string name="settings_audio_transcode_priority_title">Приоритизация настроек перекодирования сервера</string> + <string name="settings_audio_transcode_priority_toast">Приоритет при перекодировании трека отдается серверу</string> + <string name="settings_buffering_strategy">Стратегия буферизации</string> + <string name="settings_buffering_strategy_summary">Чтобы изменения вступили в силу, необходимо вручную перезапустить приложение.</string> + <string name="settings_continuous_play_summary">Разрешить играть включать треки после окончания плейлиста</string> + <string name="settings_continuous_play_title">Продолжать играть</string> + <string name="settings_covers_cache">Размер кэша обложек</string> + <string name="settings_data_saving_mode_summary">Чтобы сократить потребление данных, избегайте загрузки обложек.</string> + <string name="settings_data_saving_mode_title">Ограничить использование мобильных данных</string> + <string name="settings_delete_download_storage_summary">Продолжение приведет к необратимому удалению всех сохраненных элементов.</string> + <string name="settings_delete_download_storage_title">Удалить сохраненные элементы</string> + <string name="settings_download_storage_title">Загрузить хранилище</string> + <string name="settings_system_equalizer_summary">Отрегулируйте настройки звука</string> + <string name="settings_system_equalizer_title">Системный эквалайзер</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Следите за развитием</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">Установить разрешение изображения</string> + <string name="settings_language">Язык</string> + <string name="settings_logout_title">Выйти</string> + <string name="settings_max_bitrate_download">Битрейт для скачиваний</string> + <string name="settings_max_bitrate_mobile">Битрейт в мобильной сети 4G/5G</string> + <string name="settings_max_bitrate_wifi">Битрейт через соединение Wi-Fi</string> + <string name="settings_media_cache">Размер кэша медиафайлов</string> + <string name="settings_music_directory">Показать музыкальные каталоги</string> + <string name="settings_music_directory_summary">Если включено, то показывать раздел музыкального каталога. Обратите внимание: для правильной работы навигации по папкам сервер должен поддерживать эту функцию.</string> + <string name="settings_podcast">Показать подкаст</string> + <string name="settings_podcast_summary">Если включено, показывать раздел подкаста. Перезапустите приложение, чтобы оно вступило в силу.</string> + <string name="settings_audio_quality">Показать качество звука (битрейт)</string> + <string name="settings_audio_quality_summary">Битрейт и аудиоформат будут показаны для каждой аудиодорожки.</string> + <string name="settings_song_rating">Показать рейтинг трека</string> + <string name="settings_song_rating_summary">Если эта функция включена, будет отображаться пятизвездочный рейтинг трека на странице воспроизведения\n\n*Требует перезапуска приложения</string> + <string name="settings_item_rating">Показать рейтинг</string> + <string name="settings_item_rating_summary">Если эта функция включена, будет отображаться рейтинг элемента и то, отмечен ли он как избранный.</string> + <string name="settings_queue_syncing_countdown">Таймер синхронизации</string> + <string name="settings_queue_syncing_summary">Если этот параметр включен, пользователь будет иметь возможность сохранять свою очередь воспроизведения и загружать состояние при открытии приложения.</string> + <string name="settings_queue_syncing_title">Синхронизировать очередь воспроизведения для этого пользователя</string> + <string name="settings_show_mini_shuffle_button">Показать кнопку Shuffle</string> + <string name="settings_show_mini_shuffle_button_summary">Если включено, показывать кнопку перемешивания, убрать сердечко в мини-плеере</string> + <string name="settings_radio">Показать радио</string> + <string name="settings_radio_summary">Если включено, показывать раздел радио. Перезапустите приложение, чтобы оно вступило в силу.</string> + <string name="settings_auto_download_lyrics">Автоматическая загрузка текстов песен</string> + <string name="settings_auto_download_lyrics_summary">Автоматически сохранять тексты песен, когда они доступны, чтобы их можно было просматривать в автономном режиме.</string> + <string name="settings_replay_gain">Установите режим усиления воспроизведения</string> + <string name="settings_rounded_corner">Закругленные углы</string> + <string name="settings_rounded_corner_size">Размер углов</string> + <string name="settings_rounded_corner_size_summary">Устанавливает величину угла кривизны.</string> + <string name="settings_rounded_corner_summary">Если этот параметр включен, задает угол кривизны для всех отображаемых обложек. Изменения вступят в силу при перезапуске.</string> + <string name="settings_scan_title">Сканировать библиотеку</string> + <string name="settings_scrobble_title">Включить скробблинг музыки Last.FM и т.д.</string> + <string name="settings_system_language">Язык системы</string> + <string name="settings_share_title">Включить обмен музыкой</string> + <string name="settings_streaming_cache_size">Размер кэша стриминга</string> + <string name="settings_streaming_cache_storage_title">Хранилище кэша стриминга</string> + <string name="settings_sub_summary_scrobble">Важно отметить, что скробблинг также зависит от того, настроен ли сервер для получения этих данных.</string> + <string name="settings_summary_skip_min_star_rating">При прослушивании радио исполнителя, мгновенном миксе или перемешивании всех, треки ниже определенного пользовательского рейтинга будут игнорироваться.</string> + <string name="settings_summary_replay_gain">Усиление воспроизведения — это функция, которая позволяет регулировать уровень громкости звуковых дорожек для обеспечения единообразного качества прослушивания. Этот параметр действует только в том случае, если трек содержит необходимые метаданные.</string> + <string name="settings_summary_scrobble">Скробблинг — это функция, которая позволяет вашему устройству отправлять информацию о песнях, которые вы слушаете, на музыкальный сервер. Эта информация помогает создавать персональные рекомендации на основе ваших музыкальных предпочтений.</string> + <string name="settings_summary_share">Позволяет пользователю делиться музыкой по ссылке. Функциональность должна поддерживаться и включаться на стороне сервера и ограничивается отдельными треками, альбомами и плейлистами.</string> + <string name="settings_summary_syncing">Возвращает состояние очереди воспроизведения для этого пользователя. Сюда входят треки в очереди воспроизведения, воспроизводимый в данный момент трек и позиция внутри этого трека. Сервер должен поддерживать эту функцию.</string> + <string name="settings_summary_streaming_cache_size">%1$s \nСейчас используется: %2$s MiB</string> + <string name="settings_summary_transcoding">Приоритет отдается режиму перекодирования. Если установлено «Прямое воспроизведение», битрейт файла не изменится.</string> + <string name="settings_summary_transcoding_download">Загрузите перекодированные медиафайлы. Если этот параметр включен, будет использоваться не конечная точка загрузки, а следующие настройки. Если для параметра «Формат перекодирования для загрузки» установлено значение «Прямая загрузка», битрейт файла не изменится.</string> + <string name="settings_summary_transcoding_estimate_content_length">Когда файл перекодируется на лету, клиент обычно не показывает длину трека. Можно запросить у серверов, поддерживающих данную функцию, оценку длительности воспроизводимого трека, но время ответа может занять больше времени.</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">Если этот параметр включен, помеченные альбомы будут загружены для использования в автономном режиме.</string> + <string name="settings_sync_starred_albums_for_offline_use_title">Синхронизировать помеченные альбомы для использования в автономном режиме.</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Если этот параметр включен, помеченные треки будут загружены для использования в автономном режиме.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Синхронизировать помеченные треки для использования в автономном режиме.</string> + <string name="settings_sync_starred_artists_for_offline_use_title">Синхронизировать избранных исполнителей для использования офлайн</string> + <string name="settings_support_summary">Присоединяйтесь к обсуждениям в сообществе и оказывайте поддержку</string> + <string name="settings_support_title">Поддержка пользователей</string> + <string name="settings_theme">Тема</string> + <string name="settings_title_data">Данные</string> + <string name="settings_title_general">Общий</string> + <string name="settings_title_rating">Рейтинг</string> + <string name="settings_title_replay_gain">Усиление воспроизведения</string> + <string name="settings_title_scrobble">Скроббл</string> + <string name="settings_title_skip_min_star_rating">Игнорировать треки по рейтингу</string> + <string name="settings_title_skip_min_star_rating_dialog">Треки с рейтингом:</string> + <string name="settings_title_share">Поделиться</string> + <string name="settings_title_syncing">Синхронизации</string> + <string name="settings_title_transcoding">Транскодирование</string> + <string name="settings_title_transcoding_download">Скачивание с транскодированием</string> + <string name="settings_title_ui">UI (Пользовательский интерфейс)</string> + <string name="settings_transcoded_download">Перекодированная загрузка</string> + <string name="settings_version_title">Версия</string> + <string name="settings_wifi_only_summary">Запросить подтверждение пользователя перед потоковой передачей по мобильной сети.</string> + <string name="settings_wifi_only_title">Оповещение о потоковой передаче только через Wi-Fi</string> + <string name="share_bottom_sheet_copy_link">Копировать ссылку</string> + <string name="share_bottom_sheet_delete">Удалить общий доступ</string> + <string name="share_bottom_sheet_update">Обновить общий доступ</string> + <string name="share_subtitle_item">Срок действия: %1$s</string> + <string name="share_unsupported_error">Общий доступ не поддерживается или не включен</string> + <string name="share_update_dialog_hint_description">Описание</string> + <string name="share_update_dialog_hint_expiration_date">Дата окончания срока</string> + <string name="share_update_dialog_negative_button">Отмена</string> + <string name="share_update_dialog_positive_button">Сохранять</string> + <string name="share_update_dialog_title">Поделиться</string> + <string name="song_bottom_sheet_add_to_playlist">Добавить в плейлист</string> + <string name="song_bottom_sheet_add_to_queue">Добавить в очередь</string> + <string name="song_bottom_sheet_download">Скачать</string> + <string name="song_bottom_sheet_error_retrieving_album">Ошибка при получении альбома</string> + <string name="song_bottom_sheet_error_retrieving_artist">Не удалось получить исполнителя</string> + <string name="song_bottom_sheet_go_to_album">Перейти в альбом</string> + <string name="song_bottom_sheet_go_to_artist">Перейти к исполнителю</string> + <string name="song_bottom_sheet_instant_mix">Мгновенный микс</string> + <string name="song_bottom_sheet_play_next">Играть дальше</string> + <string name="song_bottom_sheet_rate">Оценить</string> + <string name="song_bottom_sheet_remove">Удалить</string> + <string name="song_bottom_sheet_share">Поделиться</string> + <string name="song_list_page_downloaded">Загружено</string> + <string name="song_list_page_most_played">Самые популярные треки</string> + <string name="song_list_page_recently_added">Недавно добавленные треки</string> + <string name="song_list_page_recently_played">Недавно воспроизведенные треки</string> + <string name="song_list_page_starred">Помеченные треки</string> + <string name="song_list_page_top">%1$s\'s Лучшие треки</string> + <string name="song_list_page_year">Год %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Отмена</string> + <string name="starred_sync_dialog_neutral_button">Продолжить</string> + <string name="starred_sync_dialog_positive_button">Продолжить и скачать</string> + <string name="starred_sync_dialog_summary">Для скачивания рейтинговых треков может потребоваться большой объем данных.</string> + <string name="starred_sync_dialog_title">Синхронизировать отмеченные треки</string> + <string name="starred_album_sync_dialog_summary">Для скачивания рейтинговых альбомов может потребоваться большой объем данных.</string> + <string name="starred_album_sync_dialog_title">Синхронизировать отмеченные альбомы</string> + <string name="streaming_cache_storage_dialog_sub_summary">Чтобы изменения вступили в силу необходимо перезапустить приложение.</string> + <string name="streaming_cache_storage_dialog_summary">Изменение места сохранения кэшированных файлов с одного на другое может привести к удалению файлов в старом хранилище.</string> + <string name="streaming_cache_storage_dialog_title">Выберите способ сохранения</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Внешний</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Внутренний</string> + <string name="track_info_album">Альбом</string> + <string name="track_info_artist">Исполнитель</string> + <string name="track_info_bit_depth">Разрядность</string> + <string name="track_info_bitrate">Битрейт</string> + <string name="track_info_content_type">Тип содержимого</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Информация о треке</string> + <string name="track_info_disc_number">Номер диска</string> + <string name="track_info_duration">Продолжительность</string> + <string name="track_info_genre">Жанр</string> + <string name="track_info_path">Путь</string> + <string name="track_info_sampling_rate">Частота сэмплирования</string> + <string name="track_info_size">Размер</string> + <string name="track_info_suffix">Суффикс</string> + <string name="track_info_summary_downloaded_file">Файл был загружен с использованием API Subsonic. Кодек и битрейт файла остаются неизменными по сравнению с исходным файлом.</string> + <string name="track_info_summary_full_transcode">Приложение запросит сервер перекодировать файл и изменить его битрейт. Запрошенный пользователем кодек: %1$s, с битрейтом %2$s. Любые потенциальные изменения кодека и битрейта файла в выбранном формате будут обрабатываться сервером, который может поддерживать или не поддерживать эту операцию.</string> + <string name="track_info_summary_original_file">Приложение будет читать только исходный файл, предоставленный сервером. Приложение явно запросит у сервера неперекодированный файл с битрейтом исходного источника.</string> + <string name="track_info_summary_server_prioritized">Качество воспроизводимого файла остается на усмотрение сервера. Приложение не будет принудительно выбирать кодек и битрейт для любого потенциального перекодирования.</string> + <string name="track_info_summary_transcoding_bitrate">Приложение запросит сервер изменить битрейт файла. Пользователь запросил битрейт %1$s, при этом кодек исходного файла останется прежним. Любые изменения битрейта файла в выбранном формате будут выполняться сервером, который может поддерживать или не поддерживать эту операцию.</string> + <string name="track_info_summary_transcoding_codec">Приложение запросит сервер перекодировать файл. Запрошенный пользователем кодек — %1$s, а битрейт будет такой же, как у исходного файла. Потенциальное перекодирование файла в выбранный формат зависит от сервера, поскольку он может поддерживать или не поддерживать эту операцию.</string> + <string name="track_info_title">Заголовок</string> + <string name="track_info_track_number">Номер трека</string> + <string name="track_info_transcoded_content_type">Тип транскодированного контента</string> + <string name="track_info_transcoded_suffix">Транскодированный суффикс</string> + <string name="track_info_year">Год</string> + <string name="undraw_page">Развернуть</string> + <string name="undraw_thanks">Особая благодарность — команде unDraw, без иллюстраций которой мы не смогли бы сделать это приложение красивее.</string> + <string name="undraw_url">https://undraw.co/</string> + <plurals name="home_sync_starred_albums_count"> + <item quantity="one">Альбомов для синхронизации: %d</item> + <item quantity="other">Альбомов для синхронизации: %d</item> + </plurals> +</resources> diff --git a/app/src/main/res/values-tr/arrays.xml b/app/src/main/res/values-tr/arrays.xml new file mode 100644 index 0000000..db3d142 --- /dev/null +++ b/app/src/main/res/values-tr/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Açık</item> + <item>Koyu</item> + <item>Sistem varsayılanı</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>Yüksek</item> + <item>Orta</item> + <item>Düşük</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>Yüksek</item> + <item>Orta</item> + <item>Düşük</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Kapalı</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Orjinal</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Orjinal</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Orjinal</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Doğrudan çal</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Doğrudan çal</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Doğrudan indir</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>On saniye</item> + <item>Beş saniye</item> + <item>İki saniye</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>Yüksek</item> + <item>Orta</item> + <item>Düşük</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Kapalı</item> + <item>Parça</item> + <item>Albüm</item> + <item>Otomatik</item> + </string-array> + <string-array name="replay_gain_values"> + <item>kapalı</item> + <item>parça</item> + <item>albüm</item> + <item>otomatik</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Format dönüştürme yapma</item> + <item>Sunucu ayarları</item> + <item>Wi-fi dönüştürme ayarları</item> + <item>Mobil dönüştürme formatı</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Minimum</item> + <item>Moderate</item> + <item>Agrasif</item> + <item>Aşırı</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>En az 0 yıldız</item> + <item>En az 1 yıldız</item> + <item>En az 2 yıldız</item> + <item>En az 3 yıldız</item> + <item>En az 4 yıldız</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000..c38e105 --- /dev/null +++ b/app/src/main/res/values-tr/strings.xml @@ -0,0 +1,456 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">Sorun yaşarsanız https://dontkillmyapp.com adresini ziyaret edin. Uygulamanın performansını etkileyebilecek güç tasarrufu özelliklerinin nasıl devre dışı bırakılacağına dair ayrıntılı talimatlar sağlar.</string> + <string name="activity_battery_optimizations_summary">Ekran kapalıyken medya oynatma için lütfen pil optimizasyonlarını devre dışı bırakın.</string> + <string name="activity_battery_optimizations_title">Pil optimizasyonu</string> + <string name="activity_info_offline_mode">Çevrimdışı mod</string> + <string name="album_bottom_sheet_add_to_playlist">Çalma listesine ekle</string> + <string name="album_bottom_sheet_add_to_queue">Sıraya ekle</string> + <string name="album_bottom_sheet_download_all">Tümünü indir</string> + <string name="album_bottom_sheet_go_to_artist">Sanatçıya git</string> + <string name="album_bottom_sheet_instant_mix">Anında karışım</string> + <string name="album_bottom_sheet_play_next">Sıradakini çal</string> + <string name="album_bottom_sheet_remove_all">Tümünü kaldır</string> + <string name="album_bottom_sheet_share">Paylaş</string> + <string name="album_bottom_sheet_shuffle">Karıştır</string> + <string name="album_catalogue_title">Albümler</string> + <string name="album_catalogue_title_expanded">Albümleri görüntüle</string> + <string name="album_error_retrieving_artist">Sanatçı getirilirken hata oluştu</string> + <string name="album_list_page_downloaded">İndirilen albümler</string> + <string name="album_list_page_most_played">En çok çalınan albümler</string> + <string name="album_list_page_new_releases">Yeni çıkanlar</string> + <string name="album_list_page_recently_added">Yakın zamanda eklenen albümler</string> + <string name="album_list_page_recently_played">Yakın zamanda çalınan albümler</string> + <string name="album_list_page_starred">Yıldızlı albümler</string> + <string name="album_list_page_title">Albümler</string> + <string name="album_page_extra_info_button">Buna benzer daha fazla</string> + <string name="album_page_play_button">Çal</string> + <string name="album_page_release_date_label">%1$s tarihinde yayınlandı</string> + <string name="album_page_release_dates_label">%1$s tarihinde yayınlandı, orijinali %2$s</string> + <string name="album_page_shuffle_button">Karıştır</string> + <string name="album_page_tracks_count_and_duration">%1$d parça • %2$d dakika</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Aranıyor…</string> + <string name="artist_bottom_sheet_instant_mix">Anında karışım</string> + <string name="artist_bottom_sheet_shuffle">Karıştır</string> + <string name="artist_catalogue_title">Sanatçılar</string> + <string name="artist_catalogue_title_expanded">Sanatçılara göz at</string> + <string name="artist_error_retrieving_radio">Sanatçının radyosu alınırken hata oluştu</string> + <string name="artist_error_retrieving_tracks">Sanatçının parçaları alınırken hata oluştu</string> + <string name="artist_list_page_downloaded">İndirilen sanatçılar</string> + <string name="artist_list_page_starred">Yıldızlı sanatçılar</string> + <string name="artist_list_page_title">Sanatçılar</string> + <string name="artist_page_radio_button">Radyo</string> + <string name="artist_page_shuffle_button">Karıştır</string> + <string name="artist_page_switch_layout_button">Düzeni değiştir</string> + <string name="artist_page_title_album_more_like_this_button">Buna benzer daha fazla</string> + <string name="artist_page_title_album_section">Albümler</string> + <string name="artist_page_title_biography_more_button">Daha fazla</string> + <string name="artist_page_title_biography_section">Biyografi</string> + <string name="artist_page_title_most_streamed_song_section">En Çok Dinlenen Şarkılar</string> + <string name="artist_page_title_most_streamed_song_see_all_button">Tümünü gör</string> + <string name="battery_optimization_negative_button">Yok say</string> + <string name="battery_optimization_neutral_button">Bir daha sorma</string> + <string name="battery_optimization_positive_button">Devre dışı bırak</string> + <string name="connection_alert_dialog_negative_button">İptal</string> + <string name="connection_alert_dialog_neutral_button">Veri tasarrufunu etkinleştir</string> + <string name="connection_alert_dialog_positive_button">Tamam</string> + <string name="connection_alert_dialog_summary">Wi-Fi dışındaki bağlantılarda Subsonic sunucusuna erişim kısıtlandı. Bu uyarı penceresinin tekrar görünmemesi için, uygulama ayarlarından bağlantı denetimini devre dışı bırakın.</string> + <string name="connection_alert_dialog_title">Wi-Fi bağlı değil</string> + <string name="content_description_shuffle_button">Karıştır</string> + <string name="delete_download_storage_dialog_negative_button">İptal</string> + <string name="delete_download_storage_dialog_positive_button">Devam ettir</string> + <string name="delete_download_storage_dialog_summary">Lütfen dikkat edin, bu işleme devam etmek tüm sunuculardan indirilen kayıtlı öğelerin kalıcı olarak silinmesine yol açacaktır.</string> + <string name="delete_download_storage_dialog_title">Kayıtlı öğeleri sil</string> + <string name="description_empty_title">Açıklama yok</string> + <string name="disc_titlefull">Disk %1$s - %2$s</string> + <string name="disc_titleless">Disk %1$s</string> + <string name="download_directory_dialog_negative_button">İptal</string> + <string name="download_directory_dialog_positive_button">İndir</string> + <string name="download_directory_dialog_summary">Bu klasördeki tüm parçalar indirilecektir. Alt klasörlerde bulunan parçalar indirilmeyecektir.</string> + <string name="download_directory_dialog_title">Parçaları indir</string> + <string name="download_info_empty_subtitle">Bir şarkı indirdiğinde burada görünecek</string> + <string name="download_info_empty_title">Henüz indirme yok!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s öğe</string> + <string name="download_item_single_subtitle_formatter">%1$s öğe</string> + <string name="download_shuffle_all_subtitle">Tümünü karıştır</string> + <string name="download_storage_dialog_sub_summary">Değişikliklerin geçerli olması için uygulamayı yeniden başlatın.</string> + <string name="download_storage_dialog_summary">İndirilen dosyaların hedefi bir depolamadan diğerine değiştirildiğinde, önceki depolamada bulunan tüm indirilmiş dosyalar anında silinecektir.</string> + <string name="download_storage_dialog_title">Depolama seçeneğini seç</string> + <string name="download_storage_external_dialog_positive_button">Harici</string> + <string name="download_storage_internal_dialog_negative_button">Dahili</string> + <string name="download_title_section">İndirilenler</string> + <string name="downloaded_bottom_sheet_add_to_queue">Sıraya ekle</string> + <string name="downloaded_bottom_sheet_play_next">Sonra çal</string> + <string name="downloaded_bottom_sheet_remove">Kaldır</string> + <string name="downloaded_bottom_sheet_remove_all">Tümünü kaldır</string> + <string name="downloaded_bottom_sheet_shuffle">Karıştır</string> + <string name="empty_string" /> + <string name="error_required">Zorunlu</string> + <string name="error_server_prefix">http veya https öneki gerekli</string> + <string name="exo_download_notification_channel_name">İndirilenler</string> + <string name="filter_info_selection">İki veya daha fazla filtre seçin</string> + <string name="filter_title">Filtre</string> + <string name="filter_artist">Sanatçıları filtrele</string> + <string name="filter_title_expanded">Türleri filtrele</string> + <string name="generic_list_page_count">(%1$d)</string> + <string name="generic_list_page_count_unknown">(+%1$d)</string> + <string name="genre_catalogue_title">Tür Kataloğu</string> + <string name="genre_catalogue_title_expanded">Türlere göz at</string> + <string name="github_update_dialog_negative_button">Bana sonra hatırlat</string> + <string name="github_update_dialog_neutral_button">Destek ol</string> + <string name="github_update_dialog_positive_button">Hemen indir</string> + <string name="github_update_dialog_summary">Uygulamanın yeni bir sürümü Github’da mevcut.</string> + <string name="github_update_dialog_title">Güncelleme mevcut</string> + <string name="home_rearrangement_dialog_negative_button">İptal</string> + <string name="home_rearrangement_dialog_neutral_button">Sıfırla</string> + <string name="home_rearrangement_dialog_positive_button">Kaydet</string> + <string name="home_rearrangement_dialog_title">Ana sayfayı düzenle</string> + <string name="home_rearrangement_dialog_subtitle">Yapılan değişikliklerin etkili olması için uygulamayı yeniden başlatmanız gerekir.</string> + <string name="home_section_music">Müzik</string> + <string name="home_section_podcast">Podcast</string> + <string name="home_section_radio">Radyo</string> + <string name="home_subtitle_best_of">Favori sanatçılarının en iyi şarkıları</string> + <string name="home_subtitle_made_for_you">Beğendiğin bir şarkıdan karışım başlat</string> + <string name="home_subtitle_new_internet_radio_station">Yeni radyo ekle</string> + <string name="home_subtitle_new_podcast_channel">Yeni podcast kanalı ekle</string> + <string name="home_sync_starred_cancel">İptal</string> + <string name="home_sync_starred_download">İndir</string> + <string name="home_sync_starred_subtitle">Bu parçaların indirilmesi önemli miktarda veri kullanabilir</string> + <string name="home_sync_starred_title">Eşitlenecek bazı yıldızlı parçalar var gibi görünüyor</string> + <string name="home_sync_starred_albums_subtitle">Yıldız ile işaretlenen albümler çevrimdışı kullanılabilir olacak</string> + <string name="home_title_best_of">En iyiler</string> + <string name="home_title_discovery">Keşfet</string> + <string name="home_title_discovery_shuffle_all_button">Tümünü karıştır</string> + <string name="home_title_flashback">Geçmişe dönüş</string> + <string name="home_title_internet_radio_station">İnternet radyo istasyonları</string> + <string name="home_title_last_played">Son çalınanlar</string> + <string name="home_title_last_played_see_all_button">Tümünü gör</string> + <string name="home_title_last_week">Geçen hafta</string> + <string name="home_title_last_month">Geçen ay</string> + <string name="home_title_last_year">Geçen yıl</string> + <string name="home_title_made_for_you">Senin için</string> + <string name="home_title_most_played">En çok çalınanlar</string> + <string name="home_title_most_played_see_all_button">Tümünü gör</string> + <string name="home_title_new_releases">Yeni çıkışlar</string> + <string name="home_title_newest_podcasts">En yeni podcastler</string> + <string name="home_title_pinned_playlists">Çalma listeleri</string> + <string name="home_title_podcast_channels">Kanallar</string> + <string name="home_title_podcast_channels_see_all_button">Tümünü gör</string> + <string name="home_title_radio_station">Radyo istasyonları</string> + <string name="home_title_recently_added">Son eklenenler</string> + <string name="home_title_recently_added_see_all_button">Tümünü gör</string> + <string name="home_title_shares">Paylaşımlar</string> + <string name="home_title_starred_albums">★ Yıldızlı albümler</string> + <string name="home_title_starred_albums_see_all_button">Tümünü gör</string> + <string name="home_title_starred_artists">★ Yıldızlı sanatçılar</string> + <string name="home_title_starred_artists_see_all_button">Tümünü gör</string> + <string name="home_title_starred_tracks">★ Yıldızlı parçalar</string> + <string name="home_title_starred_tracks_see_all_button">Tümünü gör</string> + <string name="home_title_top_songs">En iyi şarkıların</string> + <string name="home_option_reorganize">Yeniden düzenle</string> + <string name="label_dot_separator" translatable="false">•</string> + <string name="label_placeholder" translatable="false">--</string> + <string name="library_title_album">Albümler</string> + <string name="library_title_album_see_all_button">Tümünü gör</string> + <string name="library_title_artist">Sanatçılar</string> + <string name="library_title_artist_see_all_button">Tümünü gör</string> + <string name="library_title_genre">Türler</string> + <string name="library_title_genre_see_all_button">Tümünü gör</string> + <string name="library_title_music_folder">Müzik klasörleri</string> + <string name="library_title_playlist">Çalma listeleri</string> + <string name="library_title_playlist_see_all_button">Tümünü gör</string> + <string name="login_empty">Sunucu eklenmedi</string> + <string name="login_title">Subsonic sunucuları</string> + <string name="login_title_expanded">Subsonic sunucuları</string> + <string name="media_route_menu_title">Yayınla</string> + <string name="menu_add_button">Ekle</string> + <string name="menu_add_to_playlist_button">Çalma listesine ekle</string> + <string name="menu_download_all_button">Tümünü indir</string> + <string name="menu_rate_album">Albümü oyla</string> + <string name="menu_download_label">İndir</string> + <string name="menu_filter_all">Tümü</string> + <string name="menu_filter_download">İndirilenler</string> + <string name="menu_group_by_album">Albüm</string> + <string name="menu_group_by_artist">Sanatçı</string> + <string name="menu_group_by_genre">Tür</string> + <string name="menu_group_by_track">Parça</string> + <string name="menu_group_by_year">Yıl</string> + <string name="menu_home_label">Ana sayfa</string> + <string name="menu_last_week_name">Geçen hafta</string> + <string name="menu_last_month_name">Geçen ay</string> + <string name="menu_last_year_name">Geçen yıl</string> + <string name="menu_library_label">Kütüphane</string> + <string name="menu_search_button">Ara</string> + <string name="menu_settings_button">Ayarlar</string> + <string name="menu_sort_artist">Sanatçı</string> + <string name="menu_sort_name">Ad</string> + <string name="menu_sort_random">Rastgele</string> + <string name="menu_sort_recently_added">Son eklenenler</string> + <string name="menu_sort_recently_played">Son çalınanlar</string> + <string name="menu_sort_most_played">En çok çalınanlar</string> + <string name="menu_sort_most_recently_starred">En son yıldızlananlar</string> + <string name="menu_sort_least_recently_starred">En eski yıldızlananlar</string> + <string name="menu_pin_button">Ana ekrana ekle</string> + <string name="menu_unpin_button">Ana ekrandan kaldır</string> + <string name="menu_sort_year">Yıl</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Çalma sırasını temizle</string> + <string name="player_queue_save_queue_success">Kayıtlı oynatma sırası</string> + <string name="player_server_priority">Sunucu önceliği</string> + <string name="player_unknown_format">Bilinmeyen format</string> + <string name="player_transcoding">Dönüştürme</string> + <string name="player_transcoding_requested">talep edildi</string> + <string name="playlist_catalogue_title">Çalma Listesi Kataloğu</string> + <string name="playlist_catalogue_title_expanded">Çalma listelerine göz at</string> + <string name="playlist_chooser_dialog_empty">Henüz çalma listesi oluşturulmadı</string> + <string name="playlist_chooser_dialog_negative_button">İptal</string> + <string name="playlist_chooser_dialog_neutral_button">Oluştur</string> + <string name="playlist_chooser_dialog_title">Çalma listesine ekle</string> + <string name="playlist_chooser_dialog_toast_add_success">Şarkı çalma listesine eklendi</string> + <string name="playlist_chooser_dialog_toast_add_failure">Şarkı çalma listesine eklenemedi</string> + <string name="playlist_counted_tracks">%1$d parça • %2$s</string> + <string name="playlist_duration">Süre • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Silmek için uzun basın</string> + <string name="playlist_editor_dialog_hint_name">Çalma listesi adı</string> + <string name="playlist_editor_dialog_negative_button">İptal</string> + <string name="playlist_editor_dialog_neutral_button">Sil</string> + <string name="playlist_editor_dialog_positive_button">Kaydet</string> + <string name="playlist_editor_dialog_title">Çalma listesini düzenle</string> + <string name="playlist_page_play_button">Çal</string> + <string name="playlist_page_shuffle_button">Karıştır</string> + <string name="playlist_song_count">Çalma listesi • %1$d şarkı</string> + <string name="podcast_bottom_sheet_add_to_queue">Sıraya ekle</string> + <string name="podcast_bottom_sheet_delete">Sil</string> + <string name="podcast_bottom_sheet_download">İndir</string> + <string name="podcast_bottom_sheet_go_to_channel">Kanala git</string> + <string name="podcast_bottom_sheet_play_next">Sonra çal</string> + <string name="podcast_bottom_sheet_remove">Kaldır</string> + <string name="podcast_channel_catalogue_title">Kanallar</string> + <string name="podcast_channel_catalogue_title_expanded">Kanallara göz at</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">RSS URL</string> + <string name="podcast_channel_editor_dialog_title">Podcast Kanalı</string> + <string name="podcast_channel_page_title_description_section">Açıklama</string> + <string name="podcast_channel_page_title_episode_section">Bölümler</string> + <string name="podcast_channel_page_title_no_episode_available">Bölüm mevcut değil</string> + <string name="podcast_episode_download_request_snackbar">İsteğiniz sunucuya gönderildi</string> + <string name="podcast_info_empty_button">Bölümü gizlemek için tıklayın\nDeğişiklikler yeniden başlatıldığında görülecek</string> + <string name="podcast_info_empty_subtitle">Bir kanal eklediğinizde burada göreceksiniz</string> + <string name="podcast_info_empty_title">Podcast bulunamadı!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">Radyo Anasayfa URL’si</string> + <string name="radio_editor_dialog_hint_name">Radyo Adı</string> + <string name="radio_editor_dialog_hint_stream_url">Radyo Yayın URL’si</string> + <string name="radio_editor_dialog_negative_button">İptal</string> + <string name="radio_editor_dialog_neutral_button">Sil</string> + <string name="radio_editor_dialog_positive_button">Kaydet</string> + <string name="radio_editor_dialog_title">İnternet Radyo İstasyonu</string> + <string name="radio_station_info_empty_button">Bölümü gizlemek için tıklayın\nDeğişiklikler yeniden başlatıldığında görülecek</string> + <string name="radio_station_info_empty_subtitle">Bir radyo istasyonu eklediğinizde burada göreceksiniz</string> + <string name="radio_station_info_empty_title">İstasyon bulunamadı!</string> + <string name="rating_dialog_negative_button">İptal</string> + <string name="rating_dialog_positive_button">Kaydet</string> + <string name="rating_dialog_title">Değerlendir</string> + <string name="search_hint">Başlık, sanatçı veya albüm ara</string> + <string name="search_info_minimum_characters">En az üç karakter girin</string> + <string name="search_title_album">Albümler</string> + <string name="search_title_artist">Sanatçılar</string> + <string name="search_title_song">Şarkılar</string> + <string name="server_signup_dialog_action_low_security">Düşük güvenlik</string> + <string name="server_signup_dialog_action_delete_toast">Silmek için uzun basın</string> + <string name="server_signup_dialog_hint_local_address">Yerel URL</string> + <string name="server_signup_dialog_hint_name">Sunucu Adı</string> + <string name="server_signup_dialog_hint_password">Parola</string> + <string name="server_signup_dialog_hint_url">Sunucu URL’si</string> + <string name="server_signup_dialog_hint_username">Kullanıcı adı</string> + <string name="server_signup_dialog_negative_button">İptal</string> + <string name="server_signup_dialog_neutral_button">Sil</string> + <string name="server_signup_dialog_positive_button">Kaydet</string> + <string name="server_signup_dialog_title">Sunucu ekle</string> + <string name="server_unreachable_dialog_negative_button">İptal</string> + <string name="server_unreachable_dialog_neutral_button">Girişe git</string> + <string name="server_unreachable_dialog_positive_button">Yine de devam et</string> + <string name="server_unreachable_dialog_summary">İstenen sunucuya ulaşılamıyor. Devam etmeyi seçerseniz bu iletişim penceresi bir saat boyunca tekrar görünmez.</string> + <string name="server_unreachable_dialog_title">Sunucuya ulaşılamıyor</string> + <string name="settings_about_summary">Tempus, Subsonic için açık kaynaklı ve hafif bir müzik istemcisidir, Android için yerel olarak tasarlanıp geliştirilmiştir.</string> + <string name="settings_about_title">Hakkında</string> + <string name="settings_always_on_display">Her zaman açık ekran</string> + <string name="settings_audio_transcode_download_format">Dönüştürme formatı</string> + <string name="settings_audio_transcode_download_priority_summary">Etkinleştirildiğinde, Tempus parçayı aşağıdaki dönüştürme ayarlarıyla indirmeye zorlamaz.</string> + <string name="settings_audio_transcode_download_priority_title">İndirmelerde yayın için kullanılan sunucu ayarlarına öncelik ver</string> + <string name="settings_audio_transcode_download_summary">Etkinleştirildiğinde, Tempus dönüştürülmüş parçaları indirir.</string> + <string name="settings_audio_transcode_download_title">Dönüştürülmüş parçaları indir</string> + <string name="settings_audio_transcode_estimate_content_length_summary">Etkinleştirildiğinde, parçanın tahmini süresi sunucudan istenir.</string> + <string name="settings_audio_transcode_estimate_content_length_title">İçerik uzunluğunu tahmin et</string> + <string name="settings_audio_transcode_format_download">İndirmeler için dönüştürme formatı</string> + <string name="settings_audio_transcode_format_mobile">Mobilde dönüştürme formatı</string> + <string name="settings_audio_transcode_format_wifi">Wi-Fi’da dönüştürme formatı</string> + <string name="settings_audio_transcode_priority_summary">Etkinleştirildiğinde, Tempus parçayı aşağıdaki dönüştürme ayarlarıyla yayınlamayacaktır.</string> + <string name="settings_audio_transcode_priority_title">Sunucu dönüştürme ayarlarına öncelik ver</string> + <string name="settings_audio_transcode_priority_toast">Parçanın dönüştürülmesinde öncelik sunucuya verildi</string> + <string name="settings_buffering_strategy">Önbellekleme stratejisi</string> + <string name="settings_buffering_strategy_summary">Değişikliğin geçerli olması için uygulamayı elle yeniden başlatmalısınız.</string> + <string name="settings_continuous_play_summary">Bir çalma listesi bittiğinde benzer şarkılar çalarak müziğin devam etmesine izin verir</string> + <string name="settings_continuous_play_title">Sürekli çalma</string> + <string name="settings_covers_cache">Albüm kapağı önbelleği boyutu</string> + <string name="settings_data_saving_mode_summary">Veri tüketimini azaltmak için kapak görsellerinin indirilmesinden kaçının.</string> + <string name="settings_data_saving_mode_title">Mobil veri kullanımını sınırla</string> + <string name="settings_delete_download_storage_summary">Devam ederseniz tüm kayıtlı öğeler geri alınamaz şekilde silinecektir.</string> + <string name="settings_delete_download_storage_title">Kayıtlı öğeleri sil</string> + <string name="settings_download_storage_title">İndirme depolaması</string> + <string name="settings_system_equalizer_summary">Ses ayarlarını düzenle</string> + <string name="settings_system_equalizer_title">Sistem ekolayzır</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Gelişmeleri takip et</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">Görsel çözünürlüğünü ayarla</string> + <string name="settings_language">Dil</string> + <string name="settings_logout_title">Çıkış yap</string> + <string name="settings_max_bitrate_download">İndirmeler için bit hızı</string> + <string name="settings_max_bitrate_mobile">Mobilde bit hızı</string> + <string name="settings_max_bitrate_wifi">Wi-Fi’da bit hızı</string> + <string name="settings_media_cache">Ortam dosyası önbelleği boyutu</string> + <string name="settings_music_directory">Müzik dizinlerini göster</string> + <string name="settings_music_directory_summary">Etkinleştirildiğinde müzik dizini bölümü görüntülenir. Klasörlerde gezinmenin doğru çalışması için sunucunun bu özelliği desteklemesi gerekir.</string> + <string name="settings_podcast">Podcast’i göster</string> + <string name="settings_podcast_summary">Etkinleştirildiğinde podcast bölümü görüntülenir. Tam etkili olması için uygulamayı yeniden başlatın.</string> + <string name="settings_audio_quality">Ses kalitesini göster</string> + <string name="settings_audio_quality_summary">Her ses parçası için bit hızı ve ses formatı gösterilecektir.</string> + <string name="settings_song_rating_summary">" "</string> + <string name="settings_item_rating">Öğe değerlemesini göster</string> + <string name="settings_item_rating_summary">Etkinleştirildiğinde, öğenin puanı ve favori olarak işaretlenip işaretlenmediği görüntülenir.</string> + <string name="settings_queue_syncing_countdown">Eşitleme zamanlayıcısı</string> + <string name="settings_queue_syncing_summary">Etkinleştirildiğinde, kullanıcı çalma sırasını kaydedebilir ve uygulamayı açtığında bu durumu yükleyebilir.</string> + <string name="settings_queue_syncing_title">Bu kullanıcı için çalma sırasını eşitle</string> + <string name="settings_radio">Radyoyu göster</string> + <string name="settings_radio_summary">Etkinleştirildiğinde radyo bölümü görüntülenir. Tam etkili olması için uygulamayı yeniden başlatın.</string> + <string name="settings_replay_gain">Yeniden çalma kazanç modunu ayarla</string> + <string name="settings_rounded_corner">Yuvarlatılmış köşeler</string> + <string name="settings_rounded_corner_size">Köşe boyutu</string> + <string name="settings_rounded_corner_size_summary">Eğrilik açısının büyüklüğünü ayarlar.</string> + <string name="settings_rounded_corner_summary">Etkinleştirildiğinde, tüm kapak görselleri için bir eğme açısı uygulanır. Değişiklikler yeniden başlatıldığında geçerli olur.</string> + <string name="settings_scan_title">Kütüphaneyi tara</string> + <string name="settings_scrobble_title">Müzik scrobbling özelliğini etkinleştir</string> + <string name="settings_system_language">Sistem dili</string> + <string name="settings_share_title">Müzik paylaşımını etkinleştir</string> + <string name="settings_streaming_cache_size">Yayın önbelleği boyutu</string> + <string name="settings_streaming_cache_storage_title">Yayın önbellek depolaması</string> + <string name="settings_sub_summary_scrobble">Scrobbling özelliğinin çalışabilmesi için sunucunun bu verileri alacak şekilde etkinleştirilmiş olması gerekir.</string> + <string name="settings_summary_skip_min_star_rating">Bir sanatçı radyosu dinlerken, anında karışımda veya tümünü karıştırırken belirli bir kullanıcı puanının altındaki parçalar yok sayılacaktır.</string> + <string name="settings_summary_replay_gain">Replay gain, ses parçalarının ses seviyesini ayarlayarak tutarlı bir dinleme deneyimi sağlayan bir özelliktir. Bu ayar yalnızca parçada gerekli meta veriler varsa etkilidir.</string> + <string name="settings_summary_scrobble">Scrobbling, cihazınızın dinlediğiniz şarkılar hakkında bilgileri müzik sunucusuna göndermesini sağlayan bir özelliktir. Bu bilgiler müzik tercihlerinize göre kişisel öneriler oluşturulmasına yardımcı olur.</string> + <string name="settings_summary_share">Kullanıcının müziği bir bağlantı üzerinden paylaşmasına olanak tanır. Bu işlevin sunucu tarafından desteklenmesi ve etkinleştirilmesi gerekir ve yalnızca tekil parçalar, albümler ve çalma listeleriyle sınırlıdır.</string> + <string name="settings_summary_syncing">Bu kullanıcının çalma sırasının durumunu geri yükler. Buna çalma sırasındaki parçalar, o anda çalan parça ve bu parçadaki konum dahildir. Sunucunun bu özelliği desteklemesi gerekir.</string> + <string name="settings_summary_streaming_cache_size">%1$s \nŞu anda kullanımda: %2$s MiB</string> + <string name="settings_summary_transcoding">Dönüştürme moduna öncelik verilir. “Doğrudan çal” olarak ayarlanırsa dosyanın bit hızı değiştirilmez.</string> + <string name="settings_summary_transcoding_download">Dönüştürülmüş medyayı indir. Etkinleştirilirse indirme uç noktası kullanılmaz, bunun yerine aşağıdaki ayarlar geçerli olur. \n\n “İndirmeler için dönüştürme formatı” “Doğrudan indir” olarak ayarlanırsa dosyanın bit hızı değiştirilmez.</string> + <string name="settings_summary_transcoding_estimate_content_length">Dosya anlık olarak dönüştürüldüğünde, istemci genellikle parçanın süresini göstermez. Bu işlevi destekleyen sunuculardan çalınan parçanın süresini tahmin etmeleri istenebilir, + ancak yanıt süreleri daha uzun olabilir.</string> + <string name="settings_sync_starred_albums_for_offline_use_title">Çevrimdışı kullanım için yıldızlı albümleri senkronize et</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">Etkinleştirildiğinde, yıldızlı parçalar çevrimdışı kullanım için indirilecektir.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Çevrimdışı kullanım için yıldızlı parçaları eşitle</string> + <string name="settings_theme">Tema</string> + <string name="settings_title_data">Veri</string> + <string name="settings_title_general">Genel</string> + <string name="settings_title_rating">Değerlendirme</string> + <string name="settings_title_replay_gain">Replay Gain</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Değerlendirmeye göre parçaları yok say</string> + <string name="settings_title_skip_min_star_rating_dialog">Şu puana sahip şarkılar:</string> + <string name="settings_title_share">Paylaş</string> + <string name="settings_title_syncing">Eşitleme</string> + <string name="settings_title_transcoding">Dönüştürme</string> + <string name="settings_title_transcoding_download">Dönüştürme İndir</string> + <string name="settings_title_ui">Arayüz</string> + <string name="settings_transcoded_download">Dönüştürülmüş indirme</string> + <string name="settings_version_summary" translatable="false">3.1.0</string> + <string name="settings_version_title">Sürüm</string> + <string name="settings_wifi_only_summary">Mobil ağ üzerinden yayın yapmadan önce kullanıcı onayı iste.</string> + <string name="settings_wifi_only_title">Yalnızca Wi-Fi ile yayın uyarısı</string> + <string name="share_bottom_sheet_copy_link">Bağlantıyı kopyala</string> + <string name="share_bottom_sheet_delete">Paylaşımı sil</string> + <string name="share_bottom_sheet_update">Paylaşımı güncelle</string> + <string name="share_subtitle_item">Bitiş tarihi: %1$s</string> + <string name="share_unsupported_error">Paylaşım desteklenmiyor veya etkin değil</string> + <string name="share_update_dialog_hint_description">Açıklama</string> + <string name="share_update_dialog_hint_expiration_date">Bitiş tarihi</string> + <string name="share_update_dialog_negative_button">İptal</string> + <string name="share_update_dialog_positive_button">Kaydet</string> + <string name="share_update_dialog_title">Paylaş</string> + <string name="song_bottom_sheet_add_to_playlist">Çalma listesine ekle</string> + <string name="song_bottom_sheet_add_to_queue">Sıraya ekle</string> + <string name="song_bottom_sheet_download">İndir</string> + <string name="song_bottom_sheet_error_retrieving_album">Albüm alınırken hata oluştu</string> + <string name="song_bottom_sheet_error_retrieving_artist">Sanatçı alınırken hata oluştu</string> + <string name="song_bottom_sheet_go_to_album">Albüme git</string> + <string name="song_bottom_sheet_go_to_artist">Sanatçıya git</string> + <string name="song_bottom_sheet_instant_mix">Anında karışım</string> + <string name="song_bottom_sheet_play_next">Sonra çal</string> + <string name="song_bottom_sheet_rate">Değerlendir</string> + <string name="song_bottom_sheet_remove">Kaldır</string> + <string name="song_bottom_sheet_share">Paylaş</string> + <string name="song_list_page_downloaded">İndirilenler</string> + <string name="song_list_page_most_played">En çok çalınan parçalar</string> + <string name="song_list_page_recently_added">Son eklenen parçalar</string> + <string name="song_list_page_recently_played">Son çalınan parçalar</string> + <string name="song_list_page_starred">Yıldızlı parçalar</string> + <string name="song_list_page_top">%1$s’in en iyi parçaları</string> + <string name="song_list_page_year">%1$d yılı</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">İptal</string> + <string name="starred_sync_dialog_neutral_button">Devam et</string> + <string name="starred_sync_dialog_positive_button">Devam et ve indir</string> + <string name="starred_sync_dialog_summary">Yıldızlı parçaların indirilmesi yüksek miktarda veri gerektirebilir.</string> + <string name="starred_sync_dialog_title">Yıldızlı parçaları eşitle</string> + <string name="starred_album_sync_dialog_summary">Yıldızlı albümleri indirmek yüksek miktarda veri kullanımı gerektirebilir.</string> + <string name="starred_album_sync_dialog_title">Yıldızlı albümleri senkronize et</string> + <string name="streaming_cache_storage_dialog_sub_summary">Değişikliklerin geçerli olması için uygulamayı yeniden başlatın.</string> + <string name="streaming_cache_storage_dialog_summary">Önbelleğe alınmış dosyaların hedefini bir depolamadan diğerine değiştirmek, önceki depolamadaki önbellek dosyalarının silinmesine yol açabilir.</string> + <string name="streaming_cache_storage_dialog_title">Depolama seçeneğini seç</string> + <string name="streaming_cache_storage_external_dialog_positive_button">Harici</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Dahili</string> + <string name="support_url">https://buymeacoffee.com/a.cappiello</string> + <string name="track_info_album">Albüm</string> + <string name="track_info_artist">Sanatçı</string> + <string name="track_info_bit_depth">Bit derinliği</string> + <string name="track_info_bitrate">Bit hızı</string> + <string name="track_info_content_type">İçerik türü</string> + <string name="track_info_dialog_positive_button">Tamam</string> + <string name="track_info_dialog_title">Parça bilgisi</string> + <string name="track_info_disc_number">Disk numarası</string> + <string name="track_info_duration">Süre</string> + <string name="track_info_genre">Tür</string> + <string name="track_info_path">Yol</string> + <string name="track_info_sampling_rate">Örnekleme oranı</string> + <string name="track_info_size">Boyut</string> + <string name="track_info_suffix">Uzantı</string> + <string name="track_info_summary_downloaded_file">Dosya Subsonic API’leri kullanılarak indirildi. Dosyanın dönüştürme ve bit hızı, kaynak dosyadan değişmeden kaldı.</string> + <string name="track_info_summary_full_transcode">Uygulama, sunucudan dosyayı dönüştürmesini ve bit hızını değiştirmesini talep edecektir. Kullanıcının istediği kodek %1$s ve bit hızı %2$s. Seçilen formatta kodek ve bit hızındaki olası değişiklikler + sunucu tarafından yapılır ve bu işlem sunucu tarafından desteklenebilir veya desteklenmeyebilir.</string> + <string name="track_info_summary_original_file"> Uygulama yalnızca sunucunun sağladığı orijinal dosyayı okuyacaktır. + Uygulama, dönüştürülmemiş dosyayı orijinal kaynağın bit hızıyla sunucudan açıkça talep eder.</string> + <string name="track_info_summary_server_prioritized">Çalınacak dosyanın kalitesi sunucunun kararına bırakılır. Uygulama, olası dönüştürmeler için kodek ve bit hızı seçimini zorlamaz.</string> + <string name="track_info_summary_transcoding_bitrate">Uygulama, sunucudan dosyanın bit hızını değiştirmesini talep edecektir. + Kullanıcının istediği bit hızı %1$s, kaynak dosyanın kodeği aynı kalacaktır. Seçilen formatta dosyanın bit hızındaki olası değişiklikler sunucu tarafından yapılır ve bu işlem sunucu tarafından desteklenebilir veya desteklenmeyebilir.</string> + <string name="track_info_summary_transcoding_codec">Uygulama, sunucudan dosyayı dönüştürmesini talep edecektir. + Kullanıcının istediği kodek %1$s, bit hızı ise kaynak dosyayla aynı kalacaktır. Dosyanın seçilen formata olası dönüştürülmesi sunucuya bağlıdır, destekleyebilir ya da desteklemeyebilir.</string> + <string name="track_info_title">Başlık</string> + <string name="track_info_track_number">Parça numarası</string> + <string name="track_info_transcoded_content_type">Dönüştürülmüş içerik türü</string> + <string name="track_info_transcoded_suffix">Dönüştürülmüş uzantı</string> + <string name="track_info_year">Yıl</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">İllüstrasyonlarıyla bu uygulamayı daha güzel hale getirmemize yardımcı olan unDraw’a özel teşekkürler.</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="home_sync_starred_albums_title">Yıldızlı Albümleri Senkronize Et</string> + <string name="widget_label">Tempus Widget</string> + <string name="widget_not_playing">Şu an oynatılmıyor</string> + <string name="widget_placeholder_subtitle">Tempus’yu aç</string> + <string name="widget_time_elapsed_placeholder">0:00</string> + <string name="widget_time_duration_placeholder">0:00</string> + <string name="widget_content_desc_album_art">Albüm kapağı</string> + <string name="widget_content_desc_play_pause">Çal/Duraklat</string> + <string name="widget_content_desc_next">Sonraki parça</string> + <string name="widget_content_desc_prev">Önceki parça</string> + <string name="settings_song_rating">Şarkının yıldız derecelendirmesini göster</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">"Etkinleştirildiğinde yıldızlı albümler çevrimdışı kullanım için indirilecek. "</string> +</resources> diff --git a/app/src/main/res/values-v35/styles.xml b/app/src/main/res/values-v35/styles.xml new file mode 100644 index 0000000..5f5b606 --- /dev/null +++ b/app/src/main/res/values-v35/styles.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <style name="AppTheme" parent="Theme.Material3.Light.NoActionBar"> + <item name="colorPrimary">@color/md_theme_light_primary</item> + <item name="colorOnPrimary">@color/md_theme_light_onPrimary</item> + <item name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item> + <item name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item> + <item name="colorSecondary">@color/md_theme_light_secondary</item> + <item name="colorOnSecondary">@color/md_theme_light_onSecondary</item> + <item name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item> + <item name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item> + <item name="colorTertiary">@color/md_theme_light_tertiary</item> + <item name="colorOnTertiary">@color/md_theme_light_onTertiary</item> + <item name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item> + <item name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item> + <item name="colorError">@color/md_theme_light_error</item> + <item name="colorErrorContainer">@color/md_theme_light_errorContainer</item> + <item name="colorOnError">@color/md_theme_light_onError</item> + <item name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item> + <item name="android:colorBackground">@color/md_theme_light_background</item> + <item name="colorOnBackground">@color/md_theme_light_onBackground</item> + <item name="colorSurface">@color/md_theme_light_surface</item> + <item name="colorOnSurface">@color/md_theme_light_onSurface</item> + <item name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item> + <item name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item> + <item name="colorOutline">@color/md_theme_light_outline</item> + <item name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item> + <item name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item> + <item name="colorPrimaryInverse">@color/md_theme_light_primaryInverse</item> + + <item name="android:windowLightStatusBar">true</item> + <item name="android:statusBarColor">?attr/colorSurface</item> + <item name="android:navigationBarColor">?attr/colorSurface</item> + <item name="android:scrollbars">none</item> + + <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item> + </style> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-zh/arrays.xml b/app/src/main/res/values-zh/arrays.xml new file mode 100644 index 0000000..df659e5 --- /dev/null +++ b/app/src/main/res/values-zh/arrays.xml @@ -0,0 +1,227 @@ +<resources> + <string-array name="theme_list_titles"> + <item>浅色</item> + <item>深色</item> + <item>跟随系统</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>高</item> + <item>中</item> + <item>低</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>高</item> + <item>中</item> + <item>低</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>原始</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>原始</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>原始</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>播放原始</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>播放原始</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>下载原始</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>10秒</item> + <item>5秒</item> + <item>2秒</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>高</item> + <item>中</item> + <item>低</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>禁用</item> + <item>曲目</item> + <item>专辑</item> + <item>自动</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>不转码</item> + <item>服务器设置</item> + <item>Wi-Fi转码设置</item> + <item>移动数据转码设置</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>最小</item> + <item>适中</item> + <item>积极</item> + <item>极端</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml new file mode 100644 index 0000000..dd7eed9 --- /dev/null +++ b/app/src/main/res/values-zh/strings.xml @@ -0,0 +1,403 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">如果遇到问题,请访问 https://dontkillmyapp.com。 省电优化选项可能会影响应用的性能,网站上提供了如何禁用这些选项的详细说明。</string> + <string name="activity_battery_optimizations_summary">请禁用针对媒体锁屏播放的电池优化。</string> + <string name="activity_battery_optimizations_title">电池优化</string> + <string name="activity_info_offline_mode">离线模式</string> + <string name="album_bottom_sheet_add_to_playlist">添加到播放列表</string> + <string name="album_bottom_sheet_add_to_queue">添加到队列</string> + <string name="album_bottom_sheet_download_all">全部下载</string> + <string name="album_bottom_sheet_go_to_artist">查看该艺术家</string> + <string name="album_bottom_sheet_instant_mix">即时混合</string> + <string name="album_bottom_sheet_play_next">下一首播放</string> + <string name="album_bottom_sheet_remove_all">移除所有</string> + <string name="album_bottom_sheet_share">分享</string> + <string name="album_bottom_sheet_shuffle">随机播放</string> + <string name="album_catalogue_title">专辑</string> + <string name="album_catalogue_title_expanded">浏览专辑</string> + <string name="album_error_retrieving_artist">检索艺术家时出错</string> + <string name="album_list_page_downloaded">已下载的专辑</string> + <string name="album_list_page_most_played">最常播放的专辑</string> + <string name="album_list_page_new_releases">新发行</string> + <string name="album_list_page_recently_added">最近添加的专辑</string> + <string name="album_list_page_recently_played">最近播放的专辑</string> + <string name="album_list_page_starred">收藏的专辑</string> + <string name="album_list_page_title">专辑</string> + <string name="album_page_extra_info_button">更多相似</string> + <string name="album_page_play_button">播放</string> + <string name="album_page_shuffle_button">随机播放</string> + <string name="album_page_tracks_count_and_duration">%1$d 首歌曲 • %2$d 分钟</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">正在搜索...</string> + <string name="artist_bottom_sheet_instant_mix">即时混合</string> + <string name="artist_bottom_sheet_shuffle">随机播放</string> + <string name="artist_catalogue_title">艺术家</string> + <string name="artist_catalogue_title_expanded">浏览艺术家</string> + <string name="artist_error_retrieving_radio">检索艺术家的电台时出错</string> + <string name="artist_error_retrieving_tracks">检索艺术家曲目时出错</string> + <string name="artist_list_page_downloaded">已下载的艺术家</string> + <string name="artist_list_page_starred">收藏的艺人</string> + <string name="artist_list_page_title">艺术家</string> + <string name="artist_page_radio_button">电台</string> + <string name="artist_page_shuffle_button">随机播放</string> + <string name="artist_page_switch_layout_button">切换布局</string> + <string name="artist_page_title_album_more_like_this_button">更多相似</string> + <string name="artist_page_title_album_section">专辑</string> + <string name="artist_page_title_biography_more_button">更多</string> + <string name="artist_page_title_biography_section">个人简介</string> + <string name="artist_page_title_most_streamed_song_section">最常播放的歌曲</string> + <string name="artist_page_title_most_streamed_song_see_all_button">查看全部</string> + <string name="battery_optimization_negative_button">忽略</string> + <string name="battery_optimization_neutral_button">不要再问</string> + <string name="battery_optimization_positive_button">禁用</string> + <string name="connection_alert_dialog_negative_button">取消</string> + <string name="connection_alert_dialog_neutral_button">启用流量节省</string> + <string name="connection_alert_dialog_positive_button">确定</string> + <string name="connection_alert_dialog_summary">已限制通过 Wi-Fi 以外的连接访问 Subsonic 服务器。 要阻止此警告对话框再次出现,请在应用程序设置中禁用连接检查。</string> + <string name="connection_alert_dialog_title">Wi-Fi网络未连接</string> + <string name="delete_download_storage_dialog_negative_button">取消</string> + <string name="delete_download_storage_dialog_positive_button">继续</string> + <string name="delete_download_storage_dialog_summary">请注意,继续执行此操作将永久删除从所有服务器下载的所有已保存的项目。</string> + <string name="delete_download_storage_dialog_title">删除已保存的项目</string> + <string name="description_empty_title">没有可用的描述</string> + <string name="download_directory_dialog_negative_button">取消</string> + <string name="download_directory_dialog_positive_button">下载</string> + <string name="download_directory_dialog_summary">该文件夹中的所有曲目将被下载。 子文件夹中的曲目将不会被下载。</string> + <string name="download_directory_dialog_title">下载曲目</string> + <string name="download_info_empty_subtitle">下载歌曲后,您可以在这里找到它。</string> + <string name="download_info_empty_title">还没有下载!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s 个项目</string> + <string name="download_item_single_subtitle_formatter">%1$s 个项目</string> + <string name="download_storage_dialog_sub_summary">要使更改生效,请重新启动应用程序。</string> + <string name="download_storage_dialog_summary">更改已下载文件的目录将会立即删除以前已下载的所有文件。</string> + <string name="download_storage_dialog_title">选择存储选项</string> + <string name="download_storage_external_dialog_positive_button">外部</string> + <string name="download_storage_internal_dialog_negative_button">内部</string> + <string name="download_title_section">下载</string> + <string name="downloaded_bottom_sheet_add_to_queue">添加到队列</string> + <string name="downloaded_bottom_sheet_play_next">下一首播放</string> + <string name="downloaded_bottom_sheet_remove">移除</string> + <string name="downloaded_bottom_sheet_remove_all">移除所有</string> + <string name="downloaded_bottom_sheet_shuffle">随机播放</string> + <string name="empty_string"></string> + <string name="error_required">必需</string> + <string name="error_server_prefix">必须是 http 或 https 前缀</string> + <string name="exo_download_notification_channel_name">下载</string> + <string name="filter_info_selection">选择两个或多个过滤器</string> + <string name="filter_title">筛选</string> + <string name="filter_title_expanded">筛选流派</string> + <string name="genre_catalogue_title">流派目录</string> + <string name="genre_catalogue_title_expanded">浏览流派</string> + <string name="home_subtitle_best_of">您最喜欢的艺术家的热门歌曲</string> + <string name="home_subtitle_made_for_you">从您喜欢的歌曲开始混音</string> + <string name="home_subtitle_new_internet_radio_station">添加新的电台</string> + <string name="home_subtitle_new_podcast_channel">添加新的播客频道</string> + <string name="home_sync_starred_cancel">取消</string> + <string name="home_sync_starred_download">下载</string> + <string name="home_sync_starred_subtitle">下载这些曲目可能需要大量移动数据</string> + <string name="home_sync_starred_title">似乎有一些已收藏的曲目需要同步</string> + <string name="home_title_best_of">最佳</string> + <string name="home_title_discovery">发现</string> + <string name="home_title_discovery_shuffle_all_button">全部随机播放</string> + <string name="home_title_flashback">闪回</string> + <string name="home_title_internet_radio_station">网络广播电台</string> + <string name="home_title_last_played">最近播放</string> + <string name="home_title_last_played_see_all_button">查看全部</string> + <string name="home_title_last_week">上周</string> + <string name="home_title_made_for_you">为您定制</string> + <string name="home_title_most_played">最常播放</string> + <string name="home_title_most_played_see_all_button">查看全部</string> + <string name="home_title_new_releases">新发行</string> + <string name="home_title_newest_podcasts">最新播客</string> + <string name="home_title_pinned_playlists">播放列表</string> + <string name="home_title_podcast_channels">频道</string> + <string name="home_title_podcast_channels_see_all_button">查看全部</string> + <string name="home_title_radio_station">广播电台</string> + <string name="home_title_recently_added">最近添加</string> + <string name="home_title_recently_added_see_all_button">查看全部</string> + <string name="home_title_shares">分享</string> + <string name="home_title_starred_albums">★ 收藏的专辑</string> + <string name="home_title_starred_albums_see_all_button">查看全部</string> + <string name="home_title_starred_artists">★ 收藏的艺术家</string> + <string name="home_title_starred_artists_see_all_button">查看全部</string> + <string name="home_title_starred_tracks">★ 收藏的曲目</string> + <string name="home_title_starred_tracks_see_all_button">查看全部</string> + <string name="home_title_top_songs">你最喜欢的歌曲</string> + <string name="label_dot_separator" translatable="false">•</string> + <string name="label_placeholder" translatable="false">--</string> + <string name="library_title_album">专辑</string> + <string name="library_title_album_see_all_button">查看全部</string> + <string name="library_title_artist">艺术家</string> + <string name="library_title_artist_see_all_button">查看全部</string> + <string name="library_title_genre">流派</string> + <string name="library_title_genre_see_all_button">查看全部</string> + <string name="library_title_music_folder">音乐文件夹</string> + <string name="library_title_playlist">播放列表</string> + <string name="library_title_playlist_see_all_button">查看全部</string> + <string name="login_empty">尚未添加服务器</string> + <string name="login_title">Subsonic 服务器</string> + <string name="login_title_expanded">Subsonic 服务器</string> + <string name="media_route_menu_title">投送</string> + <string name="menu_add_button">添加</string> + <string name="menu_add_to_playlist_button">添加到播放列表</string> + <string name="menu_download_all_button">全部下载</string> + <string name="menu_download_label">下载</string> + <string name="menu_filter_all">全部</string> + <string name="menu_filter_download">已下载</string> + <string name="menu_group_by_album">专辑</string> + <string name="menu_group_by_artist">艺术家</string> + <string name="menu_group_by_genre">流派</string> + <string name="menu_group_by_track">曲目</string> + <string name="menu_group_by_year">年份</string> + <string name="menu_home_label">首页</string> + <string name="menu_last_year_name">去年</string> + <string name="menu_library_label">曲库</string> + <string name="menu_search_button">搜索</string> + <string name="menu_settings_button">设置</string> + <string name="menu_sort_artist">艺术家</string> + <string name="menu_sort_name">姓名</string> + <string name="menu_sort_random">随机</string> + <string name="menu_sort_recently_added">最近添加</string> + <string name="menu_sort_year">年份</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">清空队列</string> + <string name="player_server_priority">服务器优先级</string> + <string name="playlist_catalogue_title">播放列表目录</string> + <string name="playlist_catalogue_title_expanded">浏览播放列表</string> + <string name="playlist_chooser_dialog_empty">尚未创建播放列表</string> + <string name="playlist_chooser_dialog_negative_button">取消</string> + <string name="playlist_chooser_dialog_neutral_button">新建</string> + <string name="playlist_chooser_dialog_title">添加到播放列表</string> + <string name="playlist_chooser_dialog_toast_add_success">将歌曲添加到播放列表</string> + <string name="playlist_chooser_dialog_toast_add_failure">未能将歌曲添加到播放列表</string> + <string name="playlist_counted_tracks">%1$d 首曲目 • %2$s</string> + <string name="playlist_duration">持续时间 • %1$s</string> + <string name="playlist_editor_dialog_hint_name">播放列表名称</string> + <string name="playlist_editor_dialog_negative_button">取消</string> + <string name="playlist_editor_dialog_neutral_button">删除</string> + <string name="playlist_editor_dialog_positive_button">保存</string> + <string name="playlist_editor_dialog_title">编辑播放列表</string> + <string name="playlist_page_play_button">播放</string> + <string name="playlist_page_shuffle_button">随机播放</string> + <string name="playlist_song_count">播放列表 • %1$d 首歌曲</string> + <string name="podcast_bottom_sheet_add_to_queue">添加到队列</string> + <string name="podcast_bottom_sheet_delete">删除</string> + <string name="podcast_bottom_sheet_download">下载</string> + <string name="podcast_bottom_sheet_go_to_channel">前往该频道</string> + <string name="podcast_bottom_sheet_play_next">下一首播放</string> + <string name="podcast_bottom_sheet_remove">移除</string> + <string name="podcast_channel_catalogue_title">频道</string> + <string name="podcast_channel_catalogue_title_expanded">浏览频道</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">RSS 网址</string> + <string name="podcast_channel_editor_dialog_title">播客频道</string> + <string name="podcast_channel_page_title_description_section">描述</string> + <string name="podcast_channel_page_title_episode_section">剧集</string> + <string name="podcast_channel_page_title_no_episode_available">没有可用的剧集</string> + <string name="podcast_episode_download_request_snackbar">您的请求已发送至服务器</string> + <string name="podcast_info_empty_button">单击以隐藏该部分\n重启应用后生效</string> + <string name="podcast_info_empty_subtitle">添加频道后,您将在此处找到它</string> + <string name="podcast_info_empty_title">未找到播客!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">电台主页 URL</string> + <string name="radio_editor_dialog_hint_name">电台名称</string> + <string name="radio_editor_dialog_hint_stream_url">广播流 URL</string> + <string name="radio_editor_dialog_negative_button">取消</string> + <string name="radio_editor_dialog_neutral_button">删除</string> + <string name="radio_editor_dialog_positive_button">保存</string> + <string name="radio_editor_dialog_title">网络广播电台</string> + <string name="radio_station_info_empty_button">单击以隐藏该部分\n重启应用后生效</string> + <string name="radio_station_info_empty_subtitle">添加广播电台后,您可以在此处找到它</string> + <string name="radio_station_info_empty_title">没有找到电台!</string> + <string name="rating_dialog_negative_button">取消</string> + <string name="rating_dialog_positive_button">保存</string> + <string name="rating_dialog_title">评分</string> + <string name="search_hint">搜索标题、艺术家或专辑</string> + <string name="search_info_minimum_characters">输入至少三个字符</string> + <string name="search_title_album">专辑</string> + <string name="search_title_artist">艺术家</string> + <string name="search_title_song">歌曲</string> + <string name="server_signup_dialog_action_low_security">低安全性</string> + <string name="server_signup_dialog_hint_name">服务器名称</string> + <string name="server_signup_dialog_hint_password">密码</string> + <string name="server_signup_dialog_hint_url">服务器地址</string> + <string name="server_signup_dialog_hint_username">用户名</string> + <string name="server_signup_dialog_negative_button">取消</string> + <string name="server_signup_dialog_neutral_button">删除</string> + <string name="server_signup_dialog_positive_button">保存</string> + <string name="server_signup_dialog_title">添加服务器</string> + <string name="server_unreachable_dialog_negative_button">取消</string> + <string name="server_unreachable_dialog_neutral_button">前往登录</string> + <string name="server_unreachable_dialog_positive_button">仍然继续</string> + <string name="server_unreachable_dialog_summary">请求的服务器不可用。 如果您选择继续,此对话框在接下来的一个小时内将不会再次出现。</string> + <string name="server_unreachable_dialog_title">服务器无法访问</string> + <string name="settings_about_summary">Tempus 是 Subsonic 的开源轻量级音乐客户端,专为 Android 设计和构建。</string> + <string name="settings_about_title">关于</string> + <string name="settings_always_on_display">保持屏幕常亮</string> + <string name="settings_audio_transcode_download_format">转码格式</string> + <string name="settings_audio_transcode_download_priority_summary">如果启用,Tempus 将不会强制使用下面的转码设置下载曲目。</string> + <string name="settings_audio_transcode_download_priority_title">优先考虑服务器上用于流式传输的设置</string> + <string name="settings_audio_transcode_download_summary">如果启用,Tempus 将下载转码后的曲目。</string> + <string name="settings_audio_transcode_download_title">下载转码后的曲目</string> + <string name="settings_audio_transcode_estimate_content_length_summary">如果启用,将发送请求到服务器以查询曲目的估计持续时间。</string> + <string name="settings_audio_transcode_estimate_content_length_title">估计内容长度</string> + <string name="settings_audio_transcode_format_download">用于下载的转码格式</string> + <string name="settings_audio_transcode_format_mobile">移动数据下的转码格式</string> + <string name="settings_audio_transcode_format_wifi">Wi-Fi 下的转码格式</string> + <string name="settings_audio_transcode_priority_summary">如果启用,Tempus 将不会强制使用下面的转码设置流式传输曲目。</string> + <string name="settings_audio_transcode_priority_title">优先考虑服务器转码设置</string> + <string name="settings_audio_transcode_priority_toast">曲目转码设置优先级设置为服务器</string> + <string name="settings_buffering_strategy">缓存策略</string> + <string name="settings_buffering_strategy_summary">为了使更改生效,您必须手动重新启动应用程序。</string> + <string name="settings_continuous_play_summary">允许在播放列表结束后,播放相似的曲目。</string> + <string name="settings_continuous_play_title">连续播放</string> + <string name="settings_covers_cache">图片缓存大小</string> + <string name="settings_data_saving_mode_summary">为了减少数据消耗,请避免下载封面。</string> + <string name="settings_data_saving_mode_title">限制移动数据使用</string> + <string name="settings_delete_download_storage_summary">继续当前操作将导致所有已保存的项目被永久删除。</string> + <string name="settings_delete_download_storage_title">删除已保存的项目</string> + <string name="settings_download_storage_title">下载存储</string> + <string name="settings_system_equalizer_summary">调整音频设置</string> + <string name="settings_system_equalizer_title">系统均衡器</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">关注开发进展</string> + <string name="settings_github_title">Github</string> + <string name="settings_image_size">设置图像分辨率</string> + <string name="settings_language">语言</string> + <string name="settings_logout_title">注销登录</string> + <string name="settings_max_bitrate_download">用于下载的比特率</string> + <string name="settings_max_bitrate_mobile">移动数据下的比特率</string> + <string name="settings_max_bitrate_wifi">Wi-Fi 下的比特率</string> + <string name="settings_media_cache">媒体文件缓存大小</string> + <string name="settings_music_directory">显示音乐目录</string> + <string name="settings_music_directory_summary">如果启用,则显示音乐目录部分。 请注意,要使文件夹导航正常工作,服务器必须支持此功能。</string> + <string name="settings_podcast">显示播客</string> + <string name="settings_podcast_summary">如果启用,则显示播客部分。</string> + <string name="settings_audio_quality">显示音频质量</string> + <string name="settings_audio_quality_summary">显示曲目的比特率和音频格式。</string> + <string name="settings_item_rating">显示评分</string> + <string name="settings_item_rating_summary">如果启用,则显示项目的评分和收藏状态。</string> + <string name="settings_queue_syncing_countdown">同步定时器</string> + <string name="settings_queue_syncing_summary">如果启用,将允许当前用户保存其播放队列,并能够在打开应用程序时加载保存状态。</string> + <string name="settings_queue_syncing_title">同步当前用户的播放队列</string> + <string name="settings_radio">显示广播</string> + <string name="settings_radio_summary">如果启用,则显示电台部分。</string> + <string name="settings_replay_gain">设置播放增益模式</string> + <string name="settings_rounded_corner">圆角</string> + <string name="settings_rounded_corner_size">圆角大小</string> + <string name="settings_rounded_corner_size_summary">设置圆角的大小。</string> + <string name="settings_rounded_corner_summary">如果启用,则为所有渲染的封面设置圆角。 更改将在应用重新启动后生效。</string> + <string name="settings_scan_title">扫描曲库</string> + <string name="settings_scrobble_title">启用音乐记录</string> + <string name="settings_share_title">启用音乐共享</string> + <string name="settings_streaming_cache_size">播放缓存大小</string> + <string name="settings_sub_summary_scrobble">请注意,音乐记录同时也依赖于服务器是否能够接收这些数据。</string> + <string name="settings_summary_skip_min_star_rating">收听电台,即时混合和随机播放时,低于特定评分的曲目将会被忽略。</string> + <string name="settings_summary_replay_gain">播放增益(Replay gain)允许您通过调整音轨的音量,以获得始终如一的聆听体验。 仅当曲目标签包含必要的元数据时,此设置才有效。</string> + <string name="settings_summary_scrobble">音乐记录(Scrobbling)允许您的设备将您收听的歌曲的相关信息发送到音乐服务器。 这些信息有助于基于您的音乐偏好生成个性化推荐。</string> + <string name="settings_summary_share">允许用户通过链接共享音乐。 该功能需要服务器端支持并启用,并且仅限于单个曲目、专辑和队列。</string> + <string name="settings_summary_syncing">返回当前用户的播放队列状态。 这包括播放队列中的曲目、正在播放的曲目以及曲目播放进度。需要服务器支持此功能。</string> + <string name="settings_summary_streaming_cache_size">%1$s \n已使用: %2$s MiB</string> + <string name="settings_summary_transcoding">转码模式优先级设置。 如果设置为“播放原始”,文件的比特率将不会更改。</string> + <string name="settings_summary_transcoding_download">下载转码后的媒体。 如果启用,将不会下载原始数据,而是使用以下设置。\n如果“用于下载的转码格式”设置为“下载原始”,则文件的比特率不会更改。</string> + <string name="settings_summary_transcoding_estimate_content_length">当文件即时转码时,客户端通常不会显示曲目长度。 可以向支持该功能的服务器发送请求,估计正在播放的曲目的持续时间,但可能响应变慢。</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">如果启用,将下载已收藏的曲目以供离线使用。</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">同步已收藏的曲目以供离线使用</string> + <string name="settings_theme">主题</string> + <string name="settings_title_data">数据</string> + <string name="settings_title_general">通用</string> + <string name="settings_title_rating">评分</string> + <string name="settings_title_replay_gain">播放增益</string> + <string name="settings_title_scrobble">音乐记录</string> + <string name="settings_title_skip_min_star_rating">根据评分忽略歌曲</string> + <string name="settings_title_share">分享</string> + <string name="settings_title_syncing">同步</string> + <string name="settings_title_transcoding">转码</string> + <string name="settings_title_transcoding_download">转码下载</string> + <string name="settings_title_ui">界面</string> + <string name="settings_transcoded_download">转码下载</string> + <string name="settings_version_summary" translatable="false">3.1.0</string> + <string name="settings_version_title">版本</string> + <string name="settings_wifi_only_summary">在通过移动网络进行流式传输之前请求用户确认。</string> + <string name="settings_wifi_only_title">提示仅通过 Wi-Fi 进行流式传输</string> + <string name="share_bottom_sheet_copy_link">复制链接</string> + <string name="share_bottom_sheet_delete">删除分享</string> + <string name="share_bottom_sheet_update">更新分享</string> + <string name="share_subtitle_item">到期日期:%1$s</string> + <string name="share_unsupported_error">不支持分享或未启用</string> + <string name="share_update_dialog_hint_description">描述</string> + <string name="share_update_dialog_hint_expiration_date">截止日期</string> + <string name="share_update_dialog_negative_button">取消</string> + <string name="share_update_dialog_positive_button">保存</string> + <string name="share_update_dialog_title">分享</string> + <string name="song_bottom_sheet_add_to_playlist">添加到播放列表</string> + <string name="song_bottom_sheet_add_to_queue">添加到队列</string> + <string name="song_bottom_sheet_download">下载</string> + <string name="song_bottom_sheet_error_retrieving_album">检索相册时出错</string> + <string name="song_bottom_sheet_error_retrieving_artist">检索艺术家时出错</string> + <string name="song_bottom_sheet_go_to_album">前往该专辑</string> + <string name="song_bottom_sheet_go_to_artist">前往该艺术家</string> + <string name="song_bottom_sheet_instant_mix">即时混合</string> + <string name="song_bottom_sheet_play_next">下一首播放</string> + <string name="song_bottom_sheet_rate">评分</string> + <string name="song_bottom_sheet_remove">移除</string> + <string name="song_bottom_sheet_share">分享</string> + <string name="song_list_page_downloaded">已下载</string> + <string name="song_list_page_most_played">最常播放的曲目</string> + <string name="song_list_page_recently_added">最近添加的曲目</string> + <string name="song_list_page_recently_played">最近播放的曲目</string> + <string name="song_list_page_starred">已收藏的曲目</string> + <string name="song_list_page_top">%1$s 的热门曲目</string> + <string name="song_list_page_year">年份 %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">取消</string> + <string name="starred_sync_dialog_neutral_button">继续</string> + <string name="starred_sync_dialog_positive_button">继续并下载</string> + <string name="starred_sync_dialog_summary">下载收藏曲目可能需要大量数据。</string> + <string name="starred_sync_dialog_title">同步已收藏的曲目</string> + <string name="track_info_album">专辑</string> + <string name="track_info_artist">艺术家</string> + <string name="track_info_bitrate">比特率</string> + <string name="track_info_content_type">内容类型</string> + <string name="track_info_dialog_positive_button">确定</string> + <string name="track_info_dialog_title">曲目信息</string> + <string name="track_info_disc_number">碟片编号</string> + <string name="track_info_duration">持续时间</string> + <string name="track_info_genre">流派</string> + <string name="track_info_path">路径</string> + <string name="track_info_size">大小</string> + <string name="track_info_suffix">后缀</string> + <string name="track_info_summary_downloaded_file">该文件已使用 Subsonic API 下载。 文件的编码和比特率与源文件一致。</string> + <string name="track_info_summary_full_transcode">本应用将请求服务器对文件进行转码并修改其比特率。 用户请求的编解码器是%1$s,比特率为%2$s。 对所选格式的文件的编码和比特率的任何潜在更改都将由服务器处理,服务器可能支持也可能不支持该操作。</string> + <string name="track_info_summary_original_file">本应用只会读取服务器提供的原始文件。 本应用将明确向服务器请求具有原始源比特率的未转码文件。</string> + <string name="track_info_summary_server_prioritized">要播放的文件质量取决于服务器设置。 本应用不会强制选择任何用于潜在转码的编码和比特率。</string> + <string name="track_info_summary_transcoding_bitrate">本应用将请求服务器修改文件的比特率。 用户请求的比特率为%1$s,而源文件的编码将保持不变。 对所选格式的文件比特率的任何更改都将由服务器完成,服务器可能支持也可能不支持该操作。</string> + <string name="track_info_summary_transcoding_codec">本应用将请求服务器对文件进行转码。 用户请求的编解码器是%1$s,而比特率将与源文件相同。 将文件转码为所选格式的可能性取决于服务器,因为它可能支持也可能不支持该操作。</string> + <string name="track_info_title">标题</string> + <string name="track_info_track_number">曲目编号</string> + <string name="track_info_transcoded_content_type">转码内容类型</string> + <string name="track_info_transcoded_suffix">转码后缀</string> + <string name="track_info_year">年份</string> + <string name="streaming_cache_storage_external_dialog_positive_button">外部</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">内部</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">特别感谢 unDraw,没有它提供的插图,我们的应用不可能会如此精美。</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="album_page_release_date_label">发布于 %1$s</string> + <string name="disc_titlefull">第 %1$s 张光盘 - %2$s</string> + <string name="disc_titleless">第 %1$s 张光盘</string> + <string name="download_shuffle_all_subtitle">随机播放</string> + <string name="github_update_dialog_negative_button">稍后提醒</string> + <string name="github_update_dialog_positive_button">现在下载</string> + <string name="github_update_dialog_title">有可用更新</string> + <string name="home_rearrangement_dialog_negative_button">取消</string> + <string name="home_rearrangement_dialog_neutral_button">重置</string> + <string name="home_rearrangement_dialog_positive_button">保存</string> + <string name="home_title_last_month">上个月</string> + <string name="home_title_last_year">去年</string> + <string name="menu_last_week_name">上周</string> + <string name="menu_last_month_name">上个月</string> + <string name="menu_pin_button">添加到主屏幕</string> + <string name="menu_unpin_button">从主屏幕移除</string> + <string name="playlist_editor_dialog_action_delete_toast">长按删除</string> + <string name="server_signup_dialog_action_delete_toast">长按删除</string> + <string name="server_signup_dialog_hint_local_address">本地 URL</string> +</resources> diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000..b5713e0 --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,257 @@ +<resources> + <string-array name="theme_list_titles"> + <item>Light</item> + <item>Dark</item> + <item>System default</item> + </string-array> + <string-array name="theme_list_values"> + <item>light</item> + <item>dark</item> + <item>default</item> + </string-array> + + <string-array name="pref_cache_size_titles"> + <item>High</item> + <item>Medium</item> + <item>Low</item> + </string-array> + <string-array name="pref_cache_size_values"> + <item>500</item> + <item>250</item> + <item>125</item> + </string-array> + + <string-array name="pref_image_size_titles"> + <item>High</item> + <item>Medium</item> + <item>Low</item> + </string-array> + <string-array name="pref_image_size_values"> + <item>-1</item> + <item>500</item> + <item>300</item> + </string-array> + + <string-array name="streaming_cache_size_titles"> + <item>Disabled</item> + <item>128 MiB</item> + <item>256 MiB</item> + <item>512 MiB</item> + <item>1024 MiB</item> + </string-array> + <string-array name="streaming_cache_size_values"> + <item>0</item> + <item>128</item> + <item>256</item> + <item>512</item> + <item>1024</item> + </string-array> + + <string-array name="max_bitrate_wifi_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_wifi_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_mobile_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_mobile_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="max_bitrate_download_list_titles"> + <item>Original</item> + <item>32 kbps</item> + <item>48 kbps</item> + <item>64 kbps</item> + <item>80 kbps</item> + <item>96 kbps</item> + <item>112 kbps</item> + <item>128 kbps</item> + <item>160 kbps</item> + <item>192 kbps</item> + <item>256 kbps</item> + <item>320 kbps</item> + </string-array> + <string-array name="max_bitrate_download_list_values"> + <item>0</item> + <item>32</item> + <item>48</item> + <item>64</item> + <item>80</item> + <item>96</item> + <item>112</item> + <item>128</item> + <item>160</item> + <item>192</item> + <item>256</item> + <item>320</item> + </string-array> + + <string-array name="audio_transcode_format_wifi_list_titles"> + <item>Direct play</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_wifi_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_mobile_list_titles"> + <item>Direct play</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_mobile_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="audio_transcode_format_download_list_titles"> + <item>Direct download</item> + <item>Opus</item> + <item>AAC</item> + <item>Mp3</item> + <item>Flac</item> + </string-array> + <string-array name="audio_transcode_format_download_list_values"> + <item>raw</item> + <item>opus</item> + <item>aac</item> + <item>mp3</item> + <item>flac</item> + </string-array> + + <string-array name="queue_syncing_countdown_titles"> + <item>Ten seconds</item> + <item>Five seconds</item> + <item>Two seconds</item> + </string-array> + <string-array name="queue_syncing_countdown_values"> + <item>10</item> + <item>5</item> + <item>2</item> + </string-array> + + <string-array name="rounded_corner_size_titles"> + <item>High</item> + <item>Medium</item> + <item>Low</item> + </string-array> + <string-array name="rounded_corner_size_values"> + <item>18</item> + <item>12</item> + <item>6</item> + </string-array> + + <string-array name="replay_gain_titles"> + <item>Disabled</item> + <item>Track</item> + <item>Album</item> + <item>Auto</item> + </string-array> + <string-array name="replay_gain_values"> + <item>disabled</item> + <item>track</item> + <item>album</item> + <item>auto</item> + </string-array> + + <string-array name="transcoded_download_option_list_titles"> + <item>Do not transcode</item> + <item>Server settings</item> + <item>Wi-Fi Transcode format</item> + <item>Mobile Transcode format</item> + </string-array> + <string-array name="transcoded_download_option_list_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="buffering_strategy_titles"> + <item>Minimum</item> + <item>Moderate</item> + <item>Aggressive</item> + <item>Extreme</item> + </string-array> + <string-array name="buffering_strategy_values"> + <item>.1</item> + <item>1</item> + <item>4</item> + <item>8</item> + </string-array> + + <string-array name="skip_min_star_rating_titles"> + <item>0 star minimum</item> + <item>1 star minimum</item> + <item>2 stars minimum</item> + <item>3 stars minimum</item> + <item>4 stars minimum</item> + </string-array> + <string-array name="skip_min_star_rating_values"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3429de0 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="md_theme_light_primary">#6750A4</color> + <color name="md_theme_light_onPrimary">#FFFFFF</color> + <color name="md_theme_light_primaryContainer">#EADDFF</color> + <color name="md_theme_light_onPrimaryContainer">#21005D</color> + <color name="md_theme_light_secondary">#625B71</color> + <color name="md_theme_light_onSecondary">#FFFFFF</color> + <color name="md_theme_light_secondaryContainer">#E8DEF8</color> + <color name="md_theme_light_onSecondaryContainer">#1D192B</color> + <color name="md_theme_light_tertiary">#7D5260</color> + <color name="md_theme_light_onTertiary">#FFFFFF</color> + <color name="md_theme_light_tertiaryContainer">#FFD8E4</color> + <color name="md_theme_light_onTertiaryContainer">#31111D</color> + <color name="md_theme_light_error">#B3261E</color> + <color name="md_theme_light_errorContainer">#F9DEDC</color> + <color name="md_theme_light_onError">#FFFFFF</color> + <color name="md_theme_light_onErrorContainer">#410E0B</color> + <color name="md_theme_light_background">#FFFBFE</color> + <color name="md_theme_light_onBackground">#1C1B1F</color> + <color name="md_theme_light_surface">#FFFBFE</color> + <color name="md_theme_light_onSurface">#1C1B1F</color> + <color name="md_theme_light_surfaceVariant">#E7E0EC</color> + <color name="md_theme_light_onSurfaceVariant">#49454F</color> + <color name="md_theme_light_outline">#79747E</color> + <color name="md_theme_light_inverseOnSurface">#F4EFF4</color> + <color name="md_theme_light_inverseSurface">#313033</color> + <color name="md_theme_light_primaryInverse">#D0BCFF</color> + + <color name="md_theme_dark_primary">#D0BCFF</color> + <color name="md_theme_dark_onPrimary">#381E72</color> + <color name="md_theme_dark_primaryContainer">#4F378B</color> + <color name="md_theme_dark_onPrimaryContainer">#EADDFF</color> + <color name="md_theme_dark_secondary">#CCC2DC</color> + <color name="md_theme_dark_onSecondary">#332D41</color> + <color name="md_theme_dark_secondaryContainer">#4A4458</color> + <color name="md_theme_dark_onSecondaryContainer">#E8DEF8</color> + <color name="md_theme_dark_tertiary">#EFB8C8</color> + <color name="md_theme_dark_onTertiary">#492532</color> + <color name="md_theme_dark_tertiaryContainer">#633B48</color> + <color name="md_theme_dark_onTertiaryContainer">#FFD8E4</color> + <color name="md_theme_dark_error">#F2B8B5</color> + <color name="md_theme_dark_errorContainer">#8C1D18</color> + <color name="md_theme_dark_onError">#601410</color> + <color name="md_theme_dark_onErrorContainer">#F9DEDC</color> + <color name="md_theme_dark_background">#1C1B1F</color> + <color name="md_theme_dark_onBackground">#E6E1E5</color> + <color name="md_theme_dark_surface">#1C1B1F</color> + <color name="md_theme_dark_onSurface">#E6E1E5</color> + <color name="md_theme_dark_surfaceVariant">#49454F</color> + <color name="md_theme_dark_onSurfaceVariant">#CAC4D0</color> + <color name="md_theme_dark_outline">#938F99</color> + <color name="md_theme_dark_inverseOnSurface">#1C1B1F</color> + <color name="md_theme_dark_inverseSurface">#E6E1E5</color> + <color name="md_theme_dark_primaryInverse">#6750A4</color> + + <color name="gradientTitleColor">#FFFFFF</color> + <color name="gradientSubtitleColor">#BFBFBF</color> + <color name="titleTextColor">#252525</color> + <color name="subtitleTextColor">#646464</color> + <color name="dividerColor">#e0e0e0</color> + <color name="white">#FFFFFF</color> + + <color name="lyricsTextColor">#252525</color> + <color name="shadowsLyricsTextColor">#B4B4B4</color> + + <color name="searchPlaceholderColor">#303030</color> + <color name="searchColor">#252525</color> + + <!-- <color name="iconLauncher">https://icon.kitchen/i/H4sIAAAAAAAAAzWQu27DMAxF%2F4VdPbhBsmTt0LVAuxVFIUuUIoAWDT36gJF%2Fz5WCcJCow8uXdvox0rjQeScfXiRuJtf%2BKIyLHHvTpNJE0WoCEE7le5GW6TrREj7%2BNwYN2bjIqevA%2BK%2B2DLxTfbi0ajHR3pNeH2oorIrmZwiejmaevUeFgQ4dzcOATAqCKscT8jFlF%2FS4H4a4D2%2FGuZjCaKobnQ%2BniXIMFzTp7qK16nr3hf2gY5b3ixkb2JgtWoCt6pr0D%2FlEW5c1ur69Fpy%2FvNDX9QZCITMSMwEAAA%3D%3D</color> --> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/colors_widget.xml b/app/src/main/res/values/colors_widget.xml new file mode 100644 index 0000000..71a3413 --- /dev/null +++ b/app/src/main/res/values/colors_widget.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Light theme: bright card with dark content --> + <color name="widget_bg">#CCFFFFFF</color> + <color name="widget_title">#DE000000</color> + <color name="widget_subtitle">#99000000</color> + <color name="widget_icon_tint">#DE000000</color> + <color name="widget_icon_tint_active">#FF6750A4</color> +</resources> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..4ea5611 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,11 @@ +<resources> + <dimen name="appbar_header_height">296dp</dimen> + <dimen name="activity_margin_content">24dp</dimen> + <dimen name="bottom_sheet_behavior_peek_height">136dp</dimen> + <dimen name="bottom_sheet_peek_height">56dp</dimen> + <dimen name="now_playing_bottom_peek_height">64dp</dimen> + <dimen name="global_padding_bottom">164dp</dimen> + <dimen name="radius">2dp</dimen> + <dimen name="dots_height">2dp</dimen> + <dimen name="downloaded_item_padding">12dp</dimen> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..dacc1d2 --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="ic_launcher_background">#626A75</color> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml new file mode 100644 index 0000000..c29aa81 --- /dev/null +++ b/app/src/main/res/values/ids.xml @@ -0,0 +1,3 @@ +<resources> + <item name="tag_link_original_color" type="id" /> +</resources> diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml new file mode 100644 index 0000000..e1a1ac1 --- /dev/null +++ b/app/src/main/res/values/integers.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <integer name="widget_medium_min_height_dp">100</integer> + <integer name="widget_large_min_height_dp">160</integer> + <integer name="widget_expanded_min_height_dp">220</integer> +</resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..25dcec9 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,536 @@ +<resources> + <string name="activity_battery_optimizations_conclusion">If in trouble visit https://dontkillmyapp.com. It provides detailed instructions on how to disable any power-saving features that may affect app\'s performance.</string> + <string name="activity_battery_optimizations_summary">Please disable battery optimizations for media playback while the screen is off.</string> + <string name="activity_battery_optimizations_title">Battery Optimizations</string> + <string name="activity_info_offline_mode">Offline mode</string> + <string name="album_bottom_sheet_add_to_playlist">Add to playlist</string> + <string name="album_bottom_sheet_add_to_queue">Add to queue</string> + <string name="album_bottom_sheet_download_all">Download all</string> + <string name="album_bottom_sheet_go_to_artist">Go to artist</string> + <string name="album_bottom_sheet_instant_mix">Instant mix</string> + <string name="album_bottom_sheet_play_next">Play next</string> + <string name="album_bottom_sheet_remove_all">Remove all</string> + <string name="album_bottom_sheet_share">Share</string> + <string name="album_bottom_sheet_shuffle">Shuffle</string> + <string name="album_catalogue_title">Albums</string> + <string name="album_catalogue_title_expanded">Browse Albums</string> + <string name="album_error_retrieving_artist">Error retrieving artist</string> + <string name="album_list_page_downloaded">Downloaded albums</string> + <string name="album_list_page_most_played">Most played albums</string> + <string name="album_list_page_new_releases">New releases</string> + <string name="album_list_page_recently_added">Recently added albums</string> + <string name="album_list_page_recently_played">Recently played albums</string> + <string name="album_list_page_starred">Starred albums</string> + <string name="album_list_page_title">Albums</string> + <string name="album_page_extra_info_button">More like this</string> + <string name="album_page_play_button">Play</string> + <string name="album_page_release_date_label">Released on %1$s</string> + <string name="album_page_release_dates_label">Released on %1$s, originally %2$s</string> + <string name="album_page_shuffle_button">Shuffle</string> + <string name="album_page_tracks_count_and_duration">%1$d songs • %2$d minutes</string> + <string name="app_name">Tempus</string> + <string name="artist_adapter_radio_station_starting">Searching…</string> + <string name="artist_bottom_sheet_instant_mix">Instant mix</string> + <string name="artist_bottom_sheet_shuffle">Shuffle</string> + <string name="artist_catalogue_title">Artists</string> + <string name="artist_catalogue_title_expanded">Browse Artists</string> + <string name="artist_error_retrieving_radio">Error retrieving artist\'s radio</string> + <string name="artist_error_retrieving_tracks">Error retrieving artist\'s tracks</string> + <string name="artist_list_page_downloaded">Downloaded artists</string> + <string name="artist_list_page_starred">Starred artists</string> + <string name="artist_list_page_title">Artists</string> + <string name="artist_page_radio_button">Radio</string> + <string name="artist_page_shuffle_button">Shuffle</string> + <string name="artist_page_switch_layout_button">Switch layout</string> + <string name="artist_page_title_album_more_like_this_button">More like this</string> + <string name="artist_page_title_album_section">Albums</string> + <string name="artist_page_title_biography_more_button">More</string> + <string name="artist_page_title_biography_section">Biography</string> + <string name="artist_page_title_most_streamed_song_section">Most Streamed Songs</string> + <string name="artist_page_title_most_streamed_song_see_all_button">See all</string> + <string name="battery_optimization_negative_button">Ignore</string> + <string name="battery_optimization_neutral_button">Don\'t ask again</string> + <string name="battery_optimization_positive_button">Disable</string> + <string name="connection_alert_dialog_negative_button">Cancel</string> + <string name="connection_alert_dialog_neutral_button">Enable data saver</string> + <string name="connection_alert_dialog_positive_button">OK</string> + <string name="connection_alert_dialog_summary">Access to the Subsonic server on connections other than Wi-Fi has been restricted. To prevent this alert dialog from reappearing, disable the connection check in the app settings.</string> + <string name="connection_alert_dialog_title">Wi-Fi not connected</string> + <string name="content_description_shuffle_button">Shuffle</string> + <string name="delete_download_storage_dialog_negative_button">Cancel</string> + <string name="delete_download_storage_dialog_positive_button">Continue</string> + <string name="delete_download_storage_dialog_summary">Please be aware that continuing with this action will result in the permanent deletion of all saved items downloaded from all servers.</string> + <string name="delete_download_storage_dialog_title">Delete saved items</string> + <string name="description_empty_title">No description available</string> + <string name="disc_titlefull">Disc %1$s - %2$s</string> + <string name="disc_titleless">Disc %1$s</string> + <string name="download_directory_dialog_negative_button">Cancel</string> + <string name="download_directory_dialog_positive_button">Download</string> + <string name="download_directory_dialog_summary">All tracks in this folder will be downloaded. Tracks present in subfolders will not be downloaded.</string> + <string name="download_directory_dialog_title">Download the tracks</string> + <string name="download_directory_set">Set where music is downloaded</string> + <string name="download_info_empty_subtitle">Once you download a song, you\'ll find it here</string> + <string name="download_info_empty_title">No downloads yet!</string> + <string name="download_item_multiple_subtitle_formatter">%1$s • %2$s items</string> + <string name="download_item_single_subtitle_formatter">%1$s items</string> + <string name="download_shuffle_all_subtitle">Shuffle all</string> + <string name="download_storage_dialog_sub_summary">For the changes to take effect, restart the app.</string> + <string name="download_storage_dialog_summary">Changing the destination of downloaded files from one storage to another will result in the immediate deletion of any previously downloaded files in the other storage.</string> + <string name="download_storage_dialog_title">Select storage option</string> + <string name="download_storage_external_dialog_positive_button">External</string> + <string name="download_storage_internal_dialog_negative_button">Internal</string> + <string name="download_storage_directory_dialog_neutral_button">Directory</string> + <string name="download_title_section">Downloads</string> + <string name="download_refresh_no_directory">Set a download folder to refresh your downloads.</string> + <string name="download_refresh_no_changes">No missing downloads found.</string> + <plurals name="download_refresh_removed"> + <item quantity="one">Removed %d missing download.</item> + <item quantity="other">Removed %d missing downloads.</item> + </plurals> + <string name="download_refresh_button_content_description">Refresh downloaded items</string> + <string name="downloaded_bottom_sheet_add_to_queue">Add to queue</string> + <string name="downloaded_bottom_sheet_play_next">Play next</string> + <string name="downloaded_bottom_sheet_remove">Remove</string> + <string name="downloaded_bottom_sheet_remove_all">Remove all</string> + <string name="downloaded_bottom_sheet_shuffle">Shuffle</string> + <string name="empty_string" /> + <string name="error_required">Required</string> + <string name="error_server_prefix">http or https prefix required</string> + <string name="exo_download_notification_channel_name">Downloads</string> + <string name="exo_controls_heart_off_description">Toggle Heart off</string> + <string name="exo_controls_heart_on_description">Toggle Heart on</string> + <string name="cast_expanded_controller_loading">Loading…</string> + <string name="filter_info_selection">Select two or more filters</string> + <string name="filter_title">Filter</string> + <string name="filter_artist">Filter artists</string> + <string name="filter_title_expanded">Filter Genres</string> + <string name="generic_list_page_count">(%1$d)</string> + <string name="generic_list_page_count_unknown">(+%1$d)</string> + <string name="genre_catalogue_title">Genre Catalogue</string> + <string name="genre_catalogue_title_expanded">Browse Genres</string> + <string name="github_update_dialog_negative_button">Remind me later</string> + <string name="github_update_dialog_neutral_button">Support me</string> + <string name="github_update_dialog_positive_button">Download now</string> + <string name="github_update_dialog_summary">There is a new version of the app available on Github.</string> + <string name="github_update_dialog_title">Update available</string> + <string name="home_rearrangement_dialog_negative_button">Cancel</string> + <string name="home_rearrangement_dialog_neutral_button">Reset</string> + <string name="home_rearrangement_dialog_positive_button">Save</string> + <string name="home_rearrangement_dialog_title">Rearrange home</string> + <string name="home_rearrangement_dialog_subtitle">Please note that in order for the changes made to take effect, it is necessary to restart the application.</string> + <string name="home_section_music">Music</string> + <string name="home_section_podcast">Podcast</string> + <string name="home_section_radio">Radio</string> + <string name="home_subtitle_best_of">Top songs of your favorite artists</string> + <string name="home_subtitle_made_for_you">Start mix from a song you liked</string> + <string name="home_subtitle_new_internet_radio_station">Add a new radio</string> + <string name="home_subtitle_new_podcast_channel">Add a new podcast channel</string> + <string name="home_sync_starred_cancel">Cancel</string> + <string name="home_sync_starred_download">Download</string> + <string name="home_sync_starred_subtitle">Downloading these tracks may involve significant data usage</string> + <string name="home_sync_starred_title">Looks like there are some starred tracks to sync</string> + <string name="home_sync_starred_albums_title">Sync Starred Albums</string> + <string name="home_sync_starred_albums_subtitle">Albums marked with a star will be available offline</string> + <string name="home_sync_starred_artists_title">Starred Artists Sync</string> + <string name="home_sync_starred_artists_subtitle">You have starred artists with music not downloaded</string> + <string name="home_title_best_of">Best of</string> + <string name="home_title_discovery">Discovery</string> + <string name="home_title_discovery_shuffle_all_button">Shuffle all</string> + <string name="home_title_flashback">Flashback</string> + <string name="home_title_internet_radio_station">Internet radio stations</string> + <string name="home_title_last_played">Last played</string> + <string name="home_title_last_played_see_all_button">See all</string> + <string name="home_title_last_week">Last week</string> + <string name="home_title_last_month">Last month</string> + <string name="home_title_last_year">Last year</string> + <string name="home_title_made_for_you">Made for you</string> + <string name="home_title_most_played">Most played</string> + <string name="home_title_most_played_see_all_button">See all</string> + <string name="home_title_new_releases">New releases</string> + <string name="home_title_newest_podcasts">Newest podcasts</string> + <string name="home_title_pinned_playlists">Playlists</string> + <string name="home_title_podcast_channels">Channels</string> + <string name="home_title_podcast_channels_see_all_button">See all</string> + <string name="home_title_radio_station">Radio stations</string> + <string name="home_title_recently_added">Recently added</string> + <string name="home_title_recently_added_see_all_button">See all</string> + <string name="home_title_shares">Shares</string> + <string name="home_title_starred_albums">★ Starred albums</string> + <string name="home_title_starred_albums_see_all_button">See all</string> + <string name="home_title_starred_artists">★ Starred artists</string> + <string name="home_title_starred_artists_see_all_button">See all</string> + <string name="home_title_starred_tracks">★ Starred tracks</string> + <string name="home_title_starred_tracks_see_all_button">See all</string> + <string name="home_title_top_songs">Your top songs</string> + <string name="home_option_reorganize">Reorganize</string> + <string name="label_dot_separator" translatable="false">•</string> + <string name="label_placeholder" translatable="false">--</string> + <string name="library_title_album">Albums</string> + <string name="library_title_album_see_all_button">See all</string> + <string name="library_title_artist">Artists</string> + <string name="library_title_artist_see_all_button">See all</string> + <string name="library_title_genre">Genres</string> + <string name="library_title_genre_see_all_button">See all</string> + <string name="library_title_music_folder">Music folders</string> + <string name="library_title_playlist">Playlists</string> + <string name="library_title_playlist_see_all_button">See all</string> + <string name="login_empty">No server added</string> + <string name="login_title">Subsonic servers</string> + <string name="login_title_expanded">Subsonic servers</string> + <string name="media_route_menu_title">Cast</string> + <string name="menu_add_button">Add</string> + <string name="menu_add_to_playlist_button">Add to playlist</string> + <string name="menu_download_all_button">Download all</string> + <string name="menu_rate_album">Rate album</string> + <string name="menu_download_label">Download</string> + <string name="menu_filter_all">All</string> + <string name="menu_filter_download">Downloaded</string> + <string name="menu_group_by_album">Album</string> + <string name="menu_group_by_artist">Artist</string> + <string name="menu_group_by_genre">Genre</string> + <string name="menu_group_by_track">Track</string> + <string name="menu_group_by_year">Year</string> + <string name="menu_home_label">Home</string> + <string name="menu_last_week_name">Last week</string> + <string name="menu_last_month_name">Last month</string> + <string name="menu_last_year_name">Last year</string> + <string name="menu_library_label">Library</string> + <string name="menu_search_button">Search</string> + <string name="menu_settings_button">Settings</string> + <string name="menu_sort_artist">Artist</string> + <string name="menu_sort_name">Name</string> + <string name="menu_sort_random">Random</string> + <string name="menu_sort_album_count">Album Count</string> + <string name="menu_sort_recently_added">Recently added</string> + <string name="menu_sort_recently_played">Recently played</string> + <string name="menu_sort_most_played">Most played</string> + <string name="menu_sort_most_recently_starred">Most recently starred</string> + <string name="menu_sort_least_recently_starred">Least recently starred</string> + <string name="menu_pin_button">Add to home screen</string> + <string name="menu_unpin_button">Remove from home screen</string> + <string name="menu_sort_year">Year</string> + <string name="player_playback_speed">%1$.2fx</string> + <string name="player_queue_clean_all_button">Clean play queue</string> + <string name="player_queue_save_queue_success">Saved play queue</string> + <string name="player_lyrics_download_content_description">Download lyrics for offline playback</string> + <string name="player_lyrics_downloaded_content_description">Lyrics downloaded for offline playback</string> + <string name="player_lyrics_download_success">Lyrics saved for offline playback.</string> + <string name="player_lyrics_download_failure">Lyrics are not available to download.</string> + <string name="player_server_priority">Server Priority</string> + <string name="player_unknown_format">Unknown format</string> + <string name="player_transcoding">Transcoding</string> + <string name="player_transcoding_requested">requested</string> + <string name="playlist_catalogue_title">Playlist Catalogue</string> + <string name="playlist_catalogue_title_expanded">Browse Playlists</string> + <string name="playlist_chooser_dialog_empty">No playlists created</string> + <string name="playlist_chooser_dialog_negative_button">Cancel</string> + <string name="playlist_chooser_dialog_neutral_button">Create</string> + <string name="playlist_chooser_dialog_title">Add to a playlist</string> + <string name="playlist_chooser_dialog_toast_add_success">Added song(s) to playlist</string> + <string name="playlist_chooser_dialog_toast_add_failure">Failed to add song(s) to playlist</string> + <string name="playlist_chooser_dialog_toast_all_skipped">All songs were skipped as duplicates</string> + <string name="playlist_counted_tracks">%1$d tracks • %2$s</string> + <string name="playlist_duration">Duration • %1$s</string> + <string name="playlist_editor_dialog_action_delete_toast">Long press to delete</string> + <string name="playlist_editor_dialog_hint_name">Playlist Name</string> + <string name="playlist_editor_dialog_negative_button">Cancel</string> + <string name="playlist_editor_dialog_neutral_button">Delete</string> + <string name="playlist_editor_dialog_positive_button">Save</string> + <string name="playlist_editor_dialog_title">Edit playlist</string> + <string name="playlist_page_play_button">Play</string> + <string name="playlist_page_shuffle_button">Shuffle</string> + <string name="playlist_song_count">Playlist • %1$d songs</string> + <string name="podcast_bottom_sheet_add_to_queue">Add to queue</string> + <string name="podcast_bottom_sheet_delete">Delete</string> + <string name="podcast_bottom_sheet_download">Download</string> + <string name="podcast_bottom_sheet_go_to_channel">Go to channel</string> + <string name="podcast_bottom_sheet_play_next">Play next</string> + <string name="podcast_bottom_sheet_remove">Remove</string> + <string name="podcast_channel_catalogue_title">Channels</string> + <string name="podcast_channel_catalogue_title_expanded">Browse Channels</string> + <string name="podcast_channel_editor_dialog_hint_rss_url">RSS Url</string> + <string name="podcast_channel_editor_dialog_title">Podcast Channel</string> + <string name="podcast_channel_page_title_description_section">Description</string> + <string name="podcast_channel_page_title_episode_section">Episodes</string> + <string name="podcast_channel_page_title_no_episode_available">No episodes available</string> + <string name="podcast_episode_download_request_snackbar">Your request has been sent to the server</string> + <string name="podcast_info_empty_button">Click to hide the section\nThe effects will be visible on restart</string> + <string name="podcast_info_empty_subtitle">Once you add a channel, you\'ll find it here</string> + <string name="podcast_info_empty_title">No podcasts found!</string> + <string name="podcast_release_date_duration_formatter">%1$s • %2$s</string> + <string name="radio_editor_dialog_hint_homepage_url">Radio Homepage URL</string> + <string name="radio_editor_dialog_hint_name">Radio Name</string> + <string name="radio_editor_dialog_hint_stream_url">Radio Stream URL</string> + <string name="radio_editor_dialog_negative_button">Cancel</string> + <string name="radio_editor_dialog_neutral_button">Delete</string> + <string name="radio_editor_dialog_positive_button">Save</string> + <string name="radio_editor_dialog_title">Internet Radio Station</string> + <string name="radio_station_info_empty_button">Click to hide the section\nThe effects will be visible on restart</string> + <string name="radio_station_info_empty_subtitle">Once you add a radio station, you\'ll find it here</string> + <string name="radio_station_info_empty_title">No stations found!</string> + <string name="rating_dialog_negative_button">Cancel</string> + <string name="rating_dialog_positive_button">Save</string> + <string name="rating_dialog_title">Rate</string> + <string name="search_hint">Search title, artists or albums</string> + <string name="search_info_minimum_characters">Enter at least three characters</string> + <string name="search_title_album">Albums</string> + <string name="search_title_artist">Artists</string> + <string name="search_title_song">Songs</string> + <string name="server_signup_dialog_action_low_security">Low security</string> + <string name="server_signup_dialog_action_delete_toast">Long press to delete</string> + <string name="server_signup_dialog_hint_local_address">Local URL</string> + <string name="server_signup_dialog_hint_name">Server Name</string> + <string name="server_signup_dialog_hint_password">Password</string> + <string name="server_signup_dialog_hint_url">Server URL</string> + <string name="server_signup_dialog_hint_username">Username</string> + <string name="server_signup_dialog_negative_button">Cancel</string> + <string name="server_signup_dialog_neutral_button">Delete</string> + <string name="server_signup_dialog_positive_button">Save</string> + <string name="server_signup_dialog_title">Add server</string> + <string name="server_unreachable_dialog_negative_button">Cancel</string> + <string name="server_unreachable_dialog_neutral_button">Go to login</string> + <string name="server_unreachable_dialog_positive_button">Continue anyway</string> + <string name="server_unreachable_dialog_summary">The requested server is unavailable. If you choose to continue this dialog will not appear for the next hour.</string> + <string name="server_unreachable_dialog_title">Server unreachable</string> + <string name="settings_about_summary">Tempus is an open source and lightweight music client for Subsonic, designed and built natively for Android.</string> + <string name="settings_about_title">About</string> + <string name="settings_always_on_display">Always on display</string> + <string name="settings_allow_playlist_duplicates">Allow adding duplicates to playlist</string> + <string name="settings_allow_playlist_duplicates_summary">If enabled, duplicates won\'t be checked while adding to a playlist.</string> + <string name="settings_audio_transcode_download_format">Transcode format</string> + <string name="settings_audio_transcode_download_priority_summary">If enabled, Tempus will not force download the track with the transcode settings below.</string> + <string name="settings_audio_transcode_download_priority_title">Prioritize server settings used for streaming in downloads</string> + <string name="settings_audio_transcode_download_summary">If enabled, Tempus will download transcoded tracks.</string> + <string name="settings_audio_transcode_download_title">Download transcoded tracks</string> + <string name="settings_audio_transcode_estimate_content_length_summary">If enabled, the server will be asked for the estimated duration of the track.</string> + <string name="settings_audio_transcode_estimate_content_length_title">Estimate content length</string> + <string name="settings_audio_transcode_format_download">Transcode format for downloads</string> + <string name="settings_audio_transcode_format_mobile">Transcode format in mobile</string> + <string name="settings_audio_transcode_format_wifi">Transcode format in Wi-Fi</string> + <string name="settings_audio_transcode_priority_summary">If enabled, Tempus will not force stream the track with the transcode settings below.</string> + <string name="settings_audio_transcode_priority_title">Prioritize server transcode settings</string> + <string name="settings_audio_transcode_priority_toast">Priority on transcoding of track given to server</string> + <string name="settings_buffering_strategy">Buffering strategy</string> + <string name="settings_buffering_strategy_summary">For the change to take effect you must manually restart the app.</string> + <string name="settings_choose_download_folder">Choose a folder for downloaded music files</string> + <string name="settings_clear_download_folder">Clear download folder</string> + <string name="settings_continuous_play_summary">Allows music to keep playing after a playlist has ended, playing similar songs</string> + <string name="settings_continuous_play_title">Continuous play</string> + <string name="settings_covers_cache">Size of artwork cache</string> + <string name="settings_data_saving_mode_summary">In order to reduce data consumption, avoid downloading covers.</string> + <string name="settings_data_saving_mode_title">Limit mobile data usage</string> + <string name="settings_delete_download_storage_summary">Proceeding will result in the irreversible deletion of all saved items.</string> + <string name="settings_delete_download_storage_title">Delete saved items</string> + <string name="settings_download_storage_title">Download storage</string> + <string name="settings_download_folder_cleared">Download folder cleared.</string> + <string name="settings_download_folder_set">Download folder set</string> + <string name="settings_set_download_folder">Set download folder</string> + <string name="settings_system_equalizer_summary">Adjust audio settings</string> + <string name="settings_system_equalizer_title">System equalizer</string> + <string name="settings_github_link">https://github.com/eddyizm/tempus</string> + <string name="settings_github_summary">Follow the development</string> + <string name="settings_github_title">Github</string> + <string name="settings_support_discussion_link">https://github.com/eddyizm/tempus/discussions</string> + <string name="settings_github_update">Updates</string> + <string name="settings_github_update_title">Check github for release updates</string> + <string name="settings_github_update_summary">If using the github version, by default app will check for new apk release. Toggle to disable automatic github checks</string> + <string name="settings_support_summary">Join community discussions and support</string> + <string name="settings_support_title">User support</string> + <string name="settings_scan_result">Scanning: counting %1$d tracks</string> + <string name="settings_image_size">Set image resolution</string> + <string name="settings_language">Language</string> + <string name="settings_logout_title">Log out</string> + <string name="settings_max_bitrate_download">Bitrate for downloads</string> + <string name="settings_max_bitrate_mobile">Bitrate in mobile</string> + <string name="settings_max_bitrate_wifi">Bitrate in Wi-Fi</string> + <string name="settings_media_cache">Size of media file cache</string> + <string name="settings_music_directory">Show music directories</string> + <string name="settings_music_directory_summary">If enabled, show the music directory section. Please note that for folder navigation to work properly, the server must support this feature.</string> + <string name="settings_podcast">Show podcast</string> + <string name="settings_podcast_summary">If enabled, show the podcast section. Restart the app for it to take full effect.</string> + <string name="settings_audio_quality">Show audio quality</string> + <string name="settings_audio_quality_summary">The bitrate and audio format will be shown for each audio track.</string> + <string name="settings_song_rating">Show song star rating</string> + <string name="settings_song_rating_summary">If enabled, shows 5 star rating for track on song page\n\n*Requires App restart</string> + <string name="settings_item_rating">Show item rating</string> + <string name="settings_item_rating_summary">If enabled, the item\'s rating and whether it is marked as a favorite will be displayed.</string> + <string name="settings_queue_syncing_countdown">Sync timer</string> + <string name="settings_queue_syncing_summary">If enabled, the user will have the ability to save their play queue and will have the ability to load state when opening the application.</string> + <string name="settings_queue_syncing_title">Sync play queue for this user [Not Fully Baked]</string> + <string name="settings_show_mini_shuffle_button">Show Shuffle button</string> + <string name="settings_show_mini_shuffle_button_summary">If enabled, show the shuffle button, remove the heart in the mini player</string> + <string name="settings_radio">Show radio</string> + <string name="settings_radio_summary">If enabled, show the radio section. Restart the app for it to take full effect.</string> + <string name="settings_auto_download_lyrics">Auto download lyrics</string> + <string name="settings_auto_download_lyrics_summary">Automatically save lyrics when they are available so they can be shown while offline.</string> + <string name="settings_replay_gain">Set replay gain mode</string> + <string name="settings_rounded_corner">Rounded corners</string> + <string name="settings_rounded_corner_size">Corners size</string> + <string name="settings_rounded_corner_size_summary">Sets the magnitude of the curvature angle.</string> + <string name="settings_rounded_corner_summary">If enabled, sets a curvature angle for all rendered covers. The changes will take effect on restart.</string> + <string name="settings_scan_title">Scan library</string> + <string name="settings_scrobble_title">Enable music scrobbling</string> + <string name="settings_system_language">System language</string> + <string name="settings_share_title">Enable music sharing</string> + <string name="settings_streaming_cache_size">Size of streaming cache</string> + <string name="settings_streaming_cache_storage_title">Streaming cache storage</string> + <string name="settings_sub_summary_scrobble">It\'s important to note that scrobbling also relies on the server being enabled to receive this data.</string> + <string name="settings_summary_skip_min_star_rating">When listening to an artist\'s radio, an instant mix or when shuffling all, tracks below a certain user rating will be ignored.</string> + <string name="settings_summary_replay_gain">Replay gain is a feature that allows you to adjust the volume level of audio tracks for a consistent listening experience. This setting is only effective if the track contains the necessary metadata.</string> + <string name="settings_summary_scrobble">Scrobbling is a feature that allows your device to send information about the songs you listen to the music server. This information helps create personalized recommendations based on your music preferences.</string> + <string name="settings_summary_share">Allows the user to share music via a link. The functionality must be supported and enabled server-side and is limited to individual tracks, albums and playlists.</string> + <string name="settings_summary_syncing">Returns the state of the play queue for this user. This includes the tracks in the play queue, the currently playing track, and the position within this track. The server must support this feature.\n*This setting is not 100% working on all servers/devices.</string> + <string name="settings_summary_streaming_cache_size">%1$s \nCurrently in use: %2$s MiB</string> + <string name="settings_summary_transcoding">Priority given to the transcoding mode. If set to \"Direct play\" the bitrate of the file will not be changed.</string> + <string name="settings_summary_transcoding_download">Download transcoded media. If enabled, the download endpoint will not be used, but the following settings. \n\n If \"Transcode format for downloads\" is set to \"Direct download\" the bitrate of the file will not be changed.</string> + <string name="settings_summary_transcoding_estimate_content_length">When the file is transcoded on the fly, the client usually does not show the track length. It is possible to request the servers that support the functionality to estimate the duration of the track being played, but the response times may take longer.</string> + <string name="settings_sync_starred_artists_for_offline_use_summary">If enabled, starred artists will be downloaded for offline use.</string> + <string name="settings_sync_starred_artists_for_offline_use_title">Sync starred artists for offline use</string> + <string name="settings_sync_starred_albums_for_offline_use_summary">If enabled, starred albums will be downloaded for offline use.</string> + <string name="settings_sync_starred_albums_for_offline_use_title">Sync starred albums for offline use</string> + <string name="settings_sync_starred_tracks_for_offline_use_summary">If enabled, starred tracks will be downloaded for offline use.</string> + <string name="settings_sync_starred_tracks_for_offline_use_title">Sync starred tracks for offline use</string> + <string name="settings_theme">Theme</string> + <string name="settings_title_data">Data</string> + <string name="settings_title_general">General</string> + <string name="settings_title_playlist">Playlist</string> + <string name="settings_title_rating">Rating</string> + <string name="settings_title_replay_gain">Replay Gain</string> + <string name="settings_title_scrobble">Scrobble</string> + <string name="settings_title_skip_min_star_rating">Ignore tracks based on rating</string> + <string name="settings_title_skip_min_star_rating_dialog">Songs with a rating of:</string> + <string name="settings_title_share">Share</string> + <string name="settings_title_syncing">Syncing</string> + <string name="settings_title_transcoding">Transcoding</string> + <string name="settings_title_transcoding_download">Transcoding Download</string> + <string name="settings_title_ui">UI</string> + <string name="settings_transcoded_download">Transcoded download</string> + <string name="settings_version_summary" translatable="false">3.1.0</string> + <string name="settings_version_title">Version</string> + <string name="settings_wifi_only_summary">Ask for user confirmation before streaming over mobile network.</string> + <string name="settings_wifi_only_title">Stream via Wi-Fi only alert</string> + <string name="share_bottom_sheet_copy_link">Copy link</string> + <string name="share_bottom_sheet_delete">Delete share</string> + <string name="share_bottom_sheet_update">Update share</string> + <string name="share_subtitle_item">Expiration date: %1$s</string> + <string name="share_no_expiration">Never</string> + <string name="share_unsupported_error">Sharing is not supported or not enabled</string> + <string name="asset_link_clipboard_label">Tempus asset link</string> + <string name="asset_link_label_song">Song UID</string> + <string name="asset_link_label_album">Album UID</string> + <string name="asset_link_label_artist">Artist UID</string> + <string name="asset_link_label_playlist">Playlist UID</string> + <string name="asset_link_label_genre">Genre UID</string> + <string name="asset_link_label_year">Year UID</string> + <string name="asset_link_label_unknown">Asset UID</string> + <string name="asset_link_error_unsupported">Unsupported asset link</string> + <string name="asset_link_error_song">Song could not be opened</string> + <string name="asset_link_error_album">Album could not be opened</string> + <string name="asset_link_error_artist">Artist could not be opened</string> + <string name="asset_link_error_playlist">Playlist could not be opened</string> + <string name="asset_link_chip_text">%1$s • %2$s</string> + <string name="asset_link_copied_toast">Copied %1$s to clipboard</string> + <string name="asset_link_debug_toast">Asset link: %1$s</string> + <string name="share_update_dialog_hint_description">Description</string> + <string name="share_update_dialog_hint_expiration_date">Expiration date</string> + <string name="share_update_dialog_negative_button">Cancel</string> + <string name="share_update_dialog_positive_button">Save</string> + <string name="share_update_dialog_title">Share</string> + <string name="song_bottom_sheet_add_to_playlist">Add to playlist</string> + <string name="song_bottom_sheet_add_to_queue">Add to queue</string> + <string name="song_bottom_sheet_download">Download</string> + <string name="song_bottom_sheet_error_retrieving_album">Error retrieving album</string> + <string name="song_bottom_sheet_error_retrieving_artist">Error retrieving artist</string> + <string name="song_bottom_sheet_go_to_album">Go to album</string> + <string name="song_bottom_sheet_go_to_artist">Go to artist</string> + <string name="song_bottom_sheet_instant_mix">Instant mix</string> + <string name="song_bottom_sheet_play_next">Play next</string> + <string name="song_bottom_sheet_rate">Rate</string> + <string name="song_bottom_sheet_remove">Remove</string> + <string name="song_bottom_sheet_share">Share</string> + <string name="song_list_page_downloaded">Downloaded</string> + <string name="song_list_page_most_played">Most played tracks</string> + <string name="song_list_page_recently_added">Recently added tracks</string> + <string name="song_list_page_recently_played">Recently played tracks</string> + <string name="song_list_page_starred">Starred tracks</string> + <string name="song_list_page_top">%1$s\'s top tracks</string> + <string name="song_list_page_year">Year %1$d</string> + <string name="song_subtitle_formatter">%1$s • %2$s %3$s</string> + <string name="starred_sync_dialog_negative_button">Cancel</string> + <string name="starred_sync_dialog_neutral_button">Continue</string> + <string name="starred_sync_dialog_positive_button">Continue and download</string> + <string name="starred_sync_dialog_summary">Downloading starred tracks may require a large amount of data.</string> + <string name="starred_sync_dialog_title">Sync starred tracks</string> + <string name="starred_artist_sync_dialog_summary">Downloading starred artists may require a large amount of data.</string> + <string name="starred_artist_sync_dialog_title">Sync starred artists</string> + <string name="starred_album_sync_dialog_summary">Downloading starred albums may require a large amount of data.</string> + <string name="starred_album_sync_dialog_title">Sync starred albums</string> + <string name="streaming_cache_storage_dialog_sub_summary">For the changes to take effect, restart the app.</string> + <string name="streaming_cache_storage_dialog_summary">Changing the destination of cached files from one storage to another may result in the deletion of any previously cached files in the other storage.</string> + <string name="streaming_cache_storage_dialog_title">Select storage option</string> + <string name="streaming_cache_storage_external_dialog_positive_button">External</string> + <string name="streaming_cache_storage_internal_dialog_negative_button">Internal</string> + <string name="support_url">https://ko-fi.com/eddyizm</string> + <string name="track_info_album">Album</string> + <string name="track_info_artist">Artist</string> + <string name="track_info_bit_depth">Bit depth</string> + <string name="track_info_bitrate">Bitrate</string> + <string name="track_info_content_type">Content Type</string> + <string name="track_info_dialog_positive_button">OK</string> + <string name="track_info_dialog_title">Track info</string> + <string name="track_info_disc_number">Disc number</string> + <string name="track_info_duration">Duration</string> + <string name="track_info_genre">Genre</string> + <string name="track_info_path">Path</string> + <string name="track_info_sampling_rate">Sampling rate</string> + <string name="track_info_size">Size</string> + <string name="track_info_suffix">Suffix</string> + <string name="track_info_summary_downloaded_file">The file has been downloaded using the Subsonic APIs. The codec and bitrate of the file remain unchanged from the source file.</string> + <string name="track_info_summary_full_transcode">The application will request the server to transcode the file and modify its bitrate. The user requested codec is %1$s, with a bitrate of %2$s. Any potential changes to the codec and bitrate of the file in the chosen format will be handled by the server, which may or may not support the operation.</string> + <string name="track_info_summary_original_file">The application will only read the original file as provided by the server. The app will explicitly request the server for the untranscoded file with the bitrate of the original source.</string> + <string name="track_info_summary_server_prioritized">The quality of the file to be played is left up to the server\'s decision. The app will not enforce the choice of codec and bitrate for any potential transcoding.</string> + <string name="track_info_summary_transcoding_bitrate">The application will request the server to modify the bitrate of the file. The user requested a bitrate of %1$s, while the codec of the source file will remain the same. Any changes to the bitrate of the file in the chosen format will be done by the server, which may or may not support the operation.</string> + <string name="track_info_summary_transcoding_codec">The application will request the server to transcode the file. The requested codec by the user is %1$s, while the bitrate will be the same as the source file. The potential transcoding of the file into the chosen format is dependent on the server, as it may or may not support the operation.</string> + <string name="track_info_title">Title</string> + <string name="track_info_track_number">Track number</string> + <string name="track_info_transcoded_content_type">Transcoded content type</string> + <string name="track_info_transcoded_suffix">Transcoded suffix</string> + <string name="track_info_year">Year</string> + <string name="undraw_page">unDraw</string> + <string name="undraw_thanks">A special thanks goes to unDraw without whose illustrations we could not have made this application more beautiful.</string> + <string name="undraw_url">https://undraw.co/</string> + <string name="widget_label">Tempus Widget</string> + <string name="widget_not_playing">Not playing</string> + <string name="widget_placeholder_subtitle">Open Tempus</string> + <string name="widget_time_elapsed_placeholder">0:00</string> + <string name="widget_time_duration_placeholder">0:00</string> + <string name="widget_content_desc_album_art">Album artwork</string> + <string name="widget_content_desc_play_pause">Play or pause</string> + <string name="widget_content_desc_next">Next track</string> + <string name="widget_content_desc_prev">Previous track</string> + <string name="widget_content_desc_shuffle">Toggle shuffle</string> + <string name="widget_content_desc_repeat">Change repeat mode</string> + <plurals name="home_sync_starred_albums_count"> + <item quantity="one">%d album to sync</item> + <item quantity="other">%d albums to sync</item> + </plurals> + <plurals name="home_sync_starred_artists_count"> + <item quantity="one">%d artist to sync</item> + <item quantity="other">%d artists to sync</item> + </plurals> + <plurals name="songs_download_started"> + <item quantity="one">Downloading %d song</item> + <item quantity="other">Downloading %d songs</item> + </plurals> + <string name="equalizer_fragment_title">Equalizer</string> + <string name="equalizer_reset">Reset</string> + <string name="equalizer_enable">Enable</string> + <string name="equalizer_not_supported">Not supported on this device</string> + <string name="settings_app_equalizer">Equalizer</string> + <string name="settings_app_equalizer_summary">Open the built-in equalizer</string> + + <string name="settings_album_detail">Show album detail</string> + <string name="settings_album_detail_summary">If enabled, show the album details like genre, song count etc. on the album page</string> + <string name="settings_artist_sort_by_album_count">Sort artists by album count</string> + <string name="settings_artist_sort_by_album_count_summary">If enabled, sort the artists by album count. Sort by name if disabled.</string> +</resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..b8266bb --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <style name="AppTheme.SplashScreen" parent="Theme.SplashScreen"> + <item name="windowSplashScreenBackground">#000000</item> + <item name="windowSplashScreenAnimatedIcon">@drawable/ui_splash_screen</item> + <item name="postSplashScreenTheme">@style/AppTheme</item> + <item name="windowSplashScreenAnimationDuration">100</item> + </style> + + <style name="AppTheme" parent="Theme.Material3.Light.NoActionBar"> + <item name="colorPrimary">@color/md_theme_light_primary</item> + <item name="colorOnPrimary">@color/md_theme_light_onPrimary</item> + <item name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item> + <item name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item> + <item name="colorSecondary">@color/md_theme_light_secondary</item> + <item name="colorOnSecondary">@color/md_theme_light_onSecondary</item> + <item name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item> + <item name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item> + <item name="colorTertiary">@color/md_theme_light_tertiary</item> + <item name="colorOnTertiary">@color/md_theme_light_onTertiary</item> + <item name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item> + <item name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item> + <item name="colorError">@color/md_theme_light_error</item> + <item name="colorErrorContainer">@color/md_theme_light_errorContainer</item> + <item name="colorOnError">@color/md_theme_light_onError</item> + <item name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item> + <item name="android:colorBackground">@color/md_theme_light_background</item> + <item name="colorOnBackground">@color/md_theme_light_onBackground</item> + <item name="colorSurface">@color/md_theme_light_surface</item> + <item name="colorOnSurface">@color/md_theme_light_onSurface</item> + <item name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item> + <item name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item> + <item name="colorOutline">@color/md_theme_light_outline</item> + <item name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item> + <item name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item> + <item name="colorPrimaryInverse">@color/md_theme_light_primaryInverse</item> + + <item name="android:windowLightStatusBar">true</item> + <item name="android:statusBarColor">?attr/colorSurface</item> + <item name="android:navigationBarColor">?attr/colorSurface</item> + <item name="android:scrollbars">none</item> + </style> + + <style name="Divider"> + <item name="android:layout_width">match_parent</item> + <item name="android:layout_height">0.5dp</item> + <item name="android:background">@color/dividerColor</item> + </style> + + <style name="NoConnectionTextView"> + <item name="background">?attr/colorErrorContainer</item> + <item name="android:textColor">?attr/colorOnErrorContainer</item> + </style> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/typography.xml b/app/src/main/res/values/typography.xml new file mode 100644 index 0000000..52fca61 --- /dev/null +++ b/app/src/main/res/values/typography.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <style name="InterFontFamily"> + <item name="android:fontFamily">@font/inter</item> + </style> + + + <style name="HeadlineLarge" parent="InterFontFamily"> + <item name="android:textSize">26sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="HeadlineMedium" parent="InterFontFamily"> + <item name="android:textSize">24sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="HeadlineSmall" parent="InterFontFamily"> + <item name="android:textSize">22sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + + <style name="TitleLarge" parent="InterFontFamily"> + <item name="android:textSize">22sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="TitleMedium" parent="InterFontFamily"> + <item name="android:textSize">14sp</item> + <item name="android:textFontWeight">400</item> + <item name="android:textColor">@color/subtitleTextColor</item> + </style> + + <style name="TitleSmall" parent="InterFontFamily"> + <item name="android:textSize">12sp</item> + <item name="android:textFontWeight">400</item> + <item name="android:textColor">@color/subtitleTextColor</item> + </style> + + + <style name="LabelExtraLarge" parent="InterFontFamily"> + <item name="android:textSize">22sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="LabelLarge" parent="InterFontFamily"> + <item name="android:textSize">18sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="LabelMedium" parent="InterFontFamily"> + <item name="android:textSize">14sp</item> + <item name="android:textFontWeight">500</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="LabelSmall" parent="InterFontFamily"> + <item name="android:textSize">12sp</item> + <item name="android:textFontWeight">400</item> + <item name="android:textColor">@color/subtitleTextColor</item> + </style> + + <style name="LabelExtraSmall" parent="InterFontFamily"> + <item name="android:textSize">10sp</item> + <item name="android:textFontWeight">300</item> + <item name="android:textColor">@color/subtitleTextColor</item> + </style> + + + <style name="BodyLarge" parent="InterFontFamily"> + <item name="android:textSize">24sp</item> + <item name="android:textFontWeight">700</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="BodyMedium" parent="InterFontFamily"> + <item name="android:textSize">14sp</item> + <item name="android:textFontWeight">500</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> + + <style name="BodySmall" parent="InterFontFamily"> + <item name="android:textSize">12sp</item> + <item name="android:textFontWeight">400</item> + <item name="android:textColor">@color/titleTextColor</item> + </style> +</resources> \ No newline at end of file diff --git a/app/src/main/res/xml/auto_app_desc.xml b/app/src/main/res/xml/auto_app_desc.xml new file mode 100644 index 0000000..e64f442 --- /dev/null +++ b/app/src/main/res/xml/auto_app_desc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<automotiveApp> + <uses name="media" /> +</automotiveApp> diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml new file mode 100644 index 0000000..fcd6526 --- /dev/null +++ b/app/src/main/res/xml/global_preferences.xml @@ -0,0 +1,449 @@ +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <PreferenceCategory app:title="@string/settings_title_general"> + <Preference + android:layout_height="match_parent" + android:key="system_equalizer" + android:summary="@string/settings_system_equalizer_summary" + android:title="@string/settings_system_equalizer_title" /> + + <Preference + android:layout_height="match_parent" + android:key="app_equalizer" + android:summary="@string/settings_app_equalizer_summary" + android:title="@string/settings_app_equalizer" /> + + <Preference + android:key="scan_library" + android:title="@string/settings_scan_title" /> + + <Preference + android:key="logout" + android:title="@string/settings_logout_title"/> + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_ui"> + <ListPreference + android:layout_height="match_parent" + app:defaultValue="default" + app:dialogTitle="@string/settings_language" + app:key="language" + app:title="@string/settings_language" /> + + <ListPreference + android:layout_height="wrap_content" + app:defaultValue="default" + app:dialogTitle="@string/settings_theme" + app:entries="@array/theme_list_titles" + app:entryValues="@array/theme_list_values" + app:key="theme" + app:title="@string/settings_theme" + app:useSimpleSummaryProvider="true" /> + + <SwitchPreference + android:title="@string/settings_always_on_display" + android:defaultValue="false" + android:key="always_on_display" /> + + <SwitchPreference + android:layout_height="match_parent" + android:defaultValue="true" + android:key="rounded_corner" + android:summary="@string/settings_rounded_corner_summary" + android:title="@string/settings_rounded_corner" /> + + <ListPreference + app:defaultValue="6" + app:dialogTitle="@string/settings_rounded_corner_size" + app:entries="@array/rounded_corner_size_titles" + app:entryValues="@array/rounded_corner_size_values" + app:key="rounded_corner_size" + app:title="@string/settings_rounded_corner_size" + app:useSimpleSummaryProvider="true" /> + + <SwitchPreference + android:layout_height="wrap_content" + android:defaultValue="false" + android:key="audio_quality_per_item" + android:summary="@string/settings_audio_quality_summary" + android:title="@string/settings_audio_quality" /> + + <SwitchPreference + android:title="@string/settings_song_rating" + android:defaultValue="false" + android:summary="@string/settings_song_rating_summary" + android:key="song_rating_per_item" /> + + <SwitchPreference + android:title="@string/settings_item_rating" + android:defaultValue="false" + android:summary="@string/settings_item_rating_summary" + android:key="rating_per_item" /> + + <SwitchPreference + android:title="@string/settings_podcast" + android:defaultValue="true" + android:summary="@string/settings_podcast_summary" + android:key="podcast_section_visibility" /> + + <SwitchPreference + android:title="@string/settings_radio" + android:defaultValue="true" + android:summary="@string/settings_radio_summary" + android:key="radio_section_visibility" /> + + <SwitchPreference + android:title="@string/settings_auto_download_lyrics" + android:defaultValue="false" + android:summary="@string/settings_auto_download_lyrics_summary" + android:key="auto_download_lyrics" /> + + <SwitchPreference + android:title="@string/settings_show_mini_shuffle_button" + android:defaultValue="false" + android:summary="@string/settings_show_mini_shuffle_button_summary" + android:key="mini_shuffle_button_visibility" /> + + <SwitchPreference + android:title="@string/settings_music_directory" + android:defaultValue="true" + android:summary="@string/settings_music_directory_summary" + android:key="music_directory_section_visibility" /> + + <SwitchPreference + android:title="@string/settings_album_detail" + android:defaultValue="false" + android:summary="@string/settings_album_detail_summary" + android:key="album_detail" /> + + <SwitchPreference + android:title="@string/settings_artist_sort_by_album_count" + android:defaultValue="false" + android:summary="@string/settings_artist_sort_by_album_count_summary" + android:key="artist_sort_by_album_count" /> + + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_playlist"> + <SwitchPreference + android:title="@string/settings_allow_playlist_duplicates" + android:defaultValue="false" + android:summary="@string/settings_allow_playlist_duplicates_summary" + android:key="allow_playlist_duplicates" /> + </PreferenceCategory> + + + <PreferenceCategory app:title="@string/settings_title_data"> + <ListPreference + app:defaultValue="256" + app:dialogTitle="@string/settings_streaming_cache_size" + app:entries="@array/streaming_cache_size_titles" + app:entryValues="@array/streaming_cache_size_values" + app:key="streaming_cache_size" + app:title="@string/settings_streaming_cache_size" /> + + <ListPreference + app:defaultValue="500" + app:dialogTitle="@string/settings_covers_cache" + app:entries="@array/pref_cache_size_titles" + app:entryValues="@array/pref_cache_size_values" + app:key="image_cache_size" + app:title="@string/settings_covers_cache" + app:useSimpleSummaryProvider="true" /> + + <ListPreference + app:defaultValue="-1" + app:dialogTitle="@string/settings_image_size" + app:entries="@array/pref_image_size_titles" + app:entryValues="@array/pref_image_size_values" + app:key="image_size" + app:title="@string/settings_image_size" + app:useSimpleSummaryProvider="true" /> + + <SwitchPreference + android:title="@string/settings_continuous_play_title" + android:defaultValue="true" + android:summary="@string/settings_continuous_play_summary" + android:key="continuous_play" /> + + <SwitchPreference + android:title="@string/settings_wifi_only_title" + android:defaultValue="false" + android:summary="@string/settings_wifi_only_summary" + android:key="wifi_only" /> + + <SwitchPreference + android:title="@string/settings_data_saving_mode_title" + android:defaultValue="false" + android:summary="@string/settings_data_saving_mode_summary" + android:key="data_saving_mode" /> + + <SwitchPreference + android:title="@string/settings_sync_starred_tracks_for_offline_use_title" + android:defaultValue="false" + android:summary="@string/settings_sync_starred_tracks_for_offline_use_summary" + android:key="sync_starred_tracks_for_offline_use" /> + + <SwitchPreference + android:title="@string/settings_sync_starred_albums_for_offline_use_title" + android:defaultValue="false" + android:summary="@string/settings_sync_starred_albums_for_offline_use_summary" + android:key="sync_starred_albums_for_offline_use" /> + + <SwitchPreference + android:title="@string/settings_sync_starred_artists_for_offline_use_title" + android:defaultValue="false" + android:summary="@string/settings_sync_starred_artists_for_offline_use_summary" + android:key="sync_starred_artists_for_offline_use" /> + + <ListPreference + app:defaultValue="1" + app:dialogTitle="@string/settings_buffering_strategy" + app:entries="@array/buffering_strategy_titles" + app:entryValues="@array/buffering_strategy_values" + app:key="buffering_strategy" + app:title="@string/settings_buffering_strategy" + app:summary="@string/settings_buffering_strategy_summary" + app:useSimpleSummaryProvider="false" /> + + <Preference + android:key="streaming_cache_storage" + app:title="@string/settings_streaming_cache_storage_title" /> + + <Preference + android:key="download_storage" + app:title="@string/settings_download_storage_title" /> + + <Preference + android:key="set_download_directory" + android:title="Set download folder" + android:summary="Choose a folder for downloaded music files" + android:icon="@drawable/ic_folder" + android:order="104" + app:isPreferenceVisible="false" /> + + <Preference + android:key="delete_download_storage" + app:title="@string/settings_delete_download_storage_title" + app:summary="@string/settings_delete_download_storage_summary"/> + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_transcoding"> + <Preference + app:selectable="false" + app:summary="@string/settings_summary_transcoding" /> + + <SwitchPreference + android:title="@string/settings_audio_transcode_priority_title" + android:defaultValue="false" + android:summary="@string/settings_audio_transcode_priority_summary" + android:key="audio_transcode_priority" /> + + <ListPreference + app:defaultValue="raw" + app:dialogTitle="@string/settings_audio_transcode_format_wifi" + app:entries="@array/audio_transcode_format_wifi_list_titles" + app:entryValues="@array/audio_transcode_format_wifi_list_values" + app:key="audio_transcode_format_wifi" + app:title="@string/settings_audio_transcode_format_wifi" + app:useSimpleSummaryProvider="true" /> + + <ListPreference + app:defaultValue="0" + app:dialogTitle="@string/settings_max_bitrate_wifi" + app:entries="@array/max_bitrate_wifi_list_titles" + app:entryValues="@array/max_bitrate_wifi_list_values" + app:key="max_bitrate_wifi" + app:title="@string/settings_max_bitrate_wifi" + app:useSimpleSummaryProvider="true" /> + + <ListPreference + app:defaultValue="raw" + app:dialogTitle="@string/settings_audio_transcode_format_mobile" + app:entries="@array/audio_transcode_format_mobile_list_titles" + app:entryValues="@array/audio_transcode_format_mobile_list_values" + app:key="audio_transcode_format_mobile" + app:title="@string/settings_audio_transcode_format_mobile" + app:useSimpleSummaryProvider="true" /> + + <ListPreference + app:defaultValue="0" + app:dialogTitle="@string/settings_max_bitrate_mobile" + app:entries="@array/max_bitrate_mobile_list_titles" + app:entryValues="@array/max_bitrate_mobile_list_values" + app:key="max_bitrate_mobile" + app:title="@string/settings_max_bitrate_mobile" + app:useSimpleSummaryProvider="true" /> + + <SwitchPreference + android:title="@string/settings_audio_transcode_estimate_content_length_title" + android:defaultValue="false" + android:summary="@string/settings_audio_transcode_estimate_content_length_summary" + android:key="estimate_content_length" /> + + <Preference + app:selectable="false" + app:summary="@string/settings_summary_transcoding_estimate_content_length" /> + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_transcoding_download"> + <Preference + app:selectable="false" + app:summary="@string/settings_summary_transcoding_download" /> + + <SwitchPreference + android:title="@string/settings_audio_transcode_download_title" + android:defaultValue="false" + android:summary="@string/settings_audio_transcode_download_summary" + android:key="audio_transcode_download" /> + + <SwitchPreference + android:title="@string/settings_audio_transcode_download_priority_title" + android:defaultValue="false" + android:summary="@string/settings_audio_transcode_download_priority_summary" + android:key="audio_transcode_download_priority" /> + + <ListPreference + app:defaultValue="raw" + app:dialogTitle="@string/settings_audio_transcode_format_download" + app:entries="@array/audio_transcode_format_download_list_titles" + app:entryValues="@array/audio_transcode_format_download_list_values" + app:key="audio_transcode_format_download" + app:title="@string/settings_audio_transcode_format_download" + app:useSimpleSummaryProvider="true" /> + + <ListPreference + app:defaultValue="0" + app:dialogTitle="@string/settings_max_bitrate_download" + app:entries="@array/max_bitrate_download_list_titles" + app:entryValues="@array/max_bitrate_download_list_values" + app:key="max_bitrate_download" + app:title="@string/settings_max_bitrate_download" + app:useSimpleSummaryProvider="true" /> + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_replay_gain"> + <Preference + app:selectable="false" + app:summary="@string/settings_summary_replay_gain" /> + + <ListPreference + app:defaultValue="disabled" + app:dialogTitle="@string/settings_replay_gain" + app:entries="@array/replay_gain_titles" + app:entryValues="@array/replay_gain_values" + app:key="replay_gain_mode" + app:title="@string/settings_replay_gain" + app:useSimpleSummaryProvider="true" /> + + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_rating"> + <SeekBarPreference + android:key="min_star_rating" + app:defaultValue="0" + app:min="0" + android:max="4" + app:seekBarIncrement="1" + app:showSeekBarValue="true" + app:summary="@string/settings_summary_skip_min_star_rating" + app:title="@string/settings_title_skip_min_star_rating" /> + + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_scrobble"> + <Preference + app:selectable="false" + app:summary="@string/settings_summary_scrobble" /> + + <Preference + app:selectable="false" + app:summary="@string/settings_sub_summary_scrobble" /> + + <SwitchPreference + android:title="@string/settings_scrobble_title" + android:defaultValue="true" + android:key="scrobbling" /> + + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_share"> + <Preference + app:selectable="false" + app:summary="@string/settings_summary_share" /> + + <SwitchPreference + android:title="@string/settings_share_title" + android:defaultValue="false" + android:key="share" /> + + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_title_syncing"> + <Preference + app:selectable="false" + app:summary="@string/settings_summary_syncing" /> + + <SwitchPreference + android:title="@string/settings_queue_syncing_title" + android:defaultValue="false" + android:summary="@string/settings_queue_syncing_summary" + android:key="queue_syncing" /> + + <ListPreference + app:defaultValue="5" + app:dialogTitle="@string/settings_queue_syncing_countdown" + app:entries="@array/queue_syncing_countdown_titles" + app:entryValues="@array/queue_syncing_countdown_values" + app:key="queue_syncing_countdown" + app:title="@string/settings_queue_syncing_countdown" + app:useSimpleSummaryProvider="true" /> + </PreferenceCategory> + + <PreferenceCategory + android:key="settings_github_update_category_key" + app:title="@string/settings_github_update"> + <Preference + app:selectable="false" + app:summary="@string/settings_github_update_summary" /> + <SwitchPreference + android:title="@string/settings_github_update_title" + android:defaultValue="true" + android:key="github_update_check" /> + </PreferenceCategory> + + <PreferenceCategory app:title="@string/settings_about_title"> + <Preference + app:selectable="false" + app:summary="@string/settings_about_summary" /> + + <Preference + android:key="version" + app:summary="@string/settings_version_summary" + app:title="@string/settings_version_title" /> + + <Preference + app:summary="@string/settings_github_summary" + app:title="@string/settings_github_title"> + <intent + android:action="android.intent.action.VIEW" + android:data="@string/settings_github_link" /> + </Preference> + + <Preference + app:summary="@string/settings_support_summary" + app:title="@string/settings_support_title"> + <intent + android:action="android.intent.action.VIEW" + android:data="@string/settings_support_discussion_link" /> + </Preference> + + <Preference + app:summary="@string/undraw_thanks" + app:title="@string/undraw_page"> + <intent + android:action="android.intent.action.VIEW" + android:data="@string/undraw_url" /> + </Preference> + </PreferenceCategory> +</PreferenceScreen> \ No newline at end of file diff --git a/app/src/main/res/xml/locale_config.xml b/app/src/main/res/xml/locale_config.xml new file mode 100644 index 0000000..2838b57 --- /dev/null +++ b/app/src/main/res/xml/locale_config.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<locale-config xmlns:android="http://schemas.android.com/apk/res/android"> + <locale android:name="en"/> <!-- English --> + <locale android:name="de-DE"/> <!-- German --> + <locale android:name="fr-FR"/> <!-- French --> + <locale android:name="zh-CN"/> <!-- Simplified Chinese--> + <locale android:name="ko-KR"/> <!-- Korean--> + <locale android:name="pt-BR"/> <!-- Brazilian Portuguese --> + <locale android:name="it-IT"/> <!-- Italian --> + <locale android:name="ru-RU"/> <!-- Russian --> + <locale android:name="es-ES"/> <!-- Spanish (Spain) --> + <locale android:name="pl-PL"/> <!-- Polish --> + <locale android:name="tr-TR"/> <!-- Turkish --> +</locale-config> diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..bb6ab93 --- /dev/null +++ b/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<network-security-config> + <base-config cleartextTrafficPermitted="true"> + <trust-anchors> + <certificates src="system" /> + <certificates src="user" /> + </trust-anchors> + </base-config> +</network-security-config> \ No newline at end of file diff --git a/app/src/main/res/xml/widget_info.xml b/app/src/main/res/xml/widget_info.xml new file mode 100644 index 0000000..03e072c --- /dev/null +++ b/app/src/main/res/xml/widget_info.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" + android:minWidth="250dp" + android:minHeight="64dp" + android:updatePeriodMillis="0" + android:resizeMode="horizontal|vertical" + android:initialLayout="@layout/widget_layout_compact" + android:previewImage="@drawable/ic_splash_logo" + android:previewLayout="@layout/widget_preview_compact" + android:widgetCategory="home_screen|keyguard" /> diff --git a/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaBrowserTree.kt b/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaBrowserTree.kt new file mode 100644 index 0000000..f88f9b6 --- /dev/null +++ b/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaBrowserTree.kt @@ -0,0 +1,497 @@ +package com.cappielloantonio.tempo.service + +import android.net.Uri +import androidx.lifecycle.LifecycleOwner +import androidx.media3.common.MediaItem +import androidx.media3.common.MediaItem.SubtitleConfiguration +import androidx.media3.common.MediaMetadata +import androidx.media3.session.LibraryResult +import com.cappielloantonio.tempo.repository.AutomotiveRepository +import com.cappielloantonio.tempo.util.Preferences.getServerId +import com.google.common.collect.ImmutableList +import com.google.common.util.concurrent.Futures +import com.google.common.util.concurrent.ListenableFuture +import com.google.common.util.concurrent.SettableFuture + +object MediaBrowserTree { + + private lateinit var automotiveRepository: AutomotiveRepository + + private var treeNodes: MutableMap<String, MediaItemNode> = mutableMapOf() + + private var isInitialized = false + + // Root + private const val ROOT_ID = "[rootID]" + + // First level + private const val HOME_ID = "[homeID]" + private const val LIBRARY_ID = "[libraryID]" + private const val OTHER_ID = "[otherID]" + + // Second level HOME_ID + private const val MOST_PLAYED_ID = "[mostPlayedID]" + private const val LAST_PLAYED_ID = "[lastPlayedID]" + private const val RECENTLY_ADDED_ID = "[recentlyAddedID]" + private const val RECENT_SONGS_ID = "[recentSongsID]" + private const val MADE_FOR_YOU_ID = "[madeForYouID]" + private const val STARRED_TRACKS_ID = "[starredTracksID]" + private const val STARRED_ALBUMS_ID = "[starredAlbumsID]" + private const val STARRED_ARTISTS_ID = "[starredArtistsID]" + private const val RANDOM_ID = "[randomID]" + + // Second level LIBRARY_ID + private const val FOLDER_ID = "[folderID]" + private const val INDEX_ID = "[indexID]" + private const val DIRECTORY_ID = "[directoryID]" + private const val PLAYLIST_ID = "[playlistID]" + + // Second level OTHER_ID + private const val PODCAST_ID = "[podcastID]" + private const val RADIO_ID = "[radioID]" + + private const val ALBUM_ID = "[albumID]" + private const val ARTIST_ID = "[artistID]" + + private class MediaItemNode(val item: MediaItem) { + private val children: MutableList<MediaItem> = ArrayList() + + fun addChild(childID: String) { + this.children.add(treeNodes[childID]!!.item) + } + + fun getChildren(): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> { + val listenableFuture = SettableFuture.create<LibraryResult<ImmutableList<MediaItem>>>() + val libraryResult = LibraryResult.ofItemList(children, null) + + listenableFuture.set(libraryResult) + + return listenableFuture + } + } + + private fun buildMediaItem( + title: String, + mediaId: String, + isPlayable: Boolean, + isBrowsable: Boolean, + mediaType: @MediaMetadata.MediaType Int, + subtitleConfigurations: List<SubtitleConfiguration> = mutableListOf(), + album: String? = null, + artist: String? = null, + genre: String? = null, + sourceUri: Uri? = null, + imageUri: Uri? = null + ): MediaItem { + val metadata = + MediaMetadata.Builder() + .setAlbumTitle(album) + .setTitle(title) + .setArtist(artist) + .setGenre(genre) + .setIsBrowsable(isBrowsable) + .setIsPlayable(isPlayable) + .setArtworkUri(imageUri) + .setMediaType(mediaType) + .build() + + return MediaItem.Builder() + .setMediaId(mediaId) + .setSubtitleConfigurations(subtitleConfigurations) + .setMediaMetadata(metadata) + .setUri(sourceUri) + .build() + } + + fun initialize(automotiveRepository: AutomotiveRepository) { + this.automotiveRepository = automotiveRepository + + if (isInitialized) return + + isInitialized = true + + // Root level + + treeNodes[ROOT_ID] = + MediaItemNode( + buildMediaItem( + title = "Root Folder", + mediaId = ROOT_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + // First level + + treeNodes[HOME_ID] = + MediaItemNode( + buildMediaItem( + title = "Home", + mediaId = HOME_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[LIBRARY_ID] = + MediaItemNode( + buildMediaItem( + title = "Library", + mediaId = LIBRARY_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[OTHER_ID] = + MediaItemNode( + buildMediaItem( + title = "Other", + mediaId = OTHER_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[ROOT_ID]!!.addChild(HOME_ID) + treeNodes[ROOT_ID]!!.addChild(LIBRARY_ID) + treeNodes[ROOT_ID]!!.addChild(OTHER_ID) + + // Second level HOME_ID + + treeNodes[MOST_PLAYED_ID] = + MediaItemNode( + buildMediaItem( + title = "Most played", + mediaId = MOST_PLAYED_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS + ) + ) + + treeNodes[LAST_PLAYED_ID] = + MediaItemNode( + buildMediaItem( + title = "Last played", + mediaId = LAST_PLAYED_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS + ) + ) + + treeNodes[RECENTLY_ADDED_ID] = + MediaItemNode( + buildMediaItem( + title = "Recently added", + mediaId = RECENTLY_ADDED_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS + ) + ) + + treeNodes[RECENT_SONGS_ID] = + MediaItemNode( + buildMediaItem( + title = "Recent songs", + mediaId = RECENT_SONGS_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[MADE_FOR_YOU_ID] = + MediaItemNode( + buildMediaItem( + title = "Made for you", + mediaId = MADE_FOR_YOU_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_PLAYLISTS + ) + ) + + treeNodes[STARRED_TRACKS_ID] = + MediaItemNode( + buildMediaItem( + title = "Starred tracks", + mediaId = STARRED_TRACKS_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[STARRED_ALBUMS_ID] = + MediaItemNode( + buildMediaItem( + title = "Starred albums", + mediaId = STARRED_ALBUMS_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS + ) + ) + + treeNodes[STARRED_ARTISTS_ID] = + MediaItemNode( + buildMediaItem( + title = "Starred artists", + mediaId = STARRED_ARTISTS_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_ARTISTS + ) + ) + + treeNodes[RANDOM_ID] = + MediaItemNode( + buildMediaItem( + title = "Random", + mediaId = RANDOM_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[HOME_ID]!!.addChild(MOST_PLAYED_ID) + treeNodes[HOME_ID]!!.addChild(LAST_PLAYED_ID) + treeNodes[HOME_ID]!!.addChild(RECENTLY_ADDED_ID) + treeNodes[HOME_ID]!!.addChild(RECENT_SONGS_ID) + treeNodes[HOME_ID]!!.addChild(MADE_FOR_YOU_ID) + treeNodes[HOME_ID]!!.addChild(STARRED_TRACKS_ID) + treeNodes[HOME_ID]!!.addChild(STARRED_ALBUMS_ID) + treeNodes[HOME_ID]!!.addChild(STARRED_ARTISTS_ID) + treeNodes[HOME_ID]!!.addChild(RANDOM_ID) + + // Second level LIBRARY_ID + + treeNodes[FOLDER_ID] = + MediaItemNode( + buildMediaItem( + title = "Folders", + mediaId = FOLDER_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_MIXED + ) + ) + + treeNodes[PLAYLIST_ID] = + MediaItemNode( + buildMediaItem( + title = "Playlists", + mediaId = PLAYLIST_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_PLAYLISTS + ) + ) + + treeNodes[LIBRARY_ID]!!.addChild(FOLDER_ID) + treeNodes[LIBRARY_ID]!!.addChild(PLAYLIST_ID) + + // Second level OTHER_ID + + treeNodes[PODCAST_ID] = + MediaItemNode( + buildMediaItem( + title = "Podcasts", + mediaId = PODCAST_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_PODCASTS + ) + ) + + treeNodes[RADIO_ID] = + MediaItemNode( + buildMediaItem( + title = "Radio stations", + mediaId = RADIO_ID, + isPlayable = false, + isBrowsable = true, + mediaType = MediaMetadata.MEDIA_TYPE_FOLDER_RADIO_STATIONS + ) + ) + + treeNodes[OTHER_ID]!!.addChild(PODCAST_ID) + treeNodes[OTHER_ID]!!.addChild(RADIO_ID) + } + + fun getRootItem(): MediaItem { + return treeNodes[ROOT_ID]!!.item + } + + fun getChildren( + id: String + ): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> { + return when (id) { + ROOT_ID -> treeNodes[ROOT_ID]?.getChildren()!! + HOME_ID -> treeNodes[HOME_ID]?.getChildren()!! + LIBRARY_ID -> treeNodes[LIBRARY_ID]?.getChildren()!! + OTHER_ID -> treeNodes[OTHER_ID]?.getChildren()!! + + MOST_PLAYED_ID -> automotiveRepository.getAlbums(id, "frequent", 100) + LAST_PLAYED_ID -> automotiveRepository.getAlbums(id, "recent", 100) + RECENTLY_ADDED_ID -> automotiveRepository.getAlbums(id, "newest", 100) + RECENT_SONGS_ID -> automotiveRepository.getRecentlyPlayedSongs(getServerId(),100) + MADE_FOR_YOU_ID -> automotiveRepository.getStarredArtists(id) + STARRED_TRACKS_ID -> automotiveRepository.starredSongs + STARRED_ALBUMS_ID -> automotiveRepository.getStarredAlbums(id) + STARRED_ARTISTS_ID -> automotiveRepository.getStarredArtists(id) + RANDOM_ID -> automotiveRepository.getRandomSongs(100) + FOLDER_ID -> automotiveRepository.getMusicFolders(id) + PLAYLIST_ID -> automotiveRepository.getPlaylists(id) + PODCAST_ID -> automotiveRepository.getNewestPodcastEpisodes(100) + RADIO_ID -> automotiveRepository.internetRadioStations + + else -> { + if (id.startsWith(MOST_PLAYED_ID)) { + return automotiveRepository.getAlbumTracks( + id.removePrefix( + MOST_PLAYED_ID + ) + ) + } + + if (id.startsWith(LAST_PLAYED_ID)) { + return automotiveRepository.getAlbumTracks( + id.removePrefix( + LAST_PLAYED_ID + ) + ) + } + + if (id.startsWith(RECENTLY_ADDED_ID)) { + return automotiveRepository.getAlbumTracks( + id.removePrefix( + RECENTLY_ADDED_ID + ) + ) + } + + if (id.startsWith(MADE_FOR_YOU_ID)) { + return automotiveRepository.getMadeForYou( + id.removePrefix( + MADE_FOR_YOU_ID + ), + 20 + ) + } + + if (id.startsWith(STARRED_ALBUMS_ID)) { + return automotiveRepository.getAlbumTracks( + id.removePrefix( + STARRED_ALBUMS_ID + ) + ) + } + + if (id.startsWith(STARRED_ARTISTS_ID)) { + return automotiveRepository.getArtistAlbum( + STARRED_ALBUMS_ID, + id.removePrefix( + STARRED_ARTISTS_ID + ) + ) + } + + if (id.startsWith(FOLDER_ID)) { + return automotiveRepository.getIndexes( + INDEX_ID, + id.removePrefix( + FOLDER_ID + ) + ) + } + + if (id.startsWith(INDEX_ID)) { + return automotiveRepository.getDirectories( + DIRECTORY_ID, + id.removePrefix( + INDEX_ID + ) + ) + } + + if (id.startsWith(DIRECTORY_ID)) { + return automotiveRepository.getDirectories( + DIRECTORY_ID, + id.removePrefix( + DIRECTORY_ID + ) + ) + } + + if (id.startsWith(PLAYLIST_ID)) { + return automotiveRepository.getPlaylistSongs( + id.removePrefix( + PLAYLIST_ID + ) + ) + } + + if (id.startsWith(ALBUM_ID)) { + return automotiveRepository.getAlbumTracks( + id.removePrefix( + ALBUM_ID + ) + ) + } + + if (id.startsWith(ARTIST_ID)) { + return automotiveRepository.getArtistAlbum( + ALBUM_ID, + id.removePrefix( + ARTIST_ID + ) + ) + } + + return Futures.immediateFuture(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE)) + } + } + } + + // https://github.com/androidx/media/issues/156 + fun getItems(mediaItems: List<MediaItem>): List<MediaItem> { + val updatedMediaItems = ArrayList<MediaItem>() + + mediaItems.forEach { + if (it.localConfiguration?.uri != null) { + updatedMediaItems.add(it) + } else { + val sessionMediaItem = automotiveRepository.getSessionMediaItem(it.mediaId) + + if (sessionMediaItem != null) { + var toAdd = automotiveRepository.getMetadatas(sessionMediaItem.timestamp!!) + val index = toAdd.indexOfFirst { mediaItem -> mediaItem.mediaId == it.mediaId } + + toAdd = toAdd.subList(index, toAdd.size) + + updatedMediaItems.addAll(toAdd) + } + } + } + + return updatedMediaItems + } + + fun search(query: String): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> { + return automotiveRepository.search( + query, + ALBUM_ID, + ARTIST_ID + ) + } +} diff --git a/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaLibraryServiceCallback.kt b/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaLibraryServiceCallback.kt new file mode 100644 index 0000000..1bc0b15 --- /dev/null +++ b/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaLibraryServiceCallback.kt @@ -0,0 +1,396 @@ +package com.cappielloantonio.tempo.service + +import android.content.Context +import android.os.Bundle +import android.util.Log +import androidx.annotation.OptIn +import androidx.concurrent.futures.CallbackToFutureAdapter +import androidx.media3.common.HeartRating +import androidx.media3.common.MediaItem +import androidx.media3.common.MediaMetadata +import androidx.media3.common.Player +import androidx.media3.common.Rating +import androidx.media3.common.util.UnstableApi +import androidx.media3.session.CommandButton +import androidx.media3.session.LibraryResult +import androidx.media3.session.MediaConstants +import androidx.media3.session.MediaLibraryService +import androidx.media3.session.MediaSession +import androidx.media3.session.SessionCommand +import androidx.media3.session.SessionError +import androidx.media3.session.SessionResult +import com.cappielloantonio.tempo.App +import com.cappielloantonio.tempo.R +import com.cappielloantonio.tempo.repository.AutomotiveRepository +import com.cappielloantonio.tempo.subsonic.base.ApiResponse +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_HEART_LOADING +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_HEART_OFF +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_HEART_ON +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF +import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON +import com.google.common.collect.ImmutableList +import com.cappielloantonio.tempo.util.Preferences +import com.google.common.util.concurrent.Futures +import com.google.common.util.concurrent.ListenableFuture +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + +open class MediaLibrarySessionCallback( + context: Context, + automotiveRepository: AutomotiveRepository +) : + MediaLibraryService.MediaLibrarySession.Callback { + + init { + MediaBrowserTree.initialize(automotiveRepository) + } + + private val customCommandToggleShuffleModeOn = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_shuffle_on_description)) + .setSessionCommand( + SessionCommand( + CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON, Bundle.EMPTY + ) + ).setIconResId(R.drawable.exo_icon_shuffle_off).build() + + private val customCommandToggleShuffleModeOff = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_shuffle_off_description)) + .setSessionCommand( + SessionCommand( + CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF, Bundle.EMPTY + ) + ).setIconResId(R.drawable.exo_icon_shuffle_on).build() + + private val customCommandToggleRepeatModeOff = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_repeat_off_description)) + .setSessionCommand(SessionCommand(CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF, Bundle.EMPTY)) + .setIconResId(R.drawable.exo_icon_repeat_off) + .build() + + private val customCommandToggleRepeatModeOne = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_repeat_one_description)) + .setSessionCommand(SessionCommand(CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE, Bundle.EMPTY)) + .setIconResId(R.drawable.exo_icon_repeat_one) + .build() + + private val customCommandToggleRepeatModeAll = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_repeat_all_description)) + .setSessionCommand(SessionCommand(CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL, Bundle.EMPTY)) + .setIconResId(R.drawable.exo_icon_repeat_all) + .build() + + private val customCommandToggleHeartOn = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_heart_on_description)) + .setSessionCommand( + SessionCommand( + CUSTOM_COMMAND_TOGGLE_HEART_ON, Bundle.EMPTY + ) + ) + .setIconResId(R.drawable.ic_favorite) + .build() + + private val customCommandToggleHeartOff = CommandButton.Builder() + .setDisplayName(context.getString(R.string.exo_controls_heart_off_description)) + .setSessionCommand( + SessionCommand(CUSTOM_COMMAND_TOGGLE_HEART_OFF, Bundle.EMPTY) + ) + .setIconResId(R.drawable.ic_favorites_outlined) + .build() + + // Fake Command while waiting for like update command + private val customCommandToggleHeartLoading = CommandButton.Builder() + .setDisplayName(context.getString(R.string.cast_expanded_controller_loading)) + .setSessionCommand( + SessionCommand(CUSTOM_COMMAND_TOGGLE_HEART_LOADING, Bundle.EMPTY) + ) + .setIconResId(R.drawable.ic_bookmark_sync) + .build() + + private val customLayoutCommandButtons = listOf( + customCommandToggleShuffleModeOn, + customCommandToggleShuffleModeOff, + customCommandToggleRepeatModeOff, + customCommandToggleRepeatModeOne, + customCommandToggleRepeatModeAll, + customCommandToggleHeartOn, + customCommandToggleHeartOff, + customCommandToggleHeartLoading, + ) + + @OptIn(UnstableApi::class) + val mediaNotificationSessionCommands = + MediaSession.ConnectionResult.DEFAULT_SESSION_AND_LIBRARY_COMMANDS.buildUpon() + .also { builder -> + customLayoutCommandButtons.forEach { commandButton -> + commandButton.sessionCommand?.let { builder.add(it) } + } + }.build() + + @OptIn(UnstableApi::class) + override fun onConnect( + session: MediaSession, controller: MediaSession.ControllerInfo + ): MediaSession.ConnectionResult { + session.player.addListener(object : Player.Listener { + override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) { + updateMediaNotificationCustomLayout(session) + } + + override fun onRepeatModeChanged(repeatMode: Int) { + updateMediaNotificationCustomLayout(session) + } + + override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) { + updateMediaNotificationCustomLayout(session) + } + + override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) { + updateMediaNotificationCustomLayout(session) + } + }) + + // FIXME: I'm not sure this if is required anymore + if (session.isMediaNotificationController(controller) || session.isAutomotiveController( + controller + ) || session.isAutoCompanionController(controller) + ) { + return MediaSession.ConnectionResult.AcceptedResultBuilder(session) + .setAvailableSessionCommands(mediaNotificationSessionCommands) + .setCustomLayout(buildCustomLayout(session.player)) + .build() + } + + return MediaSession.ConnectionResult.AcceptedResultBuilder(session).build() + } + + // Update the mediaNotification after some changes + @OptIn(UnstableApi::class) + private fun updateMediaNotificationCustomLayout( + session: MediaSession, + isRatingPending: Boolean = false + ) { + session.setCustomLayout( + session.mediaNotificationControllerInfo!!, + buildCustomLayout(session.player, isRatingPending) + ) + } + + private fun buildCustomLayout(player: Player, isRatingPending: Boolean = false): ImmutableList<CommandButton> { + val customLayout = mutableListOf<CommandButton>() + + val showShuffle = Preferences.showShuffleInsteadOfHeart() + + if (!showShuffle) { + if (player.currentMediaItem != null && !isRatingPending) { + if ((player.mediaMetadata.userRating as HeartRating?)?.isHeart == true) { + customLayout.add(customCommandToggleHeartOn) + } else { + customLayout.add(customCommandToggleHeartOff) + } + } + } else { + customLayout.add( + if (player.shuffleModeEnabled) customCommandToggleShuffleModeOff else customCommandToggleShuffleModeOn + ) + } + + // Add repeat button + val repeatButton = when (player.repeatMode) { + Player.REPEAT_MODE_ONE -> customCommandToggleRepeatModeOne + Player.REPEAT_MODE_ALL -> customCommandToggleRepeatModeAll + else -> customCommandToggleRepeatModeOff + } + + customLayout.add(repeatButton) + return ImmutableList.copyOf(customLayout) + } + + // Setting rating without a mediaId will set the currently listened mediaId + override fun onSetRating( + session: MediaSession, + controller: MediaSession.ControllerInfo, + rating: Rating + ): ListenableFuture<SessionResult> { + return onSetRating(session, controller, session.player.currentMediaItem!!.mediaId, rating) + } + + override fun onSetRating( + session: MediaSession, + controller: MediaSession.ControllerInfo, + mediaId: String, + rating: Rating + ): ListenableFuture<SessionResult> { + val isStaring = (rating as HeartRating).isHeart + + val networkCall = if (isStaring) + App.getSubsonicClientInstance(false) + .mediaAnnotationClient + .star(mediaId, null, null) + else + App.getSubsonicClientInstance(false) + .mediaAnnotationClient + .unstar(mediaId, null, null) + + return CallbackToFutureAdapter.getFuture { completer -> + networkCall.enqueue(object : Callback<ApiResponse?> { + @OptIn(UnstableApi::class) + override fun onResponse( + call: Call<ApiResponse?>, + response: Response<ApiResponse?> + ) { + if (response.isSuccessful) { + + // Search if the media item in the player should be updated + for (i in 0 until session.player.mediaItemCount) { + val mediaItem = session.player.getMediaItemAt(i) + if (mediaItem.mediaId == mediaId) { + val newMetadata = mediaItem.mediaMetadata.buildUpon() + .setUserRating(HeartRating(isStaring)).build() + session.player.replaceMediaItem( + i, + mediaItem.buildUpon().setMediaMetadata(newMetadata).build() + ) + } + } + + updateMediaNotificationCustomLayout(session) + completer.set(SessionResult(SessionResult.RESULT_SUCCESS)) + } else { + updateMediaNotificationCustomLayout(session) + completer.set( + SessionResult( + SessionError( + response.code(), + response.message() + ) + ) + ) + } + } + + @OptIn(UnstableApi::class) + override fun onFailure(call: Call<ApiResponse?>, t: Throwable) { + updateMediaNotificationCustomLayout(session) + completer.set( + SessionResult( + SessionError( + SessionError.ERROR_UNKNOWN, + "An error as occurred" + ) + ) + ) + } + }) + } + } + + @OptIn(UnstableApi::class) + override fun onCustomCommand( + session: MediaSession, + controller: MediaSession.ControllerInfo, + customCommand: SessionCommand, + args: Bundle + ): ListenableFuture<SessionResult> { + + when (customCommand.customAction) { + CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON -> { + session.player.shuffleModeEnabled = true + updateMediaNotificationCustomLayout(session) + return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS)) + } + CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF -> { + session.player.shuffleModeEnabled = false + updateMediaNotificationCustomLayout(session) + return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS)) + } + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_OFF, + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ALL, + CUSTOM_COMMAND_TOGGLE_REPEAT_MODE_ONE -> { + val nextMode = when (session.player.repeatMode) { + Player.REPEAT_MODE_ONE -> Player.REPEAT_MODE_ALL + Player.REPEAT_MODE_OFF -> Player.REPEAT_MODE_ONE + else -> Player.REPEAT_MODE_OFF + } + session.player.repeatMode = nextMode + updateMediaNotificationCustomLayout(session) + return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS)) + } + CUSTOM_COMMAND_TOGGLE_HEART_ON, + CUSTOM_COMMAND_TOGGLE_HEART_OFF -> { + val currentRating = session.player.mediaMetadata.userRating as? HeartRating + val isCurrentlyLiked = currentRating?.isHeart ?: false + + val newLikedState = !isCurrentlyLiked + + updateMediaNotificationCustomLayout( + session, + isRatingPending = true // Show loading state + ) + return onSetRating(session, controller, HeartRating(newLikedState)) + } + else -> return Futures.immediateFuture( + SessionResult( + SessionError( + SessionError.ERROR_NOT_SUPPORTED, + customCommand.customAction + ) + ) + ) + } + } + + override fun onGetLibraryRoot( + session: MediaLibraryService.MediaLibrarySession, + browser: MediaSession.ControllerInfo, + params: MediaLibraryService.LibraryParams? + ): ListenableFuture<LibraryResult<MediaItem>> { + return Futures.immediateFuture(LibraryResult.ofItem(MediaBrowserTree.getRootItem(), params)) + } + + override fun onGetChildren( + session: MediaLibraryService.MediaLibrarySession, + browser: MediaSession.ControllerInfo, + parentId: String, + page: Int, + pageSize: Int, + params: MediaLibraryService.LibraryParams? + ): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> { + return MediaBrowserTree.getChildren(parentId) + } + + override fun onAddMediaItems( + mediaSession: MediaSession, + controller: MediaSession.ControllerInfo, + mediaItems: List<MediaItem> + ): ListenableFuture<List<MediaItem>> { + return super.onAddMediaItems( + mediaSession, + controller, + MediaBrowserTree.getItems(mediaItems) + ) + } + + override fun onSearch( + session: MediaLibraryService.MediaLibrarySession, + browser: MediaSession.ControllerInfo, + query: String, + params: MediaLibraryService.LibraryParams? + ): ListenableFuture<LibraryResult<Void>> { + session.notifySearchResultChanged(browser, query, 60, params) + return Futures.immediateFuture(LibraryResult.ofVoid()) + } + + override fun onGetSearchResult( + session: MediaLibraryService.MediaLibrarySession, + browser: MediaSession.ControllerInfo, + query: String, + page: Int, + pageSize: Int, + params: MediaLibraryService.LibraryParams? + ): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> { + return MediaBrowserTree.search(query) + } +} diff --git a/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaService.kt b/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaService.kt new file mode 100644 index 0000000..52fa8c1 --- /dev/null +++ b/app/src/tempus/java/com/cappielloantonio/tempo/service/MediaService.kt @@ -0,0 +1,467 @@ +package com.cappielloantonio.tempo.service + +import android.app.PendingIntent.FLAG_IMMUTABLE +import android.app.PendingIntent.FLAG_UPDATE_CURRENT +import android.app.TaskStackBuilder +import android.content.Intent +import android.net.ConnectivityManager +import android.net.Network +import android.net.NetworkCapabilities +import android.os.Binder +import android.os.IBinder +import android.os.Handler +import android.os.Looper +import android.util.Log +import androidx.core.content.ContextCompat +import androidx.media3.cast.CastPlayer +import androidx.media3.cast.SessionAvailabilityListener +import androidx.media3.common.AudioAttributes +import androidx.media3.common.C +import androidx.media3.common.MediaItem +import androidx.media3.common.Player +import androidx.media3.common.Tracks +import androidx.media3.common.util.UnstableApi +import androidx.media3.exoplayer.DefaultLoadControl +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.session.MediaLibraryService +import androidx.media3.session.MediaSession.ControllerInfo +import com.cappielloantonio.tempo.repository.AutomotiveRepository +import com.cappielloantonio.tempo.repository.QueueRepository +import com.cappielloantonio.tempo.ui.activity.MainActivity +import com.cappielloantonio.tempo.util.AssetLinkUtil +import com.cappielloantonio.tempo.util.Constants +import com.cappielloantonio.tempo.util.DownloadUtil +import com.cappielloantonio.tempo.util.DynamicMediaSourceFactory +import com.cappielloantonio.tempo.util.MappingUtil +import com.cappielloantonio.tempo.util.Preferences +import com.cappielloantonio.tempo.util.ReplayGainUtil +import com.cappielloantonio.tempo.widget.WidgetUpdateManager +import com.google.android.gms.cast.framework.CastContext +import com.google.android.gms.common.ConnectionResult +import com.google.android.gms.common.GoogleApiAvailability + +@UnstableApi +class MediaService : MediaLibraryService(), SessionAvailabilityListener { + private lateinit var automotiveRepository: AutomotiveRepository + private lateinit var player: ExoPlayer + private lateinit var castPlayer: CastPlayer + private lateinit var mediaLibrarySession: MediaLibrarySession + private lateinit var librarySessionCallback: MediaLibrarySessionCallback + private lateinit var networkCallback: CustomNetworkCallback + lateinit var equalizerManager: EqualizerManager + + inner class LocalBinder : Binder() { + fun getEqualizerManager(): EqualizerManager { + return this@MediaService.equalizerManager + } + } + + private val binder = LocalBinder() + + companion object { + const val ACTION_BIND_EQUALIZER = "com.cappielloantonio.tempo.service.BIND_EQUALIZER" + const val ACTION_EQUALIZER_UPDATED = "com.cappielloantonio.tempo.service.EQUALIZER_UPDATED" + } + private val widgetUpdateHandler = Handler(Looper.getMainLooper()) + private var widgetUpdateScheduled = false + private val widgetUpdateRunnable = object : Runnable { + override fun run() { + if (!player.isPlaying) { + widgetUpdateScheduled = false + return + } + updateWidget() + widgetUpdateHandler.postDelayed(this, WIDGET_UPDATE_INTERVAL_MS) + } + } + + fun updateMediaItems() { + Log.d("MediaService", "update items"); + val n = player.mediaItemCount + val k = player.currentMediaItemIndex + val current = player.currentPosition + val items = (0 .. n-1).map{i -> MappingUtil.mapMediaItem(player.getMediaItemAt(i))} + player.clearMediaItems() + player.setMediaItems(items, k, current) + } + + inner class CustomNetworkCallback : ConnectivityManager.NetworkCallback() { + var wasWifi = false + + init { + val manager = getSystemService(ConnectivityManager::class.java) + val network = manager.activeNetwork + val capabilities = manager.getNetworkCapabilities(network) + if (capabilities != null) + wasWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + } + + override fun onCapabilitiesChanged(network : Network, networkCapabilities : NetworkCapabilities) { + val isWifi = networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + if (isWifi != wasWifi) { + wasWifi = isWifi + widgetUpdateHandler.post(Runnable { + updateMediaItems() + }) + } + } + } + + override fun onCreate() { + super.onCreate() + + initializeRepository() + initializePlayer() + initializeMediaLibrarySession() + restorePlayerFromQueue() + initializePlayerListener() + initializeCastPlayer() + initializeEqualizerManager() + initializeNetworkListener() + + setPlayer( + null, + if (this::castPlayer.isInitialized && castPlayer.isCastSessionAvailable) castPlayer else player + ) + } + + override fun onGetSession(controllerInfo: ControllerInfo): MediaLibrarySession { + return mediaLibrarySession + } + + override fun onTaskRemoved(rootIntent: Intent?) { + val player = mediaLibrarySession.player + + if (!player.playWhenReady || player.mediaItemCount == 0) { + stopSelf() + } + } + + override fun onDestroy() { + releaseNetworkCallback() + equalizerManager.release() + stopWidgetUpdates() + releasePlayer() + super.onDestroy() + } + + override fun onBind(intent: Intent?): IBinder? { + // Check if the intent is for our custom equalizer binder + if (intent?.action == ACTION_BIND_EQUALIZER) { + return binder + } + // Otherwise, handle it as a normal MediaLibraryService connection + return super.onBind(intent) + } + + private fun initializeRepository() { + automotiveRepository = AutomotiveRepository() + } + + private fun initializeEqualizerManager() { + equalizerManager = EqualizerManager() + val audioSessionId = player.audioSessionId + attachEqualizerIfPossible(audioSessionId) + } + + private fun initializePlayer() { + player = ExoPlayer.Builder(this) + .setRenderersFactory(getRenderersFactory()) + .setMediaSourceFactory(DynamicMediaSourceFactory(this)) + .setAudioAttributes(AudioAttributes.DEFAULT, true) + .setHandleAudioBecomingNoisy(true) + .setWakeMode(C.WAKE_MODE_NETWORK) + .setLoadControl(initializeLoadControl()) + .build() + + player.shuffleModeEnabled = Preferences.isShuffleModeEnabled() + player.repeatMode = Preferences.getRepeatMode() + } + + @Suppress("DEPRECATION") + private fun initializeCastPlayer() { + if (GoogleApiAvailability.getInstance() + .isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS + ) { + CastContext.getSharedInstance(this, ContextCompat.getMainExecutor(this)) + .addOnSuccessListener { castContext -> + castPlayer = CastPlayer(castContext) + castPlayer.setSessionAvailabilityListener(this@MediaService) + + if (castPlayer.isCastSessionAvailable && this::mediaLibrarySession.isInitialized) { + setPlayer(player, castPlayer) + } + } + } + } + + private fun initializeMediaLibrarySession() { + val sessionActivityPendingIntent = + TaskStackBuilder.create(this).run { + addNextIntent(Intent(this@MediaService, MainActivity::class.java)) + getPendingIntent(0, FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT) + } + + librarySessionCallback = createLibrarySessionCallback() + mediaLibrarySession = + MediaLibrarySession.Builder(this, player, librarySessionCallback) + .setSessionActivity(sessionActivityPendingIntent) + .build() + } + + private fun initializeNetworkListener() { + networkCallback = CustomNetworkCallback() + getSystemService(ConnectivityManager::class.java).registerDefaultNetworkCallback(networkCallback) + updateMediaItems() + } + + private fun restorePlayerFromQueue() { + if (player.mediaItemCount > 0) return + + val queueRepository = QueueRepository() + val storedQueue = queueRepository.media + if (storedQueue.isNullOrEmpty()) return + + val mediaItems = MappingUtil.mapMediaItems(storedQueue) + if (mediaItems.isEmpty()) return + + val lastIndex = try { + queueRepository.lastPlayedMediaIndex + } catch (_: Exception) { + 0 + }.coerceIn(0, mediaItems.size - 1) + + val lastPosition = try { + queueRepository.lastPlayedMediaTimestamp + } catch (_: Exception) { + 0L + }.let { if (it < 0L) 0L else it } + + player.setMediaItems(mediaItems, lastIndex, lastPosition) + player.prepare() + updateWidget() + } + + private fun createLibrarySessionCallback(): MediaLibrarySessionCallback { + return MediaLibrarySessionCallback(this, automotiveRepository) + } + + private fun initializePlayerListener() { + player.addListener(object : Player.Listener { + override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) { + if (mediaItem == null) return + + if (reason == Player.MEDIA_ITEM_TRANSITION_REASON_SEEK || reason == Player.MEDIA_ITEM_TRANSITION_REASON_AUTO) { + MediaManager.setLastPlayedTimestamp(mediaItem) + } + updateWidget() + } + + override fun onTracksChanged(tracks: Tracks) { + ReplayGainUtil.setReplayGain(player, tracks) + + val currentMediaItem = player.currentMediaItem + if (currentMediaItem != null && currentMediaItem.mediaMetadata.extras != null) { + MediaManager.scrobble(currentMediaItem, false) + } + + if (player.currentMediaItemIndex + 1 == player.mediaItemCount) + MediaManager.continuousPlay(player.currentMediaItem) + } + + override fun onIsPlayingChanged(isPlaying: Boolean) { + if (!isPlaying) { + MediaManager.setPlayingPausedTimestamp( + player.currentMediaItem, + player.currentPosition + ) + } else { + MediaManager.scrobble(player.currentMediaItem, false) + } + if (isPlaying) { + scheduleWidgetUpdates() + } else { + stopWidgetUpdates() + } + updateWidget() + } + + override fun onPlaybackStateChanged(playbackState: Int) { + super.onPlaybackStateChanged(playbackState) + + if (!player.hasNextMediaItem() && + playbackState == Player.STATE_ENDED && + player.mediaMetadata.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC + ) { + MediaManager.scrobble(player.currentMediaItem, true) + MediaManager.saveChronology(player.currentMediaItem) + } + updateWidget() + } + + override fun onPositionDiscontinuity( + oldPosition: Player.PositionInfo, + newPosition: Player.PositionInfo, + reason: Int + ) { + super.onPositionDiscontinuity(oldPosition, newPosition, reason) + + if (reason == Player.DISCONTINUITY_REASON_AUTO_TRANSITION) { + if (oldPosition.mediaItem?.mediaMetadata?.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC) { + MediaManager.scrobble(oldPosition.mediaItem, true) + MediaManager.saveChronology(oldPosition.mediaItem) + } + + if (newPosition.mediaItem?.mediaMetadata?.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC) { + MediaManager.setLastPlayedTimestamp(newPosition.mediaItem) + } + } + } + + override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) { + Preferences.setShuffleModeEnabled(shuffleModeEnabled) + } + + override fun onRepeatModeChanged(repeatMode: Int) { + Preferences.setRepeatMode(repeatMode) + } + + override fun onAudioSessionIdChanged(audioSessionId: Int) { + attachEqualizerIfPossible(audioSessionId) + } + }) + if (player.isPlaying) { + scheduleWidgetUpdates() + } + } + + private fun updateWidget() { + val mi = player.currentMediaItem + val title = mi?.mediaMetadata?.title?.toString() + ?: mi?.mediaMetadata?.extras?.getString("title") + val artist = mi?.mediaMetadata?.artist?.toString() + ?: mi?.mediaMetadata?.extras?.getString("artist") + val album = mi?.mediaMetadata?.albumTitle?.toString() + ?: mi?.mediaMetadata?.extras?.getString("album") + val extras = mi?.mediaMetadata?.extras + val coverId = extras?.getString("coverArtId") + val songLink = extras?.getString("assetLinkSong") + ?: AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_SONG, extras?.getString("id")) + val albumLink = extras?.getString("assetLinkAlbum") + ?: AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ALBUM, extras?.getString("albumId")) + val artistLink = extras?.getString("assetLinkArtist") + ?: AssetLinkUtil.buildLink(AssetLinkUtil.TYPE_ARTIST, extras?.getString("artistId")) + val position = player.currentPosition.takeIf { it != C.TIME_UNSET } ?: 0L + val duration = player.duration.takeIf { it != C.TIME_UNSET } ?: 0L + WidgetUpdateManager.updateFromState( + this, + title ?: "", + artist ?: "", + album ?: "", + coverId, + player.isPlaying, + player.shuffleModeEnabled, + player.repeatMode, + position, + duration, + songLink, + albumLink, + artistLink + ) + } + + private fun scheduleWidgetUpdates() { + if (widgetUpdateScheduled) return + widgetUpdateHandler.postDelayed(widgetUpdateRunnable, WIDGET_UPDATE_INTERVAL_MS) + widgetUpdateScheduled = true + } + + private fun stopWidgetUpdates() { + if (!widgetUpdateScheduled) return + widgetUpdateHandler.removeCallbacks(widgetUpdateRunnable) + widgetUpdateScheduled = false + } + + private fun initializeLoadControl(): DefaultLoadControl { + return DefaultLoadControl.Builder() + .setBufferDurationsMs( + (DefaultLoadControl.DEFAULT_MIN_BUFFER_MS * Preferences.getBufferingStrategy()).toInt(), + (DefaultLoadControl.DEFAULT_MAX_BUFFER_MS * Preferences.getBufferingStrategy()).toInt(), + DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS, + DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS + ) + .build() + } + + private fun getQueueFromPlayer(player: Player): List<MediaItem> { + val queue = mutableListOf<MediaItem>() + for (i in 0 until player.mediaItemCount) { + queue.add(player.getMediaItemAt(i)) + } + return queue + } + + private fun setPlayer(oldPlayer: Player?, newPlayer: Player) { + if (oldPlayer === newPlayer) return + oldPlayer?.stop() + mediaLibrarySession.player = newPlayer + } + + private fun releasePlayer() { + if (this::castPlayer.isInitialized) castPlayer.setSessionAvailabilityListener(null) + if (this::castPlayer.isInitialized) castPlayer.release() + player.release() + mediaLibrarySession.release() + automotiveRepository.deleteMetadata() + } + + private fun releaseNetworkCallback() { + getSystemService(ConnectivityManager::class.java).unregisterNetworkCallback(networkCallback) + } + + private fun getRenderersFactory() = DownloadUtil.buildRenderersFactory(this, false) + + override fun onCastSessionAvailable() { + val currentQueue = getQueueFromPlayer(player) + val currentIndex = player.currentMediaItemIndex + val currentPosition = player.currentPosition + val isPlaying = player.playWhenReady + + setPlayer(player, castPlayer) + + castPlayer.setMediaItems(currentQueue, currentIndex, currentPosition) + castPlayer.playWhenReady = isPlaying + castPlayer.prepare() + } + + override fun onCastSessionUnavailable() { + val currentQueue = getQueueFromPlayer(castPlayer) + val currentIndex = castPlayer.currentMediaItemIndex + val currentPosition = castPlayer.currentPosition + val isPlaying = castPlayer.playWhenReady + + setPlayer(castPlayer, player) + + player.setMediaItems(currentQueue, currentIndex, currentPosition) + player.playWhenReady = isPlaying + player.prepare() + } + + private fun attachEqualizerIfPossible(audioSessionId: Int): Boolean { + if (audioSessionId == 0 || audioSessionId == -1) return false + val attached = equalizerManager.attachToSession(audioSessionId) + if (attached) { + val enabled = Preferences.isEqualizerEnabled() + equalizerManager.setEnabled(enabled) + val bands = equalizerManager.getNumberOfBands() + val savedLevels = Preferences.getEqualizerBandLevels(bands) + for (i in 0 until bands) { + equalizerManager.setBandLevel(i.toShort(), savedLevels[i]) + } + sendBroadcast(Intent(ACTION_EQUALIZER_UPDATED)) + } + return attached + } +} + +private const val WIDGET_UPDATE_INTERVAL_MS = 1000L diff --git a/app/src/tempus/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java b/app/src/tempus/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java new file mode 100644 index 0000000..d3f36bb --- /dev/null +++ b/app/src/tempus/java/com/cappielloantonio/tempo/ui/fragment/ToolbarFragment.java @@ -0,0 +1,67 @@ +package com.cappielloantonio.tempo.ui.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.FragmentToolbarBinding; +import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.google.android.gms.cast.framework.CastButtonFactory; + +@UnstableApi +public class ToolbarFragment extends Fragment { + private static final String TAG = "ToolbarFragment"; + + private FragmentToolbarBinding bind; + private MainActivity activity; + + public ToolbarFragment() { + // Required empty public constructor + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.main_page_menu, menu); + CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.media_route_menu_item); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + + bind = FragmentToolbarBinding.inflate(inflater, container, false); + View view = bind.getRoot(); + + return view; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_search) { + activity.navController.navigate(R.id.searchFragment); + return true; + } else if (item.getItemId() == R.id.action_settings) { + activity.navController.navigate(R.id.settingsFragment); + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/app/src/tempus/java/com/cappielloantonio/tempo/util/Flavors.java b/app/src/tempus/java/com/cappielloantonio/tempo/util/Flavors.java new file mode 100644 index 0000000..1ec0cd9 --- /dev/null +++ b/app/src/tempus/java/com/cappielloantonio/tempo/util/Flavors.java @@ -0,0 +1,17 @@ +package com.cappielloantonio.tempo.util; + +import android.content.Context; + +import androidx.core.content.ContextCompat; + +import com.google.android.gms.cast.framework.CastContext; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GoogleApiAvailability; + +public class Flavors { + @SuppressWarnings("deprecation") + public static void initializeCastContext(Context context) { + if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS) + CastContext.getSharedInstance(context, ContextCompat.getMainExecutor(context)); + } +} diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..330adb9 --- /dev/null +++ b/build.gradle @@ -0,0 +1,21 @@ +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:8.8.0' + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0' + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +tasks.register('clean', Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/1.txt b/fastlane/metadata/android/en-US/changelogs/1.txt new file mode 100644 index 0000000..f8a032f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.txt @@ -0,0 +1 @@ +Initial release diff --git a/fastlane/metadata/android/en-US/changelogs/2.txt b/fastlane/metadata/android/en-US/changelogs/2.txt new file mode 100644 index 0000000..614877e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2.txt @@ -0,0 +1,2 @@ +chore: updated tempo references to tempus +fix: Crash on share no expiration date or field returned from api diff --git a/fastlane/metadata/android/en-US/changelogs/3.txt b/fastlane/metadata/android/en-US/changelogs/3.txt new file mode 100644 index 0000000..b9cf745 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.txt @@ -0,0 +1,10 @@ +Update Spanish (es-ES) translation +Shuffle for artists without using `getTopSongs` +Update USAGE.md with instant mix detils +Sort artists by album count +Fix downloaded tab performance +Remove NestedScrollViews for fragment_album_page +Playlist page should not snap +Do not override getItemViewType and getItemId +Update media3 dependencies +Update MediaItems after network change diff --git a/fastlane/metadata/android/en-US/changelogs/4.txt b/fastlane/metadata/android/en-US/changelogs/4.txt new file mode 100644 index 0000000..2e208a6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/4.txt @@ -0,0 +1,2 @@ +reverts change causing album disc/track list to get out of order +Add listener to enable equalizer when audioSessionId diff --git a/fastlane/metadata/android/en-US/changelogs/5.txt b/fastlane/metadata/android/en-US/changelogs/5.txt new file mode 100644 index 0000000..a325892 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5.txt @@ -0,0 +1,5 @@ +Equalizer fix in main build variant +fix Images not filling holder in discovery +Make artist and album clickable on home discovery +Implement scroll to currently playing feature +Shuffling genres now queuing 500 tracks vs 25 diff --git a/fastlane/metadata/android/en-US/changelogs/6.txt b/fastlane/metadata/android/en-US/changelogs/6.txt new file mode 100644 index 0000000..40098be --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.txt @@ -0,0 +1,5 @@ +Update russian strings.xml by @Sevinfolds in https://github.com/eddyizm/tempus/pull/249 +Disallow duplicate songs in queue by @eddyizm in https://github.com/eddyizm/tempus/pull/252 +Fixed crash when viewing share by @drakeerv in https://github.com/eddyizm/tempus/pull/255 +Update Polish translation by @skajmer in https://github.com/eddyizm/tempus/pull/257 +Add podcast channel visible when empty podcasts by @eddyizm in https://github.com/eddyizm/tempus/pull/260 diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..957b128 --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,19 @@ +Tempus is an open-source and lightweight music client for Subsonic, designed and built natively for Android. It provides a seamless and intuitive music streaming experience, allowing you to access and play your Subsonic music library directly from your Android device. + +Features + +- Subsonic Integration: Tempus seamlessly integrates with your Subsonic server, providing you with easy access to your entire music collection on the go. +- Sleek and Intuitive UI: Enjoy a clean and user-friendly interface designed to enhance your music listening experience, tailored to your preferences and listening history. +- Browse and Search: Easily navigate through your music library using various browsing and searching options, including artists, albums, genres, playlists, decades and more. +- Streaming and Offline Mode: Stream music directly from your Subsonic server. Offline mode is currently under active development and may have limitations when using multiple servers. +- Playlist Management: Create, edit, and manage playlists to curate your perfect music collection. +- Gapless Playback: Experience uninterrupted playback with gapless listening mode. +- Scrobbling Integration: Optionally integrate Tempus with Last.fm or Listenbrainz.org to scrobble your played tracks, gather music insights, and further personalize your music recommendations, if supported by your Subsonic server. +- Podcasts and Radio: If your Subsonic server supports it, listen to podcasts and radio shows directly within Tempus, expanding your audio entertainment options. +- Transcoding Support: Activate transcoding of tracks on your Subsonic server, allowing you to set a transcoding profile for optimized streaming directly from the app. This feature requires support from your Subsonic server. +- Multiple Libraries: Tempus handles multi-library setups gracefully. They are displayed as Library folders. +- Equalizer: Option to use in app equalizer. +- Widget: New widget to keeping the basic controls on your screen at all times. +- Available in 11 languages: Currently in Chinese, French, German, Italian, Korean, Polish, Portuguese, Russion, Spanish and Turkish + +*Chromecast/Android Auto Not Supported: These features require google libraries and are only available in the github apk.* \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4790599c2f0683ed677d1f1e43b7c4643fe009e6 GIT binary patch literal 11413 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d9324d3dc2b58aee61efc90e9207026fc7c5886e GIT binary patch literal 140077 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1_light.png new file mode 100644 index 0000000000000000000000000000000000000000..129a627a4940dde6a998d9218556f70be2e8cf2c GIT binary patch literal 145595 zcmb@Nbx<5}llSr94#C~s-Q8t_Yp~$%?(Po3VIjB^+%32UcXxNa&2x2C@4xTWQ8mRb zv+T_D^soEdpYDlNQIbZ2$Abq014ELPkpO^!fg^)~K^VZofc_%6csd381?M26?F<Hn zJn(M=Po+o32LmGkla&xv^T<BSanB}fYV9VLWp|!jHt2Y$=3lao!T;U^#j=hwhv7sj z0$&CNAuA*HN3m0uru7cn%RUUOz{IOTv4NIpYh!gq_w4-FxXjBt>*@QpwYX0YGS$(u zPh4k3B1h8XxaQ@nl^cbE1tW5Jf8v*$Tf2b%?WdjXkp69lz1T-j?w;+Z`sA^FtriDx zq}W)R;-k4=D3D(eB}S{V7FSnRXqcEb7<~6fQyH{c0$kcK0!W+0ao9}LZD$YSvEo<| zBMV`{NTEhdof-sGF$+?}V8H_xejcR#kdv3Y?qJl+8Qag`^2Hm<P@H|eJMPcV`Qp3q z!9!q(6T>R-y4KL~G>hQk=4R(qSzb;}?Q;(Gu;d%BTxqiL=GpP_qULw?PHg99)7u9v zaDSH!oU;Ur<9*3EXC_b<e5at-s3cKW5s`I-qxRq3yD*83Me4XYp;z!fBxDl!6!Y2q zW$BCIzV7=KbTy{O^~FAix|;>%<yH+|npHX@osa7c+Ap>G;nxj$A3j+wquWnp4s#RS zY|abgj6~KJrH3V1_Ivo$zQN+iLN3vscv*PQTfxhSM0)Kxx^29~^aQrHwmygazf=u0 zHgX<%zcehHr5CukxYd99nP}IW%0AXLSufuF-R&Bk<i8wmJf6$owWiud#&6c{B-Zca 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 U9j6J000VqvBoxJ~AV$Ie3xxug4*&oF literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..bb85d24acaf42c8ce5efc0358a2d80eb872e5a28 GIT binary patch literal 141337 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%0DDt-Old^86`| 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 WR8iqkd(TM&Y-%c6%JAp!KmG^(AD;FA literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2_light.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f7f1c576618acca8fa07fcd704e42afb258011 GIT binary patch literal 141312 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 E0OoT&ssI20 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9b8c89da2108d0869cec2eae361ff5ca8ddd51 GIT binary patch literal 84525 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3_light.png new file mode 100644 index 0000000000000000000000000000000000000000..a89bee87c684deef475f1a463b2e142a31c7b1a7 GIT binary patch literal 31957 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 NBt>OKN`>@&{|8xm1{?qY literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..cbacb9431c5932d1e64450ff137e86795dd3f1f1 GIT binary patch literal 27934 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4_light.png new file mode 100644 index 0000000000000000000000000000000000000000..8be502c035403cfd6e1e37d9ada1c37ff8c54b30 GIT binary patch literal 27703 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7deaf432cca54371d2f4fc165c1e12cde3b7c2d7 GIT binary patch literal 17796 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 B^>Y9K literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5_light.png new file mode 100644 index 0000000000000000000000000000000000000000..62021c258c9904316d12d53f3e2a4eee90d061ff GIT binary patch literal 17737 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 Th5>&Y1)?CUB9s5Z_~U;8Y2f{{ literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/6_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/6_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a82a3efc007a6e3dd7a9e082816a6038cf31136d GIT binary patch literal 29759 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 T(F$G+iYEJ7=~cx`Bj5i8FbL;z literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/6_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/6_light.png new file mode 100644 index 0000000000000000000000000000000000000000..6f6b55b206863eb29462f792716842ba431328d8 GIT binary patch literal 30496 zcmeFYRa9JE+bxI$_W*%FVZj{&fx<ONa3{DEya?_PEO>BtcL?rKg#`!%cPS*eyPx8H zzw`e+`kd~I9;0u1^aZe4yY{ZN)?WL0<}>G9VakfqSm-3^aBy%~vNDpYaB%S0aBv6) zsK~IEkF)z@aByhftRy6qom8d8DNS6gY@J!H?BU?tGY(TNl?moaLX_N;urWt4B|@mM z#qxsSX|`$N0!z9v-%1h3A<&sQB5C5{$%a$r`D0YEiD|0f_4zX}7>T<5_$d0BNDGfJ z(fndyrOa!8rB%dX`PMhXckfW`@^V*L<58Uq&TIgmPqwrM9!|EMyR$k%hzm%Q5JrYX zLy1!Yhe3>&F=fUsV(C|-3T|1;-dkqy51RFAeZG6@VtvOOHh=^Nt^^74G9}i5t(XDB z3hU_Sj#QRKwAE%c8|ag_%s9>99`Wdh{xI?A+kSzr(bH=eZRmSAP(ezyJdkN~uv%V- z)=ZH_1PyM!D)H8O_0E^oQ33ic#j(AfL74rW%6^yLs9%-e4s8;XH#BzFG0dvfvHf{m z82oq^wW95_jDnlLer$U_#B0=r0LOSMpeBF`XU+>pCgf)sI{?4K0xx>UNS~Q~$|`|| z!c7T>o`d){2UR_Q?hlewH>Ng%?%J!R0NxW6DkJJOf9)TyZYc3L{q-p+2)?}r;i?Dd z{DDgoWd<Vh_jrKb>LE6D>vJHGBf_U3u=fbMqa;zHg2m0gBmWZp^n<?u@vWHcAj#Kn zf>eeKuh2tHD9IDBw?x}=#Y+gvzU}4E?a=Q4oZq&>V~OG9qJ4RDhku7k&4E?~L9aos zz^OA9m_xh@<?ZGKp=Tg%_uQ|cH<Jq^xpgN)bx%-P{0+evsG{Fd5mls|@p#t#-KleB zxWUqm)JQUXsxkHNmSse~;^0v_4WbYrf0W=<X=RX0U}l2r6D!PV%nw)AD2Xq@R;Sn_ zw?_C7bN7ude`}oo3r0ODKQUS0sN{D3@OadY>xISzswes*c3=+&2TSDJenR|jVFPBS z;T)lyb}4cxR3kJN@DY7OMlLm)+77m_c(BrADtoiQ2EEv(#Wlx{k{Pc@QMV&8`c6SD z&0qDns!(_%)B9PWeW!cw811}S5v$?s{k&^!r*0=|H?-eg1$?Y|cZ0u<)`m(LqzTpl z1EE;4GU`-m_&(nqdoz2{*R9rF)?b|>hJBi#<NE=Y*)8xXz%P(12rb|>d;dAmRt}rC zIQBX=eNbyq>DO`J7ZXntdlS7{GLvZ&G82eNHG_LNe_!;^*tn03#TkW5xg%j4eII(s zdZ~MxBD5m1@hR{Pf8@v#e{z?jktLAjmRtIfl50{*qE640oF*+K)ghi)K*g<*h8QKW zs9=+$U#Kw7>HKCnid>1k;8}*EU`$SxHi{OJwn;`)&fo_D2W|*5Br0~0!6L&r^1bjU zMwxlpkFtk})`=uZItfYfjfv55Y(MPd$zz`wAPJ6fvOnh8CmGKr-_Vw`?o+2TdP!cD z9b^FXM^&S#wJ6=Bj$#E_s#%YjvswM*eMNo6#8i4dQhm-<g@%JO-bsvWavIdi*GfBT zh83Ar5)`W!Ijig<sl{0h$eU?$+^3umoefnD?GCvN1rEtEu_VGJ>Lv0d(wDu`Xtb`k zPPMMyYfp<yOV)|jiCCa^Y3J7!(tP~k*>#tPEJrP48Y5NQk13b7)jwp?P}Be6R~k<m zW7=ifbpwZvZRM*<h>lx>u^s-Q_M!Em0Dnz%sba>cab~W@j>g||_wqfhsNFc{LuW2$ zU1$0WV$Uqk7SBx2>Wk?MiOcK#>wP~?4o(^FFC6Z+G9R3IM?M_zJWR?gem7OObN2h- z(Qv*;R^F!B#WTYh{a)DQp*zT8-Tdc3!R%&TX)5Dt{j~Fp{BM?}ihkQj1<PtvqT1^8 z{NIPa-BPl7pN)*IV=Wx}*Ky?ZhhGg_45xmm_@H7#G9#~3s{K)W`ZHQZ>I`&7x)O<J zhzF17l4s0T!>*+<s&Ud)$Mw{;_`qPEbng6c@sNm&1<=T+_f-<055NGRWR@txD{3ez zWol%YX6R;Y>&xr?)MsnS(-+daZi{YVY<65qTl%~Fd#S1A+T(}dgJ79pmWQ?1nNVAY z5xZM8qQQpE^z7M;t0$rZ?=j+v(oF44Va0tP%0}I2@xpdXb*@9SLl?zwhj_!fRRKS* zXOrgv_%!%k_>O>t?wanR?mo(aoC!*?8sC$~HC?KoRE|{oxpRNI|MdR}zEs@Dsmey@ zLL0^*UG83}F^5D&{UpWbHJFo}C#c=E1@a3rwDUcv1-VK3^okegnkj4w4g@%TKaaB+ zX5AQ-`us6bN<mupW3tp(uXZ2cdumie7;8*sgwyx(a4)iB5<}9il(kIIJ7YdhhFVs% zWP&W`Xz4B5lRF+}`<0&_44>)wL_Ys8iT%o9o^{;gARnyCTi{wauH`#|xSO`STBu~E zZK-bAK886W*!Ix`!(q5v^RUvZNzszel59-M-07#6Q-YK0mb`7<qGl7>0(nb^Tj*YN zJDHk*zH8Rf$GOCseb*{6d#j_xWwExlbAmJ1zY4zFXZmuT+QK4!wlP~-3&$#}13n_n zZkH=V9fs)5NW2(W=))KygpT3%PewNqeK^DSdDmEP(%(=p_9UEqlDb|z5c$lclBU7$ z(Y-G!{kE<m=isnM0mUJKG<lZ%9pIA)P02~cPMLZ+OX-6;q3#D&JHus7YQwrFi&Kv4 zlM}o}>dFT6hTsN@n0_)J<!#kjm1-43UrZ;Kjk)uX?vSUAgAIkKpHab4*-9shsET)4 z2R83*tgVwA*z5yzCv+{8f-_t1^EYDjD_bjF>>?Y%lWWd*yF?<v&)lB<8}i4WujXg6 zr~Rs|iW`WWMagsp{tB21An8--OKdNVUApSJHa+KE4~Lx(ZI`pl7%&`BU2I;m7>=|y zgBWiombOxc<2%wlDGbp%zjlokJDijaOz+QTRO|0H?RU8^@7>*!zTq8RHd{StH}@<z z?KaDKZ2Wb2B{ta;Enwl+dX%<$NUp;*#bwLoeVet>VROBFv`X?>;5|19$DI+2t^A4q zz0qIeb;xYYdvaEx6~1V4cK3Hr1rMbUlXr#<zIOO2=xp*pMNGkSuPgUBuG_Pwsa0Wx zEg^al_H4~G`!vopK9PMvuj{@$A~p7SL$=>r&uph&znOn)i98$M4|IE<JWSa<?Qe-h ztPHmEozC3Y9fMngi;v@0SXtk+CwusvA>K<o59Gv5%B5!4WHSld_#8d0pPGB~S$TZk zM0iJp+u}cnB*{kk6+RZ@yPoL(x#@wTt$VgEJyAReQp*YVPzQg~jwNbN2uCswrwo2V zm~2E8i&dXzgoCsDEGsFd?rw0<u^qoO==!(v*+k^vC^_o-Q!6^-mAwo)qxb?ZP2bUq zz)^I5YVP$)dajk{afh9!61M*2{q9SH1+U%YBGtfhTZ{Y8JO9sN@&rFy%RUG5Q~1KK z(fp9Pr-Yt8^gTabj(syG?ho$zgM|s<C^do_5%<4+gB|h<-k`&sF&e<nGMXjK{B&_% z9dN?o`vA4;mI5sKiRLYqV_={_+NB$97g%%}Y^^qr4g~@pT?_<$*zPWl$ZEPgE(3{q zEh;F8W++753Fg@KE5MGAdmqMI)aYxi`#!BUn%tsux||WH2--9f3w>2zBR<(z>KY81 z;CbI*`%85^*T?Jh>N36i2~(});$WPb@(sU0qa6-Fy4~Y3Fon~uRr}``M@n1MUm>D; zHM{qP5gI@y`y{z()nEz2S2})|59Skp&=JIp{hqdz^4wi(DQ3D1pSwMXi<J5NuJm%8 z_UG(%IVOnTyUTPdw(~;aT0tfCHjA2U%=Vh!n?z`&UKe_O>Vw?lctb^th}g8(DDu&9 zARK;gF#i6=aR#j)v7T3c+FHJs_4(yo9v2TDuaj2tkjq;P#g=8rNh{^4)E!0<Zf-D! z8l_Nnbl%ea`Niw70GPws$%8)=2TEa6P-O}ElFT)EH67)-Rj<6Jc`b*YZ%H~?tbhR+ z;E-Q8k;80Q`u5|?W+sS5r&)Q4saj@1+OHq}B2o<4>bm<b+hb?jh?oxkPGNDz4#71i zJY=OyzFiA?vo(<27hJdfXqTall$R^Kp?sb1BG}94@?b`3A7UKWb1t@wY#{7Mwa{dj z{7UMr8l6%SbfZ5S3lQkQ>kOUiaMCjBaz-P>4lyRiX8~YBfDmvGM<mz(TZeD)qvyFS zk!&#`z44K#1IK>PUZ?4+5B)nf!Nw^!Dt1t#aibJ)z7Du2uZJU8cH!T@aynqKyx8!& z%RQ86b7Hz@SveqF5VWc5v9ejsad9YrC^TS$IOLb##2ak5)0<_#XZ`L`4*B-dBoN#i zoDfFAGFE_pU!XC1L?kLoH=^2dKZm^FuM`jmrW&vY_Im>pwzfG&|Nq1P@65v{qu-VL z`Ct0evn|rohg+QW>EWjJfhG}@t6^l=+K!iQzv#_<7~POr>b&N*5eLH-y+?Qc06QXh z4P36}fas`+@)8w|IZXb1%;A5yO<v=h2nY@|{+bXv4KSZ`KZhs<IJLZ7#y7Y;WEp^+ zEo;zTvQqgHB{zw$DTHyHFKm@FV^LoI$E`MaB;Hw@r&+cnfBABW9kMpMKa;pfFJFOo zv@~|)ghjgBUS<x99ssf9KOe%flGK4{132u45tcF8B)3}wy+qc2x5<8tPuI_PhEJRX zRRbFMdaWQ8+xhyBOKe?)sHQ1;>pl5I0i$~H&A!HaGytL2Yuv8e-wu(01wUnU47*9r zyQ?z7@?QTZ#NH-mEu{4^f_QpG^a32fT$4x*J7g2VQ@YCP#G^H<h-2b)wBO^bAE5*? zj_ms1%l9o~F(Ndp?7QIcQd9bt<wB=z(T7x{yD6(DzUPhAX9-MFe))$Dk*9ozHvOJ_ z9J;3NF>6n0Uy7YwbZS;;iD9)bWn{^vIV+l7Ie5H5Zngl=zm;O{r&Zm}tlurssfh2j zNN-7OejGRi`z_P;z<2Zhi?^~S1>%kl+FEgD4l5Nc_0LyLT`t1g(UpsRwbasmA`cLe z@6XSEPfCva79Wi$)LM^LTB(Jf54cWeVO`JjX}emV&GwZIe^wHCW@>fbV}U&1W<P%( z$>ic?%wWXS^VN$0H|pObHZr_)as!-;9^CmjE=@s;7TUVn^|;uD1fBxz-RQS<;!`{> zZ7XIsgrt7=9F3)xLca32efapL)nY7-42UdP=FI@1dgn=eBdwHi;r#xTE`E&H_xY4) zJ^N`(1mTLIS#VoM4k-UexU^BBi7A;~FRrocHofcA&QvNYsZqG&e$Z|&XRW7WNOYll z>X#bAw%6%J3()%n^m;cV{_3{8>yEi)IoBt&TiCjFP%1yt%k5~$4!}OiZ(g?aB=UU! zd^7Mc(DmH*WiBVT>o)<iduNW@x^qeN7r038i~9LNH0YO^`qX-38ZN7K8j4Hpy&U4R z{oQv(O6lal)p3Y)q?HSwC9eaw*eMnTkKO_Z!$fX&7r(dw%OS<q(Gcjivifwh5z}{8 zIQ+<~CU2bUw&q+?^#x8IxuE#Blnyxds1lt6ZGhtG1jSDTe=d~&OZG|!;x-LihR^KV zUm?s-<=gDE*4nMxy-v7u&QRs+9w&SuVIg~tCU-^31GlbweM&?5_7<08*&O`P+As4u zr`b=#e&<bGR3vMC!@L3ijG(&`-u9!<J@PuWJlWK%Oo!cdT3Oe<f(sD$vXc~EG;B(c z&N9Q#ex^ThYOxt$2XUQlJt1CaFZ^XSpzWhp%Y)bR^(=RUilRWSR-X=6!}SGRKP`?q z_?=w~eBG(>UOf3lpFMc!Y3Rp#&FP|y-&Ys$*!=W#{A_TsGo#P;%e7qaREp;1tFT2K zV<>nH?8hoRHxO!;>&jT3ce9^l?KeJS26y?MGW}qu>l8e<$GcDjAbpoEl0;l<sLA3X z{lEse84a{8^D+I^Pa|;C)^#r+vNR*6Fp_$yD5!pQyqsKb$iE%Q1YpnZK<&jcD)ynw z@^p7o+L>}sxj8R)8=nw3y%$x|B31;)$_`bn;wHKsqa4h#84`x#kjGIY2#q9$UQ>ME zkd6tnRLVjEtH1Y9By0B-YJT>ACecK}k&Nv>w;V$Pr+~$ddyf%?6pUdI$cXqaS*j;( zIvZQH3H(c#g6n#?@O99-xG4Dc66s!baLp2=5PVjWW6}l^(@Ec4Zi^uCyC~!oQ=|VA z#ndfMx)K?hAF}iQiGxyo`c3SzleC$-1pi!*+YxU`a$`3>wu|s`cZPWqk8XzuUpB3m zyM_MR)FXrQ)xB^kKzun1Om$yGn8omHpMHt5XF-O(Pt&&;YLVI(?(hHU9MugcHvaLN z2h#6tc$EO<cF)_HU8Py){{pba88GbiFP8m(aF|*jWIA>vw4UzZ$%z@iox{HWD1bf+ z9&dA_;I#RB;Gb!n@_^{`)<>tQ7%U46!J(jXJzgTK;lhmX%2CR9*uUb)2tt$~eE}9v z8w*X;7y~asDs9>Z!8OGAjN-!X!g1N2`X}gMsa7rF=$6gM5{6=KNB0+ZHd>dFF{H8U zEVX_MEAe};{cwL+Q|ZoPR$u8j)+dZXI+!<kUU^*K-6)3lB6zRimKsh^_?Zw}vT6}> z^LYGBnS8l7ojjbq`b1;rcLPEB+G4d~;kVlA(iO+^r`D8yRoM7Ja`g!o*ic5t%gmW; z%_oz(`Hq)bH>#g+lSO`AN+;qxK9cZSv-rB->e$Xd9L?=c77f!*NH?+zKZ8Y{XANgD zGDOmq?`*>V{?_@P9~$%OfRbovzioMywgD^Awg3leshEj9XE&0~Yp5sar&48Ec4T|n z?tZ0ru+*tGGP44jc$(Vwz2!`En9Fz_jU)0P!?rz|N}rtVeJ1U=*UKo9@xH|!`fj{c zgLF0eaWs>Up7fgzD4t#cucM57T^Z>k9yWKzao7FIDvJ0|P>*<Ru34b_Jw$i)sgKBT zXbXkHn<06wxR9tTt!kKvoj#L7ufzMJ?Q;9{s+1{&k0;5NK%~QC8xBQ_Bj@P)?<J|@ zPPbT#Pw~2|Dn$D38CL1MCvSky5cU{qdwqD?q`{`&Ofwet-s6e}Dz^b{IbXkw(0bxq z_1tcEfBLrMFdMDEKJy#>Z4o-kRleza6$3Yi)k@bpb!fBqX<W18p=bX@@yvE=d~wHD zU>XgedB^sO%^65^2y2WFjrl0#@Vq|X_p?ggrFixlQU>&Ugcak8YNRKVh2Q5ErfoKZ zn-w!#JF#|rjwY2v<j|X9@xcM#wA(?oJAXO@iFuq;Qa+d_F?2ajmSyeCZI5N0HxYS= zPZYaRv>Z&AyQ#Jlps=c;p(MCX4XXIw{Mw-J`_UuOd+@o=JeNAN#x(4))^@hBW3I+G z@MeQT<RyHd7ibA7b>%(f8FoFX;!f9JGVjroMll%(G#%q&{AI_@_PJ{5GSp|sVos|3 z;nAnz^xXL<dx{AF$|O`UpW0pS^WsV%W5w=rC0b4v{Wj~wJ`!Po7z%q)b>8jSR67}* zY_PC16Je2XCy?#`aPvYS9ZCwyx7n`B5~Uv!!r!_aY<tW_Hpsk)1?ALD>~P`l=AWDJ znciWhX8EihC-OLJI-B)Inc7|6o;)Ek0=O(kE~IBXmyKmFqe5dFY^L#~vB_euc&mMD z8sS-}e4W!n1gFb11Q=tgd=%;FgAjAhlsppozxK+kS`5EBFrRg}S+wcYr{;G#V6pg} zK}#CkS>2lX2`GBF;1U-t)|0lrH`9>be8?y)q%XBWnONNX2Y1R8t}11JwhBkRv9r_R zSh&{ykbmFT`9quQmQI{Z*?k$09;br=J3fVn)?5FLaZa2A0ZItHLIzEde3r>!O0i-_ z0*_vy@)K@!qut^!_gw&G{FX-Mg%}V-^=C5n*F}#MHQWLP4=NeIeSE*d)^{AJr%&GG z#2}BxvN0L;>k4+=))AX+iNfDg$do!e7@qvK2UDeW4o<sH{CrdZCyTLItq3;#)}bI% zv^E`%9Iqzwuk(Fv;M|kJ=<$9*hZ2|d9mnTAOg7J`h!7LWHrK<x)(`s+c1#SHnn(jV zro&E*R(V^8XS#VB<ugBP#eW$?0)b0!N(n=pcCoM^pD{_No%XSUlCF<eFy<~E)#agO zSmxe^)+Gu#rmE6CLQlP?_?2Yw{CJYZ2Rh=w&a(T4C6p!%)L~~24SFA3?4S+t8V|Mg zTkWFB;v{yd4>SN+z`(Oq%1#vYyOUqIxN|1N)-i1JtOT@_@wjwBB|_<gRSXvEt(ech z>(<l=7Y|sygFQ%Zjceu>bqe`Py-sn9qpI0bdZmnm2!tc^Sg|FobwN*f_RsZ_D}g2* z?FU8m*N2l@Y)W3&`9KsBj8{R?8o_}H=|>+J6|AWj>W$+8Z0nl-w%nV&xP+%0pCY|f zFCU1-kLDUBGR{c|GL@7>SUEE?H<l68uSkWg>uu+nwRnOj`9l_oV{@rXp|AMqq_Eht zgs;cuyH?@Gn;c@>{S*^&TTCY^hZO9->n@+&o&MJ4v_ELJE>`mC4|x2kk}c6Ojv>{C z)9!3+SYX^=|2EGUBDH=wJo{C|GbDF*n^&kS)<kAI_dIRSX)nPl&yKVZz(f($7@$He z9f3{8e>Wh(&}cXRSA-OyNLZ`2c*+om+A;_+lT7Xr|B_UzI)XF5|NG_sYic+INTZcn z@h^n&4V_NgmK30Ip8M@Xp+mY*`JCavwAn#Q?GqpTQReg^wLz$Mt68buv;8dj>0CMB zk`<#+O$ga2DCk}@g92hOdCR%ke+qm<SlTbPuS6k)XDStQTBUmJlkUs5#1%s-U?5B| z1DU=oj7T1$>g4yN{=<nwA;==YgjEVp!Y$=O>>=cLCLeCQ)p7scc0SI0eSV|(j1Nwd ztZ}-$lW?E|k7A}=*Py0Szpim%H!x>hVrQ6$P1cKU0%ht>Z?CV-Xa(UGE^Wd;f`tF7 z5F;$Kr07m^sYVPF7CDQ}SFi6kpAxT`e00lrPBw5H%!N-E0ODo+()W8lZ0LN{fRTGD zM`mTGRsQC<{at4DPoIJ4r0pb{(iSaJRmIiHjK7mWCtXaK_=Z2Ps?kA@fzhx8-`(IK zfQB+Q(8F;`y?^cqmjxebye<(n0w;Bnk&lUwV{JRC0;5S_Mce<1Fkk=zQDk9FYem@S z4moS$J!brU&T$@2{(pc3XR&*gAm?BDKM)vALGdSaJbAqMvgW16Yi-!?OW`y{e8CAs z7giT`%j6;PAkj=`QV7RwjLm8^3m_!`W3p@iA0RQ^AVKgB1Er{xed`v6qLPfN$o_*Y zjN)Qc-(WLyn|^?7Qh(0mubEN-eo1?b5qauuGS1VH?+!=P;B2CqPiEI=J6toGzPR=G zmVg@>E6IlZC5Oi(O-dmnDIp)?@HibJWbSKX?o#;bZ1#!W0$c<f<otoYgil%F*Yy;@ z0r$+5(nqpyy`V0?{h<(VG?IZ;pWh9w*EG-P9^1s8MCrE^SpqyAbw58H`3wZYk;v<R z{%(Y{)y&c4NHIa+s;`Bkw$UnDiwx*~_i)aR;7YV2ooTKC)GNj=h<@+8<lbUC*&3B$ zMzo(Yl?+w_2(SrjE(w62%B(&4D&n&-ZtA<+EH42(P@v<1WSk#v!=%Yy%MqI8BA3O2 z=8Fs0FRLn;Wbf6hCP!xWp5ShKHk(>AzrO?Ac?2*<&Bc&73}9y#;J*{967SWl;*sCN zqEpCV$rLgUaauUuD`fsk)@kJI$3^#^3UC~lfs6gsEeF95-xJA{#G9q-;b#)C`FWWE zk;?$*S_&iOl!Th#C&ZAhPfRWyWQ1%}QO-ups7G(@i8fLb#W7+L#jL{0{s{Uk%J!Du zb!Ugd<~4R?<61WLK|B8-b-VYjRj#{(UK{lOUUYtb6lYubgln>GNP@ho^~45&7snYh zgZzW-ALSx^E=N-yyD7Zj@@}uU59{5BNVnF(6h^%PK<Mjn*CY5xltCYkN|8Q=;h9RE zh+C&^+W8U|4gvo8H8%MDvc*?GM(}GBoMfB?S6vTCXpFtqSUIA=Q2LC3+unM%5+Qbi zVXW2@YM`8&+M^M&UqN+UvIUFr<i31V_C(HXSm_8Sv%r$o&Mq$uiNJ$MzoiDRsm9nE z6N<e<SR=!LH0(}V+!(alI?e?lW(fK8JD`FHOO69a#Tsia*7y0B!c**}>6FqAVt_Rw zMY{ucH;(uP$Cw>>qF;FImIyozE|(Id1TRBYu`AScq^#?B?6eKvWnLIPK4p6S%-!7{ zc%A>IVq?kL!&sjTEiMW`6^qrB=nsar`j3XWOjo0j6=&-<q+UT@Q{t2j%lr7bbhvBQ z9(N&Or=sAHumnrEa2hcmm#P)f^%X{QG}+BtSNJt+QyQ`{P&eBv2M2Zz1*Hd%u2dG5 z`mX7PFR<Hct7fLI7dw@^#FdTY|G)=x<~)mbt)tCdMrKrf6^$xS+M`B5LT-=@;BlB) zYJwyOk)u?}Z>kSCW9QswXaw9zD^z!4IYTM$8!Hzj$H;{c$%y_CQXRB2$xxGI?+v{c z*07l^Ba^{-m^P7lgrcCuxZT}aiBxQ)hV9i8^EB7>zJB*H#~$>t;Bn0*O0XKrWH8kv zLw<fZq%i@@1?FZ2e;LEE@?-a5As=mn-krK-;p>#F!HxVqJ=tPg3?NaZmEOJS9c<wa z;5M`?>~h)V`$7q18%n_ek5FcdZ*F+Gc(Dc|Mrm#VJ)Nw&^$CmWmPI#c4T^aQ9!y`w zfue0?x|knM_1m1|h2Piu9$)E;VEVq7<vevoa6RLXcJW*ZfD-?%S3J&e{9rYg6RQ`x zC?4)~n%6fGijt|TFfhlt(K{|7?Y%A0ov?xj!`F$Wp|RI48bFw4z^dtyiLwvE3cEK~ z8|aJEdzCVZA#c?ytVAvpyHCn%dltMgS{Y<Y<t{;u*T?Z@WlVm1cJdpo;J`i)oU|m2 zum97j?of8vS4RY&?rVRLzwqZxP4wM>UED5kk^gGIj(P^FfRzWs<u!@Cb`VpNd5~`K zIQvX2`9kOrX?|ML%6FoDiBQb=CNdfTu~>YYs-Ro|C}j`Dae@`KPszn1JbR*OHmq_) z1-o8}7?wg3ZmKkdS<o;k@IuOqJ;xgT9P(n<$fL+*;4xV_)jtvo9cpf%xR(UmEmfPU zi@OTS1d}Cb7IqwXrUISL>f6K1cYhWVt!&{U8$+fMc&6`LnE-Iqlm|EhjS6H$SW1<8 zkL``zo!(F4-nSpuI~!g0d7hY!Zlntrk(>#FZ~z>Gp1v+Vrn2CDp{f%z$Rlv;b|ted zK&tF#SD91(%Gzr@o|}hYtn1m$z!_(IcN&Oien?alRAm;*7S{-k#oBKkG}0x)UQnvu zCSUgY9-dBkmfLDQAn^qd$RqPDH;I>x4K=jO)V7=&d&!;}^N2xK^5QOFphrnqvAu;# zMP*+;Ci~BRuliqiWR&NoJx89eQoxjl9IffVAq{5DnVUtp_E@mpX5f9Ita$g7U?B@2 z5~FzwqDvXMa8YA>-rx3q{Zlw|1^=Cyb=HI}+Cb;=HJ#8jjJ+4mambI^cO{JtMl{^L z<Z6#LgVn-ft3~XN`M95faK0UVvyrVY1viopzfIRPV*3ghZKs?MmLEwk%rC4SG4^43 z6NU53A0v<V-k?CYNldjJf~~hZZ99;iVbAAiahQ0(A#eP@*D>N7L2K0t4|`E#>KmA6 zB~Q5|gx>Oj?57tu=uxK9(a1w|=r;u9@!NZ+Tg<zS`FeeyfhXH^1{;y2yatNjRa>{) zWY$EIy<d4q8pK*|>a*jJ-OV5wu0y#DIsmG<*&?ew+^7sO(1ijCo;70Bd(-uI9k#YR z+an+K7FDV?XaF=MtsTnWRd*j;D&IN-yajR=HP*swa0QX1tfX6_<3R*Jzu+31`^Q+> z>vfRVaG`Nvk%t_#k{P9S)clMhz0H~(1P9#LIhqcj90Vf|b-Pxl9Y^KT)g<E4=`+zt z|1~~jp!m)L@NzwT(<bEXl^gJ0^z)AE4{L_exnPNGDAQ3;L%uiVPte*g&@Oq_APP>a z@|#vNf=gEPxfC;7uyNf$VvTD8j+q9K!{cB*I3nIQCHb{4u+iRkdxFx|51}qAz0vY_ z3N1a-%=OqCV?u*X20+T?r;dqtN^tm#6a2wFWMcGVoj&_lqJpqjx?;gE^0<*wSKTdK zBwcjwz!>wbprq&B<l%hKS@kGJ8um+nL9emRG@C*L#AirJ8aaQl{cW1k-%GvHf^aZa zwnoufh*ryXRT>jUchR`$5(gq<$KB?nmO!--yQTJPO#7V$-TM$FM?5RDEny|^S6BOk zE~6&|o3|F<_WJGcQPYJm3xX{^R5NM=Uz;faK_B{9=6|O*;U=>ioE<W_Pctf&Jx*_| z#jGzRmOt?%StFUeaehtFOyR#l-I@o9LdX#4*_g{m!HHjo)yxt`lBU!Z;7jaG^bCqq zDxB73b5gKa)rU*aNLAFK{c`KD-Hk-<`#fI2`S$3w9ic{aEi6I-T^<VNbX&FTP5W)b z(*?KSzgiF=z03xW@-|2y=Pw~X1@-Tm%ZjfCmlxysBAGsS7l}L-5Eta6k3RV34nLPw z&QP_G>M4?}+aM$BHEr@&fSKsCfC{vMZg|9xzgjQXHE&txKmQW`ZDYn@c7~E}?T0W> zveIyYuHJ{bGRUFdB@0|zH-Z%%>zk+eKdC84`=ionS~O5$L(vaHe3JNr?)Ql|*S^d1 z^gTB~6u8ESiL<!Yi!yl)S;_H5bj;b~!H!zoY*BF0G(U?H-{<D15qK5mJskO#>~Rs} zpMfwOQisIgGAC94;HgiK(1^~Xq%6_(mXUHP|En+-6M-dX?FI^|ce=;63S|E6WI2jF zVg0UxYzy%-J~jb|@LOc{Irk8iRhyB%y6wSH^i}FmY(V`{^*|`?gWn%qibeH+%>em6 z8h~~vQ6-&1+9$WDlQ0wh?5G-aH@xVDhQ05M@kKYc9qz*8YXNEGlRNUOAt0loubWy} zlfxU`osR*gN|`{~G<TQWfy#mW>i9)5+l>vj52GBm2*!2kIT)xz*oNC_6Y@EF##%nr zJGZ&9!M}>~$mI^BrTCgrDGzp_)B)Tns5a8KqMAV)3tQ!9*3luDI`v-|DHd`!Mzc~+ zYF0Y+!Jif8o~$!G`}PP+JRK25Iv!;W&<0OOzj<JIL;sM9s~3Nu{Ab3u3m?F=1^go# z=VFT@?cS`jrva(tRV!r|%zNy?g!>?6q~{jx*^Xe^t3x6N-UdDA^j5{olF(u>9WGBB zTJzVSav3I(42m&7<ro+btaZpm`E|wFk!RkwByBL+cIxOwMA2lCi*)BGGll*E;bAw^ zsaK0TXUisvbqi>g5*6F|eNc2El`!i-sEzhg3n$Gd;m2N^M?*tdQB;Nu3|j8S70Pa- z!<I)r`oNw>dHj+ZLI<?W*d4zxDP35k;P5R9f4nEa_T-J!qSN+BVk0cS-0?)BUvk5w zYalMp%8?OSCSgAB2O;CRS6~a?+#;;*Yo?%AS;Gub%?c9Qrxo)7^`>Fl=Gv+Y3XKpH zoUVxKy&l0nvBPL`3&hAG-UM6Jf>}vzfgzNi?*NWP+y$_XNK=`<yv?LLVADGD_=z8| zC{+Ujs*<QeSpcQAXhFZTu;kwv|NPG>$v4<fn}T9<#o&iu9@e%9J=q!CM6tnveqZHq zubkp4)i{n}G4pvd$q@EQqw)*!cNLg7O?M#JkK3k~L1s`O{h6!~JjN9?%=_Dkr10_g ziRiCn^ia6FsQ`B)5=*^e@5y59sf}T`Ph_Q|Qvr7^PJ}{ZbpHf-7QibdO#rr%W`;jK zv*HhX0T_0BsTt9U{x2&>3VvwA>y=@mOV&?lPtZY^9~2zLz*8+df^}8w1h)~TyzTK< zPdSCA7lN87Li+M|%8!3mM^pP{fjgwZq_g&~!0Y0_?p}|VYaRRR(?)Okw=n-Go}^cT z2>~bfPv7yV5nbtc#q>+n*v!!Bp`s9`pz3#WGl@abg6n$NgX#9vL&Nsr@QBFB2lDoT z{1VH%S9`Ebd?JS588UU~*f$ffZh*ZA^AFTn@4EWyzK@i57KmTW8CCT;I{st^?biBn z6Qt8LK$s5d?ErA}Q5G#v9(HTe$sfh<wnnf3ZfqN!m7wyQfhh8=SOnsHb0n$1M>mC2 ztJ*5iQRwDqDd>1O<SxQY=@DFg6cq{6l0?$YRDpR35=AwM#TboJ7ImSHXE(q6qfpCD zM=Tu9bc*u_DBf7o$u?zh=1JTmfi`kOi{C9j6soxy!+^oltEod{@4H<~#$q!F_dQq9 z80s7(8UtgPz!)4G^|b^$MV*KXV!EuE#rDz@d&IH89}YJ);}B8p)RK7R#Vf8prTa4T zIL7xXqi*)gu~tFsB=Tu?!|7PFk7%>4avwE=5mS3d#>;-LM<IDDuQgfOYAscqQ1E13 z5CDu(uE<bXDL-IdZ(QzA6K#)X#4ieYUR>->v_v@9i7sC5e?aXur;Z2X6$0R%kb~7I zZghKiyhlf}G+1WcY*(q?uz$Ll?wcka0Jjh{l76se8LM^uy-;u#<is4bo3*ZLY-7gL zhBcC9aJPK@{@6^ya$w{PpI-iA-|-};XWb$ZM|%oi5AXwIM0#)hmex01jTPTEUtXn= zKAJ3f@ube{@21t~XlWdZM6TuQofV0CtI3%do0TPxJjFwPlksmK1AwI&j!Sn9`{uws zn~C0E{pWZz0Bg@`Erlm;n11LnLT=vwtU@gn=4o&*rDNsC0!8aqr{mGvXCr(G<~-;K zIQUR=Odia`y{S^>S>47jwA&0YYW(N1+N)p$2b0h%ibxs&gK}^60xEaWhV-fiNoR}y z20)07H1&0K$rjvf<jFAn;)yY23q^%4RCRy0@;VsKBji}`@>5ANeUdJZ9iBqEB*pr| z%d-m{t#(UD=N*dk&dRByd?qk3&?L9&HIAT=Ymi^dNYnFHCAC?p2>vqO9_%b6Rz;4B zt>ivgtVpEG<A8U#&=}8iQ(W5o*`8$^M*A}uL3n&Kc{5`siqTP`Qfi_-$#=tE&5XOU z>o+s_AdFkWTO0hMBD7G*cUObzxRnm3fl831Qjabb9BQp3&dP<$;M|u~^+gs)B1l4R zPSbXW*==YKahm*_Np=UCfyJW<AW2pfZ|BBon~FV0I%szZl5sQtL>;+Wpzv{2H;guQ zp%hZ7`S3n{x%WkXt+TDj$N$Zm#XLLhnRn?NM6K~)o!ULqqGpL^Pl|^OoonJf)u0Uu ztXd(?HF*`}f-3xqd;l^YSDG>HR3`W6onZeOd-JW_(pkv>!j!;6Z^{`KskXt^D<&p3 z7oy+_R1|V#Rj4w2?iv(`8l77^hVM`kOvR`H#~;A|P8maCRQmIlq&61hiTGzJ59a+E zuciVHfu7&@q;PrEP&q!Moygo;Pk<Eq7txwn(Ap;~s&AoQn-mmzsU+Ma3{?pUZ{{v9 z=Kmc{@yZSwcGFZlq-ut_QUY!?Tj+Q(4^_JC#s%trd+>4M6gL_My??pHgSv$n9{><! zOL=2(z+yb@iXDv<bK^PQ-gncjvqahGtR2#~?pLG&o)z`6D4pfW)pyib2{=icvpnek zj!F93ez~umiQO2kPAeZztsi>vRt_jOlSrB=K_RBB?RT8@+IT7zG&VoeM*mo3SzQn^ z*`#DRe*(u(V_P4UTbgBnpNfl}{FO3vY_dpE&OJ=TQI$t{?$7s9+ZStGwMp|>2$s^d zgVs{qzWd+YB>MH9X=23^EfzV~(zhX%vGWIX@|U3xYe{Gh$jUtRIIr-Vtcc4X7O$}d zXU8`tn@ZbjDwEIv5~gJFv>SQf&Xi~YH<~C0dnE^5&qrQ1eDR^;?s1UDUGD_NNiJAf zwthu;8GILt<#@!p%q)C00cV_N`UMS7B1H$;xOqyS0G1w0{TBt7rIs+zAk&0eI?I3a z+Eo~b{6Pg^b?jCw@JYQjusp9TPO5l(7`a<bVExab@k`V@3g2~lBr>>z9&0rrelIJ< zRLxBeGq5P_7Lnbon|)(RT(ynp`51_D&4kFK1ydb+z3`&Fb4rkdsI_WgD>U<$&wG70 zSOHg!zOiDg9?k+*LESRC7XVI1#gy{>d#X;cd==13rYknk0kBVAeI3u*WxO~P^gpjO zyW4C*|E-X_7*<o`Z8`WO_lzpX9%W+o*O7Zn<2vdd%OsHiJ=DK0L;SR!kcU)LZy4SI z`%d>Ml2)1L;>!P*kFwT$^B+Dm6#sN#8X9}-Z>K|;)muNBCN;9JL-2~fb|0cik(9y& zcpK?WucM3>7D_(MJ!F@lR`JYT=rpXXgA*S7=5`9BYlnjR;2+NO{C=l~0}~L*gVs~~ z55pG&9)bfLC{Kc`$SLAUbL@8n5^aAZy*S3^{`WSq0$Nzrb&Mw1_gh*DlVX?qEjok) zEh88ae|sd2PrztQnxh>56-|0|B{5wzjP^Z&Qg3p*wF<2UxStFL8t1`E!yThmR&4cz z#9<r@X8{O@#k>C&k*}I@wN%VfY++fMBS66_ayu8Md#CJ7HG|eHe<Gc~kxU!K_GKa$ z@g}ITM1-M?FjytoJn9`B79{epmQO=UryC5R^)bXxnc`XIC3l}LTLk}e16Z9$`FbyM z6qY8F>K|d+DBsWStKInG-Yk8uheuf10FchCxKi1YsP)+RTOb>LeZ0)x!|z>RvK{uK z=}XevfE|riea9PYcxz!2E@#V7A(gjUj)ZBLUBzsrnpTB&qxe+yswn1LZb@71t{x&% zRFn*EGJX&P=i@`&wyNYB&Gt!85Z1l1&TZzR+jpdMA{j$c&`f?7{for_KND8ugi`nt zfRYGY$gmUa4cOzsDmouDmg`F=`!<=LU!z=8Bv8lFMWqj^po5`_Hp>exzJk`?D*uj7 z0r<yJgWR);$V}^+v(hxdackY25kPF$9a60^5JSp-4XM!mFCFS=RpBQ8<+_7-La6_w z!AQx+#gmbh3M=q#tpdy1FPq;@Hj?uVq@847c#f~J>!9td3*VU<W9rkpEt}oisP?=b ziN%chK3TBJ-zXiJ^XA_^d<3p-t7mWH^0<^%2g0<HaK`xJ8yq1jASi~{{=nVwY!1z@ z3#O`nnhiPGiLyf-P8m0CSAm(#M+FF*3KgP6FkhahqGk{^#f!Ogrv{|n1LHTw!&m?h z)vz@tX$FOJJk)z|V}Ue7X#j#0FehWTED&xCuAd{a4g{CwlwgdWULO=_oB|GkSu2Pw zVfKp<$N$429V@gu{d+LRoA4LyVnv<fKiWm{z2^95;9r8VMEd>=Voze29)WnrargeN zo;(Q#Bek1cJBYa~Y+sy~Pv3;2Ix80;uu{Gx-rf|(=QtiN#s+V!-$s}`wco<Smh&yn z9nW2}eG}eipzGmWB3`IGCS;R5#RkPkuW1oRS)`tA!psv#@K8~T*+ZV6OaRk?NJ5xu ze9^>i*v=yS{D9G7;8CsmaB}9dM*OGIPJnNo<DpQ{?~Dca2t7j>78sYwkpSELrk=zn zDCa#W6vzju{R#F9*v$9ND#OkH5hwO~GS>OtXXZ@RcFZ^H`!X9vh-<&qELNBwlzbaa z!Z*a;rSyDLTGH+%QWFzafgZX)6_5bGpc$MWsKv4BckQ#5!c)08h!#=%bk|od+E)mH z28Mo&c*BZ##lUSnr9D-uFRkcX5xVuh$XV_4!cZr_dU0gfqu2HAAtGf*N}s{%SfcZy zvi4hxcU}Cc-|@j>k0?aTB_3mMq0QTjmWMhny?>}A3frXSWPoeRXm883syqKlk&d2H z!^1;cUuPmePvF>fRPTpXci!nN)U<<+zWD*J`cSuR##XBIy+qhDQ1;6;D_;LjZ@@M5 z{VZpnT)~dVn%4B=-uZY%f<?EL<p<7z+qqQg1$U_35(-!s(6?GQ!26ThB=hXsrD7)k zJ(i(RF;iAbDVaSL?hMTCX9Zy>FDc1hx?W0kGP$2Q%(GvvmR#fsQ<?J^3t`5ef${7B z2AD+st0-A$>5~zu7BD0I3c^3stDd#kXp2wbb5Xl9Q`zR+j+Cy`|JZ&}t=}=jyqIL- zuxlWqcn88Ac&9|R;3ofxYlu)yed5Zl8e(GRygfta;XQy&_Q)++c^_@iGGyAZ<<{19 zz7MZBW<>$Kyjv1zN_!JNs~)0VcB@c~so;_l_Fg?$LcxIvMpKe}u%+>7db;^rne7hS z>vKD?^}1s5ec3|o(}<dy?#8@^23#|(zk<eBXOn4G#6BDT<0}|jA44t_52gZu#KJE5 z>b7N8*|en*Majc02_s;1o9yD~p+KR&P_Yj39^d`-K6~;7Ers`v>(SCjbm@(Lg#s+c z7ZW6pXX|T-;qTM@U-)>b6O~ov<}vTf+LMV#*U`NsPHhn7x5BvNFfbOhSWT@j+&Zvh zB0^iU8HM(E_{*%R?>9nYwq691-YLe(ce5Ry<fx&(PcPP<VXf>DMvb@sJ=7qO=m<0h z)ffi-<zXHXE^vS(?<vzOBQhj&d~9yG2E3BfZk!5x>5psWyt*4ymXj17NT?`EFcLj# z6Xq+4Pc-#B@(0>@XfX^y`s1)vf&5<iXhCDy0;@!5&R?8uM}ExA*$A#)JV?DaUb-o8 zS_qO5qL&iJZ^!;tP7@SJ!V!cf9^}1l-RKCBQduPZv@iTsVOMjkI7!GhK@)Uz@mb<C zeKP$-NJz`?eZBhX(s8wiHn+n!@pOvsvy>Fv4s{xQP&VQ6ne`~AF4i)HI?lf9ToXjY z(Ci*Ii$T4%Jh8~Q4vw*T$zQE8wS@QF)5df|%4Cj4T_sJPFv~-U9s|1_HDpKIx>yWp zJ-mWqu|bZP)9ggK<wddRLa6b+eORu9OLG6-Y6YQNwXhM~sZSu+2S$?#GsP@7n%k)I zgFb37Kc5Cle-%gs9o+k7+k$GK)>o716cWLR_a(c<xgtyY3qgq6Ojl9@&KXRAM(4>+ z?K1P#Rt+0Yr+)bs-#fFsrKt^ttuT<FpX#;7u(sXBmpR-mk;jMfE)jsGvCr*K!Y2>7 z4Er7jju}P@V3o%3jL9^N3V3R8D{u8Xej0SCE>a=FMz`4^D_+P;$W2>y9{Qsmn#v%d z0bEOjYvQtQj)EzW42&T*^--AAb=Jj<U5;uC_K8}rqKof^88{jL>K<p|jv*R}I36@R zKzNR#NZqe<jiXSk!18}vL2wOmXo7yC{1=ZLL0I_M6=PY6ppUYN7WmObO4-9+8U=?{ z^l>#%;kN^MYNC?z-~gA%1YBX5+*J+#rdYnoQ>i-Hr#L!no73n1&F%eUZP6JEyBr{f ziYJNYoqE4@{(uv~2VqpkGaS;4pz_^Uq%#gbjKA+MB-(V6W#V7`il-a4OKuG%yI%;} zxSQUWZDcS<W$4m&W0j~#->YdgPq`igo*}iD1;*PfkM>gdn5hgV`~*p&Xt82qS)mRR zydlOb%TE(8;?@P%9^ZGE?El@|hJ)=IK>RN+UH83rSD97_tPSJ8+Tb2M?+f;P_#qsp zaQ~_Yg1`IFrg-UK$%cJrcxQ5F(Ni1dq7=g<;nvQ=q!55!;zJ1dKYAeFvB7fN&y}wH z|9h0j3b-L8bCO!)n)Ze>>}&B}i>ton4!EGE@LW+1I1_K#J?%qtS*N7q9|fzpcF1@3 zzvZ=WhwZXxdgvFzd{~XcSc}*3CL_AcY_Jh_Vyxzu5jhKZpfvO}aM|%9OCTCj7%Rql zY`=x`6_Pdx)q30-l7z?tOSpEgyx$FJeRUixj$&9>`EH0Rp?7K*Xm2?JM3dIzpNuM> zl@Rd`lM}WJ+QQlTb~b((++C4cw`rGYZ}|<za4k{8{2IbWV_LSE^!Bj+KFnu%%ncPP zGh94K)52Vd^9{PAUL}j?go`!Y|D31FZY6v9fD!b&6pZ1)-<c3PO&vseCfeb_ZSqd* zmJr)iYYKcP*FpfpY2$-sAfxq_J`AG!#XawI9*)(GK|JcM*K>j@;|UHa(y!z1_MoMM z1)zd>rEh0pE!@myMdvY}T0O=JKt_sl!V3(AMMWEd)nxK|6^rGF7}DG@GbNTHOcFpY z;CYws_3AMtVw+t?%iZ4se)d-pXi8Fe+B8;4-Y6o>TAyFM)dL3~TeoG7m>cwCBv405 z{Y~nLd{KV??cVKhq|*H$7%!><4W&wQ2Ng#ApYTu6TIFLmxD0D{)d_h$aPI=+E8DF# z?Q3AFfu9J=^eEyY;W5BdM}Cf9Mqw*n8OidhV*cr1;f2wUDU3zU*#CjW6;YgiEsu^e z8gawH++>|koAbGeGoQB+3Lg!I%2w;n9(|<)osr6|{DJ#zTiu$F1GJ(8HLK^OLPVZ! z@IM=X7G>_!mOyhavpW-Hy5=8{XSVF=D3|(Ca43<OFzRvq2i&}R_Uk?F%PEgP?l7w< z;rFqS%D^dgVYE#|94217Ifhv%MB+C^OHwysrfm!p#iu6p-M>O=;D9jSUr4VC74)^F zQ9#C^9BXbQPRgz#n14q$$jha}`Be4U{bnjaE&v9%Wk>-WnF3BTJM}x=orn`#MV|I7 zoDnTqjp{WZNopH#z|gnzccO%r`^wGIMfYY0<%XHl;R6+$Cr45|U-!2sfc}+%W?b2H zppl}e^nyStcf!EKgk%wST(#=}Kegs*^%w=-<J8wM`Z?phRd}}Bk_lLGcf2FB^kv5Z z<1*bUHLh}`Fs0%gZ(>s&b8^-9D*aZHvEt$vLo7F}w1xSb6SX9rQT@Y1xN-}yr*rdb zC352+L5TY&`k#25$=$ENnHm6_$2aPX_bERlDv6JgCT-fvG(c|O&x5>z6yxnzxM%?~ zI9p`c!BdN9EHMDj*<X$rj#n3NTND)=rv%f25V41~)IFFW3`pSI{!;V-t*mBlo0%nw zo)X9BwUe0F|90dAK3vJ&iZn4STwP!aMu-<yu3P-1=Zy#Dn08~Y@g`hBR6E87K<+*5 zy<9)kVGD=nJgiXIuzaCA6o-_p)%B2W*30>Lcl)h_oe_1+B^>$E<Zmy!AjI2m&)U;c z9=Wt=lxH7JluGX5<3Ve=oQF6ur=*{FX!>9sDm*8OUxy3^MHlL>FuXh#W^gPH!DoJ% zr8BEMZbUF1%uSuw1J1>Ry_F2+&>ApowZm3?lTxi+w&nn9Hr-9UlK|`$g&}Om``h6e z(e)%H{D=7TOz|;4b(oXryIk&>!{yb(sl%lgf-Bwkcu=qLH`1)ZQ2H~@9{k&vl0r0F z6$j_FQ@{j)y4#-Uqj$@<EG7KuOnzk%%c}fs5zH)p4xx<Tz`-V2Z;ziQ=Uh=7?mtcX zrC?jPIOL%(&hY<rH(7iVXpNex9Srt5&g=X*jqohRA*S5v{}idvw^4Si=5NriGCrw{ z+ML7{536N%9y_0Gfbl|7k;J=79hQjk4><-W!!6|flGLC0xQ;=uqs1TcIEaWjjB*&* z+uqjTmk=%YH^-M{q`JXkpEqU@JDQ6?ybniQjSqIzd{d*tB1~C53QFXPmxskRqM(}x z?Ix}dfp+RJvj?0XlW@`9+)%149ZV%XUxLNGtTnpi+7DmSGi7nu#=g8rqdiA3Mexy1 zP~C2}(Z{IEw#II_(VvycJ=zJnbn8zh=<}ey)ZwEQHwuyQ$r>%0BdPyQj_m8KCe4W7 zuY|kUG&6EI3ZqzIdry>8@jZcJTj{%BE#e$sV?TJ5EJC_R7WZELWV1({5Q}nJ>lO<* zVE_nut521xY00N?e;!q?3XLJ*`^4=qBOduyNR#`Vggygv_dX~$DHNj-*{&`$fcsCu zpr{*H&at8X6mZff#2={qH;BCIsF+P(wpb7&7RI|X;f#J;bHQAs0lfHUjZb0`czsd# zS2{v3_JUQ=8@(=e7?H0i7}zp|*k@xXgxK~x$#gD<g75EPd+;J)3LesWFDC)cq0&CF z3b)k+_u4rD!B`gcn-N2XEJ4qA8xs&Jz@Cjj#`#tqQU7_$gaQ@`S6=x*0eB|I&Xu%S zDJy9-Vk-J0nA3TX!>TC}|Dj_fT|fz)uCaD?<SkcW1oBro|5liw8ueu(056rCJ_+Yo z1Xsw*dm}p=%wZ$oUD7@MEz3S0x0{nt>Wwwu9yqoXHiN&?V4EjvWaQI;vcl?zODz%g z^HKm%tJC9N1C1Y}b{3yYf0LM~I*#R~V2|iheKk4#yzu>j(=H*VgwqFmcbUNK8RSb+ z<cVldB)_u&%pTNUQM#=*tFYT2H}S1~_jIuawhWe$r2<ag%$8}`C{0DnrrY)ACgbz@ z=jkF<Kp;yn!*%>w=)*dobO?DkaahaKoPVJ$s)Nm^_=UM8dU4<XkJ7$6D$3~n6GRy$ z29Xqo5(T6Y8Ac>U=?+2Z5TplW=uSatBt$||KvJZ004eEihLDzSkiDbdJ-cUrdv^Dn z{Ywta!1&(#KF@tV^=3Mncuy(eB7D?(Q77mu@!CXgbCyKVp#+3pwhgeru5WGVUGts6 zv0i^m+dRY5@O5c&A5qdGlNmosjeHfra}%NZAUOhfs(cfK?MwOSaL~B4J~5vMHS5I{ zEXu|kciE*SRk8bZ8b1rq__U+VJ9eD~!~20O059W)2sesu&&!bEyS~C1Y9DYP?#!(u zqQ@#u$VYBpXT?(py<8rbDc38u*ykZXiMcE33-7yp)9g`r@PZV&D}?WzinG3rreJ}& z!Lom37n;PTyKk1Z%7$HE2jXCP2g|RLXLOGp6bijJvkZtw?KJlnhEPcbwO@6)J1Q*5 zt%)bh1WWpAt~I+3yZKJvg=IVVff71c&gHFYO&v8i5?kIDew)KgDK*hiltKWCgHccA zSzYdQe8k^j`V3L+yw3frJ8|7^Ar4Q=ToWM`PJKU>NqCn=B~{dOiNbO%HrE&5P^YcL zX0nW8c7J1OatJYOg1o0rdwU9gCk!YDD2WAl43IElT$%?iZ{OqDUK>UxA?GO5OoEkm z<!;A8UZMxb+Vq9?U97RUtnHQM>}5q9{T(m@LIUty+p6`IR0B=UD|gbJHicy2q3U90 zzuv!api8Em1ala97_A^_lA!JG(O?9#N{&Co)xv5_CY=4i(J=Av<_twXy~h3LHC^*C zK&`GG-oPW-+RqQ6F{j2#i5XhfYIlXG&?tBI^pwYR*h^IeJ&N@R_z**UaLk(&(phta zhoZsPkC0B3gtL#cfzz{opnphsfyCs7f*aCR3b;$=e8~yh&YDNk+z;01iuqPeIKa+o zN89h5KjZVBIrmA<y=_hGw!3(L-sz;k2h=kiaAiS>Yz#d0YLt{sdOcfMc`u0QHqC#^ z<NFxoSDhOD_qR<hr{X(=T@Z<K#b-whkvqLdgkfw;KWo9+wDHq?RjJQTs3wWY0|?FT z)T5Bn@Oc@6dEY3=Y<VT-WskxYa}3ULfHTG~aQBRm91-IR@KGkQCxcz0?<XlLmiS48 zd50HFerBroD17`sDR<()Ikk>;+wr4pDo~aQDZ=@^XZ*xr3I`HZYp=Q!>?xrNDg1xU zI<l#uNlT@eY&WjATSUbS^~j;-gf)MMXD7Qyuw46F;h1LWx6_ZEAsY&2;u*xWu8hLT zvlodg+f<qT0Kww!+fY+|&MhW0usJstm9a}GJ>6qUAIsmVQ^CIl`Y2nwK>p}e@ZORT z{;Pq~v;ugY<1BLue(mU}a7mUQbV<mu4F#vUU1*L}AfBB5Yj6ANU*jW&HcnJ?>PsWt zp*|u#8{;2l_^T9Roj-x1KYF{7H*q_dp*HERcJf#1J$ge2#*2itv>zcImd*4JCmQWf zTPl(4S(6&uLYft%mMIyAR>g34YMDI%6P(+i)aHvH=DedZ*LDr`UBHJ@Qx|`?qMAmn zU~$~#RL|cG`N7gm$-CTl0jTE2nyC~Z8?^4Jr|h<IhavmR#(+rHpL!t3r_|yxpa4?5 zxb=iaCty>{46!KEufJ1nJHtMDfUqZO&G;d^UgP}x7FCa)j2w@+8-`lupdfEqQsi*{ zgz$kv7;R5LB>Zaw560#2*dp4FOdM?__w6Gq%pHJD&fjO4D@quICvC>d9<9QVLsyFn z+d}S{X^7=3G>97^)62k|zH{F3E%Vq%e*{T$O$&MxTB+f)z%s_MHBGhjO7P;i5B~az zsX`%90|z-nTzkyNS&hm#=g(0B7(}sM!@hDg7JqhCLnq^)?o{GDWetwG>vF|vA~Tm- z)VfmpV$*Uq43`}?cobtt^w8}g)bjd8=;=GJi&OcEfZ|pA0Wa<7u`lIZNfk1qKBph3 zjBfH(uQe@Uf})8>Oq8{f8N5u`&Uaho2MW-4c(%6W5fd&Mbun$qZ<R$zp9cGf1vJN+ z2`Dd?*zAAl_d?LW&rq-&&f~J#t||qhml7~qta9~|=Tr+9Z~4G{{~WVm5=lrV`Jy=* zqE^nYqUWIdU~YDxJ%fojJ|$=ar)dx8Sb0h=(&ixOUPMy`FY;NH=X!bO18M4H^*ZWI z^!Hjq>`Zf2+&O{#SL6)_u_&^;2MNU}m)PK=H>Iog##P2Aa;uPQ>HM}Eh*gW9j-moy z(|UKgY})ed=hiB^t!h^s=^i_|*`XyYgvu_{_TLAgro9Q`vV|oOyf6C~21buIr&&h| z^vpRSFN0HQ-qY||`mEy}XGsLNRZ(*3az675|GY3$>&1Lg+6R{s%?*%5-OeS1G`^J- zQD)ces_6sls7fFy2?s+ELEHGCxo3O!kF27FwbJsn1K#m{Y+YV@k`rVlsmpb+mwPtv zYqq6dx76GsMNE6*G+E-veGB#plDy@417gdtzZ;D06~fO@wO8%zsugERGEyY)ASaV} zrzEjgl$O(Vgf0-A%e~1w(l_s|%RdRkn`?e5tnB~BP7e`8M9-eAp1&*`DDO&j=LKo_ zs(OyRL0Xw!Y2i~hgciqsQp)UGtl@2vz(vCUtigOnq{uDn^Mc~~_M>W(NvM5~m4~VN zf<}ad|G)wQHJ@2&e^AYOvx9z}G|1g<YQ~UGOZK2P+r)^YMxUj~QoBtAUK{oOC}6|$ zIz-CdMfB<9HcmtZVKtJmyR7in{XFE{A+l#<{%#UYjvEom1?F$#GTF>ecERs1WZSw+ z@keNaBwzvP(ErF#Dm5{|v~wmWKT8IM<i_OS2jIycceHMPb1UT4?X0=k5sI9%O!M9% zq5b_GlMI`58GB^5Pkot@4aAwUqrQ%?L#+sb0%dR%(zh@Kh902!X#gJ3cm6YxdWs}1 zHiuv5!~_xHGe5?9@)_K7=F5e7Mu2}~QBSo^-VW*ZugKKg5Ga@f>ar3rH$GZy&^Q>8 zRpeLMbKLu(SYp!!H}NP7hrV0ba!1R-1(XgFD7v2Ctx9PrS@`ijrZ>DjyNxG8Ck07O z%#@}>Iz@vS+57RG7K{5{)|yC195BS@zf#)yY_qa-E9l?qKv_JkiAT)LOY!2J5uC6` zK?O|{|4J!qDb}tb;9t<R3;uyz=0|^QN8?(Dee57Qceb`|^lr-rY8V&M@Qo`*&@%;k zjPP1Jw=lzBBw?G#FfrI1r;FGHzjy^f2$_2%%}?0-=p!v~b@YQI3F@Hx*8eLf@{b-F zxCO1n)vh%ByfT<$H`nn{eQz$KM5D+7Wvews8N;efTIY5EZE4HI_x3iS<ge2uyk?F` zP#4ysoVxu=4)N>4FCuRHJM-GTPQmLJby8xc?JD*)=g%46hv5IxAFoH%aK8CDnI7B* zbVdJzOj*QNt#=D}UHP-RClmkGpJU7d=obLx$&>1+_1->UHgg}{oO5dBdNk0tsc_(O zcB<HP046@%3cPasjz!9HsrTkI9`4a}*01Qb0E1XaSCh9H83G!A7&XZg6m87y(?cNk zoClLndjP9owpsCw;O-s`21+R5>UALBHhJccPkdp6x;5VE{=q@b;9nz>walnB>T9yU z%A(|Sa-wi8=KgH1gNV5G%*x?uq3buw`qW!gSS?+!@9jPdZsjy3mrr4n^kB=OO{j(* z1UJx&2orrw*00F%3v7NOqz+MA>M!pWd6M1!^pgzF$y}wws@%)4qxR3tyCdNNl3|n2 ze$G@N4gC!2pa+Qq2PS#)Eb|%*je%WD<1p+*&H_WWY1KTZ1Ji@bmRu5&P6q9JyG^wU zSYfGvgF2ES#&f^F&4K0;y7{=%Gq(wyPZO7Lh2d<0;4SheI?SXRwa(qVkI3Cwp`()D z80@oBd20n6MbQIco*K&{jzj}N3%t=jNwNg~8B8r1r;h^(WjPhm_5fR+ohgx&7CS!$ z)tZiej4k3W>?YH3pz7f5AVo%NCt6^UqQJTf2M=;my+6Qjh5xxYW!+U7?%02DFGtBz zq%jM3jX>1O&}uwA3%K&Dus$`xn>qTy+iQ>_d((Ab>(gDMpBQ?O%4_RK&CkxaC)BEV zfI~ZBGRV@MN&K5k2En*p+$0@NQ$Y+?tPqVWEww!?`}@f7TNq*}bcFVu4PC{}$~$>* z^-md6;fK@o=^4f!z0^I{;Pr1?t>mwhoxc;8`NE&yHa0II-57oKN{^2yfTU)jv~@=e zTLRXIprA0_>qIoXGQUXBC2Bi7w<!J!JXdPF;<)#M&O`1KD>6gX6QgNmMYw5N4fX1X zi8$0b`+aMi*O{c>w0;ZCQfCcl!X2EG@V_v5?H&85C1pP0foopEL;F(QU^}WI)+siX zx+m03x`1=I+p@H@M<u%x)Py!_(nP3iE7Ax?sk8>)fPA`73d-)lsQo>O1)rK{*p?QO zPg>|OMy2F42Oq%pvttU?oE3i@xaANc5?{S~#G~e=Zaq@A5a`*Db*JlX+~*LP45AL2 zw73|bX>!WH3q)3VXQ9@T4h^I+>WNbJYXRjxBm_Ix%v=%+qcVgiesDU5)t#ojQKS|W zy}wz;;L#BY5j<`UEYd+Scw9`SdHH9W$Zj__cS2;1jEa%kKw9aD|2?D0{#LCma9BtM z=3g68l|^p&A1rm<QgTrsmeFgAF6=WM1P!FW!s22DvnXppYPQQS*H+6rg)g!rMN&=t z1-)|^?95#BoJ;4OCWlrBs<Jeo>j#$7*10u?qzIUkKwz~eaa=E0)~twyiLmRzLgU6P z<<gm9lX;_pfCbYxs+z4D;2%elS6efFn1Pyt8qrle`JU%7iMC>RL{UK(JPAeE<r$!a zC$y7BY@(&aDzzIk7zd`CXcI+`xM7yUAPA~>?hfp=>2}$(NoxG`TN)Ujc!x1SHnfKZ z(@ky<1tRNq4-R%qTXv9KA@`m>4Fgs|`p&uWl=5C+*lv#Mad*CTRBd_A0(@Efl|;>Z zgdX>0&fwO4GTaQBqOruJN7Ih)|GdXDmgE0WVLSXXNHHarS`@D`EFf%3<qL^)|CbEW z<L^MmY5PP`&}a6!a4#6Oe!Wlp<K>nJ5+0rrQg$3zXjWLdeOlwIv}tL!oJbMj;Jeba z`SzpIMP+vq{H*tx%E)!earNUPce$8(Rfce-PrRz4!Tk$@*xmIEL2#|^4W=`QBdy** z5i2E4&J}&e2{Y41_${u*C%}D+#}n7oThK;kvq$bRqF0R_sFK7Dp*Jpu@5S8yS4<&6 zn6)=oSOlB)sA^Gtn>fAqSGu7wFSHR)#4&TkezxWg!9YaW32CcNW-G(jCj<Uy(l?>Y zS2yfIZ`wY@BUbh_K`%m?rQVZ+7^WLzn%nod*CJ<#_=Yn~J!N}D*E?DM!%V<Mi9&X0 zLS-Y;iF~VZPM7!K+r#X189BL;eO>+6*c+bETHLg_0hs<kVj#o#ugOIU6KMOR5xNrd zQTmhnLd|o%`ac7TDq`4Rj~yP~G!XSE%GEP-d`I>ljv|QWKODuU;D<?bm((m`jpUxM zX^~S|6|`i)F&25YU}so2qqwr{K08N6<e?ZQywY%pZCi}}eVarXejToJ>>3sMbF_@Q zE{^V^enq*21qPsJeWrlMh`#11zddjN?y=RcuRbEFRp9(|&Z}0@_5m0f%xM;WuqgNc z;Dz&YF|d3d*<>uFN~`?U1vCv~->fRe>Nw~n<+IIJOittl3+a9yYB|7w?7<~ew;I5c zfbqu)f@hm9d8)Yz0W7yYI1C&Mpm+83Tl;r-c2K?L;Llc!FC;IwkyX%j1V^0x+4QY= zS!{$Euz%mpc3&Q8E|o=f-lxE>e)G!6cb!JcAkhNmb~Alk!eHF%5PgZ&LtYhE%WD%; z%%%haJ-~K#4V~d5Yp<ozT?UmF8O&i3df;Kda%L7POU4pHsTnhGe8qrjS$_B#7puB? zJ{0?lZFC#l^s+Z6^Aa%`hMn)Ml8`nToG^UdKs@y!qaW+Px^-OqqPF>;pi72pqGP@o zO4;l7Tj-$dd=`}H#O{yQxNCWE>XcjGYfcq)n`gj-$hmzQLJr|SU6-fi**Wq&Ie(>A zZRCz@P%B(0Xe>ygko7Z{Bm8t#)om4)yPKIpmXQSfZ>N(KGmlC>i8<FZNI!c~#Q-sT z+2+ud&GloiIhZ)hq<xO5UW~LfcU8saYI&5P5LG$f!s&`?#>F-pR>EDOn&YImGpGM* zpsEBah_794H#*~7|IpY4ZBIUeL6LMxLZGK`A^Li!Vnt@zulWag6|5qPEZPX7N`n8{ zrLY4M8{`0F=G)m{SGpP&5R_or)+V*xk~IM!F6+tc0)*3I0*sH5E{}(}QbT+peGjK4 z1nJ1B@PQ<W8;~;A<;B9Qk?z;4HB}#rRmH0;xGde!&)XYRQ>;mW4ho4{TaK0|>!xmn zjJ~(v&qRJHgrysTO)?$y(e|{DVBPIx?abJM{V~EwsMxtdH<(w{d-tbyknntQi~vR) zv%qgEPC?27WB=QFcv2b|M==^>8vUmEwax}JljyoxAX4@yGC4hQoco2tO}j(zk_sxq z1yAyVqQq+LaTWtYsD(@uYW0Lr^RfGBW}$+i#G<;`DXH3di|N_++#ft+5NtGZF^tNT zSA2Xv{sh6;SY}85*M;CiRZ+C&#np8~RFAhhU^><oCGs=-7jdKcR|{`S=wmRtSj880 z{)p(X$NfDEOuQ+auo+(Ut;M<EJiALpirm5^>vBY{uOXfKuUsQB3on(SVxX*-O)Xj_ zfQ&1+s`(}hkN20SD5=*P!CknUx9ONgUHtsp5T`}xvWDt<<R7$;)z2e9mkd_q*B?x( zX{QVy@Y1gBZ>;h=B%65(ZWfj200M#<iFI69vU(~h^fC`YE8T`IEt)URfedCzsPXz0 zOm?Wo=sWZ7!w4qqh@&to`fMPJ$%g7+bD2R)*gf11B2z)bW2>ij1Cp$zD4!>sTl>|4 zLpGANf_|Dz^cAimA@#v|xu<%;AiOrUAD*&TO9F(l%8Cq)1xqL2LR6W@71k|XIStB% z?-TVF4k2}5mhNhUhW>%gKJSp^G^0hPTis8|XO2#6u-mrRITV!lV&qs;^V4d#%~@I- z^qj(OeXm_Ja8kI}gKAG2Aoj>y7o*&>Aa9D9OP!*oI%chKA$x%kXQCid7wLNr3<1aU zKvoq+LUt{so%Ih8nD^yCTkzCbj_w!W=JBJ_Qf73;dsCsxbP4#vFZeRhF%(pk7TBsB zh|L1~-_+)pXkQY&Z32R=`FE$3&#rhwf04D*?yl^r_5y9vE_K>+L-oq4Nh#j&EYO1l z>Nl`#k2(wqjrJbYBfB$huwoi(EI)07Ny@jl(yvy^Re2WVm8q82-!(MfCHWcXCnV;% ztHG%7s&nzaam(8%TzAo%0ugY)sIsE99I8crXP!Q|$s87q;-s->{@T;^-<AI-Qrh&* z0Npz7yJpa_diVs_wZd~F#ume0)qQ9)x%Abfnr`knrIyWfie11G-+NHKix#&-3T%1E zBb{S?Z6TbnovVWc&=oO8Lx_FuUa@cxP<m~L*sP|YlL2weokryNm~Bl5K~_mlgRP2t zQI5OOnwVqElGV;iQ?rkV-rNHm{txSi9~lSHzT+b(9r8lm+Kn^M{wnvg!b&}R9d6uC zgIQL+5$SV#F0wga$C~oZ7;9w)u@A1*%MxTnHGO3k-+Z_T%9UOL!+_deP7Ft83>C0D zEcgHO1Kdu=BMY~G9eVkZMFFuLDqj(ZTal34*-8$jiUL3j85X|<WC+Nsphg(d@Vk9o zoJ#!W>p5_5@S9HJu5^NKAW(?ODJ8u3@H~0NrMk85=DUEt{@8#T`xhr0_xLg~i}q)M zJkt-KQ;pX80Fs5^%5Ngf@%72J2zn|)D$ZNe)lO8K6W`;ZNMMIeen@c{E34k3W#G9P z#u?tV*$*Nd_*s>^a{us6J`_o7ExX*NyJA4=xKUfR_cVC|l}Y=|ngI|&oO-1i`#`&Y zieIux6$ohP&T9>6%yg#f{TVsbW8P_%$irIQHc{=oHlrZBW4Ze&dK>P+gA1B<;Y~)Q zt@f8aBK?CpVyj_eah&?>6XiDXLxyu61h3v#mJl~^%NTsi;}B@|UuyD%WcJ>!glboL zWa)y*-<)$sTmUdV78BwyexQI^O~>V*X?A}9QLK#cI_|X9WB^`~n1#-!={B7|X=_Gj z%L?Tt!JSD!lU(AmY)0&@FVO@QsE=>Jc}+ZXwe<7cl{4{rd+>>2<ZNW>XFnL)S7=w5 z$41uMH4asg-Gl%?N>f+D5;-axSRyC4CvonZU+tIA5=Nrxx?C8uoA8Zbe4l)UcfYtY zS>Z8BS1Kg}B1Qp#cRbTJCzvsBRy77D>;?uQ;`7Fjhl7K*cK|ugK?1vLq-S%k-R9{2 z&?;_q?ak$H5eo*36DJ&_V?*LsGE0cD$rL`%Y$E@*2S4fL?K4!3@7ga+pk{|nmX-8O z6Q9TwGuV<0?Hj)MH7ysp?uQLyBlM>UcbjZ*Zg{QI@YxOs=JWE;a#w#iObl5V9~Wcp z2QCbSEV>lxS4S_NK)b+L?dyo4gvd|+G-a_)?lh|~>JmJ?;W?icY$UsRhOQ#?qWk<l zv=(lj$6U9OG53)wQUH^t&?gjkGaShCx(<NB|6Pg6j}8=3Lp-P4@te(!K)k76je<7< zObmv9P7kH^q&{M;b6;H!P{FJPyM)t=-U;+4he1F0g(#e@?j*FwA|1CzB&{bRT`mIm znm;fX<e#lhno1^O^8A&2bSOn&ceYz<@~#Xk&CD>t*bKf7Zr|2&bE)yCtM__bw#7#K zY8@nyuBr}Z6*ZH_zYI2N`vTWRVchYx7Q$y_npj{6d{@C%$j$6CUDYGJu6$Uibn8g2 zwG&xRT@)^NxOQ+_Z^1`8MP*i-qzOS$-l^(G7><NP&Gq)@VBtFmqbM+ql8^FC^Ikiu zT!#ouoTMP%)6$Yd5v*zpYIL}&{?%{R!(m)~qQ%Wct7YtM-LC`S7~ajCoY|+@0g_x) z2$3h!Of~hX)x@*+x5I-EQbg*bFtlYnnnr_kcNZ+Pg_?mk@M<tBmKps6OE$S>+&Vx! zl*{7?)zSMn!gnXVKQ<J+`|0WH#gJ11GANC`_&(N<))MA|l+T{HNwuk^|C~F1@eTZM zrAay-qP?G1IQ$2vM!&7h#&WjuRgR9%nt>(Vc&8`<w<{CSF>IfT*eN~H#0{Ebd#i!A z|21Usf-#|;G7LvcGX`l$7kKrcP&2<=yTrPx*7CE71ochG?*>J*(S)*cLx{q4$Zy$U zd|Wh5f4~me6?p86J+tnm)1ZTpo{XS{`g-~J!dr{P@Tt)wU>@94s9+z=R)~>5He!;V z0-RKAMnX5OVAegDcDl9d<zEJjn0{l(1!*N$LH*?oI99$+R6}f^h_w!WTNWIUXIP`8 zUomRl`!=Hgi1Dje-Kp$yE8F1$J8rli_TFU~Iv<3)ZVhg-k$qj?O!{QL-~=_Q)EoSF z)Bat%FWip3aRim-Pn$Dr9)4jfV$ArRqxKOOgTy7iR>X)p^FJdQaHEs$E9hL0FIs#9 z5%{|M+cPJ>Bn*hsq}gZPXI6Yh7^e6ejKi<2sq=6MlV?pft{JXtz}-=*T~F<1ahTaJ zs6TvpRTQnH@1TZoh#H`w47Uckw}xsa*jI^y?*mzbEkA)CLIuB?ZZQVQYdiNj(-v>l zv0S$`u8kM`)U5bN1qAr8#b<23xwPey@@)Yvu)M<adOFn*`Q+fg?G1NcO?&lboO3`c zMp>36kx4Qr6tGoSoO}px&?~JSdN6ZFVBKc0%|`in+la^QZxUjderA%ha4P)q6;!)W zKNkoUYHOC6PT_glkwFZcgUHR`E6p6wML2C4BigOlorC7~I|dyLYOfUb=#T)c@blwB zw5kxfXqselF9@kDy4rFNv~2)p$LP7-*&56#;;cmY)iOnJr?TRCP=xaE9ULc2K}c@c zH$;fNKX4<)o4p<O#lbvrJu^u<`TwH#9{c95JZE7ub(_y4bC5RfWRLRdd^;;|6NyLg z%1LRIyv-e3)Y3~T0pD*(MzU{aJ<zcQs2PFey#by-@Rez=dT-6QJVqEKTjz3n)d<V{ zb1iO^s`@`yL(A{v8oa|NSBSYbEQ7W^PN~@_koMOvzf>o;FTqJGs^v7P1VVsvCJm+Y zSrtpO9rpjD**Km|r)&ibyK9e~v4o>Oa4gZiK&bRtJukX3Mo6l&^f~I+AO$CT`S~x& zq~a_QgZ0k1)Q>=;VR$QP;7Uq_Wb1QRaHKOyvb)PL5m2CHeW=^^oJv4Zf&gOHG++a) ze#zY_TVpg<qGdO9lE*fNv#M=4D9Wq9SbPcqR_o$&n~6{oF&PC$9lh;P#fq$VqOxB( z%B9SKJ$Us`2uLg<-iYBCqsf;~YWz8E>7`Tl`t}$r?buq2nIJ|@YuH97w|MxOVvHsx z%`e;Lr?Jwy7PsCZU4Nr5k;;+3K_piaylWGP*xFr&7IvuE_0@CX04L@#IGC6FWF8+6 zQE1Q4Ufu6dpV9m_Gz)IFe(cTmqQ)Z5o`8P|kA4bDhhVFS`Xy3xc(*n9_D}@9(4E<% zW>Qj*!DxsGOqq<hX>$BmSW+^}y>fx)@o)*W#N^uPaF^EN#@^Z=<V=~B`L0G-LUsSJ zb1}F!PGm-?tO|wzqg~T7<?rtggd~#_4&?(2xGg^d!-cQs*|X8Y=@u|dw=A;9qmcf^ z)*TP3lma7iXPj+;Me(Nrqo=Y8HGMTPj8{d8gd`YV3^Yk!;{n{^4}mJ(CK0Y|O2w}= zY{HueUE(-5`3SdQuQM+A<MdtZyBE22SdW>Y?~k{t<OBE+)$Wf1@lHCTYa_WF&pCCN z=vaw?Ris)f&7*O%Y1F`zE9Xz}=Emx`0dGjHcmEE8q;{-{wF68W(KO!d)?ve0ijhc0 zy4lT{g;WMx+PM)jv^2bo)=|SFSOU(8VZSx|;Gyjh;${OecFkF=QLik;WXx4(y^Kvd zq{KEsGjLdm{A@h^5wKV9KC%GGn_qw!$yfEJ^Zi5CalW+Tygh0cOPz{CJ>0x&xsw16 zI}Q)o_snR?Xbbs~3-4pYZY$d>VI`Vf&r1iJNo3BPwramgcSD3zr)%|DY#xS*o|l7Q zoGwuII?v%2QyTi$4jdDU|E-blIl3y+jqqK6KM(_5)HcN<C*hl!?y?gQBmV5}>lfV3 z*p2K&R$l$!J40O|Z(jLuVs+|onXaIJD+M8tTr&C~Y53K|?^84?B=@+Om`9_mkXsRc z%yp09qnk^t%RbWafgf7k$jT8o$CJoj#d~<{w8qbOwsy&u_ljO{Y9M&?Z!aC444V7? z=VKXFYx>s6RZ8jV9LQ-AOG~4#tA5w3M#>6l2T8Jvc+r*%m5eI}41bvM+7}kBG)OG% zDOQ4hQ#Z;7*N+2@yWF$r3Y#nU6Sibl;CYCMP2sOW<UScfzKnB~Q(PY{(x(DIvOEFF zI|wsuN;wbu4wFh*NRlez%3?WMxUiK(pp)@!TrrK$7@kem7A{X>sk(>Tue-NNb3e^A z_^3#U?y-E%)8fyhM_Yp8@KUTrh8P^{;I%1rUMDa20h+!`9$fxoZGc4v5osV?lU~+r zG8=C5xaAQ~w`ud28x>h%^{z=8_{idbWxd4*4+#GLcgEH_hrDi<8_xJ;p7IUfjsr!9 zLa^59>xdn@HA;05Xiw&PNH1|$;GFhJPu77n`)?Fl>5*p*jneuG&KSx1wniXI!CNXY zg`J+)V&1f*!qG0;b2wDf7^p>j_k;djf8q0|LgKk<g{r$)KF#%-216bfILn_>w#xVy zdVwhT`1#OD9GAS{%@s_>!1uW<LNhHAmcP5aafxY(>gaSa5;j+bE2<++Ez+k4G9foI z_f@Fw1Pj-AZCd1$B~1qu6#C3~75C~X-)(zOpR@>hQN&+1sUyf?s;3SZy?<*IWy9+x zE@`zEX1vWPN74(&R=Lr;c}UaHJMt#oS#YD~=d5sdMa+XvmHVYbps2;8aRCB-=dZnN z^y<HtgZvDKYQJZn+XuAY6euPX4~KN?s{_RlH*nNMWr0Eh)DR?>_lC&JrQ(Y&#WK-x zvmUR>%FC9m^u~A92Z87$k|V?`wPh!wOXGho`kQxQRl-M46n#Sp&*E?}CocECMOi}M z>e`ao=jUsnRAWHTZT~)=Vi{W5&HjNP{zZ;MfnrNRq3&9GHWK_&`91j&a{HvV2NZ>S zy1&$t-s<R8jXYEQKa0BW!CZ{P3>MDzS7}|Yz_hk2c>WX)cinkk8K(~Gys|3praM#5 zyM?3-f7JTsRg;N6M1-?vZtLf!PDNL3s_2Pr^%Giq?wrclYXkm{OrCDkWWav+PdLL5 zH{^NPH%7139dDT)*?AxO%6FeBxjMN7`2AkrtuDCP6z^g5ij<O4a9)k_B)UhJsT7F~ zQ3YYDVum~#*2D!jyRdI^yi-@5%m;7@UI9;w@ZLI=m@zYB_7;aw$rpzDq?uY3{J<^< zVX?X29V4YeHYOy`^!KBqefQU#ekeQ-kUW~WCM{D84vDNIh5EE(vr>CzTpkAOLXJ?+ zLX|PlUdYE7G-mQ+_dcvS9cWLRF_R_VQ(xMz50QLPjKr!yRdYi46$2x(te8QX8psyk zw%K+ESQ)VH+{7BA8kJ1t5SG=SW(4io2q~e0GawNSjk#k-YqZ>R_m@G78yKG!Z_N@! zBIjnv!man;7|OX_2v3VJ`63%zampv%jeXxVk&>3L59jlkr`rC9AKSOa*TS_F%1}{H zZY2*FehA{we!XLHlF$aTe-^RV3%<6Nc!QDMi2g2GQO#ngvT0dF2W6lx`#Z<IMl?q1 zd7wXd)I?cXewa`Fn7>$ePjXFr?zTCI{j_<#zkQDYqn%r6{V>_2ud!)>d3*s9VH#{P zp8kOxdOY(5Kz_d`zo?pk=`SpkH2AcYvDHo}B22+4uGnGVF(J#H5gTySCc{$QlYdR> zlGDmOTg2<~Pm|y_S(_lfOzn#zT%?=DA(wNY8;>xU7Nqu0{16f<nYli<XM(Q0k#5qa zG|;wQ&NUf5?~7ECEKSBMB*9Qa{BTq6QcH*<ZsKeCU4{Jt{Lsm=K|6`}_O-kJ`3RH~ z<sV{bpw1y~GoiI*jav5)eJ{0dh4&;2vC`$o30foYnI8?)Wpu=a>ar6CWW|6ed%;p} z*y1!T1A!{Dj~1W90HHbjbvuZ7CFjy9k1oe*43@g$<S_^khwZ3A+*Viq#!z-0#H+@k zK`!rK%Zo)uZ+d?el3obE3!+)^FprBM@i!+>@Fk;*^y)1YSYezJcjp{wCe?Ekh_46d z)<$``6a*7jJluX@R=R2dkCJ~CWlOJ(m;z=2AEEE-Z}HBcGBp#|w>NMx$1g%@1hPH+ z3zWA+9dtYqp{mz(udOXNp2jKaJl*+fT%`ouDV5J!M2CvI?51KTk-BxSo9<MF8`bBM zX5WcPzW4PL021ytYq3>WyGZ$>rbc5-%yeyxk_4>EVV<jiuyh@KYdhy7@yClrhuxuo zbD-nzf{=zkNn^uHz84ega&)MTmfnhP?ciqqrl=bJ;h7L{qad2lQ7q3Mjl6j7UGuVD z)7RflgmaR7N&7{n<bA?mvZz24z!fbeL8tY<jQ#0l`+GYwCd(87Uj|lq{CT{{;L@i~ zr34lCgfj;L%0sSq;LkBYVc-xi%C=7t241m+0Dt9;v5+V1e}8UHCI<Es@_hf7^oz#h z1UV88^6i_YT17LsHFBS0{}!Vsr;$n`@3HlxB~8Nrl~Hpuxqj;s$1^Bn1LMY8UX0yR z=JL3d=!d`*Cv4@4<Q6GVu>3O*Qq!={eZf9);J=1fVjlqWzkK)YBN7G?swHRoQ8q+Q z3Y0~^7}*k=qim_q>lld-B1nXRcY*1ML73Qa{^;63dQL=#w>H99YRTW+w<igD7V(Kv zke&YO#;VW5)m78oByB>-6wXRHVsB&hoj7Q8m-_~Pl3tHgt2d@_%Os`fvv`MOA%)$e zk)3#JBNyy9>9zKIUeZ0_f{82JeHvFOWiot6RzemI`EbJ-a+B!R&7W%pTU3G%_$Cl; zYw5?AUT3pQAYM&-^hh!I2@NW3dbJ!u%7LkL#6*8B2JxvZ<4iF7qV~r}`Iq93n?ZE- zGNzJ<NGXwN`+L7Px!~v$_hs7`F8~Ng7~uQzyJZ*hz07_wBF%ZgvArCL16~#w$V{Tm zYv+5ZAW6bpXi)ci>&?OLu((TohO-J4BhfNXd=7c|%tf%K&eMIzwi`4%Yb$51zS`Fz z5+5EqJVi6ZaC>d<!cO_@CAQMI#fhMFkK@%4q4;5@7#Uw~dN&u{x8IS#AnhB-d_`U> zuKg7|rqP)$I6RdQw&j=dyRz78)2(PaEPDMeJvshkUEQ^|Mg9^>XeossQe%qPNli=b zhBQio=D@M-n#))I?>uf@Ig@*Il;H{6bE*do)Li4GkMq&K57$=1$zB@(oO7pwLCk~G z2IwV7Hj=hlln@%$<(28qLu+XS(%F53w1Pt<Bq5bvKGYnT#`Y(zX74zT*z+&BAW;?= z@rnKY9~4t5K$8B@FoLY)7L?^pM!4<lKGoxf$JE6+?^2Xl8jQf^aLe(W1vvID1Na!} z&ND}WDcmgdU>79>ljL7!-_t|diijw97-HCPwzb&J=Bu$!0Pr^_XbF2mKEO~M`2YAQ zlEp0K7w;;k%>hNwHu;K4_QC<cHZOL$eEHF|`4D)ZT2H<$;~53MKQ&(mdh9Eh)nbs| z3>0~OJ|YBFr_#<}0{~VSn1Ha4W~)(Usn`iN9uG@0-p%YtKL-$Et;M^9$Ikj{x}d62 zoYl`#A*4TnryW=;KLk1D%Y<#2Au+8#E=OnT4jz&Q7~%ZkXnFhRN*|%|+ZGP-&qzEP z>n@3R>H3Vz>Wep-aLH9-30tM0YEk}CYLRSrAQDV>W$p%v^D#2Er1Bn~t&MEjYO+N4 zjU3H){OqxI?$}>Xx=%G(zbq`RoS%MjTCL+zTVBnwyGzhAmQ>*(jNol23GQ(Yd!bX{ z@m2TD8xwWsOY!tVF4W~gzH0wm-iNK4-?Pm&?o&T(%%xc?<Wu8Xe(t{?yC~-ff=R;2 z4{;y&=K4$OWSIVLh7}#0#-n<*)lJAo1^i4H`i-B@el^?K!Phr*qkLkmz}Y)EHZsc9 z?{SpE#?DUpc=GW%4f|Sjv>M+w`XXq6x_fDHG4!O$b=uP}uxKvLL}yf88Hw0{+FEdZ zDEZd0EWGTctGyUUFzdh<b7uC2rs&>5g<u8h==#$&lDzRx?4R<L`uDzS#eRshXJgx2 zi?hrrPK&e(f8DF<*Q^yb;BN9Dv93p1Muz;`mU-*(7{bp)>}0~e&o+I@i!cIJ=KS`s z+zA@~r{1e*bgbGMecHZuTm9jb?a(x<_QpNLYfj<wO11{o&u6F6(Z-7=4+QvHn@Fk5 zx2vD)+twrA2q`&liDwiRWM-O{U|v4X=x<?gqv5B%RawARw21ONPSZ5i>)EXhM>C3u z_@9Lo;-o#l0W}biyHM!5r%Y#giGQ_Cbe96wl^P$|8r@+sK0fM7tJK8z+Sx9{n+i5z z1<9zxhkP&dSBdCf*c#fCL*Bid3X3c*HW8LKApCv=eJH2M7IBf`rHBfnc6~H2&`?^7 zuEAfEmTueT_B|zs-M&p#Swsx}qR`suM_nzQEtE}`W(r&O1?`1I-&M$gmDRdSVP0uy z#3dzcaLdd^*LBeU!!20oOp2%;G63MeckU={pG?q6YYg2dz2zVi5JXSW?fendBw>_J zoGt$BK)g`D>eq=kzO16+g1sAC$*Hbos-shgt&ZT)B{^(pbcF3Q&YjMKPaI0W<H_Ui zAQ)YqNu@a2^iDHS9*Z#|=2H9ZLSMHrRx%-Q#A*ESa5DdYzG#l%<mMz;aAiIgx607t zK_IR}#U5->k9Zn3hK)$o=p&IgVP0kq#?jvKcwV0c`U}ZmoL3<@GLlFfpNIeDi!z4d YC4vTLw!UWY<XarsXG%{CpBVc6HzU3kw*UYD literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/8_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/8_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..966faac794b7da3b94737b5590f7a4011fc0b160 GIT binary patch literal 26564 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/8_light.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/8_light.png new file mode 100644 index 0000000000000000000000000000000000000000..f35f413cbcf5b4a03706c02258581700f772d32e GIT binary patch literal 26661 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 CNSJW| literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/9_screenshot.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/9_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4f47b074d281405b209b9703c70d7783afdff82e GIT binary patch literal 335288 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%0D&gVzm(0#bARVJ2gn+mqk6)Kl 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 0000000..88e75dc --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +An open-source and lightweight music client for Subsonic diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 0000000..3baf0e7 --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +Tempus diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..b34d09b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=false +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b89f7b6 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Nov 06 17:17:57 CET 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/libs/lib-decoder-ffmpeg-release.aar b/libs/lib-decoder-ffmpeg-release.aar new file mode 100644 index 0000000000000000000000000000000000000000..d91160eb4b813083e799eb97418c3ae6e2b57499 GIT binary patch literal 232481 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 Pc(O7gKKY4}Os4+@CAV;= literal 0 HcmV?d00001 diff --git a/mockup/svg/tempus_horizontal_logo.png b/mockup/svg/tempus_horizontal_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3fea957eaa0293e5d49941dceade008dd5222355 GIT binary patch literal 35053 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 literal 0 HcmV?d00001 diff --git a/mockup/usage/add_podcast_feed.png b/mockup/usage/add_podcast_feed.png new file mode 100644 index 0000000000000000000000000000000000000000..04c4f6270f40de00310dd8ceaba7791e0a3fe168 GIT binary patch literal 16576 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 N2ui-o;@AB8zX0!<a{T}R literal 0 HcmV?d00001 diff --git a/mockup/usage/add_radio_station.png b/mockup/usage/add_radio_station.png new file mode 100644 index 0000000000000000000000000000000000000000..830d3ce12e595b418493e8ab19af8e5124154fae GIT binary patch literal 6543 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 X>R3b5^%;M{0;nl#D}7P4{P2GOsIli8 literal 0 HcmV?d00001 diff --git a/mockup/usage/fave_album.png b/mockup/usage/fave_album.png new file mode 100644 index 0000000000000000000000000000000000000000..51c2c7286cfdee8e0d1c5bef2334959211cb4087 GIT binary patch literal 44394 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%0Ai4CR`Fx{n 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 literal 0 HcmV?d00001 diff --git a/mockup/usage/fave_artist.png b/mockup/usage/fave_artist.png new file mode 100644 index 0000000000000000000000000000000000000000..62c9fb8a24e95b84bb2edd38447f9bee43bd4a31 GIT binary patch literal 66007 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 U#zWgq2>7F>tgTe7@G9c}0$_Z#9RL6T literal 0 HcmV?d00001 diff --git a/mockup/usage/player_icons.png b/mockup/usage/player_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..59d6fa4ff7bcaa083b14772914d1a7034f0a960e GIT binary patch literal 44475 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 literal 0 HcmV?d00001 diff --git a/privacy.html b/privacy.html new file mode 100644 index 0000000..1abad22 --- /dev/null +++ b/privacy.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset='utf-8'> + <meta name='viewport' content='width=device-width'> + <title>Privacy Policy</title> + <style> body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; padding:1em; } </style> +</head> +<body> +<strong>Privacy Policy</strong><p><strong>The following privacy policy is intended for release via the Play Store only. All other types of releases are therefore excluded.</strong><p>This privacy policy applies to the Tempo app (hereby referred to as "Application") for mobile devices that was created by Antonio Cappiello (hereby referred to as "Service Provider") as an Open Source service. This service is intended for use "AS IS".</p><br><strong>Information Collection and Use</strong><p>The Application collects information when you download and use it. This information may include information such as</p><ul><li>Your device's Internet Protocol address (e.g. IP address)</li><li>The pages of the Application that you visit, the time and date of your visit, the time spent on those pages</li><li>The time spent on the Application</li><li>The operating system you use on your mobile device</li></ul><p></p><br><p>The Application does not gather precise information about the location of your mobile device.</p><div style="display: none;"><p>The Application collects your device's location, which helps the Service Provider determine your approximate geographical location and make use of in below ways:</p><ul><li>Geolocation Services: The Service Provider utilizes location data to provide features such as personalized content, relevant recommendations, and location-based services.</li><li>Analytics and Improvements: Aggregated and anonymized location data helps the Service Provider to analyze user behavior, identify trends, and improve the overall performance and functionality of the Application.</li><li>Third-Party Services: Periodically, the Service Provider may transmit anonymized location data to external services. These services assist them in enhancing the Application and optimizing their offerings.</li></ul></div><br><p>The Service Provider may use the information you provided to contact you from time to time to provide you with important information, required notices and marketing promotions.</p><br><p>For a better experience, while using the Application, the Service Provider may require you to provide us with certain personally identifiable information. The information that the Service Provider request will be retained by them and used as described in this privacy policy.</p><br><strong>Third Party Access</strong><p>Only aggregated, anonymized data is periodically transmitted to external services to aid the Service Provider in improving the Application and their service. The Service Provider may share your information with third parties in the ways that are described in this privacy statement.</p><!----><br><p>The Service Provider may disclose User Provided and Automatically Collected Information:</p><ul><li>as required by law, such as to comply with a subpoena, or similar legal process;</li><li>when they believe in good faith that disclosure is necessary to protect their rights, protect your safety or the safety of others, investigate fraud, or respond to a government request;</li><li>with their trusted services providers who work on their behalf, do not have an independent use of the information we disclose to them, and have agreed to adhere to the rules set forth in this privacy statement.</li></ul><p></p><br><strong>Opt-Out Rights</strong><p>You can stop all collection of information by the Application easily by uninstalling it. You may use the standard uninstall processes as may be available as part of your mobile device or via the mobile application marketplace or network.</p><br><strong>Data Retention Policy</strong><p>The Service Provider will retain User Provided data for as long as you use the Application and for a reasonable time thereafter. If you'd like them to delete User Provided Data that you have provided via the Application, please contact them at antoniocappiello.play@gmail.com and they will respond in a reasonable time.</p><br><strong>Children</strong><p>The Service Provider does not use the Application to knowingly solicit data from or market to children under the age of 13.</p><!----><div><br><p>The Service Provider does not knowingly collect personally identifiable information from children. The Service Provider encourages all children to never submit any personally identifiable information through the Application and/or Services. The Service Provider encourage parents and legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing their children never to provide personally identifiable information through the Application and/or Services without their permission. If you have reason to believe that a child has provided personally identifiable information to the Service Provider through the Application and/or Services, please contact the Service Provider (antoniocappiello.play@gmail.com) so that they will be able to take the necessary actions. You must also be at least 16 years of age to consent to the processing of your personally identifiable information in your country (in some countries we may allow your parent or guardian to do so on your behalf).</p></div><br><strong>Security</strong><p>The Service Provider is concerned about safeguarding the confidentiality of your information. The Service Provider provides physical, electronic, and procedural safeguards to protect information the Service Provider processes and maintains.</p><br><strong>Changes</strong><p>This Privacy Policy may be updated from time to time for any reason. The Service Provider will notify you of any changes to the Privacy Policy by updating this page with the new Privacy Policy. You are advised to consult this Privacy Policy regularly for any changes, as continued use is deemed approval of all changes.</p><br><p>This privacy policy is effective as of 2024-08-21</p><br><strong>Your Consent</strong><p>By using the Application, you are consenting to the processing of your information as set forth in this Privacy Policy now and as amended by us.</p><br><strong>Contact Us</strong><p>If you have any questions regarding privacy while using the Application, or have questions about the practices, please contact the Service Provider via email at antoniocappiello.play@gmail.com.</p><hr><p>This privacy policy page was generated by <a href="https://app-privacy-policy-generator.nisrulz.com/" target="_blank" rel="noopener noreferrer">App Privacy Policy Generator</a></p> +</body> +</html> diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1cd079a --- /dev/null +++ b/settings.gradle @@ -0,0 +1,5 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' +} +include ':app' +rootProject.name = "Tempo" \ No newline at end of file

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 O%ke+Hk#uwF^`r$y0*FdIgrS*NT^-DR-`CVSC z-P;4{hi$!2&flZB(R?_NeqU%iv|#xJJF6cKbm73U+H0V*OOdmDfznQe`a^qQ$$ZJ* z;W_SiP+pf0qMsB^JBY`5XOO1rAdTN3O}9Y|U&VSIe(Ca0-eEljySVGyIe!o3anZD| z25I;QY4``ZaO9oA>aXl4;Jz9U=KFT3_G}MizQ~6)`GxtdO+P}hujL^93D0MEb3PZx z8h<_)#kxLsF!NQe`6}1^m-lG-!1|}1>-`IDe-=$UlD|hh)LzWzIM#F7(uLHvI(m)$0b+PVIpj&gS_;-0$+v5KYG+8ZPZmb=VF?dTIEy zKht5pLiIplK9O%$)=ufC0YkRECat^<9 z=b;*|CVvfMygIZ8%I)U43}@cM{7|r+fZuC)G+gbbJRQb#D;Q2RhnjHfbDR3Sqv5M* zZ!~1skL>90wSK9zomgo-Q#JKcQ;zEOc}+j5n6J=YasCT+=b_F|pe`PrHt!2{&xJbw zfx72IUA&<#oKTl8P-kzb^9QK28`Sv&)Wrv?&u4oB$NGG>JJH>C{s7hIv%P_1eLnLe zj`jI$FW^|8&w2^R`h0CKw3~8~`Lmr5Y3%6~{rpBXJ=m^A_erm7+Dn>$3oQ@Z9nJrG zea?Or(pUXl$3;4NzSRDA)r>1?Ii0gzjOM4aCsgmNZ79>G#+3ybt=F z3^yA1tcRNZvF7uF<$BRpzitnr-?cU07TP{*Ydzd%{zkLjr6-#4dSC4i=WM6ryykPZ z%aLDr-$LzEXuqz*-yxhXo>0wa+7It&zpbO=Mjeh5A^&Rr9Io*l;rs;c9~T~|reD+l zq@TiFSe{qf4ydNrFU%k9rk>S)U`P9f9oFydg5?1Gf$36c{hc@YmElGFUAWM_VZP1T zzd(0H)3es_>Gy5cljt|nZWYT}gqQU|!Em(;eQvJf8HJ`-(bU&kFXt?W@O-s9!-M;) zeRv+nYIp5dcUZon{-NKt2WdL896-9Oy;)A+{+eD*IimfVLhJo@)9&i1eOa&KcbYGz z|IU>MIInio@xMazOVRi_#}AOcT8^-Pg8EL=gY{9nn4a%hKUYoru*pv>$B>R%E@}I} zV80*zC)y1InJ(Xyntv*7ALh;Y*dUFE_P=ut2P!c69r{=5mwXXRH}M$E{7?*HIu~sJAzbQLEDzDoap6GvF#X!K z{%$bO=Z&8=_H5dZYS+9OCvC>zv>%QE9;OTH4LnEvU;8hereEHS+h{o3I!@JQzQu5c zi$B`Q3|Cvr^S1g)o9(Q2uKt;;f8|>4z@2t|?#id4;xH3vGWEZ2#kW`f1+u zkD78u+w15Ux^%_>F#S*4(;aP3clbPn*Vz;I({yJ0xYKU>iR^da*xe7R?J~AcaIE>3 z^#YDH-?HAovF2MX*V~P~*-t?^%ID@<|Kw_iT*H%Vd%I}rX&$4$s`27;ajgEN-_ za9#@iM2)BR3)}2BA^n&iil%*~<70*Xt{B4f%$s^p+huuE4>s)vmY)cR`Y-b_s$cbA z9dB-{pS880l{fVr=f^M{uI07Po3xvG7#-(ovwe$Ab=W;DKa`m^oDYu&OA{}SS zoAD*>Kj+$SF0?&WH0>h(9^qI29<27IU*f!$?`(%4f9m&5J;ZVb=hYrfJ+9?yTlsM(a%-8)oPb!+)3-1O7m|;yI?qw`L)vW zywLt|rR|qW+XYoq?sI$r!_eApZ`xg2?iB3bV!T7^YvyAdyK)2JZTwQ>(X{V$9=5IX z#HG#?mD)cpr;h`({3*3uE480lay}T{FVLwquzuqpjo-DOrTQ>Pe z<6mjHTB&`j>Eq9?97Ok#=}|T9TJ4`y91lbHuxY0_yW@K1<4W5TmDasOZ3k41 z9W#6{&2b1ci#eWDYk#@c z`SF_lJbdr$4rP9;wVhY%xLB>_MXlpwwU!&Tj+50aXD}_G_tEmC)^!WDj_1_6excTJ zom$s1)J%uG=J*eW9oUa5b=<7fbSs;2CHf<#b(mg-)_;YzV+$=G3azJWoma25pIz%X zajo@xt@GTq_HS$Tr?OdJ(S)n+9=2KmI!k${5uwRa09_=S- z|Fdl7Uv>VX*7jpUhDist?kiT$B%2a5A#~brE47@thIez>v&|X_&s%BnP+lQ65=PK=gR~&zA zS8QkCK3WcIx>mXlsM7v^rTw@{=S?fM^T4K@)&6y*KRyv+mX?j#TFJEbU zx@zW2wO?8_}iuS(0yisNsXmverBVOO@_&_HwjoVKp_Xscb? zYNwp#5r%VIdO%$}662399yoUGHmECKaNd_ z-E*PN-cWrm%OxD^^P7HW(;sd6z3d-g*&54#WMrm4>oH7o&_Ac!U;P#nz;a!oeihWR;-ueR5w`zzZ8m^MTj&?(acc4WxoW= zKVA3`FZDy_TZBu~i~TDcJAZ|0da)meWAzvIUvRAc!ulH15t=VJ|BUds^v80RCLT@v zn{aD5IL?jhH9xRDjdauNSZ?E3^CRm!9BX`8ZsVBuFSL9sw7snJQ%HBcKm7{!(DZKR zlbZFG&AbxZIf$3~JIga1t6wzjE=|{xevEKvd7|~i^!bqK`B?42@hB|EWxSg4_r_nF z`2bxHgy|Y*4~%!H9ksq|%Cn;J`zAlJ9z%FFec6x2v8FHUEgZY>Ks9|i?ulbfU)I|l z&38~24ycw}I?u1;Ot7oVA5bmFw7rW756P$aor^D)3A*%v4vi+~X!SB1>$DGI%jDN( zi#VoxVL6h!e2|K}DF#=x&|qPUItbjOlRiC6l)Og=g?qFS)YA+GGTfNUqOl6?g!E`7T4*D# zhmAvA=fZCbW%J=?Wvhb zD?iv(3lUZVxK1-6D*+rk=Y%?^gKB1A;fZ6dY-o2lLvtPNs+9z;)54)CT-a#9^-a3E z^uwHvvm4H<6E~H*c1n8KSj8lNb3ZKj+y?`Gl_Ppdf52E_sw(N{qi1d z{Pr}1q)p}D6dp|9PLoNsa>E)-dUKnV2aeUQtUPe6c4g&(W3?*_YaFXxSt#RJ?MnZ_ z^P2mqU0ImpI<*rUH@Hso2lEAv-E*K?XfXY8tahh=;JCRDD_31ij`K}8wD4f332VtU zo!B|Tu?rtm3s-iIaO~0ts^MTG7{@NYPz^^jX~#(doY%sOjcOe0^V!+MoVGrnojn}u z^En8FW3>Z2fjHLZbFc%)`g{(q;#ez34zl7{pU=TH9P9Jh8SAu}kD<=Lp!$4vB5~}V zkNib@<~li{cE)*USB&K{J#`Qr$IW^Ar4F*=yh|Tcdg@2)Jfm`=-|1u$)}}E()W%q;gJ-2S=1Og>mfC44wQ*5u=d;wsHCj2sZcQcW`~=mB zD&vK}*L_RS!W0%C+w{o>*MoQ&OH-Yq#APhCayFrGSC{(G=I71# zjOAc9aSBwQF1CX?B#Z0Si&@IznAXTyOQ4b-HluV25bCA29yM`{J3!Fg!3+%lKVKjc z{~RDD{~RDX{~RDr?ts7l*B6N0zponl&p|%4`sV>cp0OI zE=NIW%YiIWam*AOs3pcgE%67kq{a8N?I88Efh-X*3dxdUU~^u(vjepoJ6yXJ!!;ZO znX@sAO3xYCl+5a>gV-%YYn2`{h{Hr!Wx_NWtj*g&>al~=V}~~-4~L`B0AqYg?LKJE z#HwZ9M{`tBYE4*bjh3q&w4038ij1G;NF37+rN&=}wF+GZ2-TdREwNmO2XvYU;iB*5 zETQ3xTH>;VM>mT(cQ}`+W7b`3M7>Uj@i9BhaOiM8j_K<klO ztu*~BP3MX=Dpm+@No;#i;08WqR-eAcKqW;}KIH2x}z z>0N1hSK895w53#Ox>xE46^8}!I}L|UAM5fR{8brS6gf*+9J3{%{Q|5$bI*giybonf znzMU|W0y`)7jLNZS16xXXcL1;2Ct2z7RWYWT_?*Z(Nnl$=sf zN=ij>WhDZ_qrsFR6n1*bVLW1IrX0Z|eL{yvwUdg^tN6T%&#U;niqEU~yo%4O_`HhG zWB&uOP^)s#1b;)PR@KFkxh{^>Kd!*{YE=%7;8?B7eh!XZ$qiMjaqtkwYBdfv;MjQ+ zRG-iO4c6@G^L6o1u8W7X{e$oI`5g4du|A*u8XW8Mb@7n4k8oa}&vp=w_4(Qv&2^Ci z`kk)*(bh#`xh~evb+A|KJuD`0@xx%8^CpZ{xOm{$Js*8twtJdC%F`MSfBd4?H;W;3 zFgMph&AeG`qKoo!ZCB+i?eSa}UyP;b{hL8jt_E#`=rq}7>qk`#$`{?hOtFRc>*&EGI zwGaC@_`SwQ`{{+Y`-*09iw-ImIv9h1yYwko)5G3PI%v3A`XK!Jd>wqxS!!a;LG7c1 zHd+cGy)=BfNTX=%u7mygbo*#J>tILGEE3Sc>_QhC71JlV{&nDcAZ=va5G>ckvGPR?BT-agy!CWp~p)P(<7asggh}uX0c&TXo zo3%=(S!`D5q++h^?m{PTbDjLkS?j>BHGIt=Iqg4eFrSC}x#vMOzN|$tDeh`1jG;D4 zzpiwVYo&f&>EKbN{$1%GH&xoM*4hVSv0=Q>_Pi$t&3y&Q!`#v=^~>_7a3JL z4pph2SDNoCU6fj>|5fVOmG<*0^%HHSAl{lTy7;lueqW`3bW>@6vSKR=lRxSY+7GUD zad@SR8Y^AYSgAi%S`Jpt;u~GuQ)xL>YWkMVWVtR{C^a2QO@~s`q143;+DgQn0?X}E zC)dhmF@rv*WUCXC*Yw{~^LMHCD|L}psdg-N5~0*V{!%9sO0`R=b}7{^rP`&`NwKn- zl-7Ex)IZWFb@5j@eQ`1UuT(pg>PMxP3pK-s$zo@3sPhk~i!c7RqdD*V1m{_v)Jz{7 zvs|gQd@Z%yE1L3L{i4vxy@K(;-&$!oq^(9>{D;4}a()7J&xN{j1M0#Bb@>_U!UuKb zB-Diu>hdSlg%j%11M0#Fb>%lypHIKQS~zDXs6L6alc%9J9#ti$9e(dI1GpWQ47Yi zd0+kGVhm$59{R^HxSrwDKTgFl?V*2UjNdbyx|kc|5e%O$;>NMwkL@rVGhKA?HjbGd zx_BGM`aG6LIA(h2;#N%d=K9Ettcx^?rhaScL7nU`wB1+eqKTqupJ@IpG(Q$v zt`xf1tkA`0h5oTi(fm=2mj6YwXj}7f(JWHeMS(@Lcu?z!qN!K4z9^b@q2~8O%f&($ zu@$=5q0mJtg_dhY(=OC8%yRJ%)zq!FSJ}O z*n7mdo=aya>&rsR&4THKaYWWnh1Q#e)~kiqtA#F_D0Fc|!Corn$Xq%?*K}!cx_GwK#ebzP`qNPg45u=@r7i+2wI5Jw`?AzO z;w`m3Q)+vr)XC>k7wze&1?D`pKG8|xQWpc1x_G73$^TL(|4Uu8QtISqsqM&8+Xbag zLYBH1rPN9EQWu?+x+uQX{z<8eOiS%glsXAs>LQX-CmBnfd@pseNU8H_r7j{Vb$+XC z{uor}vr6{&Fn3EoD7F7kYI~;Cc6F(Xyi1ldxL)gH?N5~2UnsS|Q0lx^sqLRq+e4-H z_exz1Q|jXPQu_@h>mRI@cK!%;;etB&qUFis6{`W)J-l$Ic(1uKa?! z^n|kB?4keS*!gST!+ZeM=jvj#9{nTO9{uCj9$j?ZqkmM~ql>S5SRP?eO7F+=1AjxR z_tQmFJ-TSBM;A@?u>8Pv8b0kW^sqd@d6tVh&w)`b)~h;ifp-mP{ln*BjhV9_)IAsK z><4xBgSz?y>g)$~Soi;bWU@Ynxqn}oC-iFHWO=%8vRv0US+4AxEMNCc zHcIH5eEFeoqQ3C({>gHFpJZdMKFM->pJX|qPqO^fC;3uDpJX|zPqN(5Ct05AldNy< zlPp*DNtPq}B+FNQl8w2CC-gA#oydjO2;7R{=c(T#v@PvIM-}rLGJeiME<&LCZ+c)XA_f7ik zeUpBB--KUBo1;WNN#+-xkAI!aeR*f@Unlc~y!J}eGqIkK*JS+*>j}9?zU0e#LN0nG z>=o+?xk$dOdt@?B#XKn&3H!x*^85+=#d`Am3H!x*BER%XMA=#Q?=$n{`4fH@>&f#c z>=^6G^C$c=U> zXHsLcpRTqUH*x&b@fS?Ipy$|g>*@7r6Q_(D&q|ZA=bdxT8E1?gJO12hQzxEv_B6Kb zH}>MG6Q@j>ICk0@6Q{7=pnQGeSXP@(K5y!I=T5vJ@uw-{C+PpwA&26L9NzQ7v3jfx zVR)X{kGT+xZsvbXF`IEZOtuZ?YltkqhB$_=!B`$AF&)j<5Lfdx#I<}4Mn_w~)a7f4 z0=@=gqf(8O#2!Am<~0DGM#2jV>-*2#dMxAkLj(( ztxWTbJf^FRRZQbXoN1v^$aJl-mT9q3%=CNXdtopVL`$Y^8IjFkJcmI{hnd5e{=xhM z(=p~4rgO|om|kvP&h&codZxK%F4Kn@ugzdQgcVF*U|cqX(GOl`T4-`E#y0pT(_)iz zF?zu_g5gOl?i?cskbcGtIE-mFV_zAJ0WgZ`xz@Q%XIrzGF18jk&9yiSz3?+47(MVW zXBxM-7W&cWD(FT3J*FQpcBet_`1<(Ut?f*IvVLajSsvqqF(3w0y2WPNK=Q<7W7(J~ zz27r!E4ga=z7I1UB)N7uL=ItkygZ)icsZWw3^{}8rSejy3nb4=J}Mt&`h>WzY{iPgC~+&vcDk!}MMGF4OlUX{OhA?u_o~T^K5;c-Hg={=P8i zo4Xm)c8n%$&_niVOh*PrG94X2a_A%5W=hZ4!lGyFbC_Nbm?o^?g~1Dj5nK=?ZS-e+ zC(~uYWx}A(*ixq7guW3LJ;#14tPBQ)VcI0)WTy1O%Jj61(M-?Cn9TIbjQLEj%XpOO zQ;Yy;=^jpnK@X?TGcCyAige$mOkc}*4OtaFbr@7JOPIrtI{swQV9FWO&Sl&+sdEH5 zM2}lz2y?7+fg>7B9zXS5(KPuly`5he&~BW66hnlV*AYtplkN3@vGv44;|g&Lqq%%% zT*f#PLyc0#Sa{j^#(GD#Grm*xR6R3G_vmdNPT$nWn@7-B^tI-w;D;e)&Z7U~e&*dA zCj@o!-VsKfsXAqgb# zSO1;7SyR?j{np=t)9Sc7$XPrbZf$GlmC z>+I)DS-q?O?tgje+vJ%gxlM|i6fMb3eDzY3vZh&0pK1DCvq{NsY4hommp3o1eAE`T zOzq_5mGAlPuC+Km_1*P9^E$Rz+~V;Tk1xsBEXn5|6I#Su9iKa))z;R_+iYq3Q0|0w z@%GW&3Hx8J+0Ad`{Zrq|C*<#c zdnWI^{~UI;eEhX}6SBY9)m|09=WZT7ykae}l>PIGlTMtZQ=sQN|NiOW6DR%YRlSd% z)+immc0Td)#JxT7`ougnJ#o`t=1ggxlDUyhN6k$w*JeKIzQh-4j*Qxn7h$@s@>g#g zJ$%wOJx~9R4pgimVORtoJxzS$qvK;*j+t~u_pxQUBgeIb`4jRd)XSZaJ7L0#35~Vh zBnNGoaOZ>-JYnuv-Yk|TuuK*vn7ARk9z&AmV5BcJ*(?kS!W%0)^WL;^|YFA z_F1`SJyeVD3uhOc{bnLvc@ri+H0hn%+*`f>q|YX8+0E~^$(QGK%q`R3$#Yn4h>iOw zZ$cvP=r!^LQ-6C|VrlaHya{?sVoguA^z&`Vkv8-H%{;4)Q#wzXH05zD-WqM?^Eytu zXUeBjO3!IGQT+ zJxg!XU!*2~@iFs$p5J-?WAjbuJpaVK{yl#Ff%A{A_Nb3>#)|Jae>r#leav5-|7QAi zq^?NY-!vVjbMvfg>fQVR&t_y^$Hm7iz8z^An#;3Xa%Wycoj?4Xk-ua!%WvrX!1KZ@ zWIJ25CCrs+>cNh!qVt*vK+s$p3H1A~0x54K9l&OZ9MU25V#r(`4HLX6QrsXmE z+ue+1HjEO~O2%c2GXmM^j6b%4(bc}A#B{DdhS)S+Ub3cBUXs?|ba}~|!3bhat(laO zMp#!dF4t`9NqLEU!g`yruU=<-u{RmZs;w^1$WD}JK9Zdo!Rj;FjnS*VVBD}xj9=BA z@vFXK^so}X2QzZjcZ?#ooiVF=F;bN&`!Z6MlKoU2Raf?Bl&VH@0HaeimqQezPsuDs zpE^(uWBjS^@(9MCI#>=@y;W~{r0T2s%A**As=qv%QK$yUWAr#w@>s^98X`w964hby zcs&-CJVB2|CI84+RL4p^_SA{;WJaH2{4qV=lstv;rY6W!)kHN>j%IYJsd5ZsOHGq! zGP=}sIaV>UlpM#%QrF7~j2yK<{*4i%mde?BY$!ROF`;7eT1J9;Lf*vaPH)Pa8PVxI zc?%;tZIBBXe>sx}4c%i9@usfo;Iq@~uffU%a^%9j~!shf;5s#1TshH;Y)lNNBfk$$ z4NjFmFbd8rxs5S!qH=rihTskIN5->p9ym!EaRk;J3l8szH!ZWmIE5ri^OJcru1+&WJLWYQdN?8LB0t$<$Tt^e8f_ zJ)_99QenoAX{Wj{c1$M~VceK*sym~`9H0(nbeI7ulhI#Bs9ucVGDY=f6qf5$A0gFn zFGnr%aspdLR^SK9jh6YSuvrtVG0|)4e9u)=y@u@P@=FfCe;&@Sh&EeOm{?*^= zD2FYHt@_xms4HG3SH(qCyeb^?5n=29nj1va{6N^&NWp*gIla#UKX~gzo7(KH77It+ z1^2?k@CYo2M}-sUA)AcnMa*DoEZBbF0xKbx-us7zsP= z?iqc=2^B|U`AK*l^5G>|39F#|XySy_(Tv7CUz>53ZN}iX86nqZ1Y?_VwQWYywHY7R zCMsq#%CyZmyf&jf+l+r}i&NpRa2lKrBViPbhB2VOXTX^-7RJGNm;h(N*)S0%!DN^M z=fJse9&qP`zH?LI0+Tm&=VGPoSBfGgoDxEkhz3ripu@?a_44fnvka39q2HHY9Xb(uI5rz)X z5jsI<=mK4#8${p$I1mnk?$85z!oiRUy`VSrg?`W<4uJu1C=7%_Fc^lwG`J9^1JBLi zxfvG&&yHxQZOn!_a0x`=QkV-oSA*wDT*)?gt_IK5;JF$L$Xy)Y)jcocX>#71p14zB>u%j9{PJTLQgD1t!r?3$|gU{g$;JKTd;9uxK@`QB`yaSwr zII3-Z4_o19_yx*@Ee(*60d)bnk;n{jR9iLzWJNZE=CD7S+k_(_hJNK91-P!j8^E;% zxV8Y-79b5leh-r7AZZSg=3o(!?jY$5>fcLXo3KM8fV7GXb15lD*Q%Ll{<&V3y3=!1 zE_UJxZ6myGX!30$nA|H`-Cm-h@xJF8AHYB1L;iaV$C${mW_sD`dThv@WjSgIbA8-p zUKHE24%@RXlS~tf!8LF_slA2y0$2!lz@25!E0^s{ zAa$n2-p0UP;KCEI0-p3XmY=ynwP)T*+ROjhu9|;NSI2tAq`5em=24`%m^2rY=3>(9 zlICL4TuhpaNpmr2URCMNEcS{?Z!zgDCcVX^x0v)6m!GwRv6g$h4&H_J@E-gF^fTB1 zY0ts#rT)pPe*DqK?Gk_vZ+RJhz5 zH~B2xDygVWYG&{RN_YY#$tPg*1WI@UB|L!=p1@5!ffAlT2~VJeCs4u@h$A)WXUYjI z_DXmPB|L=^o8Uj}myjcK;U2gb?uQ59L3kJ* zf#vWhei!-Od>o#DXW%*X%U{qL=$({DD3t2P_4&SES!uaPDE+Nz9-cVER9=qR1Z>YS zZ}E;Y-(Yz&^AhhU%k&(}g4rz3@n%?;csE&5mM?|5a2Z?Gd+zE>yk90if9U z^ai3c!#l`WNmUs`&K7yLmgE{`E8^vZuEWPZF#Rc%-}O0M@g-cPzH)t~udw_YtcHp! zs`(1E*MFg(%lBG}MbGq`EU(f3p`CE-9^$}B;7^QT_oK_(p@Co zMbcd)-9^$}B;7^QT_oK_(p@CoMbh1!NV=8*7fE-K0~a}Pk#rYHcad}#Nq3P87fE-K zbaxk$zWaCZ*F5|GZpx3U^6WSB{C|tjeGfF+4jQcX&lOp%lAp87b3(fIdC<#7?`ETS zv(dZRNxhrnYou4xw9@M=Yn^~zMH;o1%0U`)kj5OOF&n*`jo!^h?`Bt%>W0{>hJLJK z8d^(huIaw^+A%+8qcd|v=k#Yt(9>%T<0v*XnYu?rxmfso`2HtmeK>K}~nN_9^h= zncOKYG1%i~$|PIs?vx zu`mwC!vr`B&W4FF2`0l7I0w#!^FV*khpBJ@OoIzyI{XbTf*EibTn<;jm2eeY4fDZ; zC6EhwuoUiwdw>`z5io}cm_r22Ap+(Q0dt6eIYhu5B47>?Foy`3Lj=qr0_G3_bBKUB zM8F&(U=9&5hX|M>o`GlKId~pkfEOVjUV@dd3JQQ|FA*?@2$(|z%pn5i5CL?Foy`3Lj=qr0_G3_bBKUBM8F&(U=9&5 zhX|NM1k51<<`4mMh=4gp7&<^l=medi3v`8U5P<{WKsX4xLl5W)2SXE|^;6j)VJU1d>4iPYi2$(|z%pn5i5CLIYiVPB5IB<%@S2}h^je6)f}Q~4pBA7`VPKwS&MAsamYYx#h zhv=F^bj=~U<`7+Th^{$A*Bqj24$(D-=$b=x%^|wx5M6VKt~o^49HMJlzKL`G9;fFX zJOs;t_{HyWdSc?;p$GJYgCP@o!GAeUUr9^tyO@0x4fETH*(WrNjfSZlw@+x8-)`)_ zi(kVx4?WWdbd89%4JqB9$MRCR8>&VU9rGc!FN4YvMaO)MZRt_P6|6rAI=c8Qb0Un? zQ##aBI@D7-)KfaW0(4tKzvum~2zUEsnJ$R(CpIrVlj z_0`8g6RF=Z9-2ey?Hy8Yllnw#^jYSK)Z3)qCiOO{w@JNC>UG@IkxE2m9jFiOfGY}o zBBH@4Y=rMblsXe#Go_=kXf^I(MKqSPYkQ>{uvb&#R*&n4+u(M%1MY-Huo&(FBJFqu zT)!8U3hF?8Xh$u{Cm!d8jqn}&H2>Y2AYa_~->nI`>j3zT*ZLyeVWc~Z&zrLkYk+@S z)`VKsYAi_(zUpt+lBh~gO2K#Ll8$O%2udYuM6VrEty{vRQmtEd>^#+Z*r}y(H&lNG30qeA3f!bc zO}~PaMRo88v_;idVVjAosNSlkUqvhbDrm2u@2gP&FT?Bb21n68Kq7_Fat}q{&&0h< z+^1A~Go(_th_Yr--}x{23cmB@!9hw-Mk@4^)n`ijN7bIK;=br7tIwLa4~esCf5 zYWjMs^L;AXXeG+4HKl4_$X(R;Kq^1Ay(@Q#dzs2D6*9MGmoitqoN2$ax}2gtw+cCX zhGi{VNx7<$8xGv194+DBI=@yt;a?~DIz=go*ZH+V4xMs2MAECsVxOce`mM)&&$xQY zx6^$0^t@WN6+lWxEBo&D9(%tP^6UGrX;)Jg87l2lrF7}^rWXar8jH)EUK1766L2vN-IlGg%-n_Rgs=O)t3p) zRnwVv)R!%N8Qq;cem{9QQ3gspu|$iM#C50T*>dZZ$_2aD$W`-gO*XeWi>0r-W}BPJ zzq_NwtIN}Ecd31!vN|HKqvPc*h~MOC5Tz{F zN!kLDrrlcpUS& z1{aXw-&76G%N6bR(`s^bTju}Gnj9Tp>Wf_VgZ^*`41oVoZBC7~H`gQee}^2{vznV! z86#Syj8WOgtL!bUAWuFCDX&R;dgwk^5 znw`B9(W=J(_CoA0Sx>Ds zm>=;%gYDHfL5x#`i4LM5BozHIzUJ01f8J^bcJpZ0o~r`KsX4xLl5W)2ZPqVy`VSr0qtG(gZ^*` z41hynAPj=RFa(CeVW7`&I1Ga$U^pBJN5Ro>5}XWwhEw1#a4P&2PJ`27B#eU5Fa~Tm z1I~o8Fb>AU1UL)MhKVoM#ApF6p%t`-HqaK@L3`LA!q5RaLMP}9 zU7#y;g9sb|2f{(n9eO}dI2baa7xad{&=2~QG^yn5rgMTi=v3JKt%9CBeWoj z(1IvJ3!(@uh$6HgiqLu}f)5(O2aVu^Mrb`0q4iLN)Q6N zkHB(x6dr>ZJPuF53V0Hpf~Vmbcov?6=ivo-5%S?BktsQz=ELRxI z6~=Ofv0Py+R~X9`E^qOW%QEd#bc+XUOBl-)#&U(RTwyF%7|RvLa)q&6VZ6jFZ0_MO z432=|K#A=4emA%WSZK-$zxTWG8*0zH&+JL6j;^{I{>pLcXtlNadp~ls=Y4i)ojsBm z^uCMSIOR5JuD5)zM{a)CO7xEKd%Mv89glY(YNbS*jjHY4cWf!HwNiywlI%I-H}_V; zNHo*F(@GV+3he`}Bu@9^2Fdt<_Kz*REIc;dJ5Vt_Yb5%~8O@uoV__!i+GnlYUrsSS zY3$Hn4*#cL1hvWgQ2h&v;Vak-CGa);8%p6D*aF|eckn%Ig&$xWY=5M)3ds0;O=J~V_z&=}go{t$)^&=ER8XXpZ5p&RT*FL(4FQf>c0 z#OGfj|Is8>pnSo*TCRrm@VR$&Fcxz^IYYMJvNQRM-=Z_oLN@BhaA=)_6xh7mpUD$k`iNzv#zMFaZihSIPFMts;Vy7t3FMZQN(FVGKD48^ zo=?h3gHhNB-<6e8FJN*V7D(Mf8v?+a@Paqt1#iL&u3zvbyr>7<2hjlbgND!u8Uua& zh^EjCnnMd{39Xe+WYd=m?#lGjxHj&<*HYMH~PJ!a>j-dO%M&7&4(3 z^oBmr7y3beI0Od3p)e2z!C)8yL*X!1 zOCT3k5&tZJm!X(reg&JM1iprULn(X%Ti{zjZmgBCf!+d$i}K8Ep1I94w`E&Dc4|}d zw9#U=8eitB3EtO%K~kqH}_u#pLRBuwuaqDrq2mzEV-yXfNwJu0ksiQ>Kw zA0T;y%8KM*?^HRYEJqH7!ypR|hhcC842L7(C^#C9fn(t~7(r=w9E@jq0-ObB!$g<_ zlVJ*+1Lwkd;K2DX6)u2ja3M^GzmcYkxH}h+zJcfHn<(`0D6d% zi(oO_1uiUsT*!l^a5vlo_riT}KRf^r!b7kO9zmm!EB*c)$d#%QpqtP*4t8fgc4xgh z8OE0_=SeN6zlVl3^fb~*&7s%2OZZ=u`K8R~`aM0Zr#G?n^d`2R-o(~ppVrfx*m`;s zTTgFd>(OTG(Pmi+?SPFc!bTNgql&OmMcAk!Y*Z08st6lZgpDe~MipVBim*{d*r+0G zR1r3+2pd&|jVi)M6=9=_uu(S|nnv zT7)jxPJs;u(zM8I0l{ zkK!Ja?sxnqe#;z z(lkm0tnH*i>w@8&Z9IEV06Yj`TJ(fTE!uL?AlX~a&ilEku7{i;_9cvc(J@3F6ZY$< z6xXa8BmWlX)N<{|Vo3@8G@>07UT|`2G9??lhU5*G(Umq3Q*NrKay)xafV1FipnpU; z2`0l7I0w#!^MD@Ejo~{=GVcd*O0DF83^ldzPa%i6-h_Pz+zeW+;KL;ondS-@q35 z7QTb;VJrLq+h9BV2tUEk@C%fICz=EV7+``05)=d=2qDOTI#3ttL49Zlji52Khy5W8 z9iSt0g3izdx*wvCB&Lw6gI+lw4Bi`0ix*L^`tAqy34y7EtkpD%;X3|c$!0annV1jNt*!mG}?Jj z-zlm6+Y5^*spuY?5_L?(7wAhYRhP7f(HY$WPBi|tM@hX2M6amY9ysKK^I5M)3ds0;O=J~V*+pdmDZ#?SM5BozHIzUJ01f8J^bcJpZfdk+`I0(8!59kR8Lnics-p~j7LO&O{#t2fr4M7G_zBTH?_uP@K@B?gv?eHV~1V6(sPzE0L)&dML!2$`ikTC-g zgb-u^{U?}pp&rnWg4qD}gND!u8bcFk2F;-bw1igB8rlG*I+GSLW_#El!q5RaLMP}9 zU7#z_tDYHw1K>b72)aWL=m`fyCiH^d&s9~SaqAs^N#%1zj2YYf z{x-Y=AK_r{rfhEmT+RoDAW)n~nd7@+p^{-GMO-iY-k_~%XW)SF@N zyJ10w`B5dxEM*Q+C6|(^OUblyFUND(KMJ}ux~MD*pREv|tq`BB5TC6OpREv|tq`BB z5TC6OpREv|tq`BB5TC6OpREv|tq`BB5TC6OpREv|tq`BB5TC6OpREv|tq`BB5TC6O zpREv|tq`BB5TC6OpRF*UAOJxKK?c-;x=;`5Lqli;jiEj44`Jv49ibC+hAz+*y1`cQ z7B=-Q`rC9ue;*kZO(K1A>Mvi!EUCgo)X^g2sqB8xb(u0P1)zUlj=>k+boM9P92;XC*qw$id`m@p~9 zTe=hv3IY&>5M%(ov=IHzCiTzoY@+|!ME|pi{$~^Y&lczy(F~eH3up@>B6EY^7R2_~^n1&?Wk_NzTE2#!DXYiG4tgZz zd7_ASEPdTmmdUnEUklA3jWcNX&66>BG6qk^;K>*~8DkYa7ZXIwthd&IcTaJG*yl`8Y$kbS~2dF&7HEjQ#N;MHg{?^cWO3wYBqOjHg{?^ zcWSnU4MeLrXcY&o;h;4fw1$J$aL^hKTEjtWIA{$At>K_G9JGdm)^N}o4qC%OYdB~P z2d&|tH5{~t!xPZ0>ue;xqIRw=>+M({gl&8nzJO9}#u^hurRnfVGVyJKvTur^S)vQ6X=k<2F7v6omb zS2L%Ne9F$$6tY)i;>S^rp=(95V4aF!XSDBr4zl22Jsjl0K^`3B!7)C9kD&1#RS96xxa;zlF}y$BNU1&|n83qT0ySsjU?S1zarx<;S@><0~@ z5fHycVr(SFMq+Fv#ztanB!>7Dw1zf-ra)qBB*sQ!Y$V1;Vr(SFMq+Fv#ztanB*sQ! zY$V1;Vr(SFMq+Fv#ztanB*sQ!Y$V1;Vr(SFMq+Fv#ztanB*sQ!=)V#U1@bi#VxDY#PZONrbn@)T*@*fxgL9(sU;1qor!#8s?q4avAV?q z5z4Is`zY$ANuP}$qoq$EeFEvTkv<#gLsrm}C3s{dzHD#zM)`7G-`n8Ja4M#zeYf4M z>#xX_YsrD@;9a2ZiF+939!9x`QSM=sdl=;&M!APk?qQUB808*Dxrb5iVU&C5_lT!+ z9rq&2y-2kI$dpZe-$Lg)n|q;sH=FCW$#wdgZLT@WHAnrnC+XMereCLDYvvdih-0uE z$HH+yjjA{vPJlnaA0Zq51Si5g-h{lC`E_tT{2g-O2DlM!f}7zMphkxAD;pX^nd{aR zS#UTEgCl@gsBt751xEwvFi3|%It9R}$zNQXf>jFaGG_%oaWe}Pls zuW%Zi4kLk>hCxijAf{mu(=do>7{oLTVj2c94TG45K}^FSreP4%Fob@Blmr55Y2c7#@M;@F+Y6F?bxF zfEDm0JOxj~Gw>`t2hYO`@FL{HORy4Fp-BqhWiMdlJF0L>dG7f1&Gu49e zd6x6xC0Gfo058@o=J;R1*YIyBg>PUBd<*nzYkm(~+5ZRT+h9BV2tUEk@C%fIM^s+` zqpw~?2!miS41vQS3l4`P;V3v7j)7z0I2ZxP!wK*Q_#zJPXgk^RN@rBad-t@h1cLscnj9TI(QeT(~%!A{}4Wg zBKX3$DvsRFz5Ee=!rNAO)!b|1XHmQr8=pB!{49!B62)hZ5<813>P8f?eMMYfabFd> zhH^xXa`9j&(JS)0TE_e_q6e=LZCLHM5KL%mt~p4$gP;1X1?^xd^KboDgLd#|MrI3$ zXebCF$bh=g*b7tk2vhb5hr+CPfUeLD1~7V#MM|TT6I{vzS=1Docu@a8`q;PPXX~=i zZE!nOS0-}Vz65gdaaY1RJPgVqic#3iI5snm&5UC+_%Q*Hjj=hXyFXPzDIQBA*y^Lco$~d+%j;)MiE92P8IJPp5t&C$UbjAJX~*vdGzGLEf`V=Lp>$~d+% zj;)MiE92P8IJPp5t&C$UbjAJX~*vdGzGLEf`V=Lp>$~d+%j;)MiE92P8 zIJPp5t&C$UbjAJX~*vdGzGLEf`V=Lp>$~gKfj=qYcuj1shIQcA2K8vSI zEcqo)K8cf0;^d1sc_L1ph?5`UL_Y4LMBWY0!cfn98$?LG#|W$&Xqol_V{HDDdeRSB z|44LEAA6sxBI-;H^^y012nCvWUj&*n3Tq2*aiFF5??5ZoTZ@i?Hr}Q{Tkqe(2(`wKwxV&=>kae;6(V zM{Vc*gV;H z=LO{R0!l^&l#B`}85K}6DxhRkK*^|pl2HLAqXJ4s1(b{mC>a${GAf{CR6xn7fRa%G zC8GjLMg^3N3Md&BP%gK1AU<%^oK)W02~SfVGs<4AutpUgDfItJ9{_s7%xUX zjge1d4E+*A zzr@flG4x9e{Sp(d_nE-w6S+V;e6bYn2HHo^Kg)k%taEcLeLdRr%VO7Rtn;9F#|S|N z)PcHC&)Y^{EjE3%*!0z6Q$n%ntHq|T7Ms3WZ2D@k>8r&ynu~Qt3+64M6|{yn&=%T3 zd(dw)grP&(cB3QnPS6>;Kv(DniFf=3eYM#1)nXgnp$GJYJ$(;zs24-;$I$yR^nMJz zA4BiQ(EBm;ehj@IL+{7X`!V!>480#i@5j*lG4y^6y&psG$I$yR^nMJzA4BiQ(EBm; zehj@IL+{7X`!V!>480#i@5j*lG4y^6y&psG$I$yR^nMJzA4BiQ(EBm;ehj@IL+{7X z`!V!>480#i@5j*lG4y^6y&psG$I$yR^nMJzA4BiQjA`7H3t>9^4K4!osWAg)^7}02 zvtbTg0#UdW=E7xgIa~o(!c}lJ==a5ud*d3o7OsQq;qQ6Wk29zyi2cWYcCU zn>JI~#_ezi+zE?dG28_%EP-6e6OD|ea5vlo_riT}KRf^r!b7kO9)?F?IXnuFK@1*; zCtw9U2~WY(@C-Z)&%yKX0=x+M@Di+qRo)89YAYzKtuW$cy^UAkRd@|n!|U({6ndpZ zaY~8eloG`$C5lr@6sMFZPB9UPVj>X5L?DWZKok>!C?*0?Oa!8s2t+Xvh+-lT#Y7;A zi9i$+fhZ;dQA`A)m*ejhmMku zh|ZF9;YY>rqhk0`F=gVTDA8F3jJ7H$u2dOfys9JGs=6Xu)n|JH@s`?8oS+(tNvaX+ zjoGgW`!r>rh}lYY7u(dpvU=+9vP?Bh%%E=~TDux^)Uj}!k*!9+@nzSm6X0aF{h9Ss z;4iGtWPL7e(k>JA)a7EZx&p3*tKe$RKabz9fooa64z6eU2Ie=yO>i^Z!nOsl5N>1r zcDRG(J7Fo;7fbd&x7e5yxC>lZA_fO?;R%*kz?1M4>rcaLUJO4nMxRP{;0-`d=u^oK zyak`oZjNUfjEd|a#|WL#qZwPj^5e2-@P*|_3z%< z@7~$(-r4Wo+3()j@7~!y_ReV4wU!t#v0utbF6AVba*|6qDbZ$T1M{?YGnA8D%1JKe zB$slMOF7A-pKJm) z_4>3N@mtH!VSWiMN@(p&ZJCa~+tw?rQ$u1=Lt?$x2Zj$y`o>AF`O1A`fcj* zWy_OqQJ1%*RTr|~On%pIOJ7di#}#lTTm{zxEp^oma3kCVHv=^TikboHNo++8fZD`c z)c=BF_zE^d349IzhEn(jw!pXW9efX4;Ro0T+u=v}34VrOpbR|TTozz}2^L6D5P%?r zAOq?^U8o23p&>Ma#?T)2hcI-2j?f7@Ll@`@-GEw+0M`_F3Z6zHCG{Ygv@*@4z9Z9r z+er6^x_d2-*6}vPqm*Xoe~?;|FtsFM;?KI)F|6BP5HAl0Hv+Yl{u@oSJ}{TEKWz$m zHc_5UmZIgmf3Kg=wNn05J)b+zThHuEsa)5nD*Yb!Ot#KVJQt2@6UW!B+gfY6GKVvA z-I0(DC&6hj5=OxpFbAkf_uDekCde8>Z7A(`l5&*ozhgaFbIXd_WS zgH-q*?@c}Pa>{N`tXH1$=A{4eR(rGw)c^5T!%>y@V#|gqTZ+=R(2ja9eMp797Y-Gv z=@_XyUDNM7+wNVN{;QYk%}8HQEqm9cmbh=_cfIm|Q+rf?!nAx$`*`G^wAETJ`p?i! z?d)aw>wj68WyWUuxb)9=6d+Iu~W~%}(u^kOS^rrrxrH z&RLV#&!A5_FZBn#ms_!tzMRPG>9#Cgx~NUtw;!9sJN_y3Qss}GT#Z)V{Oi^d7ShY{ zHqx#`h?exlEVPC4imN*=cPh)@t7Ym}-RRs1`(l=MlmxTn5` z(%Z@Vu0KzuT(4C3;pr#NU)7>=gp*T$DZc}$4VA8=eB&N2RR8ojShUs$v}@WkJ#VG& zQ}v3{fBkPPr^~^wJHNMHOKH`QH$AaU=Z2(*P?}n*x_5HlACvQ~6?=Fe>gDRsQL$G| zONoD1{QAG~^wTXsMcONtykEE@H|cfS&(-QvZnJB(ckOr5)@oOKS7@io_N)5;?NE;5 zeg5kA+x6DeKU2An2u3xZ^1WQ{W_D_aU1{9Zeiie*Que7hTy2)@+U&G<_bKgH?a~Z*SR&zp%5UMR)e&-u~@Zm9hMkdaL$!nyNpZ&h07xBE1~0 z&yN(?Osnz#k~zOx4N>(xL^{g7pQ^w9nk^}9RKqd4*0B9QvN^4cVej4v%krz=KivbZ znnTN+>i(6MifVq|AuomXF22wIMKwF`;ig?Yqdh$8Uj5thy?V6WKiKTu|I6O{#||=J zmmj%eiA_lxRk6)q+Tp+Kw{JeWY?>ZzOr6EMfbG@FeQJ-|&nZ)GuKnIS+p}ukB$d@@ z(JIF%t+J)s4b>gL+8uYfk^9;@u@iC8d{P-GTUArct1LUY=Y*7J=q3M~-0shG)Wo+b zQN8MAdu{#A$%)r6eXX|3sT6s|sU?m~IcN90^pusWIBU9YOnJQ(zm_epSg!3-vgB6B zTU*(u^J=M2Q+Ia9^Hoh<`X1G5{`5VnE?1<_D=$6jyX#AVTXp|E*|K-!)caVUyK)Jm z<~(2ZoHdm+D2ZK^x~gja6;AzD`?+@#9@LdYvGqwdR6{k)2}dH zDym*hx>t~X)}1XU$|an;K7myJs)!#Xm+DvSWP}q}Q?aFDDLr*nWtNy)X~n*^ zTS`2cU6-0`I@+H9v+5CddMu~P{y9Pz?DK22?EnHkWu)^?&43vu4(w zTh;5RZvXW9gWbDq`a7%kQ?{+z&1|eWHn{Ut)L55T(}{#=So2T+*M6z0wQ7HbWkt2$ zxALCp+9>^(vS|8R`tlCxv@3qw`O~l1uVM)=AY8Gwvn6jx#joCddb#YK)E2EX%YIII z6Y1VdYLC4!-{HFV;E;)QSN}&Zy0_B3d+AKKOx34s$E`Kz{vG#BU)OcJXb#4^@o3{) zQyOd9&Ofu#k5;i<)zho^4XIe3zE-;F;QbIq~_WD7C~d=ru37&QTp9ekrZ^wPL9(hy7rWKGE`jEiYgCKepg4+}Q=~ znWXOQh`;tXdJFJByI&Tm>CBaL4AJiFn)dwfZTCIRQtdIOWL~GGqV}-T)@tHlyY@A` zX?uQksd8t<5mNUwF)zzWkJY5@m6P~gYqN@czO(y}4vbd(Ke5Dr8|tO1+P`Kkx#KZ@ zbL(0AB1MT<%pM+jMEd`d@zCb!+xF#h)u&!@wv?<@Y)LHDv^{;lntZqPeX3tBv-S3> z5z(?0)$h-~=#_+J+i{QGNku}+%SvmG8>Nm`k&mj+eWa$8RAud$8oge9I`uDAbD7@y zzw_C(CfqyMQeD0L-Z}E#JxWFVc<&zfw{)~bT)%3HD%I*Z<-b=fr8ed3nsoo;lrJSW z_%mCC>HXaGm!suv>oU`KsrG-BcK8pigmp@GrceJv>8Rl}6*U_*>`?2?yd97w_MwHU zBt5lG)qi8hs`0NqO-1eFPdm516&9)bsC>eP>Bxp}qg{cAy-llb z&x&m|KFw&wK090DI_#Q$r+gZ&?zcTjXLZNfd)q2}hP`*peRHImQo3`w+c#BmpKPnEu{%JM$6 z=2gyB;|A}0|EFd(?y!p=yl;20!*A$kuk1gQ82Y;XRUhxu)Zc3*N2#6nU|v&MVh;}W zoBT^{-?8{_C%*Qc=-y1J_w%nfTHRmq-@W`-Z_VC1U@9KJw~mKj&zpPy|9z@!k?`BQ z3-nC>KlAZ5gelG!rdU9tU3v$(h2BBF6wet!^AF;mW;Wl>=81f}m?xVf&93Gc^IP*^ z^LulvSzvCn7MpR)weqZUth=q1*7;W4dfWQDwbpvqy2E;(?_%pa>j&#DYdhaO>u1Ze zmP%7v)_pP{1J(mFL)Nt(l=Wp(>tWeKwy;*nHgd4_q&!R>X1y=R%jwnzIYZ92Hp@%p z!&a$WE@QI2d_uk_JIW36BYC7OlAp=rE=&QOdpCugc@YMPv*rmN}l5;arJl2J8BT`K3Q%hf!2 zrMgC4FRxWMs0A`dEmU{N1!}QcB5zlDYN=eT?oszjS1nU9nX8^xFUtGXOX?N*ka|tM zDPwAlS|guU@2K_i8TG#UK)$FxQXk8e>J#;eEKr*Q_2tWfhJnWNt3b0rGx>F(MWBWJ zcc68kwJZ&^3v`p;1bPJe%bx?o1H)AyFd{HQ1p~JQ7O7BRdEjwXKk!=ME!8;iN#Ik} zDzGWANwo<&K}WR>UKqSkwF^drQPnK)t`+^z-$e-8el28N7~p$3Pnkfnx%R479Y4b=_R zRY!yxhnlG2p=P00>ZnkgP&+ju6b^M#e+YF69iUDO4G0ZTe+i8UjZmkCri7-bzlN?0 zU8hbHrg0{cI!GunSR5vT#IBAOEvP#`k$1UIqNjIBPw%4`vwk$~UV~zWxQgl3^tL`w zT#H9L84^uZuUCz9ZH${RiK$_(Xil^b5XWBS^31 zb&PuSN#53IPLJbVjIa?F^^76L5T-+osr2P@fpG!7|4*Zz>~6+PV(f4&5V;((P zw>EB}PwN)O0(!M>ZQRP+^>vLrBadS)rN8RB#@+NPUB`Hyex&OfE9ptPjijG^kdsdqBh1sxk)jp(c{cx=W6oipOU$|AAoDWwGLCk+d7Wry zUT@yS^3CSW9Oo8u0b6c0Z{-LJP2E$`5;IrSGxN;5MGx~H^In$kGw%}_=Kbb_EI(u} zWBbGOl2p%p%zTXHn7M-GC(WnX=Na=EmY+4BW&3j`V;q<-(=YV?<{Rc49QkefgYICy zW4^~3A2KW+ zuBc}jmSn^_WhrsI6|j1<+{fx8LRMd^uQ(NzL-nm;)-e8igmna4 zhFil~K9c^C>RY3%$)cGx#X3i{u+Fv4W28vOa@gm5>wK1{T2ndZ1=cK8b zSnP*>T*5Th$`c2mB_Ck=p!KkbSdUnb@ZaUuqx|}q^%yCMSue4?(pt%K+2N=ZLKnT zvu=UTHAMqyNlQp{ZXIEubL%q}#eVc#ZOX>7G25HaclDpO78WO?h1-apvaM_@4wmic zyV{gtd8lY82g-pQZIB!!{v-#>!Qw=%sYOU@YSBb%YWBR8F@Y?3lf0SbTjVX`B)LG+ z+q!&MJ}mY_gD)4&Xm@?}O5%8+r!5$Y;mVI(0#zRFla8S*to6Efs# zxti^-%hx&D8?ulyzR3tf8S*W;hF{;7Z?pW4T+8x0xsK&`<$95cg?UfZ!^V8T@;~K= z{P!dI5&IO$BDQ=YKM_skr}9&-eWTpSzdnQ#GW=?*Xc@YRsNZ z==Hm&YD&M~Lsc`?Oq`*btLEZNtXgl;SM^bSL_gJ6^<^0g$MOI*faOEgp)6zP=#?8g z#}qrq6bmOBYYRs&ZCE&#N2}4|NHs={5reREXNo>*tQyOfacUe}#;Xb9C~f&z#`1|n zwB-|rYRkuTrkcqSW~o{HYmS;D4pWz?OT^(Ss-i4ksxD>ua(WeSuC7+|*z+274byAs zQ@pvlUR}@f4fG}6T-~A;u)I($WO|#roh^5$J6K+qWrIxCtLSjMh zVfkKlFTXBR%lP$S^(f1_*YR%H)aOMn^@4gq^j0sb7sct=*O$a!)JnBdj8v=CDsieR zP>f`vURH52OueFB5r4({u4c>Ys*r!ZsotdLbu6(s4NLrvI6|#eYsDYbI<-#xQN63) zWy^ZCUW~#*zb}qc8`K8TUVWfG5TmiyABi#QWA!mxu-WvHhs_oNZL^tTv&C3#v&A@V zv&DF9b~|x&pnaelzhb#Xdu_RyV!7FVTY&ozxHGUwG{=5F#&Rt1ILogERtu@ExCmOu<9`$UhJCgKw}_s>Z-d|R>v#05UN`uC zaI0t#+#W>#-~s$hdVUH1B06b5K-ATK0Lv<*gc%AjQdZYcka4n%PzEDq?XNup(G<_1 zvDh!vB-Dgon}wROrFp11%Pm4J+1@JDN`&wj+VHQop>`Z6%xGFhsAH%T%UwcUSnkT$ zT3tik7+uQVC0p5f5B#bmq!oZWbMKtk!2*dXw z>iJ$mC*MnG?|TU?@e)1}^^Gr#FPUmzp_T6|1btt@!dGZRzm0A23`{(OL0HNm=HX0- zB|U)4L}%ajo7n!F*?x<83;w|ZtbUy|tKZ1C`eEPdH}b819pCCV@~wUttIwDk=A+pD zBYfK*#`ZI!hPlFgQnWFj!UL$|djO4m4`NCK?H;W5m6Bl5pkRVBJxmzEFvPq zV}N-O#91_GSVIUQXp|5`09`f68e@ndM3JB&tU+W6QDV>-Lx?fPpdrK<5YFd+w6?D*;#M1v)*R6_cpt|x7qEm*;pWNp`DC% z=nd@0Dr;|*E4)>{z`n${CA7EA7kJy;728aY#9QSutn!D1Ke8XG3j@tpCbYNBP4c!m z2m&yUuT2zVr?Z4}SnJ}TC@3Z@HoG_|;d>K0C=E)<;WX^GPT6lAv&10);$}1i*H<MeAM zx6q~DLYKIE-Myp{J6+=KbSZZFKEh(BJ9<0a$8B^QNh8+!+?2IG*IVn3-dgu@Vy!#6 z$KB&tZn4>XAr71UDQ~lTVzYm!x_fIq%3JI1-dgv>TK@9Gksc^~75Lgp@D1 z7wDsiwI1oM_4(dfU*@g#<=$GK?+&_y^hLx@5A}BXO82^ZoiClFZF7sTg&G^S3R|hG zy@ei^vdV3}Rc;%u4p;M~xOL%rRT6FpH>%R`yW#f;Z{-^%rFpCT6TVrZvCY5Y8^?^W zvAANPhk4sve3EV67~QY@*g9{UEw=ergvA~Q-X0fwdt4SB;hQGf+hgr5v5t;LM@b_# zIPf;O*xTSHjKbd|rC8#!lqD|nHnZ$y=B+HY z6Z?Yw0*-m+%BW!0HcnNiqRM(tQ%v9difKgc}EC|xtZlvBqUS()J@MvhY@bFQze zR?Sok@THt5d&#&?YV4>hM|Q%#s*gTW9l&d>Gb0x4bI3?O!>B#Sn7vpvQ6-#^TdGcj zx+T`NHRJy_?DIZdwNve(?C5g<{x@=v68y7yH2=grI$eMLoI17h27%AraDDBK>ctyw zm^)t`x?y3zv(;f>fAt>l99;|?pgRH2)dPS7bp`M|JsEhuo)5f0-*Lmjv-{~az_az{ z>2s=X(mSSC&zq}v&8WHl2EAv_yc_1|H$6OBT|c)*AD>q*v>+L3NUT=;9k|<{5S;QU}6EMLnFUdZ@EhZ~yxY zA7j9V#7-ay=C<%BxQXC`0*22kg1ZKsYlOQNT-XRV30%|&_i1pMM!3n~vW;-pfy*_* zO#zo)TadE+3%KG&>8659?F1%PdW8bJ0h`bQi-1jOdCh4xt!Z_q)8aa+&OVL2g{HL% z>M}oReIRn!>c?e#!4a|VkfoMJ~WO{%x&2Vs?|sjuki3w>U#C8Ee&^PR%Z6K znb4-X&4X=rwK>wRL%aU%?`b!Z|C#(RJ zwpJEbmRFAX)PzrM9XV@smr-*@tsM2(sOLr<9^Ga1q|w!*_l$n~O5wV^SB9SVWc7%9 z6j{Gltx;c9Yt`4(ed_CKo%#m-;y2Xq)SK$}>MivL^|tz>I;!4L@2WqkW9rZ9xcZBF zPyJQBul}Y!P=8k+s*mVIX>GKnJLPofzNJ^1_NIgBXgZnBri}KEDf)CYnO4`Ge`!ZD>!}&3{ESxn zbH*L*8CMKZXXzDsh3c)3o94{DwKOf63*2k4n!bm9r8&TP;A8Ai`pVbX5qx8NlAUI! zsp<5U=cpTPy{%U>=+g{RH~GHHELZ79s@e2fu2$9Zj!NEfv0CVsy3eUw+`lpIzm;AE z-;H(~+y?cz(1b;5S-3P@s#Y{d+Vfx=KA1T^(Jmz8Ou3CNPUD`bOH4w$0QiwI0l4>IwCv+R2D)FQczR%-+61 z+c~a2pk);6X1Yvw(%p4$-Cv&%Cx+{hdaS-i&tjH#gwHj{kneF%rwVidkeVJ{Q>xldmH$y`y)NS$LQxA<<~Cv4)DkB zUB)$s+-~uRZGnANdeD#1Y^`7QhyO*f1=JbI2goD8}b7k&eXlbh* z!}9PV6}dL<=Pc#43_FE=!y%+-?%KMSncQj>b`JZ6%nj00KHdEy3~AY2!m~rZkL%jG zLt#Wa?;7?GFCj%s*WSItgg~3HTX;@5j1(Q*t6>%?I3pYoUdr!|?w4T>ndly#%dAL- z9(O1AT3CdPoEZ)bFQfcj<*D@Po$D-RCKS3ZQdZ(3DI=I{Ayv+GlQI!kBxND4i918e z0H#Eq&Aq8SlbBN1U7iJ3Bwv%yv$=ns@wpgJX?!ZjY}>EG;_$3+kaG0*Uk{svy~7L1 z?;`i>u!Q>%cQ|ZHKBNK?50n_=@zUo%5;806>fO!caF_dS*evW7UO@OO?l;UI^$5=+ ze2=6Gdxqzek`zGVfI_R)D8~F3GNvER{Qj+s=T|aU{}eOq&(kvBH19AfKG$Bzcz6us z;A%#`>lo`k!d&z&_!q)2*3IBd6L`^7W+AEf=G0?L_}-cp(1tobomy;9J$0leI>YI% zaP$l~)t?cN%t2nryI;h+R`5P`ZkdcOco&)B6DwIvFKr;!afVug4S1CGmsizsU81|^ zrMej^y%X=j2p-5vLkf??7x0WH32XY18c9Eae>jCdn8JT6h2N3FZ%yGJPT`+U;rW7f z;ki3gc$qCq%DF9tpPIrylfqY|@DHZ&{ZjZXDSX)pyn772-YTpLKciIUt<0a8&w4NO zo@$*f$u?JI+1A-MszbJYmi|b#TlNgqE!!j8Lv_#g%bu;y%$}3INcGGP&5l+BvR7rV zQkQ1OWyh)E*@;pwCS=l-2%Ivc2ay2&l#q3%&F?(P3+v>*b*6dbwOLlj5 zw`$1l$-big)tAXza%!^JY%~u=`_O{lHQy)vgxSvj6Vc10DyHQ<$PCf9%ogT-w$Tco zMo&J&n@Hc#>+e#fE>gGYIeLj+!`jy|Qax)vwEgTByWPGKv<(KZ#ySJrves>OZ-;}! zh0*Y+nsL*zn)usWQ} z7{-S6+(W)LUPX`6g!38Sm~b8(HQ5)D5fieW2&|D2QaFb;VZv(08YXO@#hb96zNX>H zErF~+0q0`rO}L02s>%LD`dK0CGQeBmw&B@^rxmLqgsb4Wq_?ChAy39-ybY6IkZ)s=y~+!Yao(})!J||U*R_4Ohy8d z_XJ=)JeIs$b7FRy>ofSqb`5-AqV8apbrm|{KDALjjAq!Pwy7Pe*7L4P)%p8uRqyW$ z)Ixu+gW863DdB8?pG`eVd8>f))pX!IzUwWengzU>p0t#GE^smREu5VOtfuCroHqjN z865~`7XTNi8-R1sRl?aCV4bQ4ewNl7P+CbHQA4e030)W=m8$`YwJ)B(3OG;Q1*}zH z0@l!?gdbl9*3&nWTu^cH6*ry`|1idQ-mXEoqs- z4;Sk)pSG=}jT(UUx}B%Uw@uvzT$S!7@w%(T)7D!s-jCZ`e_GNIHC&(NQ}qGX>i)pR zx;Jp9?gwnpeS!7595`E_ExGGngzLyB*WX@$$wO6qVey~+pGX7#w* zsvoTo;&SRkMsB0dMx)k zely3%y;@)C?{oEV%2cH*fV1={;Cy{KaGt&bSgS7s)@YHuIr?H?wHBFb&|`r08mZ;o zMAjDQ5x}{+61YeY1=dMh)zZqVPO7o%1fxYB8uS$4Y%T46ffo76YYSaZxJoYs)}t#D zjgW7F`d@wQXMywi7Pyph32>&q4LC>N4s6g%f%W=xzD}j)+M!WWEm*Tkg-xs1tQ&{5 z+(o9U^cR7(dIj)i{RLo+UJ0D3R{+LWZHu#v(n_&;!+Im&Ko~`SrIc9a5#4+vZ-YzvJ(-^<(}%S7ZCB<7)kV z?oziRxmEf>f%EkvzFNq z;Q@V|JgW4224mjHs0T-Aiz`3RbxX6fp{D~M5ELg(ISnkwHfDAiJe|- zt^v+86Mzk7Jh0xNP4d?Ilda9iEVj7;+A2dk3Fn&`zrGYKy; zwDGXc%m;c4ZM^nrY@y8x;;YP^z2EMo^r4z02S$bBDtXI-{%_icj@RkzZ{ReO! zE2;9NM}Re~rwU&lAorKd{e-K{H-WRwcYq7bX5d`Bu}-ud(E_zbB>yB!ZT=HXmD%lM ze+-;yo&z?p<|^fG)SEG0l8wl4EptOsOCr@XjmT|-IRLCT$aCtAMOLc}@=3f%>?t*b zLH0<6?2#|hMZSLp&NL!#4F=gGUu2T^L(;O=yh}K?*q_w%`B+=@y~kZ@kBy+MvPHmI zRwQk{%>n0Gk@i}9I{E+9wgc|5?SVhD8Spi>1K~rqDd9O*q;#)E^22H?(%4{IfH`PI zR_iU2AI`QSs|#!y_!%}!c&=?t_$DjTzR0#DyxXEL!aCcE@BwD7O!gOIo9!83PqNLn zlVEH&V1w-poNc=R7uc>q+BllB*q%?g%3c6Gg>AN%``Awb=i4iQwYCB{(^dlK*ipa+ zI}%vWET7cgDSA~_WU$KKMErkQk?UGJlkf{xB=Kf@J+Q`#{LZu@=?zxo@l<6&-l0YI zp}GaQ*dqH-H2|ya&A>=%Hw_H)1* zdpB^gT?L$Dk?!nEb|vt6`z7GZ7M(y1FCn(t-V1E7tAR`G?ZDY~4RC>72Apf}A?45Q za>9%3oxp|mD`0lpTM5_MyMQOzWcyVxRaW#wgIx=pZNCOwU`1ynb-BUEuJ@Qm5@;U+ zTV+MEYw#nK@_iH7U>^q7ThS@A?Is{x_U%G6N3|7wP|uh$Ju(@@Sa$?|kXwkWvfl;P zSkWrgb{nw4eh*l0zYm;ke*j!yp8(FaTY(GhlfXtc+M+Ya>3LwS-3zR-F8~|t9$>xQ z2VZQyR3g7s_D{fSY4hf@l7i4h#1Hmk@T=*A-^s`u{~CN_it)7Vta~z7dx;)~H%x>6 zJYFyN<1zaT9xu=1>GCG?TxB1d>5>@;nd^#Yx&k~u&tMfE$ygauhqr0*6M(1s% zz6U>k8S>;`{-pd`5lr(idYI&Ho9?K`K-JLHg2zJY7`&+KEedfJ)Ykljj90D&KYD z(o!#sLCZHM7b{Gf{{jV^4$JROE`CXRSKbg`*b&YDiPR4eHzU3nmrL59e2iR-95w$Z zQZ6QDuw0BTB%LkqQQm`*rsn@dDn^Fot;$<5mX|c9JYa01`9G1OzcPJ}p%o=w_c=^# zm;7B;*3<3y=ls(6l}KBX88%-7eYSYMO1k1kF=!;yRuA@hlr)N4f<%1C)yc<}Hj0%m z*uLg3ksZb8@Z@I>RgP5^f3X@PDOxm2(Lsf*z2q;o!>4I=a+==n<5j=-#Kqi@LbS3s13z2)(R{u$Io8ei5q=O&oRTbIhgQR-c8hA8ku}jixA% zltcVb74LLeqxRK=bUIuLlu~6#+e4kkiq*HFC}$n0AL~5*S;-l|YR$lKP5@%oypotZ&pNlggr^y^uL|k zH2kNNRSCaV%gV&Z*J|qv>$7*ULd$x^NvpK~U_BNt6tVg-08Wbsw)JbI0qY+XtY66* zX~wUS7J1L<(^wr9zvm5ZgX-v4K|A?X&|W9(M`n`DiZf&Q0IQn2)ywKF^`S1+UGNYc zkzci3sn_er^|Sg#{f2&@mC6pRXb)p|#|*Q`EI0QtAHRb&-NWWMj<;=XZ##tbo@utu zF0*UwCi|q_YhSbP;&Rw3=z%xj$Y4q^KUf;v9XuG`#@o=p4Bw*_9FNWc{w0t3tH%sT zVcz$cb5oeVdCb5R<^zv8FNKjl{_*Ji6ox)Nmk=}fQDfJlX@h2EYEj(*v3d5KK z%%~JbMli>t(J4#|kGV31K@*W?ObXM=W3EbJT6@gc6sF8$u1;avc+9vIrme?}Phn2? zm1-YLxKW6sDucOiE$UucY~O3e(wRCZ{myKGIy5!gTeRDJe`h zkNKAr<_wRSn!7^fIVftCIABJHg zK#6Xl+v<}&F)H;KJ%JwXG(A&Si{HDxO)sOjyP6fjb@cZ);hph>ev;L}-FmM+AbN@C zql?tg5dEVnLUa!Pn&=rdB}BKVJ45t|S`nf{)Oyhy>e&cgp`!>&T`W35w~EjMx^sl= z>z)zvu7^a(xUP$kYkf%?hBD{>FG$gw>=WBZjNZ@u4zP#yJZn=%=L(n7grP^M=lr9R$YsT7UFJ?XiKgl zk{bMKL@RPjBiexbd_=vw<@m%HR~pf7U8{(8=!W4pV_X;^5w2N8`*C+hv{=_Wk{VwZ zA#tuGLK0n*i1zPVM#!?uM#zh69wF&2ilikx5}_IBDj;j_G>LdR_7ojX z%?<p`lbS`os99k_(T&tB`iGjG2E08&KTxwGm0yj}4Ad-gP0b?9)GQj0 znnf2;v*;FT7M)DZqUESrbOJSt7NTZFiq}PGQEC?LO3k9vs9E$gHH!|UX3^f%tVs7G zqV1_!^d~hNkGEyT`;$i7b?iAw#@dCE_9^>WY0r=zuD2UTe`l$?J@4B5 zss?|nWjbS4nYFr^dB8lX+u={JlN};2n%5ZVA2T27?(}n->3+7I?XCymKQM^ho1^j5 zn}+Y&LOtBxX7AJ^?JB!QkF)EUJE_sz!gcWEcAi^9Uuu(T&|6qDS%#L`uMe?@<|zHD zfLZ!gzEo>{sUB!tD)p$8N^O-=shy2W#oS|t8OH;*%yv?TY!BN{9k%C(>*<$|dol-9n`@-p7U!Wadc<%TD?fAlT z#}{bF7oICM9OqY2pq08#aLIESVH9x5bH^2E#}#PD6=-GL6X!CnK+7&ra8LNQ6W`@s z<+nUh?m{DXd79kg^iu2H89)E;>U}z1KQga(2e$rh+8UOgosMx`k1T{L3!#d9h&m~R zl34hk$HBQmD2atj9w)UK$4V%Ul~59!@?8~9c8hI!X~fG=w)qsVTy+@8-4`H}cQ zPqnicO)jx_+ST?x`yl><+w8N9Di7M%?OXOZE|m$L@;C;5fmEd961zR!@f9gtF*%UX^)v$wU8Gh4i-2?d2 zZpB}A4?AyPb8ot1?n69Bo8bxCoq2~r%(#pWuL-AxbHat;ZQ=6pZtTy)_)tF??h5yX zFNcT2x5M`$6BS3T@SN@y4Ty$B717veax{beIg6t^qLtB_Xk)ZFdLr5pJr^B_US+?{ zyU_>inJLY*&2-C@v)^S{W@KhUW@=_urY^H2b7y9C=Dy5>na48QGS6oAW)5av$2;$M zR%LV97TFGX;q}iB#zSpPc2ahFwmQ2gyEMBZdrx+Kc2jmsb~}D``?H6#N3ut=@3Y;n zBv+Q}lIxutm>Zg_%#F)U$<55wxv!-A1}yQ z5}H`RRTe_y3!#caXk0#oMlFOA+KIHcI6pLMA(YUfQS&%yw{f~km(WTZPH+jWNJoN8 zXwj&792&I{N@&rj1zbXlM$O|yF5>*qsD)5MTT!4Dxl7U|v}n{k4vks}CA4VN0xqFN zqk5d!o|slbF|CARS_#Fp5{hXhl+Y5+=Yr)bgc90>&tlaQ+Jw*4Mu9frv)~fi%EEIK zK1*!!+=S0!8a}z#OlEQNnJ_|0PP53OhgcdL1e9j4<#r`JG#c~y5 z6JBAt3b>e-x6MCSLNTp`Vp<8sv=WMGC6v%6e1=m6+N3=TE}>2MEVzW0e0*8pZGkr7 zv)~figwKLYXcIn@sz96YS#Sw$!e_xHv&(a@CXcImQE}>2MEVzU=;j{Fh6552% zf=g%+7&k{;#6FyVo0&T))!6mc_p9PoDCVb`{3$zKJ z1((n!d=^|noA4Q~6lfDZ3ofBe_$;`Dmh$^Lf{z8-gwKLYXcImQE}>2M45mPv@L6yP zZNg{4#k5f7pDUr5&k~CHETNcILNT8ul+Y%8=BWkRgwKLYXcImQE}>2MOgRg*37-X* z&?bBqTtb`hnKvuYCVUoLLYweea0zX~XLwPdP53Ohgf`)`;1XKi-PaM^E6^r<7FM3Ogs<^EPA@!-f5+*CpYmI{8QjzUg%1P2;XParvj)~e9Sb++<2Ufk+j)=f_)84J1N6iwH1^=WhxvyG z)uYUKuwSz9lq9q&kGqQ}$GE!~*-GdxUz#M8;F5HA5x**AhmJ36e7`GvGGC_n9>v$W2S}c){9V#)<^5#WQ6QY)O(g_32*o@n4{{W^ zDvu#QFam`xLwi}qdgfis!mX9Pq`vK3#=eA2c(cFCA}+hknSH6z%Nct=%Ix}!%zOh&N6P{@bQvMiMrxFApY#A+`s<<;x=p z?a4Csd3TRbU+2U(NprH6$W&mqxlOv6+eA2)GG`ukYe=BnngT8~ce^`irCi*Tl#yBD zs@XZ34&uOKa(IhtS0DVz=X~P`;nYM`gQIJE(o^ky_|Bky?}ASX8h1ws1Ctq zk2Aud>}!NM(Tx9l2(7`x|0~QH9@Dq8(mX^Twa?fe>38h@pgm9gtt&P|U9mfxcjmMc zvqH}OFkcKugcHq5IZwl^55E%LV>X04!e`9=;qLG`^AK-y&}<5S5&q76Cpsq@X?C*j zYlS%!y^?X}Z<$`1bMcR)rLbQ_v)UnlQo|$JgQ8huiGN#s%LcPgT(iCrV*+%ZTC5fq_BLk5m)f0rnVf5+f6T1S5!OAv$gaNonEB{wUds&3 zOt673jWg?l>GIG11^JU2c!0Nil(5KDIT#ZR5g#yjUmn*NoDF&fy|4+|-I>Ss^Z994 zLk_Y0pPk1{g*#IWRQGxO`FZ?K<>VZ~V5gnV z-XNindgkqehgBFn9ACB)`y+9K@^LHJlU;7hmDp6p3R_IEkY_AJ%a%#2054ifa+<<3 zrUX;OjU2BqiMc2rgJ)MTTrSQfI703cHzXg|gA1F&?!eAGWp;Wg-sh$GfS2NzycECY zrTC8`#WpKaYf`5%Tu@4+Rr)#=vEG)J$=;v)i&` zHoPvp4!VZ3Z<3HwB9oT=QPr#oYwWbi zhhoXpY6@6(ywOU>`LI$Vo8r?uf*6r7(ZCXprPI>;>!L(j+Yy(9MLsd7_7N!YE<=wh z39;_josiJRzGkiH*WAnQ^0-G_Pk5um*hjGNabLNP^CmW=D8%#Y-ha;b>mQxOK`A-K znsO`e|Aj{KI!VsRaFnQm^3sD>S?~WOc39qaE>V&__O*2$<7DfDnoEPINxL7t}P{6p3@p5Y7- z&Lox7&A2#`l(RkdaHa?6k#fq}K2Go0^;IMeJ!_Y!BC{hSlce&G(eSLBRvRz(CS zm{;=Qe-!^KPC)y$JIooS@%@N9;(qIXlfV@mivQy+x^iUb?>-$ z-JiIQxj(z(?l0~=_gAj>-QU~??(gnH_fd$0FaD;MQ$je1oO3@ioa~X~><+;RCX)~U zqxfP@(I^RvKaI05nsF9J9#YDY|6iSW(fGUz@&ENbRj>7uk@uC9o5gg^`7MN+ z@!!L@JEid5pjCa$Z&%XmAyx(*N&A%6^(d#m@DG-r4QuLuCdCQKlD)FSDij$Z)3F)6XN9oWfo})D8lTK1foiow}Y4RtEz=@_xPBK!|aC1)meBSI+ zJ^filef(KP<^EjHf&Q$b3;a2bm&*AioDL{wH;&-^l2Ua!Yl>x@w9L6BoUYv7wda(< zPRQ&?c#&`tuj*4hKXuB|i8GcMWAY?9B?W(K@|N>Z+H*>Nb2-0=(~C}zM$3ssoL4j< z^@LgUWdF(2tvJ8slTN3aThKDn+T_$HrR3D7W}ai6Jjc3uj-BDpa_U3-a#+UJuC?lm zMrx+|an{l(tbLg0iSLJM>0?OSRC2O|>h5bn`Ez7D;%&S{b!W}^i|Ph{(&}7JmAOc5 z@TaRj;LjZWjz4X53+um?YA@%B-l|^lXM_LRpBwrcfBN^|{n?)%vIcxeeI#dj(pY~L zysovJ)~T)IST7Dm<!S@i!#eE~I>%b=4|P$rC)%T%WLjie z>JmA*P?u&pW;*I-oLtyVH?MU2%QGmA5~=uX)k z*&Vt|s?J2dn(@tp_IP1YENZ=sT8?KV;{J%FXu+2dI^yXiDRO*Ep%uPgNz0P6-MswK zR@&1xu0AOy^faZkozqWhE1gu6Pp)gx4!%~EuT}OIu`kmV@-+%-e7!&6yfUbbml@?{ zMs!as1Mw+z(g&MUz!~~&o&MQYD^EefCz)LfR?cW@iwx0!PL+vX1HZiv wDByj${z(lbBL}oET1DD(OF1`^{Nq}cohtF4`OHl->zGkcwR5WLbW^4OA4Ag5=Kufz literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_extra_light.ttf b/app/src/main/res/font/inter_extra_light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..69426a3eb5660eda166c828d3606ab7bcbc46133 GIT binary patch literal 288400 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