├── .editorconfig
├── .gitattributes
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ └── feature_request.yml
└── workflows
│ ├── debug.yml
│ └── release.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── FAQ.md
├── LICENSE.md
├── README.md
├── app
├── build.gradle
├── libs
│ └── taglib-release.aar
├── proguard-rules.pro
└── src
│ ├── debug
│ └── res
│ │ ├── font
│ │ ├── bold.ttf
│ │ ├── google_sans_bold.ttf
│ │ ├── google_sans_medium.ttf
│ │ ├── google_sans_regular.ttf
│ │ ├── medium.ttf
│ │ ├── regular.ttf
│ │ └── sans.xml
│ │ └── values
│ │ ├── bools.xml
│ │ ├── donottranslate.xml
│ │ └── styles.xml
│ ├── fdroid
│ ├── java
│ │ └── code
│ │ │ └── name
│ │ │ └── monkey
│ │ │ └── retromusic
│ │ │ ├── activities
│ │ │ └── base
│ │ │ │ └── AbsCastActivity.kt
│ │ │ ├── cast
│ │ │ └── RetroWebServer.kt
│ │ │ ├── extensions
│ │ │ └── extensions.kt
│ │ │ ├── service
│ │ │ └── CastPlayer.kt
│ │ │ └── util
│ │ │ └── AppRater.kt
│ └── res
│ │ └── values
│ │ └── donottranslate.xml
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── contributors.json
│ │ ├── get-it-on-github.png
│ │ ├── images
│ │ │ └── effinmr.jpg
│ │ └── license.html
│ ├── ic_launcher-playstore.png
│ ├── ic_launcher.svg
│ ├── java
│ │ └── code
│ │ │ └── name
│ │ │ └── monkey
│ │ │ └── retromusic
│ │ │ ├── App.kt
│ │ │ ├── Constants.kt
│ │ │ ├── HomeSection.kt
│ │ │ ├── MainModule.kt
│ │ │ ├── activities
│ │ │ ├── DriveModeActivity.kt
│ │ │ ├── ErrorActivity.kt
│ │ │ ├── LicenseActivity.kt
│ │ │ ├── LockScreenActivity.kt
│ │ │ ├── MainActivity.kt
│ │ │ ├── PermissionActivity.kt
│ │ │ ├── ShareInstagramStory.kt
│ │ │ ├── SupportDevelopmentActivity.kt
│ │ │ ├── WhatsNewFragment.kt
│ │ │ ├── base
│ │ │ │ ├── AbsBaseActivity.kt
│ │ │ │ ├── AbsMusicServiceActivity.kt
│ │ │ │ ├── AbsSlidingMusicPanelActivity.kt
│ │ │ │ └── AbsThemeActivity.kt
│ │ │ ├── bugreport
│ │ │ │ ├── BugReportActivity.kt
│ │ │ │ └── model
│ │ │ │ │ ├── DeviceInfo.kt
│ │ │ │ │ ├── Report.kt
│ │ │ │ │ └── github
│ │ │ │ │ ├── ExtraInfo.kt
│ │ │ │ │ ├── GithubLogin.kt
│ │ │ │ │ └── GithubTarget.kt
│ │ │ ├── saf
│ │ │ │ └── SAFGuideActivity.java
│ │ │ └── tageditor
│ │ │ │ ├── AbsTagEditorActivity.kt
│ │ │ │ ├── AlbumTagEditorActivity.kt
│ │ │ │ ├── SongTagEditorActivity.kt
│ │ │ │ └── TagWriter.kt
│ │ │ ├── adapter
│ │ │ ├── CategoryInfoAdapter.kt
│ │ │ ├── ContributorAdapter.kt
│ │ │ ├── DelimiterAdapter.kt
│ │ │ ├── GenreAdapter.kt
│ │ │ ├── HomeAdapter.kt
│ │ │ ├── MetadataFieldAdapter.kt
│ │ │ ├── PlayerActionButtonAdapter.kt
│ │ │ ├── SearchAdapter.kt
│ │ │ ├── SongFileAdapter.kt
│ │ │ ├── StorageAdapter.kt
│ │ │ ├── album
│ │ │ │ ├── AlbumAdapter.kt
│ │ │ │ ├── AlbumCoverPagerAdapter.kt
│ │ │ │ └── HorizontalAlbumAdapter.kt
│ │ │ ├── artist
│ │ │ │ ├── ArtistAdapter.kt
│ │ │ │ └── ArtistDetailsAdapter.kt
│ │ │ ├── backup
│ │ │ │ └── BackupAdapter.kt
│ │ │ ├── base
│ │ │ │ ├── AbsMultiSelectAdapter.kt
│ │ │ │ └── MediaEntryViewHolder.java
│ │ │ ├── playlist
│ │ │ │ ├── LegacyPlaylistAdapter.kt
│ │ │ │ └── PlaylistAdapter.kt
│ │ │ └── song
│ │ │ │ ├── AbsOffsetSongAdapter.kt
│ │ │ │ ├── OrderablePlaylistSongAdapter.kt
│ │ │ │ ├── PlayingQueueAdapter.kt
│ │ │ │ ├── ShuffleButtonSongAdapter.kt
│ │ │ │ ├── SimpleSongAdapter.kt
│ │ │ │ └── SongAdapter.kt
│ │ │ ├── api
│ │ │ ├── GitHubApiService.kt
│ │ │ └── GitHubRelease.kt
│ │ │ ├── appshortcuts
│ │ │ ├── AppShortcutIconGenerator.kt
│ │ │ ├── AppShortcutLauncherActivity.kt
│ │ │ ├── DynamicShortcutManager.kt
│ │ │ └── shortcuttype
│ │ │ │ ├── BaseShortcutType.kt
│ │ │ │ ├── LastAddedShortcutType.kt
│ │ │ │ ├── ShuffleAllShortcutType.kt
│ │ │ │ └── TopTracksShortcutType.kt
│ │ │ ├── appwidgets
│ │ │ ├── AppWidgetBig.kt
│ │ │ ├── AppWidgetCard.kt
│ │ │ ├── AppWidgetCircle.kt
│ │ │ ├── AppWidgetClassic.kt
│ │ │ ├── AppWidgetMD3.kt
│ │ │ ├── AppWidgetSmall.kt
│ │ │ ├── AppWidgetText.kt
│ │ │ └── base
│ │ │ │ └── BaseAppWidget.kt
│ │ │ ├── auto
│ │ │ ├── AutoMediaIDHelper.java
│ │ │ ├── AutoMusicProvider.kt
│ │ │ └── MediaItemBuilder.kt
│ │ │ ├── db
│ │ │ ├── BlackListStoreDao.kt
│ │ │ ├── BlackListStoreEntity.kt
│ │ │ ├── HistoryDao.kt
│ │ │ ├── HistoryEntity.kt
│ │ │ ├── LyricsDao.kt
│ │ │ ├── LyricsEntity.kt
│ │ │ ├── PlayCountDao.kt
│ │ │ ├── PlayCountEntity.kt
│ │ │ ├── PlaylistDao.kt
│ │ │ ├── PlaylistEntity.kt
│ │ │ ├── PlaylistWithSongs.kt
│ │ │ ├── RetroDatabase.kt
│ │ │ ├── RoomMigrations.kt
│ │ │ ├── SongEntity.kt
│ │ │ ├── SongExtension.kt
│ │ │ ├── SongMetadataDao.kt
│ │ │ └── SongMetadataEntity.kt
│ │ │ ├── dialogs
│ │ │ ├── AddToPlaylistDialog.kt
│ │ │ ├── BlacklistFolderChooserDialog.kt
│ │ │ ├── CreatePlaylistDialog.kt
│ │ │ ├── DeletePlaylistDialog.kt
│ │ │ ├── DeleteSongsDialog.kt
│ │ │ ├── ExportPlaylistDialog.kt
│ │ │ ├── ImportPlaylistDialog.kt
│ │ │ ├── PlaybackSpeedDialog.kt
│ │ │ ├── PlayerActionButtonsDialog.kt
│ │ │ ├── RemoveSongFromPlaylistDialog.kt
│ │ │ ├── RenamePlaylistDialog.kt
│ │ │ ├── SleepTimerDialog.kt
│ │ │ ├── SongDetailDialog.kt
│ │ │ └── SongShareDialog.kt
│ │ │ ├── extensions
│ │ │ ├── ActivityExtensions.kt
│ │ │ ├── ActivityThemeExtensions.kt
│ │ │ ├── ColorExtensions.kt
│ │ │ ├── ContextExtensions.kt
│ │ │ ├── CursorExtensions.kt
│ │ │ ├── DialogExtension.kt
│ │ │ ├── DimenExtension.kt
│ │ │ ├── DrawableExtensions.kt
│ │ │ ├── FileExtensions.kt
│ │ │ ├── FragmentExtensions.kt
│ │ │ ├── FragmentMusicExtensions.kt
│ │ │ ├── InsetsExtensions.kt
│ │ │ ├── IntentExtensions.kt
│ │ │ ├── NavigationExtensions.kt
│ │ │ ├── PaletteExtensions.kt
│ │ │ ├── PreferenceExtensions.kt
│ │ │ ├── SongExtensions.kt
│ │ │ └── ViewExtensions.kt
│ │ │ ├── fragments
│ │ │ ├── AlbumCoverStyle.kt
│ │ │ ├── GridStyle.kt
│ │ │ ├── LibraryViewModel.kt
│ │ │ ├── MusicSeekSkipTouchListener.kt
│ │ │ ├── NowPlayingScreen.kt
│ │ │ ├── about
│ │ │ │ └── AboutFragment.kt
│ │ │ ├── albums
│ │ │ │ ├── AlbumDetailsFragment.kt
│ │ │ │ ├── AlbumDetailsViewModel.kt
│ │ │ │ └── AlbumsFragment.kt
│ │ │ ├── artists
│ │ │ │ ├── AbsArtistDetailsFragment.kt
│ │ │ │ ├── AlbumArtistDetailsFragment.kt
│ │ │ │ ├── ArtistDetailsFragment.kt
│ │ │ │ ├── ArtistDetailsViewModel.kt
│ │ │ │ ├── ArtistItem.kt
│ │ │ │ └── ArtistsFragment.kt
│ │ │ ├── backup
│ │ │ │ ├── BackupFragment.kt
│ │ │ │ ├── BackupViewModel.kt
│ │ │ │ └── RestoreActivity.kt
│ │ │ ├── base
│ │ │ │ ├── AbsMainActivityFragment.kt
│ │ │ │ ├── AbsMusicServiceFragment.kt
│ │ │ │ ├── AbsPlayerControlsFragment.kt
│ │ │ │ ├── AbsPlayerFragment.kt
│ │ │ │ ├── AbsRecyclerViewCustomGridSizeFragment.kt
│ │ │ │ └── AbsRecyclerViewFragment.kt
│ │ │ ├── equalizer
│ │ │ │ └── EqualizerFragment.kt
│ │ │ ├── folder
│ │ │ │ └── FoldersFragment.kt
│ │ │ ├── genres
│ │ │ │ ├── GenreDetailsFragment.kt
│ │ │ │ ├── GenreDetailsViewModel.kt
│ │ │ │ └── GenresFragment.kt
│ │ │ ├── home
│ │ │ │ ├── HomeBinding.kt
│ │ │ │ └── HomeFragment.kt
│ │ │ ├── library
│ │ │ │ └── LibraryFragment.kt
│ │ │ ├── lyrics
│ │ │ │ └── LyricsFragment.kt
│ │ │ ├── other
│ │ │ │ ├── DetailListFragment.kt
│ │ │ │ ├── MiniPlayerFragment.kt
│ │ │ │ ├── PlayingQueueRVFragment.kt
│ │ │ │ ├── UserInfoFragment.kt
│ │ │ │ └── VolumeFragment.kt
│ │ │ ├── player
│ │ │ │ ├── CoverLyricsFragment.kt
│ │ │ │ ├── PlayerAlbumCoverFragment.kt
│ │ │ │ ├── adaptive
│ │ │ │ │ ├── AdaptiveFragment.kt
│ │ │ │ │ └── AdaptivePlaybackControlsFragment.kt
│ │ │ │ ├── blur
│ │ │ │ │ ├── BlurPlaybackControlsFragment.kt
│ │ │ │ │ └── BlurPlayerFragment.kt
│ │ │ │ ├── card
│ │ │ │ │ ├── CardFragment.kt
│ │ │ │ │ └── CardPlaybackControlsFragment.kt
│ │ │ │ ├── cardblur
│ │ │ │ │ ├── CardBlurFragment.kt
│ │ │ │ │ └── CardBlurPlaybackControlsFragment.kt
│ │ │ │ ├── circle
│ │ │ │ │ └── CirclePlayerFragment.kt
│ │ │ │ ├── classic
│ │ │ │ │ └── ClassicPlayerFragment.kt
│ │ │ │ ├── color
│ │ │ │ │ ├── ColorFragment.kt
│ │ │ │ │ └── ColorPlaybackControlsFragment.kt
│ │ │ │ ├── fit
│ │ │ │ │ ├── FitFragment.kt
│ │ │ │ │ └── FitPlaybackControlsFragment.kt
│ │ │ │ ├── flat
│ │ │ │ │ ├── FlatPlaybackControlsFragment.kt
│ │ │ │ │ └── FlatPlayerFragment.kt
│ │ │ │ ├── full
│ │ │ │ │ ├── FullPlaybackControlsFragment.kt
│ │ │ │ │ └── FullPlayerFragment.kt
│ │ │ │ ├── gradient
│ │ │ │ │ └── GradientPlayerFragment.kt
│ │ │ │ ├── home
│ │ │ │ │ └── HomePlayerFragment.kt
│ │ │ │ ├── lockscreen
│ │ │ │ │ └── LockScreenControlsFragment.kt
│ │ │ │ ├── material
│ │ │ │ │ ├── MaterialControlsFragment.kt
│ │ │ │ │ └── MaterialFragment.kt
│ │ │ │ ├── md3
│ │ │ │ │ ├── MD3PlaybackControlsFragment.kt
│ │ │ │ │ └── MD3PlayerFragment.kt
│ │ │ │ ├── normal
│ │ │ │ │ ├── PlayerFragment.kt
│ │ │ │ │ └── PlayerPlaybackControlsFragment.kt
│ │ │ │ ├── peek
│ │ │ │ │ ├── PeekPlayerControlFragment.kt
│ │ │ │ │ └── PeekPlayerFragment.kt
│ │ │ │ ├── plain
│ │ │ │ │ ├── PlainPlaybackControlsFragment.kt
│ │ │ │ │ └── PlainPlayerFragment.kt
│ │ │ │ ├── simple
│ │ │ │ │ ├── SimplePlaybackControlsFragment.kt
│ │ │ │ │ └── SimplePlayerFragment.kt
│ │ │ │ └── tiny
│ │ │ │ │ ├── TinyPlaybackControlsFragment.kt
│ │ │ │ │ └── TinyPlayerFragment.kt
│ │ │ ├── playlists
│ │ │ │ ├── PlaylistDetailsFragment.kt
│ │ │ │ ├── PlaylistDetailsViewModel.kt
│ │ │ │ └── PlaylistsFragment.kt
│ │ │ ├── queue
│ │ │ │ └── PlayingQueueFragment.kt
│ │ │ ├── search
│ │ │ │ └── SearchFragment.kt
│ │ │ ├── settings
│ │ │ │ ├── AbsSettingsFragment.kt
│ │ │ │ ├── AudioSettings.kt
│ │ │ │ ├── FabSettingsFragment.kt
│ │ │ │ ├── ImageSettingFragment.kt
│ │ │ │ ├── MainSettingsFragment.kt
│ │ │ │ ├── NotificationSettingsFragment.kt
│ │ │ │ ├── NowPlayingSettingsFragment.kt
│ │ │ │ ├── OtherSettingsFragment.kt
│ │ │ │ ├── PersonalizeSettingsFragment.kt
│ │ │ │ ├── SettingsFragment.kt
│ │ │ │ └── ThemeSettingsFragment.kt
│ │ │ └── songs
│ │ │ │ └── SongsFragment.kt
│ │ │ ├── glide
│ │ │ ├── BlurTransformation.kt
│ │ │ ├── RetroGlideExtension.kt
│ │ │ ├── RetroMusicColoredTarget.kt
│ │ │ ├── RetroMusicGlideModule.kt
│ │ │ ├── SingleColorTarget.kt
│ │ │ ├── artistimage
│ │ │ │ ├── ArtistImage.kt
│ │ │ │ ├── ArtistImageFetcher.kt
│ │ │ │ └── ArtistImageLoader.kt
│ │ │ ├── audiocover
│ │ │ │ ├── AudioFileCover.kt
│ │ │ │ ├── AudioFileCoverFetcher.kt
│ │ │ │ ├── AudioFileCoverLoader.kt
│ │ │ │ └── AudioFileCoverUtils.java
│ │ │ ├── palette
│ │ │ │ ├── BitmapPaletteResource.java
│ │ │ │ ├── BitmapPaletteTarget.java
│ │ │ │ ├── BitmapPaletteTranscoder.java
│ │ │ │ └── BitmapPaletteWrapper.java
│ │ │ └── playlistPreview
│ │ │ │ ├── PlaylistPreview.kt
│ │ │ │ ├── PlaylistPreviewFetcher.kt
│ │ │ │ └── PlaylistPreviewLoader.kt
│ │ │ ├── helper
│ │ │ ├── BackupHelper.kt
│ │ │ ├── HorizontalAdapterHelper.kt
│ │ │ ├── M3UConstants.java
│ │ │ ├── M3UWriter.kt
│ │ │ ├── MusicPlayerRemote.kt
│ │ │ ├── MusicProgressViewUpdateHelper.kt
│ │ │ ├── PlayPauseButtonOnClickHandler.kt
│ │ │ ├── SearchQueryHelper.kt
│ │ │ ├── ShuffleHelper.kt
│ │ │ ├── SortOrder.kt
│ │ │ ├── StackBlur.java
│ │ │ ├── StopWatch.kt
│ │ │ ├── WallpaperAccentManager.kt
│ │ │ └── menu
│ │ │ │ ├── GenreMenuHelper.kt
│ │ │ │ ├── PlaylistMenuHelper.kt
│ │ │ │ ├── SongMenuHelper.kt
│ │ │ │ └── SongsMenuHelper.kt
│ │ │ ├── interfaces
│ │ │ ├── IAlbumArtistClickListener.kt
│ │ │ ├── IAlbumClickListener.kt
│ │ │ ├── IArtistClickListener.kt
│ │ │ ├── ICallbacks.kt
│ │ │ ├── IGenreClickListener.kt
│ │ │ ├── IHomeClickListener.kt
│ │ │ ├── IMainActivityFragmentCallbacks.kt
│ │ │ ├── IMiniPlayerExpanded.kt
│ │ │ ├── IMusicServiceEventListener.kt
│ │ │ ├── IPaletteColorHolder.kt
│ │ │ ├── IPlaylistClickListener.kt
│ │ │ └── IScrollHelper.kt
│ │ │ ├── lyrics
│ │ │ ├── CoverLrcView.kt
│ │ │ ├── Lrc.java
│ │ │ ├── LrcEntry.java
│ │ │ ├── LrcUtils.java
│ │ │ ├── LrcView.java
│ │ │ ├── LyricsFetcher.kt
│ │ │ └── LyricsLoader.kt
│ │ │ ├── misc
│ │ │ ├── CustomFragmentStatePagerAdapter.java
│ │ │ ├── SimpleOnSeekbarChangeListener.kt
│ │ │ ├── UpdateToastMediaScannerCompletionListener.java
│ │ │ └── WrappedAsyncTaskLoader.kt
│ │ │ ├── model
│ │ │ ├── AbsCustomPlaylist.kt
│ │ │ ├── Album.kt
│ │ │ ├── Artist.kt
│ │ │ ├── ArtworkInfo.kt
│ │ │ ├── AudioTagInfo.kt
│ │ │ ├── CategoryInfo.kt
│ │ │ ├── Contributor.kt
│ │ │ ├── DeezerResponse.kt
│ │ │ ├── EditableMetadataField.kt
│ │ │ ├── Genre.kt
│ │ │ ├── Home.kt
│ │ │ ├── MetadataField.kt
│ │ │ ├── PlayerActionButton.kt
│ │ │ ├── Playlist.kt
│ │ │ ├── PlaylistSong.kt
│ │ │ ├── SearchableSetting.kt
│ │ │ ├── Song.kt
│ │ │ ├── lyrics
│ │ │ │ ├── AbsSynchronizedLyrics.java
│ │ │ │ ├── Lyrics.java
│ │ │ │ └── SynchronizedLyricsLRC.java
│ │ │ └── smartplaylist
│ │ │ │ ├── AbsSmartPlaylist.kt
│ │ │ │ ├── HistoryPlaylist.kt
│ │ │ │ ├── LastAddedPlaylist.kt
│ │ │ │ ├── NotPlayedPlaylist.kt
│ │ │ │ ├── PlaylistIdGenerator.kt
│ │ │ │ ├── ShuffleAllPlaylist.kt
│ │ │ │ └── TopTracksPlaylist.kt
│ │ │ ├── network
│ │ │ ├── DeezerService.kt
│ │ │ ├── LastFMService.kt
│ │ │ ├── LyricsService.kt
│ │ │ ├── Result.kt
│ │ │ ├── RetrofitClient.kt
│ │ │ ├── conversion
│ │ │ │ └── LyricsConverterFactory.kt
│ │ │ └── model
│ │ │ │ ├── LastFmAlbum.java
│ │ │ │ ├── LastFmArtist.java
│ │ │ │ └── LastFmTrack.java
│ │ │ ├── preferences
│ │ │ ├── AlbumCoverStylePreferenceDialog.kt
│ │ │ ├── BlacklistPreferenceDialog.kt
│ │ │ ├── DelimiterPreference.kt
│ │ │ ├── DurationPreference.kt
│ │ │ ├── LibraryPreference.kt
│ │ │ ├── NowPlayingActionButtonsPreference.kt
│ │ │ ├── NowPlayingActionButtonsPreferenceDialog.kt
│ │ │ ├── NowPlayingMetadataPreference.kt
│ │ │ ├── NowPlayingScreenPreferenceDialog.kt
│ │ │ └── PlayerActionButtonsPreference.kt
│ │ │ ├── providers
│ │ │ ├── BlacklistStore.java
│ │ │ ├── HistoryStore.java
│ │ │ ├── MusicPlaybackQueueStore.java
│ │ │ └── SongPlayCountStore.java
│ │ │ ├── repository
│ │ │ ├── AlbumRepository.kt
│ │ │ ├── ArtistRepository.kt
│ │ │ ├── GenreRepository.kt
│ │ │ ├── LastAddedSongsRepository.kt
│ │ │ ├── LocalDataRepository.kt
│ │ │ ├── MetadataScanner.kt
│ │ │ ├── PlaylistRepository.kt
│ │ │ ├── PlaylistSongsLoader.kt
│ │ │ ├── Repository.kt
│ │ │ ├── RoomRepository.kt
│ │ │ ├── SearchRepository.kt
│ │ │ ├── SongRepository.kt
│ │ │ ├── SortedCursor.java
│ │ │ ├── SortedLongCursor.java
│ │ │ └── TopPlayedRepository.kt
│ │ │ ├── service
│ │ │ ├── AudioFader.kt
│ │ │ ├── CrossFadePlayer.kt
│ │ │ ├── LocalPlayback.kt
│ │ │ ├── MediaButtonIntentReceiver.kt
│ │ │ ├── MediaSessionCallback.kt
│ │ │ ├── MediaStoreObserver.kt
│ │ │ ├── MultiPlayer.kt
│ │ │ ├── MusicService.kt
│ │ │ ├── PersistentStorage.kt
│ │ │ ├── PlaybackManager.kt
│ │ │ ├── SongPlayCountHelper.kt
│ │ │ ├── ThrottledSeekHandler.kt
│ │ │ ├── notification
│ │ │ │ ├── PlayingNotification.kt
│ │ │ │ ├── PlayingNotificationClassic.kt
│ │ │ │ └── PlayingNotificationImpl24.kt
│ │ │ └── playback
│ │ │ │ └── Playback.kt
│ │ │ ├── transform
│ │ │ ├── CarousalPagerTransformer.kt
│ │ │ ├── CascadingPageTransformer.kt
│ │ │ ├── DefaultTransformer.kt
│ │ │ ├── DepthTransformation.kt
│ │ │ ├── HingeTransformation.kt
│ │ │ ├── HorizontalFlipTransformation.kt
│ │ │ ├── NormalPageTransformer.kt
│ │ │ ├── ParallaxPagerTransformer.kt
│ │ │ ├── VerticalFlipTransformation.kt
│ │ │ └── VerticalStackTransformer.kt
│ │ │ ├── util
│ │ │ ├── ArtistSignatureUtil.kt
│ │ │ ├── AutoGeneratedPlaylistBitmap.kt
│ │ │ ├── CalendarUtil.kt
│ │ │ ├── ColorUtil.java
│ │ │ ├── CustomArtistImageUtil.kt
│ │ │ ├── DensityUtil.kt
│ │ │ ├── FilePathUtil.kt
│ │ │ ├── FileUtil.java
│ │ │ ├── FileUtils.kt
│ │ │ ├── ImageUtil.java
│ │ │ ├── LogUtil.kt
│ │ │ ├── LyricUtil.kt
│ │ │ ├── MergedImageUtils.kt
│ │ │ ├── MusicUtil.kt
│ │ │ ├── NavigationUtil.kt
│ │ │ ├── PackageValidator.kt
│ │ │ ├── PlaylistsUtil.kt
│ │ │ ├── PreferenceUtil.kt
│ │ │ ├── RetroColorUtil.java
│ │ │ ├── RetroUtil.kt
│ │ │ ├── RingtoneManager.kt
│ │ │ ├── SAFUtil.java
│ │ │ ├── Share.kt
│ │ │ ├── SwipeAndDragHelper.java
│ │ │ ├── Taglib.kt
│ │ │ ├── TempUtils.java
│ │ │ ├── ThemedFastScroller.kt
│ │ │ ├── UpdateCheckerUtil.kt
│ │ │ ├── UriUtil.kt
│ │ │ ├── ViewUtil.kt
│ │ │ ├── color
│ │ │ │ ├── ImageUtils.java
│ │ │ │ ├── MediaNotificationProcessor.java
│ │ │ │ └── NotificationColorUtil.java
│ │ │ └── theme
│ │ │ │ ├── ThemeManager.kt
│ │ │ │ └── ThemeMode.kt
│ │ │ ├── views
│ │ │ ├── AccentIcon.kt
│ │ │ ├── BaselineGridTextView.java
│ │ │ ├── BreadCrumbLayout.java
│ │ │ ├── ColorIconsImageView.kt
│ │ │ ├── DrawableGradient.java
│ │ │ ├── HeightFitSquareLayout.kt
│ │ │ ├── HomeImageLayout.kt
│ │ │ ├── ListItemView.kt
│ │ │ ├── LollipopFixedWebView.kt
│ │ │ ├── NumberRollView.kt
│ │ │ ├── PermissionItem.kt
│ │ │ ├── PopupBackground.java
│ │ │ ├── RetroShapeableImageView.kt
│ │ │ ├── ScrollingViewOnApplyWindowInsetsListener.java
│ │ │ ├── SettingListItemView.kt
│ │ │ ├── SquigglyProgress.kt
│ │ │ ├── StatusBarView.kt
│ │ │ ├── TintedBottomNavigationView.kt
│ │ │ ├── TintedNavigationRailView.kt
│ │ │ ├── TopAppBarLayout.kt
│ │ │ ├── VerticalTextView.kt
│ │ │ ├── WidthFitSquareCardView.kt
│ │ │ ├── WidthFitSquareLayout.kt
│ │ │ └── insets
│ │ │ │ ├── InsetsConstraintLayout.kt
│ │ │ │ └── InsetsRecyclerView.kt
│ │ │ └── volume
│ │ │ ├── AudioVolumeContentObserver.kt
│ │ │ ├── AudioVolumeObserver.kt
│ │ │ └── OnAudioVolumeChangedListener.kt
│ └── res
│ │ ├── anim
│ │ ├── item_animation_fall_down.xml
│ │ ├── layout_anim_fade.xml
│ │ ├── layout_animation_fall_down.xml
│ │ ├── retro_fragment_close_enter.xml
│ │ ├── retro_fragment_close_exit.xml
│ │ ├── retro_fragment_fast_out_extra_slow_in.xml
│ │ ├── retro_fragment_open_enter.xml
│ │ └── retro_fragment_open_exit.xml
│ │ ├── drawable-hdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-mdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-night-hdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-night-mdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-night-xhdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-night-xxhdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-night-xxxhdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-v26
│ │ ├── saf_guide_1.webp
│ │ ├── saf_guide_2.webp
│ │ └── saf_guide_3.webp
│ │ ├── drawable-xhdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-xxhdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ └── default_audio_art.webp
│ │ ├── drawable-xxxhdpi
│ │ ├── default_album_art.webp
│ │ ├── default_artist_art.webp
│ │ ├── default_audio_art.webp
│ │ ├── ic_splash.png
│ │ ├── np_adaptive.webp
│ │ ├── np_blur.webp
│ │ ├── np_blur_card.webp
│ │ ├── np_card.webp
│ │ ├── np_circle.webp
│ │ ├── np_classic.webp
│ │ ├── np_color.webp
│ │ ├── np_fit.webp
│ │ ├── np_flat.webp
│ │ ├── np_full.webp
│ │ ├── np_gradient.webp
│ │ ├── np_material.webp
│ │ ├── np_minimalistic_circle.webp
│ │ ├── np_normal.webp
│ │ ├── np_peek.webp
│ │ ├── np_plain.webp
│ │ ├── np_simple.webp
│ │ └── np_tiny.webp
│ │ ├── drawable
│ │ ├── app_widget_background.xml
│ │ ├── artist_card_gradient_effect.xml
│ │ ├── asld_album.xml
│ │ ├── asld_artist.xml
│ │ ├── asld_face.xml
│ │ ├── asld_folder.xml
│ │ ├── asld_guitar.xml
│ │ ├── asld_heart.xml
│ │ ├── asld_music_note.xml
│ │ ├── asld_playlist.xml
│ │ ├── avd_album.xml
│ │ ├── avd_artist.xml
│ │ ├── avd_face.xml
│ │ ├── avd_favorite.xml
│ │ ├── avd_folder.xml
│ │ ├── avd_guitar.xml
│ │ ├── avd_music_note.xml
│ │ ├── avd_playlist.xml
│ │ ├── avd_unfavorite.xml
│ │ ├── bg_search_view.xml
│ │ ├── card.xml
│ │ ├── circle_widget_background.xml
│ │ ├── color_circle_gradient.xml
│ │ ├── color_progress_seek.xml
│ │ ├── heart_break_anim.xml
│ │ ├── heart_pop_anim.xml
│ │ ├── ic_account.xml
│ │ ├── ic_album.xml
│ │ ├── ic_album_artist.xml
│ │ ├── ic_app_shortcut_background.xml
│ │ ├── ic_app_shortcut_last_added.xml
│ │ ├── ic_app_shortcut_shuffle_all.xml
│ │ ├── ic_app_shortcut_top_tracks.xml
│ │ ├── ic_arrow_back.xml
│ │ ├── ic_arrow_forward.xml
│ │ ├── ic_artist.xml
│ │ ├── ic_audio_file.xml
│ │ ├── ic_audiotrack.xml
│ │ ├── ic_backup.xml
│ │ ├── ic_bluetooth_connect.xml
│ │ ├── ic_blur_on.xml
│ │ ├── ic_bug_report.xml
│ │ ├── ic_car.xml
│ │ ├── ic_check_circle.xml
│ │ ├── ic_clear_all.xml
│ │ ├── ic_close.xml
│ │ ├── ic_colorize.xml
│ │ ├── ic_dashboard.xml
│ │ ├── ic_delete.xml
│ │ ├── ic_diamond.xml
│ │ ├── ic_drag_handle.xml
│ │ ├── ic_drag_vertical.xml
│ │ ├── ic_dropdown_white.xml
│ │ ├── ic_edit.xml
│ │ ├── ic_equalizer.xml
│ │ ├── ic_expand_less.xml
│ │ ├── ic_face.xml
│ │ ├── ic_fast_food_meal.xml
│ │ ├── ic_favorite.xml
│ │ ├── ic_favorite_border.xml
│ │ ├── ic_file_edit.xml
│ │ ├── ic_filter_song.xml
│ │ ├── ic_flag.xml
│ │ ├── ic_folder.xml
│ │ ├── ic_fullscreen.xml
│ │ ├── ic_genre.xml
│ │ ├── ic_gift.xml
│ │ ├── ic_github_circle.xml
│ │ ├── ic_grid_size.xml
│ │ ├── ic_guitar.xml
│ │ ├── ic_hdr_strong.xml
│ │ ├── ic_help.xml
│ │ ├── ic_history.xml
│ │ ├── ic_home.xml
│ │ ├── ic_image.xml
│ │ ├── ic_info_outline.xml
│ │ ├── ic_keyboard.xml
│ │ ├── ic_keyboard_arrow_down.xml
│ │ ├── ic_keyboard_arrow_right.xml
│ │ ├── ic_keyboard_arrow_up.xml
│ │ ├── ic_kofi.xml
│ │ ├── ic_language.xml
│ │ ├── ic_launcher_foreground.xml
│ │ ├── ic_launcher_monochrome.xml
│ │ ├── ic_library_add.xml
│ │ ├── ic_library_music.xml
│ │ ├── ic_license.xml
│ │ ├── ic_lyrics.xml
│ │ ├── ic_lyrics_outline.xml
│ │ ├── ic_mic.xml
│ │ ├── ic_more_vert.xml
│ │ ├── ic_music_note_off.xml
│ │ ├── ic_notification.xml
│ │ ├── ic_notification_classic.xml
│ │ ├── ic_notifications_active.xml
│ │ ├── ic_open_in_browser.xml
│ │ ├── ic_palette.xml
│ │ ├── ic_palette_outline.xml
│ │ ├── ic_pause.xml
│ │ ├── ic_pause_outline.xml
│ │ ├── ic_pause_outline_small.xml
│ │ ├── ic_pause_sharp_white_64dp.xml
│ │ ├── ic_pause_white_48dp.xml
│ │ ├── ic_pause_white_64dp.xml
│ │ ├── ic_paypal.xml
│ │ ├── ic_person_flat.xml
│ │ ├── ic_phonelink_ring.xml
│ │ ├── ic_pinterest.xml
│ │ ├── ic_play_arrow.xml
│ │ ├── ic_play_arrow_outline.xml
│ │ ├── ic_play_arrow_outline_small.xml
│ │ ├── ic_play_arrow_sharp_white_64dp.xml
│ │ ├── ic_play_arrow_white_32dp.xml
│ │ ├── ic_play_arrow_white_48dp.xml
│ │ ├── ic_play_arrow_white_64dp.xml
│ │ ├── ic_play_circle.xml
│ │ ├── ic_play_circle_filled.xml
│ │ ├── ic_playback_speed.xml
│ │ ├── ic_playlist_add.xml
│ │ ├── ic_playlist_play.xml
│ │ ├── ic_playlist_remove.xml
│ │ ├── ic_queue_music.xml
│ │ ├── ic_redo.xml
│ │ ├── ic_refresh.xml
│ │ ├── ic_repeat.xml
│ │ ├── ic_repeat_one.xml
│ │ ├── ic_repeat_white_circle.xml
│ │ ├── ic_restore.xml
│ │ ├── ic_save.xml
│ │ ├── ic_screen_lock_portrait.xml
│ │ ├── ic_sd_card.xml
│ │ ├── ic_sd_storage.xml
│ │ ├── ic_search.xml
│ │ ├── ic_select_all.xml
│ │ ├── ic_send.xml
│ │ ├── ic_settings.xml
│ │ ├── ic_settings_brightness.xml
│ │ ├── ic_share.xml
│ │ ├── ic_shuffle.xml
│ │ ├── ic_shuffle_off_circled.xml
│ │ ├── ic_shuffle_on_circled.xml
│ │ ├── ic_skip_next.xml
│ │ ├── ic_skip_next_outline.xml
│ │ ├── ic_skip_next_sharp.xml
│ │ ├── ic_skip_previous.xml
│ │ ├── ic_skip_previous_outline.xml
│ │ ├── ic_skip_previous_sharp.xml
│ │ ├── ic_sleep_timer.xml
│ │ ├── ic_sort.xml
│ │ ├── ic_star.xml
│ │ ├── ic_storage.xml
│ │ ├── ic_telegram_white.xml
│ │ ├── ic_testing.xml
│ │ ├── ic_trending_up.xml
│ │ ├── ic_twitter.xml
│ │ ├── ic_view_carousel.xml
│ │ ├── ic_volume_down.xml
│ │ ├── ic_volume_off.xml
│ │ ├── ic_volume_up.xml
│ │ ├── ic_website.xml
│ │ ├── instagram_story_background.xml
│ │ ├── lyrics_mask.xml
│ │ ├── material_design_default.webp
│ │ ├── notification_selector.xml
│ │ ├── popup_background.xml
│ │ ├── progress_drawable_vertical.xml
│ │ ├── rect_selector.xml
│ │ ├── round_selector.xml
│ │ ├── round_selector_mask.xml
│ │ ├── rounded_drawable.xml
│ │ ├── saf_guide_1.webp
│ │ ├── saf_guide_2.webp
│ │ ├── saf_guide_3.webp
│ │ ├── shadow_blur_theme.xml
│ │ ├── shadow_down_full_theme.xml
│ │ ├── shadow_down_strong.xml
│ │ ├── shadow_pro.xml
│ │ ├── shadow_up.xml
│ │ ├── shadow_up_down.xml
│ │ ├── shadow_up_edited.xml
│ │ ├── shadow_up_full_theme.xml
│ │ ├── shadow_up_home.xml
│ │ ├── shadow_up_strong.xml
│ │ ├── sld_lyrics.xml
│ │ ├── slider_thumb.xml
│ │ ├── splash.xml
│ │ ├── switch_square.xml
│ │ ├── switch_thumb.xml
│ │ ├── switch_thumb_material.xml
│ │ ├── switch_track.xml
│ │ ├── tab_lyrics_indicator.xml
│ │ ├── widget_big_info.webp
│ │ ├── widget_button_background.xml
│ │ ├── widget_card_info.webp
│ │ ├── widget_classic.webp
│ │ ├── widget_selector.xml
│ │ ├── widget_selector_dark.xml
│ │ ├── widget_selector_light.xml
│ │ ├── widget_small.webp
│ │ └── widget_text.webp
│ │ ├── font
│ │ ├── manrope.xml
│ │ ├── manrope_bold.ttf
│ │ ├── manrope_extrabold.ttf
│ │ ├── manrope_extralight.ttf
│ │ ├── manrope_light.ttf
│ │ ├── manrope_medium.ttf
│ │ ├── manrope_regular.ttf
│ │ └── manrope_semibold.ttf
│ │ ├── layout-land
│ │ ├── activity_album_tag_editor.xml
│ │ ├── activity_drive_mode.xml
│ │ ├── activity_lock_screen.xml
│ │ ├── activity_song_tag_editor.xml
│ │ ├── fragment_adaptive_player.xml
│ │ ├── fragment_album_details.xml
│ │ ├── fragment_artist_details.xml
│ │ ├── fragment_blur.xml
│ │ ├── fragment_card_player.xml
│ │ ├── fragment_circle_player.xml
│ │ ├── fragment_classic_player.xml
│ │ ├── fragment_color_player.xml
│ │ ├── fragment_flat_player.xml
│ │ ├── fragment_home.xml
│ │ ├── fragment_material.xml
│ │ ├── fragment_md3_player.xml
│ │ ├── fragment_plain_player.xml
│ │ ├── fragment_player.xml
│ │ ├── fragment_simple_player.xml
│ │ ├── fragment_user_info.xml
│ │ └── sliding_music_panel_layout.xml
│ │ ├── layout-sw600dp
│ │ ├── fragment_playing_queue.xml
│ │ ├── item_list.xml
│ │ ├── item_list_big.xml
│ │ └── item_queue.xml
│ │ ├── layout-v31
│ │ ├── layout_notification_collapsed.xml
│ │ └── layout_notification_expanded.xml
│ │ ├── layout-xlarge
│ │ └── fragment_about_content.xml
│ │ ├── layout
│ │ ├── abs_playlists.xml
│ │ ├── activity_album_tag_editor.xml
│ │ ├── activity_bug_report.xml
│ │ ├── activity_donation.xml
│ │ ├── activity_drive_mode.xml
│ │ ├── activity_license.xml
│ │ ├── activity_lock_screen.xml
│ │ ├── activity_permission.xml
│ │ ├── activity_restore.xml
│ │ ├── activity_share_instagram.xml
│ │ ├── activity_song_tag_editor.xml
│ │ ├── app_widget_big.xml
│ │ ├── app_widget_card.xml
│ │ ├── app_widget_circle.xml
│ │ ├── app_widget_classic.xml
│ │ ├── app_widget_md3.xml
│ │ ├── app_widget_small.xml
│ │ ├── app_widget_text.xml
│ │ ├── banner_image_layout.xml
│ │ ├── bread_crumb.xml
│ │ ├── bug_report_card_device_info.xml
│ │ ├── card_credit.xml
│ │ ├── card_other.xml
│ │ ├── card_retro_info.xml
│ │ ├── collapsing_appbar_layout.xml
│ │ ├── dialog_file_details.xml
│ │ ├── dialog_playback_speed.xml
│ │ ├── dialog_player_action_buttons.xml
│ │ ├── dialog_playlist.xml
│ │ ├── dialog_sleep_timer.xml
│ │ ├── fragment_about.xml
│ │ ├── fragment_about_content.xml
│ │ ├── fragment_adaptive_player.xml
│ │ ├── fragment_adaptive_player_playback_controls.xml
│ │ ├── fragment_album_card_cover.xml
│ │ ├── fragment_album_carousel_cover.xml
│ │ ├── fragment_album_circle_cover.xml
│ │ ├── fragment_album_content.xml
│ │ ├── fragment_album_cover.xml
│ │ ├── fragment_album_details.xml
│ │ ├── fragment_album_flat_cover.xml
│ │ ├── fragment_album_full_card_cover.xml
│ │ ├── fragment_album_full_cover.xml
│ │ ├── fragment_artist_content.xml
│ │ ├── fragment_artist_details.xml
│ │ ├── fragment_backup.xml
│ │ ├── fragment_blur.xml
│ │ ├── fragment_blur_player_playback_controls.xml
│ │ ├── fragment_card_blur_player.xml
│ │ ├── fragment_card_blur_player_playback_controls.xml
│ │ ├── fragment_card_player.xml
│ │ ├── fragment_card_player_playback_controls.xml
│ │ ├── fragment_circle_player.xml
│ │ ├── fragment_classic_controls.xml
│ │ ├── fragment_classic_player.xml
│ │ ├── fragment_color_player.xml
│ │ ├── fragment_color_player_playback_controls.xml
│ │ ├── fragment_cover_lyrics.xml
│ │ ├── fragment_equalizer.xml
│ │ ├── fragment_fit.xml
│ │ ├── fragment_fit_playback_controls.xml
│ │ ├── fragment_flat_player.xml
│ │ ├── fragment_flat_player_playback_controls.xml
│ │ ├── fragment_folder.xml
│ │ ├── fragment_full.xml
│ │ ├── fragment_full_player_controls.xml
│ │ ├── fragment_gradient_controls.xml
│ │ ├── fragment_gradient_player.xml
│ │ ├── fragment_home.xml
│ │ ├── fragment_home_player.xml
│ │ ├── fragment_library.xml
│ │ ├── fragment_lock_screen_playback_controls.xml
│ │ ├── fragment_lyrics.xml
│ │ ├── fragment_main_recycler.xml
│ │ ├── fragment_main_settings.xml
│ │ ├── fragment_material.xml
│ │ ├── fragment_material_playback_controls.xml
│ │ ├── fragment_md3_player.xml
│ │ ├── fragment_md3_player_playback_controls.xml
│ │ ├── fragment_mini_player.xml
│ │ ├── fragment_peek_album_cover.xml
│ │ ├── fragment_peek_control_player.xml
│ │ ├── fragment_peek_player.xml
│ │ ├── fragment_plain_controls_fragment.xml
│ │ ├── fragment_plain_player.xml
│ │ ├── fragment_player.xml
│ │ ├── fragment_player_album_cover.xml
│ │ ├── fragment_player_playback_controls.xml
│ │ ├── fragment_playing_queue.xml
│ │ ├── fragment_playlist_detail.xml
│ │ ├── fragment_playlist_detail_new.xml
│ │ ├── fragment_search.xml
│ │ ├── fragment_settings.xml
│ │ ├── fragment_simple_controls_fragment.xml
│ │ ├── fragment_simple_player.xml
│ │ ├── fragment_simple_slide_large_image.xml
│ │ ├── fragment_tiny_controls_fragment.xml
│ │ ├── fragment_tiny_player.xml
│ │ ├── fragment_user_info.xml
│ │ ├── fragment_volume.xml
│ │ ├── fragment_whats_new.xml
│ │ ├── home_content.xml
│ │ ├── image.xml
│ │ ├── item_album_card.xml
│ │ ├── item_artist.xml
│ │ ├── item_artist_albums.xml
│ │ ├── item_artist_biography.xml
│ │ ├── item_artist_card.xml
│ │ ├── item_artist_header.xml
│ │ ├── item_artist_song.xml
│ │ ├── item_artist_songs_header.xml
│ │ ├── item_artist_square.xml
│ │ ├── item_artist_stats.xml
│ │ ├── item_card.xml
│ │ ├── item_card_color.xml
│ │ ├── item_contributor.xml
│ │ ├── item_contributor_header.xml
│ │ ├── item_donation_option.xml
│ │ ├── item_favourite_card.xml
│ │ ├── item_genre.xml
│ │ ├── item_grid.xml
│ │ ├── item_grid_circle.xml
│ │ ├── item_grid_genre.xml
│ │ ├── item_image.xml
│ │ ├── item_image_gradient.xml
│ │ ├── item_list.xml
│ │ ├── item_list_backup.xml
│ │ ├── item_list_big.xml
│ │ ├── item_list_no_image.xml
│ │ ├── item_list_quick_actions.xml
│ │ ├── item_permission.xml
│ │ ├── item_queue.xml
│ │ ├── item_simple_text.xml
│ │ ├── item_song.xml
│ │ ├── item_storage.xml
│ │ ├── item_suggestions.xml
│ │ ├── layout_notification_collapsed.xml
│ │ ├── layout_notification_expanded.xml
│ │ ├── layout_playlist.xml
│ │ ├── list_item_action_button_reorderable.xml
│ │ ├── list_item_action_button_setting.xml
│ │ ├── list_item_color_view.xml
│ │ ├── list_item_metadata_field_setting.xml
│ │ ├── list_item_view.xml
│ │ ├── list_item_view_no_card.xml
│ │ ├── list_item_view_no_title.xml
│ │ ├── list_item_view_seekbar.xml
│ │ ├── list_item_view_switch.xml
│ │ ├── list_item_view_switch_no_title.xml
│ │ ├── list_setting_item_view.xml
│ │ ├── loading.xml
│ │ ├── media_button.xml
│ │ ├── number_roll_view.xml
│ │ ├── preference_category_title.xml
│ │ ├── preference_dialog_audio_fade.xml
│ │ ├── preference_dialog_delimiter_listitem.xml
│ │ ├── preference_dialog_library_categories.xml
│ │ ├── preference_dialog_library_categories_listitem.xml
│ │ ├── preference_dialog_now_playing_screen.xml
│ │ ├── preference_now_playing_screen_item.xml
│ │ ├── section_recycler_view.xml
│ │ ├── shadow_statusbar_toolbar.xml
│ │ ├── simple_appbar_layout.xml
│ │ ├── sliding_music_panel_layout.xml
│ │ ├── status_bar.xml
│ │ ├── status_bar_noshadow.xml
│ │ ├── sub_header.xml
│ │ └── user_image_layout.xml
│ │ ├── menu
│ │ ├── bottom_navigation_main.xml
│ │ ├── menu_album_detail.xml
│ │ ├── menu_artist_album_sort_order.xml
│ │ ├── menu_artist_detail.xml
│ │ ├── menu_artist_song_sort_order.xml
│ │ ├── menu_backup.xml
│ │ ├── menu_cannot_delete_single_songs_playlist_songs_selection.xml
│ │ ├── menu_cast.xml
│ │ ├── menu_clear_history.xml
│ │ ├── menu_equalizer.xml
│ │ ├── menu_genre_detail.xml
│ │ ├── menu_item_directory.xml
│ │ ├── menu_item_file.xml
│ │ ├── menu_item_playing_queue_song.xml
│ │ ├── menu_item_playlist.xml
│ │ ├── menu_item_playlist_song.xml
│ │ ├── menu_item_song.xml
│ │ ├── menu_lyrics.xml
│ │ ├── menu_main.xml
│ │ ├── menu_media_selection.xml
│ │ ├── menu_player.xml
│ │ ├── menu_playlist_detail.xml
│ │ ├── menu_playlist_song_sort_order.xml
│ │ ├── menu_playlists_selection.xml
│ │ └── menu_playlists_songs_selection.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.webp
│ │ ├── ic_launcher_background.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.webp
│ │ ├── ic_launcher_background.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.webp
│ │ ├── ic_launcher_background.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.webp
│ │ ├── ic_launcher_background.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.webp
│ │ ├── ic_launcher_background.webp
│ │ └── ic_launcher_round.webp
│ │ ├── navigation
│ │ ├── library_graph.xml
│ │ ├── main_graph.xml
│ │ └── settings_graph.xml
│ │ ├── values-ar-rSA
│ │ └── strings.xml
│ │ ├── values-b+es+419
│ │ └── strings.xml
│ │ ├── values-bg-rBG
│ │ └── strings.xml
│ │ ├── values-ca-rES
│ │ └── strings.xml
│ │ ├── values-ckb-rIR
│ │ └── strings.xml
│ │ ├── values-cs-rCZ
│ │ └── strings.xml
│ │ ├── values-da-rDK
│ │ └── strings.xml
│ │ ├── values-de-rDE
│ │ └── strings.xml
│ │ ├── values-el-rGR
│ │ └── strings.xml
│ │ ├── values-en-rUS
│ │ └── strings.xml
│ │ ├── values-es-rES
│ │ └── strings.xml
│ │ ├── values-es-rUS
│ │ └── strings.xml
│ │ ├── values-eu-rES
│ │ └── strings.xml
│ │ ├── values-fa-rIR
│ │ └── strings.xml
│ │ ├── values-fil-rPH
│ │ └── strings.xml
│ │ ├── values-fr-rFR
│ │ └── strings.xml
│ │ ├── values-hi-rIN
│ │ └── strings.xml
│ │ ├── values-hr-rHR
│ │ └── strings.xml
│ │ ├── values-hu-rHU
│ │ └── strings.xml
│ │ ├── values-in-rID
│ │ └── strings.xml
│ │ ├── values-it-rIT
│ │ └── strings.xml
│ │ ├── values-ja-rJP
│ │ └── strings.xml
│ │ ├── values-kmr-rTR
│ │ └── strings.xml
│ │ ├── values-kn-rIN
│ │ └── strings.xml
│ │ ├── values-ko-rKR
│ │ └── strings.xml
│ │ ├── values-land
│ │ └── integers.xml
│ │ ├── values-lv-rLV
│ │ └── strings.xml
│ │ ├── values-ml-rIN
│ │ └── strings.xml
│ │ ├── values-my-rMM
│ │ └── strings.xml
│ │ ├── values-night-v27
│ │ └── styles.xml
│ │ ├── values-night-v31
│ │ └── styles.xml
│ │ ├── values-night
│ │ ├── colors.xml
│ │ ├── colors_md3.xml
│ │ └── styles.xml
│ │ ├── values-nl-rNL
│ │ └── strings.xml
│ │ ├── values-or-rIN
│ │ └── strings.xml
│ │ ├── values-pl-rPL
│ │ └── strings.xml
│ │ ├── values-pt-rBR
│ │ └── strings.xml
│ │ ├── values-pt-rPT
│ │ └── strings.xml
│ │ ├── values-ro-rRO
│ │ └── strings.xml
│ │ ├── values-ru-rRU
│ │ └── strings.xml
│ │ ├── values-sr-rSP
│ │ └── strings.xml
│ │ ├── values-sv-rSE
│ │ └── strings.xml
│ │ ├── values-sw600dp
│ │ └── integers.xml
│ │ ├── values-ta-rIN
│ │ └── strings.xml
│ │ ├── values-te-rIN
│ │ └── strings.xml
│ │ ├── values-th-rTH
│ │ └── strings.xml
│ │ ├── values-tr-rTR
│ │ └── strings.xml
│ │ ├── values-uk-rUA
│ │ └── strings.xml
│ │ ├── values-v23
│ │ ├── bools.xml
│ │ ├── dimens.xml
│ │ └── styles.xml
│ │ ├── values-v27
│ │ └── styles_parents.xml
│ │ ├── values-v31
│ │ ├── bools.xml
│ │ ├── colors.xml
│ │ ├── integers.xml
│ │ └── styles.xml
│ │ ├── values-vi-rVN
│ │ └── strings.xml
│ │ ├── values-xlarge
│ │ └── dimens.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ ├── values-zh-rHK
│ │ └── strings.xml
│ │ ├── values-zh-rTW
│ │ └── strings.xml
│ │ ├── values
│ │ ├── arrays.xml
│ │ ├── attrs.xml
│ │ ├── baseline_textview_attrs.xml
│ │ ├── bools.xml
│ │ ├── circular_image_view_attrs.xml
│ │ ├── color_icon_view_attrs.xml
│ │ ├── colors.xml
│ │ ├── colors_md3.xml
│ │ ├── contributor_attrs.xml
│ │ ├── dimens.xml
│ │ ├── donottranslate.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── ids.xml
│ │ ├── integers.xml
│ │ ├── list_item_view.xml
│ │ ├── list_setting_item_view.xml
│ │ ├── lrc_colors.xml
│ │ ├── lrc_dimens.xml
│ │ ├── lrc_view_attrs.xml
│ │ ├── permission_item.xml
│ │ ├── seekarc_attrs.xml
│ │ ├── shapeable_imageview.xml
│ │ ├── strings.xml
│ │ ├── styles.xml
│ │ ├── styles_parents.xml
│ │ └── values.xml
│ │ └── xml
│ │ ├── allowed_media_browser_callers.xml
│ │ ├── app_widget_big_info.xml
│ │ ├── app_widget_card_info.xml
│ │ ├── app_widget_circle_info.xml
│ │ ├── app_widget_classic_info.xml
│ │ ├── app_widget_md3_info.xml
│ │ ├── app_widget_small_info.xml
│ │ ├── app_widget_text.xml
│ │ ├── automotive_app_desc.xml
│ │ ├── locales_config.xml
│ │ ├── pref_advanced.xml
│ │ ├── pref_audio.xml
│ │ ├── pref_fab.xml
│ │ ├── pref_general.xml
│ │ ├── pref_images.xml
│ │ ├── pref_notification.xml
│ │ ├── pref_now_playing_action_buttons.xml
│ │ ├── pref_now_playing_screen.xml
│ │ ├── pref_ui.xml
│ │ └── provider_paths.xml
│ └── normal
│ ├── AndroidManifest.xml
│ ├── java
│ └── code
│ │ └── name
│ │ └── monkey
│ │ └── retromusic
│ │ ├── activities
│ │ └── base
│ │ │ └── AbsCastActivity.kt
│ │ ├── cast
│ │ ├── CastHelper.kt
│ │ ├── CastOptionsProvider.kt
│ │ ├── RetroSessionManagerListener.kt
│ │ └── RetroWebServer.kt
│ │ ├── extensions
│ │ └── extensions.kt
│ │ ├── service
│ │ └── CastPlayer.kt
│ │ └── util
│ │ └── AppRater.kt
│ └── res
│ └── values
│ └── donottranslate.xml
├── appthemehelper
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── code
│ │ └── name
│ │ └── monkey
│ │ └── appthemehelper
│ │ ├── ATH.kt
│ │ ├── ATHActivity.kt
│ │ ├── ColorPalette.kt
│ │ ├── ThemeStore.kt
│ │ ├── ThemeStoreInterface.kt
│ │ ├── ThemeStorePrefKeys.kt
│ │ ├── common
│ │ ├── ATHActionBarActivity.kt
│ │ ├── ATHToolbarActivity.java
│ │ ├── prefs
│ │ │ ├── ATEColorPreference.kt
│ │ │ ├── BorderCircleView.kt
│ │ │ └── supportv7
│ │ │ │ ├── ATEColorPreference.kt
│ │ │ │ ├── ATEDialogPreference.kt
│ │ │ │ ├── ATEListPreference.kt
│ │ │ │ ├── ATEPreference.kt
│ │ │ │ ├── ATEPreferenceCategory.kt
│ │ │ │ ├── ATEPreferenceFragmentCompat.java
│ │ │ │ ├── ATESeekBarPreference.kt
│ │ │ │ ├── ATESwitchPreference.kt
│ │ │ │ └── dialogs
│ │ │ │ ├── ATEListPreferenceDialogFragmentCompat.java
│ │ │ │ └── ATEPreferenceDialogFragment.java
│ │ └── views
│ │ │ ├── ATEAccentTextView.kt
│ │ │ └── ATESwitch.kt
│ │ └── util
│ │ ├── ATHUtil.kt
│ │ ├── ColorUtil.kt
│ │ ├── MaterialUtil.kt
│ │ ├── MaterialValueHelper.kt
│ │ ├── TintHelper.java
│ │ ├── ToolbarContentTintHelper.java
│ │ ├── VersionUtils.kt
│ │ └── ViewUtil.kt
│ └── res
│ ├── drawable
│ └── ate_check.xml
│ ├── layout
│ ├── ate_preference_color.xml
│ └── ate_preference_switch_support.xml
│ ├── values-large
│ └── dimens.xml
│ ├── values-night-v31
│ └── colors.xml
│ ├── values-v31
│ └── colors.xml
│ └── values
│ ├── attrs.xml
│ ├── colors.xml
│ ├── colors_material_design.xml
│ ├── dimens.xml
│ └── strings.xml
├── assets
└── google-play-badge.png
├── bash.exe.stackdump
├── build.gradle
├── ci_signing_setup.sh
├── crowdin.yml
├── fastlane
└── metadata
│ └── android
│ └── en-US
│ ├── changelogs
│ └── 10597.txt
│ ├── full_description.txt
│ ├── images
│ ├── featureGraphic.png
│ ├── icon.png
│ └── phoneScreenshots
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ └── 8.jpg
│ └── short_description.txt
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── renovate.json
├── screenshots
├── adaptive.jpg
├── blur.jpg
├── classic.jpg
├── color.jpg
├── fit.jpg
├── flat.jpg
├── material.jpg
├── peak.jpg
├── peek.jpg
├── playlists.jpg
├── synced_over_black.jpg
├── synced_over_dark.jpg
├── synced_over_light.jpg
├── synced_replace_black.jpg
├── synced_replace_dark.jpg
├── synced_replace_light.jpg
└── tiny.jpg
├── settings.gradle
├── settings_search_specification.md
└── spotless.license.kt
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 |
3 | *.bat text eol=crlf
4 | *.jar binary
5 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12 | polar: # Replace with a single Polar username
13 | buy_me_a_coffee: dhruvit # Replace with a single Buy Me a Coffee username
14 | thanks_dev: # Replace with a single thanks.dev username
15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #built application files
2 | *.apk
3 | *.ap_
4 |
5 | # files for the dex VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # generated files
12 | bin/
13 | gen/
14 |
15 | # Local configuration file (sdk path, etc)
16 | local.properties
17 |
18 | # Windows thumbnail db
19 | Thumbs.db
20 |
21 | # OSX files
22 | .DS_Store
23 |
24 | # Eclipse project files
25 | .classpath
26 | .project
27 |
28 | # Android Studio
29 | *.iml
30 | .idea
31 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
32 | .gradle
33 | build/
34 |
35 | #NDK
36 | obj/
37 |
38 | captures
39 | app/normal/release/
40 | /models/
41 | /app/release/
42 |
--------------------------------------------------------------------------------
/app/libs/taglib-release.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/libs/taglib-release.aar
--------------------------------------------------------------------------------
/app/src/debug/res/font/bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/debug/res/font/bold.ttf
--------------------------------------------------------------------------------
/app/src/debug/res/font/google_sans_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/debug/res/font/google_sans_bold.ttf
--------------------------------------------------------------------------------
/app/src/debug/res/font/google_sans_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/debug/res/font/google_sans_medium.ttf
--------------------------------------------------------------------------------
/app/src/debug/res/font/google_sans_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/debug/res/font/google_sans_regular.ttf
--------------------------------------------------------------------------------
/app/src/debug/res/font/medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/debug/res/font/medium.ttf
--------------------------------------------------------------------------------
/app/src/debug/res/font/regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/debug/res/font/regular.ttf
--------------------------------------------------------------------------------
/app/src/debug/res/font/sans.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
--------------------------------------------------------------------------------
/app/src/debug/res/values/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | false
5 |
--------------------------------------------------------------------------------
/app/src/debug/res/values/donottranslate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Effin Music
4 |
5 |
--------------------------------------------------------------------------------
/app/src/fdroid/java/code/name/monkey/retromusic/activities/base/AbsCastActivity.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.activities.base
2 |
3 |
4 | abstract class AbsCastActivity : AbsSlidingMusicPanelActivity() {
5 | }
--------------------------------------------------------------------------------
/app/src/fdroid/java/code/name/monkey/retromusic/cast/RetroWebServer.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.cast
2 |
3 | import android.content.Context
4 |
5 | @Suppress("UNUSED_PARAMETER")
6 | class RetroWebServer(context: Context)
--------------------------------------------------------------------------------
/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("UNUSED_PARAMETER", "unused")
2 |
3 | package code.name.monkey.retromusic.extensions
4 |
5 | import android.content.Context
6 | import android.view.Menu
7 | import androidx.fragment.app.FragmentActivity
8 |
9 | fun Context.setUpMediaRouteButton(menu: Menu) {}
10 |
11 | fun FragmentActivity.installLanguageAndRecreate(code: String, onInstallComplete: () -> Unit) {
12 | onInstallComplete()
13 | }
14 |
15 | fun Context.goToProVersion() {}
16 |
17 | fun Context.installSplitCompat() {}
--------------------------------------------------------------------------------
/app/src/fdroid/java/code/name/monkey/retromusic/util/AppRater.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.util
2 |
3 | import android.content.Context
4 |
5 | @Suppress("UNUSED_PARAMETER")
6 | object AppRater {
7 | fun appLaunched(context: Context) {}
8 | }
--------------------------------------------------------------------------------
/app/src/fdroid/res/values/donottranslate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | never
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/contributors.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "Dhruvit Pokharna",
4 | "summary": "Rework",
5 | "link": "https://github.com/effinmr",
6 | "image": "effinmr.jpg"
7 | }
8 | ]
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/get-it-on-github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/assets/get-it-on-github.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/effinmr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/assets/images/effinmr.jpg
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/model/Report.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.activities.bugreport.model
2 |
3 | import code.name.monkey.retromusic.activities.bugreport.model.github.ExtraInfo
4 |
5 | class Report(
6 | val title: String,
7 | private val description: String,
8 | private val deviceInfo: DeviceInfo?,
9 | private val extraInfo: ExtraInfo
10 | ) {
11 | fun getDescription(): String {
12 | return """
13 | $description
14 |
15 | -
16 |
17 | ${deviceInfo?.toMarkdown()}
18 |
19 | ${extraInfo.toMarkdown()}
20 | """.trimIndent()
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/model/github/GithubLogin.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.activities.bugreport.model.github
2 |
3 | import android.text.TextUtils
4 |
5 | class GithubLogin {
6 | val apiToken: String?
7 | val password: String?
8 | val username: String?
9 |
10 | constructor(username: String?, password: String?) {
11 | this.username = username
12 | this.password = password
13 | apiToken = null
14 | }
15 |
16 | constructor(apiToken: String?) {
17 | username = null
18 | password = null
19 | this.apiToken = apiToken
20 | }
21 |
22 | fun shouldUseApiToken(): Boolean {
23 | return TextUtils.isEmpty(username) || TextUtils.isEmpty(password)
24 | }
25 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/model/github/GithubTarget.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.activities.bugreport.model.github
2 |
3 | class GithubTarget(val username: String, val repository: String)
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/api/GitHubApiService.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.api
2 |
3 | import retrofit2.Response
4 | import retrofit2.http.GET
5 | import retrofit2.http.Path
6 |
7 | interface GitHubApiService {
8 | @GET("repos/{owner}/{repo}/releases/latest")
9 | suspend fun getLatestRelease(
10 | @Path("owner") owner: String,
11 | @Path("repo") repo: String
12 | ): Response
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/api/GitHubRelease.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.api
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class GitHubRelease(
6 | val id: Long,
7 | @SerializedName("tag_name")
8 | val tagName: String,
9 | @SerializedName("html_url")
10 | val htmlUrl: String,
11 | val name: String?,
12 | val prerelease: Boolean,
13 | val draft: Boolean,
14 | val body: String?
15 | )
16 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/db/BlackListStoreEntity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.db
16 |
17 | import androidx.room.Entity
18 | import androidx.room.PrimaryKey
19 |
20 | @Entity
21 | class BlackListStoreEntity(
22 | @PrimaryKey
23 | val path: String
24 | )
25 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/db/LyricsEntity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.db
16 |
17 | import androidx.room.Entity
18 | import androidx.room.PrimaryKey
19 |
20 | @Entity
21 | class LyricsEntity(
22 | @PrimaryKey val songId: Int,
23 | val lyrics: String
24 | )
25 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/db/SongMetadataDao.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.db
2 |
3 | import androidx.room.*
4 |
5 | @Dao
6 | interface SongMetadataDao {
7 |
8 | @Insert(onConflict = OnConflictStrategy.REPLACE)
9 | suspend fun insert(metadata: SongMetadataEntity)
10 |
11 | @Insert(onConflict = OnConflictStrategy.REPLACE)
12 | suspend fun insertAll(metadataList: List)
13 |
14 | @Query("SELECT * FROM song_metadata WHERE id = :songId LIMIT 1")
15 | suspend fun getMetadataById(songId: Long): SongMetadataEntity?
16 |
17 | @Query("SELECT * FROM song_metadata")
18 | suspend fun getAllMetadata(): List
19 |
20 | @Query("DELETE FROM song_metadata")
21 | suspend fun clearAll()
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/db/SongMetadataEntity.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.db
2 |
3 | import androidx.room.Entity
4 | import androidx.room.PrimaryKey
5 |
6 | @Entity(tableName = "song_metadata")
7 | data class SongMetadataEntity(
8 | @PrimaryKey val id: Long,
9 | val title: String?,
10 | val trackNumber: Int?,
11 | val year: String?,
12 | val duration: Long?,
13 | val data: String?,
14 | val dateModified: Long?,
15 | val artistId: Long?,
16 | val albumId: Long?,
17 | val albumName: String?,
18 | val artistName: String?,
19 | val composer: String?,
20 | val albumArtist: String?,
21 | val artistIds: String?,
22 | val artistNames: String?
23 |
24 | )
25 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/extensions/FileExtensions.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.extensions
2 |
3 | import java.io.BufferedOutputStream
4 | import java.util.zip.ZipOutputStream
5 |
6 | fun BufferedOutputStream.zipOutputStream(): ZipOutputStream = ZipOutputStream(this)
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.extensions
2 |
3 | import androidx.core.view.WindowInsetsCompat
4 | import code.name.monkey.retromusic.util.PreferenceUtil
5 | import code.name.monkey.retromusic.util.RetroUtil
6 |
7 | fun WindowInsetsCompat?.getBottomInsets(): Int {
8 | return if (PreferenceUtil.isFullScreenMode) {
9 | return 0
10 | } else {
11 | this?.getInsets(WindowInsetsCompat.Type.systemBars())?.bottom ?: RetroUtil.navigationBarHeight
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/extensions/PreferenceExtensions.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.extensions
16 |
17 | import android.content.SharedPreferences
18 |
19 | fun SharedPreferences.getStringOrDefault(key: String, default: String): String {
20 | return getString(key, default) ?: default
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/extensions/SongExtensions.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.extensions
2 |
3 | import android.support.v4.media.MediaDescriptionCompat
4 | import android.support.v4.media.session.MediaSessionCompat.QueueItem
5 | import code.name.monkey.retromusic.model.Song
6 | import code.name.monkey.retromusic.util.MusicUtil
7 |
8 | val Song.uri get() = MusicUtil.getSongFileUri(songId = id)
9 |
10 | val Song.albumArtUri get() = MusicUtil.getMediaStoreAlbumCoverUri(albumId)
11 |
12 | fun ArrayList.toMediaSessionQueue(): List {
13 | return map { song ->
14 | val mediaDescription = MediaDescriptionCompat.Builder()
15 | .setMediaId(song.id.toString())
16 | .setTitle(song.title)
17 | .setSubtitle(song.artistName)
18 | .setIconUri(song.albumArtUri)
19 | .build()
20 | QueueItem(mediaDescription, song.hashCode().toLong())
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/fragments/GridStyle.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.fragments
2 |
3 | import androidx.annotation.LayoutRes
4 | import code.name.monkey.retromusic.R
5 |
6 | enum class GridStyle constructor(
7 | @param:LayoutRes @field:LayoutRes val layoutResId: Int,
8 | val id: Int
9 | ) {
10 | Grid(R.layout.item_grid, 0),
11 | Card(R.layout.item_card, 1),
12 | ColoredCard(R.layout.item_card_color, 2),
13 | Circular(R.layout.item_grid_circle, 3),
14 | Image(R.layout.image, 4),
15 | GradientImage(R.layout.item_image_gradient, 5),
16 | NoImage(R.layout.item_list_no_image, 6)
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistItem.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.fragments.artists
2 |
3 | import android.text.Spanned
4 | import code.name.monkey.retromusic.model.Album
5 | import code.name.monkey.retromusic.model.Artist
6 | import code.name.monkey.retromusic.model.Song
7 |
8 | sealed class ArtistItem {
9 | data class Header(val artist: Artist) : ArtistItem()
10 | data class Albums(val albums: List) : ArtistItem()
11 | data class SongsHeader(val title: String) : ArtistItem()
12 | data class SongItem(val song: Song) : ArtistItem()
13 | data class Biography(val text: Spanned) : ArtistItem()
14 | data class Stats(val listeners: String, val scrobbles: String) : ArtistItem()
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/fragments/settings/FabSettingsFragment.kt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/java/code/name/monkey/retromusic/fragments/settings/FabSettingsFragment.kt
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImage.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.glide.artistimage
2 |
3 | import code.name.monkey.retromusic.model.Artist
4 |
5 | class ArtistImage(val artist: Artist){
6 | override fun equals(other: Any?): Boolean {
7 | if (other is ArtistImage){
8 | return other.artist == artist
9 | }
10 | return false
11 | }
12 |
13 | override fun hashCode(): Int {
14 | return artist.hashCode()
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/helper/M3UConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Hemanth Savarala.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it under
7 | * the terms of the GNU General Public License as published by
8 | * the Free Software Foundation either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | */
14 |
15 | package code.name.monkey.retromusic.helper;
16 |
17 | public interface M3UConstants {
18 | String EXTENSION = "m3u";
19 | String HEADER = "#EXTM3U";
20 | String ENTRY = "#EXTINF:";
21 | String DURATION_SEPARATOR = ",";
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IAlbumArtistClickListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.interfaces
16 |
17 | import android.view.View
18 |
19 | interface IAlbumArtistClickListener {
20 | fun onAlbumArtist(artistName: String, view: View)
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IAlbumClickListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.interfaces
16 |
17 | import android.view.View
18 |
19 | interface IAlbumClickListener {
20 | fun onAlbumClick(albumId: Long, view: View)
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IArtistClickListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.interfaces
16 |
17 | import android.view.View
18 |
19 | interface IArtistClickListener {
20 | fun onArtist(artistId: Long, view: View)
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IGenreClickListener.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.interfaces
2 |
3 | import android.view.View
4 | import code.name.monkey.retromusic.model.Genre
5 |
6 | interface IGenreClickListener {
7 | fun onClickGenre(genre: Genre, view: View)
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IHomeClickListener.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.interfaces
2 |
3 | import code.name.monkey.retromusic.model.Album
4 | import code.name.monkey.retromusic.model.Artist
5 | import code.name.monkey.retromusic.model.Genre
6 |
7 | interface IHomeClickListener {
8 | fun onAlbumClick(album: Album)
9 |
10 | fun onArtistClick(artist: Artist)
11 |
12 | fun onGenreClick(genre: Genre)
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IMainActivityFragmentCallbacks.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.interfaces
16 |
17 | /**
18 | * Created by hemanths on 14/08/17.
19 | */
20 | interface IMainActivityFragmentCallbacks {
21 | fun handleBackPress(): Boolean
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IMiniPlayerExpanded.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.interfaces
2 |
3 | interface IMiniPlayerExpanded {
4 | fun showMiniPlayer(expand: Boolean)
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IPaletteColorHolder.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
15 | package code.name.monkey.retromusic.interfaces
16 |
17 | /**
18 | * @author Aidan Follestad (afollestad)
19 | */
20 | interface IPaletteColorHolder {
21 | val paletteColor: Int
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IPlaylistClickListener.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.interfaces
2 |
3 | import android.view.View
4 | import code.name.monkey.retromusic.db.PlaylistWithSongs
5 |
6 | interface IPlaylistClickListener {
7 | fun onPlaylistClick(playlistWithSongs: PlaylistWithSongs, view: View)
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/interfaces/IScrollHelper.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.interfaces
2 |
3 | interface IScrollHelper {
4 | fun scrollToTop()
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/lyrics/Lrc.java:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.lyrics;
2 |
3 | /**
4 | * Desc : 歌词实体 Author : Lauzy Date : 2017/10/13 Blog : http://www.jianshu.com/u/e76853f863a9 Email :
5 | * freedompaladin@gmail.com
6 | */
7 | public class Lrc {
8 | private long time;
9 | private String text;
10 |
11 | public long getTime() {
12 | return time;
13 | }
14 |
15 | public void setTime(long time) {
16 | this.time = time;
17 | }
18 |
19 | public String getText() {
20 | return text;
21 | }
22 |
23 | public void setText(String text) {
24 | this.text = text;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/AbsCustomPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | import code.name.monkey.retromusic.repository.LastAddedRepository
4 | import code.name.monkey.retromusic.repository.SongRepository
5 | import code.name.monkey.retromusic.repository.TopPlayedRepository
6 | import org.koin.core.component.KoinComponent
7 | import org.koin.core.component.inject
8 |
9 | abstract class AbsCustomPlaylist(
10 | id: Long,
11 | name: String
12 | ) : Playlist(id, name), KoinComponent {
13 |
14 | abstract fun songs(): List
15 |
16 | protected val songRepository by inject()
17 |
18 | protected val topPlayedRepository by inject()
19 |
20 | protected val lastAddedRepository by inject()
21 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/ArtworkInfo.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | import android.graphics.Bitmap
4 |
5 | class ArtworkInfo constructor(val albumId: Long, val artwork: Bitmap?)
6 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/AudioTagInfo.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | import org.jaudiotagger.tag.FieldKey
4 |
5 | class AudioTagInfo(
6 | val filePaths: List?,
7 | val fieldKeyValueMap: Map?,
8 | val artworkInfo: ArtworkInfo?
9 | )
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/EditableMetadataField.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | data class EditableMetadataField(
4 | val metadataField: MetadataField,
5 | var isVisible: Boolean
6 | )
7 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/Genre.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Hemanth Savarala.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it under
7 | * the terms of the GNU General Public License as published by
8 | * the Free Software Foundation either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | */
14 |
15 | package code.name.monkey.retromusic.model
16 |
17 | import android.os.Parcelable
18 | import kotlinx.parcelize.Parcelize
19 |
20 | @Parcelize
21 | data class Genre(
22 | val id: Long,
23 | val name: String,
24 | val songCount: Int
25 | ) : Parcelable
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/Home.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Hemanth Savarala.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it under
7 | * the terms of the GNU General Public License as published by
8 | * the Free Software Foundation either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | */
14 |
15 | package code.name.monkey.retromusic.model
16 |
17 | import androidx.annotation.StringRes
18 | import code.name.monkey.retromusic.HomeSection
19 |
20 | data class Home(
21 | val arrayList: List,
22 | @HomeSection
23 | val homeSection: Int,
24 | @StringRes
25 | val titleRes: Int
26 | )
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/MetadataField.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | import code.name.monkey.retromusic.R
4 |
5 | enum class MetadataField(val id: Int, val labelRes: Int) {
6 | ALBUM(0, R.string.album),
7 | ARTIST(1, R.string.artist),
8 | YEAR(2, R.string.year),
9 | BITRATE(3, R.string.label_bit_rate),
10 | FORMAT(4, R.string.label_file_format),
11 | TRACK_LENGTH(5, R.string.label_track_length),
12 | FILE_NAME(6, R.string.label_file_name),
13 | FILE_PATH(7, R.string.label_file_path),
14 | FILE_SIZE(8, R.string.label_file_size),
15 | SAMPLING_RATE(9, R.string.label_sampling_rate),
16 | LAST_MODIFIED(10, R.string.label_last_modified);
17 |
18 | companion object {
19 | fun fromId(id: Int): MetadataField? = values().find { it.id == id }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/PlayerActionButton.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | data class PlayerActionButton(
4 | val id: Int,
5 | val name: String,
6 | var isVisible: Boolean
7 | )
8 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/SearchableSetting.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model
2 |
3 | data class SearchableSetting(
4 | val id: Int, // R.id of the parent SettingListItemView (category)
5 | val title: String,
6 | val summary: String?,
7 | val isCategory: Boolean = false, // True if this represents a main category header
8 | val navigationAction: Int? = null // New: R.id of the fragment to navigate to
9 | )
10 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/AbsSmartPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import androidx.annotation.DrawableRes
4 | import code.name.monkey.retromusic.R
5 | import code.name.monkey.retromusic.model.AbsCustomPlaylist
6 |
7 | abstract class AbsSmartPlaylist(
8 | name: String,
9 | @DrawableRes val iconRes: Int = R.drawable.ic_queue_music
10 | ) : AbsCustomPlaylist(
11 | id = PlaylistIdGenerator(name, iconRes),
12 | name = name
13 | )
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/HistoryPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import code.name.monkey.retromusic.App
4 | import code.name.monkey.retromusic.R
5 | import code.name.monkey.retromusic.model.Song
6 | import kotlinx.parcelize.Parcelize
7 | import org.koin.core.component.KoinComponent
8 |
9 | @Parcelize
10 | class HistoryPlaylist : AbsSmartPlaylist(
11 | name = App.getContext().getString(R.string.history),
12 | iconRes = R.drawable.ic_history
13 | ), KoinComponent {
14 |
15 | override fun songs(): List {
16 | return topPlayedRepository.recentlyPlayedTracks()
17 | }
18 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/LastAddedPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import code.name.monkey.retromusic.App
4 | import code.name.monkey.retromusic.R
5 | import code.name.monkey.retromusic.model.Song
6 | import kotlinx.parcelize.Parcelize
7 |
8 | @Parcelize
9 | class LastAddedPlaylist : AbsSmartPlaylist(
10 | name = App.getContext().getString(R.string.last_added),
11 | iconRes = R.drawable.ic_library_add
12 | ) {
13 | override fun songs(): List {
14 | return lastAddedRepository.recentSongs()
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/NotPlayedPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import code.name.monkey.retromusic.App
4 | import code.name.monkey.retromusic.R
5 | import code.name.monkey.retromusic.model.Song
6 | import kotlinx.parcelize.Parcelize
7 |
8 | @Parcelize
9 | class NotPlayedPlaylist : AbsSmartPlaylist(
10 | name = App.getContext().getString(R.string.not_recently_played),
11 | iconRes = R.drawable.ic_audiotrack
12 | ) {
13 | override fun songs(): List {
14 | return topPlayedRepository.notRecentlyPlayedTracks()
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/PlaylistIdGenerator.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import androidx.annotation.DrawableRes
4 | import kotlin.math.abs
5 |
6 | object PlaylistIdGenerator {
7 |
8 | operator fun invoke(name: String, @DrawableRes iconRes: Int): Long {
9 | return abs(31L * name.hashCode() + iconRes * name.hashCode() * 31L * 31L)
10 | }
11 |
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/ShuffleAllPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import code.name.monkey.retromusic.App
4 | import code.name.monkey.retromusic.R
5 | import code.name.monkey.retromusic.model.Song
6 | import kotlinx.parcelize.Parcelize
7 |
8 | @Parcelize
9 | class ShuffleAllPlaylist : AbsSmartPlaylist(
10 | name = App.getContext().getString(R.string.action_shuffle_all),
11 | iconRes = R.drawable.ic_shuffle
12 | ) {
13 | override fun songs(): List {
14 | return songRepository.songs()
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/model/smartplaylist/TopTracksPlaylist.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.model.smartplaylist
2 |
3 | import code.name.monkey.retromusic.App
4 | import code.name.monkey.retromusic.R
5 | import code.name.monkey.retromusic.model.Song
6 | import kotlinx.parcelize.Parcelize
7 |
8 | @Parcelize
9 | class TopTracksPlaylist : AbsSmartPlaylist(
10 | name = App.getContext().getString(R.string.my_top_tracks),
11 | iconRes = R.drawable.ic_trending_up
12 | ) {
13 | override fun songs(): List {
14 | return topPlayedRepository.topTracks()
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/network/LyricsService.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.network
2 |
3 | import retrofit2.http.GET
4 | import retrofit2.http.Headers
5 | import retrofit2.http.Query
6 |
7 | interface LyricsRestService {
8 |
9 | @Headers("Cache-Control: public")
10 | @GET("/lyrics")
11 | suspend fun getLyrics(@Query("artist") artist: String, @Query("title") title: String): String
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingActionButtonsPreference.kt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingActionButtonsPreference.kt
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingMetadataPreference.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.preferences
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.core.graphics.BlendModeColorFilterCompat
6 | import androidx.core.graphics.BlendModeCompat.SRC_IN
7 | import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference
8 | import code.name.monkey.retromusic.extensions.colorControlNormal
9 |
10 | class NowPlayingMetadataPreference @JvmOverloads constructor(
11 | context: Context,
12 | attrs: AttributeSet? = null,
13 | defStyleAttr: Int = 0,
14 | defStyleRes: Int = 0
15 | ) : ATEDialogPreference(context, attrs, defStyleAttr, defStyleRes) {
16 | init {
17 | icon?.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(
18 | context.colorControlNormal(),
19 | SRC_IN
20 | )
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/preferences/PlayerActionButtonsPreference.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.preferences
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.preference.Preference
6 | import code.name.monkey.retromusic.dialogs.PlayerActionButtonsDialog
7 |
8 | class PlayerActionButtonsPreference(context: Context, attrs: AttributeSet) :
9 | Preference(context, attrs) {
10 |
11 | init {
12 | // Set a click listener to open the selection/reordering UI
13 | setOnPreferenceClickListener {
14 | val fragmentManager = (context as? androidx.fragment.app.FragmentActivity)?.supportFragmentManager
15 | fragmentManager?.let {
16 | PlayerActionButtonsDialog().show(it, PlayerActionButtonsDialog.TAG)
17 | }
18 | true
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/repository/LocalDataRepository.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.repository
2 |
3 | import android.content.Context
4 | import code.name.monkey.retromusic.model.Contributor
5 | import com.google.gson.GsonBuilder
6 | import com.google.gson.reflect.TypeToken
7 |
8 | interface LocalDataRepository {
9 | fun contributors(): List
10 | }
11 |
12 | class RealLocalDataRepository(
13 | private val context: Context
14 | ) : LocalDataRepository {
15 |
16 | override fun contributors(): List {
17 | val jsonString = context.assets.open("contributors.json")
18 | .bufferedReader().use { it.readText() }
19 |
20 | val gsonBuilder = GsonBuilder()
21 | val gson = gsonBuilder.create()
22 | val listContributorType = object : TypeToken>() {}.type
23 | return gson.fromJson(jsonString, listContributorType)
24 | }
25 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/transform/DefaultTransformer.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.transform
2 |
3 | import android.view.View
4 | import androidx.viewpager.widget.ViewPager
5 |
6 | class DefaultTransformer : ViewPager.PageTransformer {
7 | override fun transformPage(page: View, position: Float) {}
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/util/FilePathUtil.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.util
2 |
3 | import android.os.Environment
4 |
5 | object FilePathUtil {
6 | fun blacklistFilePaths(): List {
7 | return listOf(
8 | getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS),
9 | getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES),
10 | getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)
11 | ).map {
12 | FileUtil.safeGetCanonicalPath(it)
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/util/LogUtil.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.util
2 |
3 | import android.util.Log
4 | import code.name.monkey.retromusic.BuildConfig
5 |
6 | fun Any.logD(message: Any?) {
7 | logD(message.toString())
8 | }
9 |
10 | fun Any.logD(message: String) {
11 | if (BuildConfig.DEBUG) {
12 | Log.d(name, message)
13 | }
14 | }
15 |
16 | fun Any.logE(message: String) {
17 | Log.e(name, message)
18 | }
19 |
20 | fun Any.logE(e: Exception) {
21 | Log.e(name, e.message ?: "Error")
22 | }
23 |
24 | private val Any.name: String get() = this::class.java.simpleName
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/util/Taglib.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.util
2 |
3 | import android.content.Context
4 | import code.name.monkey.retromusic.model.Song
5 | import com.kyant.taglib.Metadata
6 | import com.kyant.taglib.TagLib
7 | import kotlinx.coroutines.Dispatchers
8 | import kotlinx.coroutines.withContext
9 |
10 | object Taglib {
11 | suspend fun getAllTags(context: Context, song: Song): Map> =
12 | withContext(Dispatchers.IO) {
13 | val uri = UriUtil.getUriFromPath(context, song.data)
14 | val resolver = context.contentResolver
15 |
16 | resolver.openFileDescriptor(uri, "r")?.use { fdParcel ->
17 | val metadata: Metadata? =
18 | TagLib.getMetadata(fdParcel.dup().detachFd(), readPictures = false)
19 | metadata?.propertyMap?.mapValues { it.value.toList() } ?: emptyMap()
20 | } ?: emptyMap()
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeMode.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.util.theme
2 |
3 | enum class ThemeMode {
4 | LIGHT,
5 | DARK,
6 | BLACK,
7 | AUTO
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/views/AccentIcon.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.views
2 |
3 | import android.content.Context
4 | import android.content.res.ColorStateList
5 | import android.util.AttributeSet
6 | import androidx.appcompat.widget.AppCompatImageView
7 | import code.name.monkey.appthemehelper.ThemeStore
8 |
9 | class AccentIcon @JvmOverloads constructor(
10 | context: Context,
11 | attrs: AttributeSet? = null,
12 | defStyleAttr: Int = -1
13 | ) : AppCompatImageView(context, attrs, defStyleAttr) {
14 | init {
15 | imageTintList = ColorStateList.valueOf(ThemeStore.accentColor(context))
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsConstraintLayout.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.views.insets
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.constraintlayout.widget.ConstraintLayout
6 | import code.name.monkey.retromusic.util.PreferenceUtil
7 | import dev.chrisbanes.insetter.applyInsetter
8 |
9 | class InsetsConstraintLayout @JvmOverloads constructor(
10 | context: Context,
11 | attrs: AttributeSet? = null,
12 | defStyleAttr: Int = 0
13 | ) : ConstraintLayout(context, attrs, defStyleAttr) {
14 | init {
15 | if (!isInEditMode && !PreferenceUtil.isFullScreenMode)
16 | applyInsetter {
17 | type(navigationBars = true) {
18 | padding(vertical = true)
19 | }
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsRecyclerView.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.views.insets
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.recyclerview.widget.RecyclerView
6 | import code.name.monkey.retromusic.util.PreferenceUtil
7 | import dev.chrisbanes.insetter.applyInsetter
8 |
9 | class InsetsRecyclerView @JvmOverloads constructor(
10 | context: Context,
11 | attrs: AttributeSet? = null,
12 | defStyleAttr: Int = 0,
13 | ) : RecyclerView(context, attrs, defStyleAttr) {
14 | init {
15 | if (!isInEditMode && !PreferenceUtil.isFullScreenMode)
16 | applyInsetter {
17 | type(navigationBars = true) {
18 | padding(vertical = true)
19 | }
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/code/name/monkey/retromusic/volume/OnAudioVolumeChangedListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Hemanth Savarala.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it under
7 | * the terms of the GNU General Public License as published by
8 | * the Free Software Foundation either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | */
14 | package code.name.monkey.retromusic.volume
15 |
16 | interface OnAudioVolumeChangedListener {
17 | fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int)
18 | }
--------------------------------------------------------------------------------
/app/src/main/res/anim/item_animation_fall_down.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
13 |
14 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/layout_anim_fade.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/layout_animation_fall_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/retro_fragment_fast_out_extra_slow_in.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-hdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-hdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-hdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-mdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-mdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-mdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-hdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-hdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-hdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-mdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-mdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-mdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xhdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xhdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xhdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xxhdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xxhdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xxhdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xxxhdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xxxhdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-night-xxxhdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/saf_guide_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-v26/saf_guide_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/saf_guide_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-v26/saf_guide_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/saf_guide_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-v26/saf_guide_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xhdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xhdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xhdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxhdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxhdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxhdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/default_album_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/default_album_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/default_artist_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/default_artist_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/default_audio_art.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/default_audio_art.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/ic_splash.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_adaptive.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_adaptive.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_blur.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_blur.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_blur_card.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_blur_card.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_card.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_card.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_circle.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_circle.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_classic.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_classic.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_color.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_color.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_fit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_fit.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_flat.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_flat.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_full.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_full.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_gradient.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_gradient.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_material.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_material.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_minimalistic_circle.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_minimalistic_circle.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_normal.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_normal.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_peek.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_peek.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_plain.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_plain.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_simple.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_simple.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/np_tiny.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable-xxxhdpi/np_tiny.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_widget_background.xml:
--------------------------------------------------------------------------------
1 |
5 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/artist_card_gradient_effect.xml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
17 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_album.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_artist.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_face.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_folder.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_guitar.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_heart.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
14 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_music_note.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/asld_playlist.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_search_view.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_widget_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/color_circle_gradient.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_album.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_app_shortcut_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_app_shortcut_last_added.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_app_shortcut_shuffle_all.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_app_shortcut_top_tracks.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_back.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_forward.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_artist.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_audiotrack.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_car.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check_circle.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_clear_all.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_close.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_colorize.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_diamond.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_drag_handle.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_dropdown_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_edit.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_equalizer.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_expand_less.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_face.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_fast_food_meal.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_favorite.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_file_edit.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_flag.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_folder.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_genre.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_image.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_keyboard.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_keyboard_arrow_down.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_keyboard_arrow_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_keyboard_arrow_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_license.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lyrics.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lyrics_outline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_mic.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notification_classic.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_pause_outline.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_pause_outline_small.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_pause_white_64dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_play_arrow_outline.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_play_arrow_outline_small.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_playlist_add.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_playlist_play.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_playlist_remove.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_redo.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_refresh.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_restore.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_save.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_select_all.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_send.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_skip_next.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_skip_next_outline.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_skip_next_sharp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_skip_previous.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_skip_previous_outline.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_skip_previous_sharp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_sort.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_star.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_storage.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_telegram_white.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_trending_up.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twitter.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_view_carousel.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_volume_down.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_website.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/instagram_story_background.xml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
17 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/lyrics_mask.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/material_design_default.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/material_design_default.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/notification_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/popup_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_drawable_vertical.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
12 |
13 |
14 |
15 |
16 |
17 | -
18 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/round_selector.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/round_selector_mask.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/saf_guide_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/saf_guide_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/saf_guide_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/saf_guide_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/saf_guide_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/saf_guide_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_blur_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_down_full_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_down_strong.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_pro.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_up_edited.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_up_full_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_up_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_up_strong.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sld_lyrics.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/slider_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/switch_square.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/switch_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
8 |
9 |
10 |
11 |
12 |
13 | -
14 |
15 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/switch_thumb_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/switch_track.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_lyrics_indicator.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_big_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/widget_big_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_button_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_card_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/widget_card_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_classic.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/widget_classic.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_selector_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_selector_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_small.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/widget_small.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/widget_text.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/drawable/widget_text.webp
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_bold.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_extrabold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_extrabold.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_extralight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_extralight.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_light.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_medium.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_regular.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/manrope_semibold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/font/manrope_semibold.ttf
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_about.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_about_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
15 |
16 |
17 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_grid_genre.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_simple_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_dialog_now_playing_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/simple_appbar_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/status_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/status_bar_noshadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/sub_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_artist_album_sort_order.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_artist_song_sort_order.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_backup.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_cast.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_clear_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_equalizer.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_genre_detail.xml:
--------------------------------------------------------------------------------
1 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_lyrics.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_playlist_song_sort_order.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/values-land/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 0
4 | 1
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | @android:color/black
5 |
6 | #202020
7 | @color/darkerColorSurface
8 |
9 | #1AFFFFFF
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors_md3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @color/elevationOverlayDark
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw600dp/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4
4 | 6
5 |
6 | 2
7 | 3
8 |
9 | 6
10 | 8
11 | 1
12 | 1
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v23/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v23/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 24dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | true
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @android:color/system_accent1_900
4 | @android:color/system_accent1_50
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 0
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xlarge/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 64dp
3 | 64dp
4 | 72dp
5 | 16dp
6 | 80dp
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | false
5 |
6 | true
7 |
8 | false
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/circular_image_view_attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors_md3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @color/md_grey_500
4 | @color/md_grey_500
5 | @color/md_black_1000
6 | @color/elevationOverlayLight
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 2
4 | 4
5 |
6 | 1
7 | 2
8 |
9 | 4
10 | 6
11 |
12 | 200
13 | 1
14 | 0
15 |
16 | 2
17 |
--------------------------------------------------------------------------------
/app/src/main/res/values/list_item_view.xml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/values/lrc_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #9E9E9E
4 | #FF4081
5 | #F8BBD0
6 | #809E9E9E
7 | #809E9E9E
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/lrc_dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 250
4 | 19sp
5 | 20sp
6 | 15sp
7 | 16dp
8 | 1dp
9 | 30dp
10 | 40dp
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values/permission_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/shapeable_imageview.xml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_big_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_card_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_circle_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_classic_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_md3_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_small_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_widget_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/automotive_app_desc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/pref_now_playing_action_buttons.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/normal/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/normal/java/code/name/monkey/retromusic/cast/RetroSessionManagerListener.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.retromusic.cast
2 |
3 | import com.google.android.gms.cast.framework.CastSession
4 | import com.google.android.gms.cast.framework.SessionManagerListener
5 |
6 | interface RetroSessionManagerListener : SessionManagerListener {
7 | override fun onSessionResuming(p0: CastSession, p1: String) {}
8 |
9 | override fun onSessionStartFailed(p0: CastSession, p1: Int) {}
10 |
11 | override fun onSessionResumeFailed(p0: CastSession, p1: Int) {}
12 |
13 | override fun onSessionEnding(castSession: CastSession) {}
14 | }
--------------------------------------------------------------------------------
/app/src/normal/res/values/donottranslate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | always
4 |
--------------------------------------------------------------------------------
/appthemehelper/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 | android {
4 | compileSdk 35
5 | namespace "code.name.monkey.appthemehelper"
6 |
7 | defaultConfig {
8 | minSdk 21
9 | targetSdk 35
10 | }
11 | buildTypes {
12 | release {
13 | minifyEnabled true
14 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
15 | }
16 | }
17 | lint {
18 | abortOnError false
19 | }
20 | compileOptions {
21 | sourceCompatibility JavaVersion.VERSION_21
22 | targetCompatibility JavaVersion.VERSION_21
23 | }
24 | kotlinOptions {
25 | jvmTarget = "21"
26 | }
27 | }
28 |
29 | dependencies {
30 | implementation libs.androidx.appcompat
31 | implementation libs.android.material
32 | implementation libs.androidx.preference.ktx
33 | }
34 |
--------------------------------------------------------------------------------
/appthemehelper/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | -keep class code.name.monkey.appthemehelper.** { *; }
24 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHActionBarActivity.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.appthemehelper.common
2 |
3 | import androidx.appcompat.widget.Toolbar
4 |
5 | import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
6 |
7 | class ATHActionBarActivity : ATHToolbarActivity() {
8 |
9 | override fun getATHToolbar(): Toolbar? {
10 | return ToolbarContentTintHelper.getSupportActionBarView(supportActionBar)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/views/ATESwitch.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.appthemehelper.common.views
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.core.view.isVisible
6 | import code.name.monkey.appthemehelper.ATH
7 | import code.name.monkey.appthemehelper.ThemeStore
8 | import com.google.android.material.materialswitch.MaterialSwitch
9 |
10 | /**
11 | * @author Aidan Follestad (afollestad)
12 | */
13 | class ATESwitch @JvmOverloads constructor(
14 | context: Context,
15 | attrs: AttributeSet? = null,
16 | defStyleAttr: Int = -1,
17 | ) : MaterialSwitch(context, attrs, defStyleAttr) {
18 |
19 | init {
20 | if (!isInEditMode && !ThemeStore.isMD3Enabled(context)) {
21 | ATH.setTint(this, ThemeStore.accentColor(context))
22 | }
23 | }
24 |
25 | override fun isShown(): Boolean {
26 | return parent != null && isVisible
27 | }
28 | }
--------------------------------------------------------------------------------
/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ATHUtil.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.appthemehelper.util
2 |
3 | import android.content.Context
4 | import android.graphics.Color
5 | import androidx.annotation.AttrRes
6 | import androidx.core.content.res.use
7 | import java.lang.Exception
8 |
9 | /**
10 | * @author Aidan Follestad (afollestad)
11 | */
12 | object ATHUtil {
13 |
14 | fun isWindowBackgroundDark(context: Context): Boolean {
15 | return !ColorUtil.isColorLight(resolveColor(context, android.R.attr.windowBackground))
16 | }
17 |
18 | @JvmOverloads
19 | fun resolveColor(context: Context, @AttrRes attr: Int, fallback: Int = 0): Int {
20 | context.theme.obtainStyledAttributes(intArrayOf(attr)).use {
21 | return try {
22 | it.getColor(0, fallback);
23 | } catch (e: Exception) {
24 | Color.BLACK
25 | }
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ViewUtil.kt:
--------------------------------------------------------------------------------
1 | package code.name.monkey.appthemehelper.util
2 |
3 | import android.graphics.drawable.Drawable
4 | import android.view.View
5 | import android.view.ViewTreeObserver
6 |
7 | object ViewUtil {
8 | fun removeOnGlobalLayoutListener(v: View, listener: ViewTreeObserver.OnGlobalLayoutListener) {
9 | v.viewTreeObserver.removeOnGlobalLayoutListener(listener)
10 | }
11 |
12 | fun setBackgroundCompat(view: View, drawable: Drawable?) {
13 | view.background = drawable
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/drawable/ate_check.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/layout/ate_preference_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/layout/ate_preference_switch_support.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/values-large/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/values-night-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @android:color/system_accent1_200
4 | @android:color/system_accent1_500
5 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/values-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @android:color/system_accent1_600
4 | @android:color/system_accent1_50
5 |
6 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1dp
5 |
6 |
--------------------------------------------------------------------------------
/appthemehelper/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | appthemehelper
3 |
4 |
--------------------------------------------------------------------------------
/assets/google-play-badge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/assets/google-play-badge.png
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | repositories {
6 | mavenCentral()
7 | google()
8 | }
9 | dependencies {
10 | classpath libs.gradle
11 | classpath libs.kotlin.gradle.plugin
12 | classpath libs.androidx.navigation.safeargs.plugin
13 | }
14 | }
15 |
16 | plugins {
17 | alias libs.plugins.github.ben.manes
18 | alias libs.plugins.google.devtools.ksp apply false
19 | }
20 |
21 | tasks.register('clean', Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/ci_signing_setup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | decode_env_to_file() {
4 | local env_var="${1}"
5 | local dest_file="${2}"
6 | if [[ -n "${!env_var}" ]]; then
7 | if [[ ! -f "${dest_file}" ]]; then
8 | echo "${!env_var}" | base64 --decode >"${dest_file}"
9 | echo "Success: Written to ${dest_file}"
10 | else
11 | echo "Warning: File ${dest_file} already exists, not overwritten."
12 | fi
13 | else
14 | echo "Warning: Environment variable ${env_var} is empty or not set, no action taken."
15 | fi
16 | }
17 |
18 | decode_env_to_file "SIGNING_KEYSTORE_GITHUB" "retro.keystore"
19 | decode_env_to_file "SIGNING_PROPERTIES_GITHUB" "retro.properties"
20 |
--------------------------------------------------------------------------------
/crowdin.yml:
--------------------------------------------------------------------------------
1 | files:
2 | - source: /app/src/main/res/values/strings.xml
3 | translation: /app/src/main/res/values-%android_code%/strings.xml
4 | content_segmentation: 0
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/10597.txt:
--------------------------------------------------------------------------------
1 | Added lyrics downloading
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | Retro Music Player 🎵
2 |
3 | 📦 Included Features
4 |
5 | - Base 3 themes (Clearly White, Kinda Dark and AMOLED(Just Black orJust White))
6 | - Material You support on Android 12+
7 | - Gapless playback
8 | - Crossfade playback
9 | - Choose from 10+ now playing themes
10 | - Android auto support
11 | - Wallpaper accent picker on Android 8.1+
12 | - Home screen widgets
13 | - Lock screen playback controls
14 | - Sleep timer
15 | - Easy drag to sort playlist & play queue
16 | - Tag editor
17 | - Create, edit and import playlists
18 | - Browse and play your music by songs, albums, artists, playlists and genre
19 | - Smart Auto Playlists - Recently played, most played and history
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | Material You Design Music player for Android
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | android.injected.testOnly=false
2 | android.useAndroidX=true
3 | kotlin.code.style=official
4 | org.gradle.caching=true
5 | org.gradle.configureondemand=true
6 | org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC -Dfile.encoding=UTF-8
7 | org.gradle.parallel=true
8 |
9 | # https://developer.android.com/studio/build/optimize-your-build#use-non-transitive-r-classes
10 | android.nonTransitiveRClass=true
11 | # https://blog.jetbrains.com/kotlin/2022/07/a-new-approach-to-incremental-compilation-in-kotlin/
12 | kotlin.incremental.useClasspathSnapshot=true
13 | # https://docs.gradle.org/7.5/userguide/configuration_cache.html
14 | org.gradle.unsafe.configuration-cache=true
15 | android.nonFinalResIds=false
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "config:recommended"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/screenshots/adaptive.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/adaptive.jpg
--------------------------------------------------------------------------------
/screenshots/blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/blur.jpg
--------------------------------------------------------------------------------
/screenshots/classic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/classic.jpg
--------------------------------------------------------------------------------
/screenshots/color.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/color.jpg
--------------------------------------------------------------------------------
/screenshots/fit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/fit.jpg
--------------------------------------------------------------------------------
/screenshots/flat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/flat.jpg
--------------------------------------------------------------------------------
/screenshots/material.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/material.jpg
--------------------------------------------------------------------------------
/screenshots/peak.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/peak.jpg
--------------------------------------------------------------------------------
/screenshots/peek.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/peek.jpg
--------------------------------------------------------------------------------
/screenshots/playlists.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/playlists.jpg
--------------------------------------------------------------------------------
/screenshots/synced_over_black.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/synced_over_black.jpg
--------------------------------------------------------------------------------
/screenshots/synced_over_dark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/synced_over_dark.jpg
--------------------------------------------------------------------------------
/screenshots/synced_over_light.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/synced_over_light.jpg
--------------------------------------------------------------------------------
/screenshots/synced_replace_black.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/synced_replace_black.jpg
--------------------------------------------------------------------------------
/screenshots/synced_replace_dark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/synced_replace_dark.jpg
--------------------------------------------------------------------------------
/screenshots/synced_replace_light.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/synced_replace_light.jpg
--------------------------------------------------------------------------------
/screenshots/tiny.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dhruvitpokharna/EffinMusic/baf07a7d6b4a4c599eca9fa01c000edb5ed2067f/screenshots/tiny.jpg
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.gradle.develocity" version "3.19.2"
3 | }
4 |
5 | develocity {
6 | buildScan {
7 | termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use")
8 | termsOfUseAgree.set("yes")
9 | publishing.onlyIf { false }
10 | }
11 | }
12 |
13 | dependencyResolutionManagement {
14 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
15 | repositories {
16 | google()
17 | mavenCentral()
18 | maven { url "https://jitpack.io" }
19 | }
20 | }
21 |
22 | include ':app', ':appthemehelper'
--------------------------------------------------------------------------------
/spotless.license.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Hemanth Savarla.
3 | *
4 | * Licensed under the GNU General Public License v3
5 | *
6 | * This is free software: you can redistribute it and/or modify it
7 | * under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
9 | *
10 | * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | * See the GNU General Public License for more details.
13 | *
14 | */
--------------------------------------------------------------------------------