Fix up and repackage
This commit is contained in:
parent
4df292bddf
commit
cde7fd6565
510 changed files with 2660 additions and 3312 deletions
|
@ -62,7 +62,6 @@ favorite songs. No other music player has this feature.
|
||||||
|
|
||||||
## 📦 Included Features
|
## 📦 Included Features
|
||||||
- Base 3 themes (Clearly White, Kinda Dark and Just Black)
|
- Base 3 themes (Clearly White, Kinda Dark and Just Black)
|
||||||
- Chromecast support
|
|
||||||
- Choose from 10+ now playing themes
|
- Choose from 10+ now playing themes
|
||||||
- Driving Mode
|
- Driving Mode
|
||||||
- Headset/Bluetooth support
|
- Headset/Bluetooth support
|
||||||
|
|
|
@ -6,7 +6,7 @@ apply plugin: 'kotlin-parcelize'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdk 32
|
compileSdk 32
|
||||||
buildTools = '30.0.3'
|
buildToolsVersion = '30.0.3'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdk 21
|
minSdk 21
|
||||||
|
@ -69,6 +69,8 @@ dependencies {
|
||||||
implementation 'androidx.core:core-ktx:1.7.0'
|
implementation 'androidx.core:core-ktx:1.7.0'
|
||||||
implementation 'androidx.palette:palette-ktx:1.0.0'
|
implementation 'androidx.palette:palette-ktx:1.0.0'
|
||||||
|
|
||||||
|
implementation "androidx.media:media:1.6.0"
|
||||||
|
|
||||||
implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version"
|
||||||
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
||||||
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
|
||||||
|
|
4
app/proguard-rules.pro
vendored
4
app/proguard-rules.pro
vendored
|
@ -66,6 +66,6 @@
|
||||||
-keep class * extends androidx.fragment.app.Fragment{}
|
-keep class * extends androidx.fragment.app.Fragment{}
|
||||||
-keepnames class * extends android.os.Parcelable
|
-keepnames class * extends android.os.Parcelable
|
||||||
-keepnames class * extends java.io.Serializable
|
-keepnames class * extends java.io.Serializable
|
||||||
-keep class code.name.monkey.retromusic.network.model.** { *; }
|
-keep class io.github.muntashirakon.music.network.model.** { *; }
|
||||||
-keep class code.name.monkey.retromusic.model.** { *; }
|
-keep class io.github.muntashirakon.music.model.** { *; }
|
||||||
-keep class com.google.android.material.bottomsheet.** { *; }
|
-keep class com.google.android.material.bottomsheet.** { *; }
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="code.name.monkey.retromusic"
|
package="io.github.muntashirakon.music"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
<uses-permission
|
<uses-permission
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name="io.github.muntashirakon.retromusic.App"
|
android:name=".App"
|
||||||
android:allowBackup="@bool/allowBackup"
|
android:allowBackup="@bool/allowBackup"
|
||||||
android:configChanges="locale|layoutDirection"
|
android:configChanges="locale|layoutDirection"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
|
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
|
||||||
tools:targetApi="q">
|
tools:targetApi="q">
|
||||||
<activity
|
<activity
|
||||||
android:name="io.github.muntashirakon.retromusic.activities.MainActivity"
|
android:name=".activities.MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
android:theme="@style/SplashTheme">
|
android:theme="@style/SplashTheme">
|
||||||
|
@ -166,23 +166,9 @@
|
||||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".saf.SAFGuideActivity"
|
android:name=".activities.saf.SAFGuideActivity"
|
||||||
android:theme="@style/Theme.Intro" />
|
android:theme="@style/Theme.Intro" />
|
||||||
|
|
||||||
<activity
|
|
||||||
android:name=".cast.ExpandedControlsActivity"
|
|
||||||
android:exported="true"
|
|
||||||
android:launchMode="singleTask"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/Theme.AppCompat.NoActionBar">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN" />
|
|
||||||
</intent-filter>
|
|
||||||
<meta-data
|
|
||||||
android:name="android.support.PARENT_ACTIVITY"
|
|
||||||
android:value=".activities.MainActivity" />
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.ErrorActivity"
|
android:name=".activities.ErrorActivity"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
|
|
|
@ -1,147 +0,0 @@
|
||||||
package code.name.monkey.retromusic.activities.base
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import code.name.monkey.retromusic.cast.CastHelper
|
|
||||||
import code.name.monkey.retromusic.cast.RetroSessionManagerListener
|
|
||||||
import code.name.monkey.retromusic.cast.RetroWebServer
|
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
|
||||||
import com.google.android.gms.cast.framework.CastContext
|
|
||||||
import com.google.android.gms.cast.framework.CastSession
|
|
||||||
import com.google.android.gms.cast.framework.SessionManager
|
|
||||||
import com.google.android.gms.common.ConnectionResult
|
|
||||||
import com.google.android.gms.common.GoogleApiAvailability
|
|
||||||
import org.koin.android.ext.android.inject
|
|
||||||
|
|
||||||
|
|
||||||
abstract class AbsCastActivity : AbsSlidingMusicPanelActivity() {
|
|
||||||
|
|
||||||
private var mCastSession: CastSession? = null
|
|
||||||
private lateinit var sessionManager: SessionManager
|
|
||||||
private val webServer: RetroWebServer by inject()
|
|
||||||
|
|
||||||
private var playServicesAvailable: Boolean = false
|
|
||||||
|
|
||||||
private val sessionManagerListener by lazy {
|
|
||||||
object : RetroSessionManagerListener {
|
|
||||||
override fun onSessionStarting(castSession: CastSession) {
|
|
||||||
webServer.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSessionStarted(castSession: CastSession, p1: String) {
|
|
||||||
invalidateOptionsMenu()
|
|
||||||
mCastSession = castSession
|
|
||||||
loadCastQueue()
|
|
||||||
MusicPlayerRemote.isCasting = true
|
|
||||||
setAllowDragging(false)
|
|
||||||
collapsePanel()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSessionEnding(castSession: CastSession) {
|
|
||||||
MusicPlayerRemote.isCasting = false
|
|
||||||
castSession.remoteMediaClient?.let {
|
|
||||||
val position = it.mediaQueue.indexOfItemWithId(it.currentItem?.itemId ?: 0)
|
|
||||||
val progress = it.approximateStreamPosition
|
|
||||||
MusicPlayerRemote.position = position
|
|
||||||
MusicPlayerRemote.seekTo(progress.toInt())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSessionEnded(castSession: CastSession, p1: Int) {
|
|
||||||
invalidateOptionsMenu()
|
|
||||||
if (mCastSession == castSession) {
|
|
||||||
mCastSession = null
|
|
||||||
}
|
|
||||||
setAllowDragging(true)
|
|
||||||
webServer.stop()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSessionResumed(castSession: CastSession, p1: Boolean) {
|
|
||||||
invalidateOptionsMenu()
|
|
||||||
mCastSession = castSession
|
|
||||||
webServer.start()
|
|
||||||
mCastSession?.remoteMediaClient?.let {
|
|
||||||
loadCastQueue(it.mediaQueue.indexOfItemWithId(it.currentItem?.itemId ?: 0),
|
|
||||||
it.approximateStreamPosition)
|
|
||||||
}
|
|
||||||
|
|
||||||
MusicPlayerRemote.isCasting = true
|
|
||||||
setAllowDragging(false)
|
|
||||||
collapsePanel()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSessionSuspended(castSession: CastSession, p1: Int) {
|
|
||||||
invalidateOptionsMenu()
|
|
||||||
if (mCastSession == castSession) {
|
|
||||||
mCastSession = null
|
|
||||||
}
|
|
||||||
MusicPlayerRemote.isCasting = false
|
|
||||||
setAllowDragging(true)
|
|
||||||
webServer.stop()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
playServicesAvailable = try {
|
|
||||||
GoogleApiAvailability
|
|
||||||
.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS
|
|
||||||
} catch (e: Exception) {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
if (playServicesAvailable) {
|
|
||||||
setupCast()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupCast() {
|
|
||||||
sessionManager = CastContext.getSharedInstance(this).sessionManager
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResume() {
|
|
||||||
super.onResume()
|
|
||||||
if (playServicesAvailable) {
|
|
||||||
sessionManager.addSessionManagerListener(
|
|
||||||
sessionManagerListener,
|
|
||||||
CastSession::class.java
|
|
||||||
)
|
|
||||||
if (mCastSession == null) {
|
|
||||||
mCastSession = sessionManager.currentCastSession
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
if (playServicesAvailable) {
|
|
||||||
sessionManager.removeSessionManagerListener(
|
|
||||||
sessionManagerListener,
|
|
||||||
CastSession::class.java
|
|
||||||
)
|
|
||||||
mCastSession = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun loadCastQueue(
|
|
||||||
position: Int = MusicPlayerRemote.position,
|
|
||||||
progress: Long = MusicPlayerRemote.songProgressMillis.toLong(),
|
|
||||||
) {
|
|
||||||
mCastSession?.let {
|
|
||||||
if (MusicPlayerRemote.playingQueue.isNotEmpty()) {
|
|
||||||
CastHelper.castQueue(
|
|
||||||
it,
|
|
||||||
MusicPlayerRemote.playingQueue,
|
|
||||||
position,
|
|
||||||
progress
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onQueueChanged() {
|
|
||||||
super.onQueueChanged()
|
|
||||||
if (playServicesAvailable) {
|
|
||||||
loadCastQueue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
package code.name.monkey.retromusic.activities.bugreport.model.github
|
|
||||||
|
|
||||||
class GithubTarget(val username: String, val repository: String)
|
|
|
@ -1,83 +0,0 @@
|
||||||
package code.name.monkey.retromusic.cast
|
|
||||||
|
|
||||||
import androidx.core.net.toUri
|
|
||||||
import code.name.monkey.retromusic.cast.RetroWebServer.Companion.MIME_TYPE_AUDIO
|
|
||||||
import code.name.monkey.retromusic.cast.RetroWebServer.Companion.PART_COVER_ART
|
|
||||||
import code.name.monkey.retromusic.cast.RetroWebServer.Companion.PART_SONG
|
|
||||||
import code.name.monkey.retromusic.model.Song
|
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
|
||||||
import com.google.android.gms.cast.*
|
|
||||||
import com.google.android.gms.cast.MediaInfo.STREAM_TYPE_BUFFERED
|
|
||||||
import com.google.android.gms.cast.MediaMetadata.*
|
|
||||||
import com.google.android.gms.cast.framework.CastSession
|
|
||||||
import com.google.android.gms.common.images.WebImage
|
|
||||||
import org.json.JSONObject
|
|
||||||
import java.net.MalformedURLException
|
|
||||||
import java.net.URL
|
|
||||||
|
|
||||||
object CastHelper {
|
|
||||||
|
|
||||||
private const val CAST_MUSIC_METADATA_ID = "metadata_id"
|
|
||||||
private const val CAST_MUSIC_METADATA_ALBUM_ID = "metadata_album_id"
|
|
||||||
private const val CAST_URL_PROTOCOL = "http"
|
|
||||||
|
|
||||||
fun castSong(castSession: CastSession, song: Song) {
|
|
||||||
try {
|
|
||||||
val remoteMediaClient = castSession.remoteMediaClient
|
|
||||||
val mediaLoadOptions = MediaLoadOptions.Builder().apply {
|
|
||||||
setPlayPosition(0)
|
|
||||||
setAutoplay(true)
|
|
||||||
}.build()
|
|
||||||
remoteMediaClient?.load(song.toMediaInfo()!!, mediaLoadOptions)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun castQueue(castSession: CastSession, songs: List<Song>, position: Int, progress: Long) {
|
|
||||||
try {
|
|
||||||
val remoteMediaClient = castSession.remoteMediaClient
|
|
||||||
remoteMediaClient?.queueLoad(
|
|
||||||
songs.toMediaInfoList(),
|
|
||||||
if (position != -1) position else 0,
|
|
||||||
MediaStatus.REPEAT_MODE_REPEAT_OFF,
|
|
||||||
progress,
|
|
||||||
JSONObject()
|
|
||||||
)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun List<Song>.toMediaInfoList(): Array<MediaQueueItem> {
|
|
||||||
return map { MediaQueueItem.Builder(it.toMediaInfo()!!).build() }.toTypedArray()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Song.toMediaInfo(): MediaInfo? {
|
|
||||||
val song = this
|
|
||||||
val baseUrl: URL
|
|
||||||
try {
|
|
||||||
baseUrl = URL(CAST_URL_PROTOCOL, RetroUtil.getIpAddress(true), SERVER_PORT, "")
|
|
||||||
} catch (e: MalformedURLException) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
val songUrl = "$baseUrl/$PART_SONG?id=${song.id}"
|
|
||||||
val albumArtUrl = "$baseUrl/$PART_COVER_ART?id=${song.albumId}"
|
|
||||||
val musicMetadata = MediaMetadata(MEDIA_TYPE_MUSIC_TRACK).apply {
|
|
||||||
putInt(CAST_MUSIC_METADATA_ID, song.id.toInt())
|
|
||||||
putInt(CAST_MUSIC_METADATA_ALBUM_ID, song.albumId.toInt())
|
|
||||||
putString(KEY_TITLE, song.title)
|
|
||||||
putString(KEY_ARTIST, song.artistName)
|
|
||||||
putString(KEY_ALBUM_TITLE, song.albumName)
|
|
||||||
putInt(KEY_TRACK_NUMBER, song.trackNumber)
|
|
||||||
addImage(WebImage(albumArtUrl.toUri()))
|
|
||||||
}
|
|
||||||
return MediaInfo.Builder(songUrl).apply {
|
|
||||||
setStreamType(STREAM_TYPE_BUFFERED)
|
|
||||||
setContentType(MIME_TYPE_AUDIO)
|
|
||||||
setMetadata(musicMetadata)
|
|
||||||
setStreamDuration(song.duration)
|
|
||||||
}.build()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
@file:Suppress("unused")
|
|
||||||
|
|
||||||
package code.name.monkey.retromusic.cast
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import com.google.android.gms.cast.CastMediaControlIntent
|
|
||||||
import com.google.android.gms.cast.framework.CastOptions
|
|
||||||
import com.google.android.gms.cast.framework.OptionsProvider
|
|
||||||
import com.google.android.gms.cast.framework.SessionProvider
|
|
||||||
import com.google.android.gms.cast.framework.media.CastMediaOptions
|
|
||||||
import com.google.android.gms.cast.framework.media.MediaIntentReceiver
|
|
||||||
import com.google.android.gms.cast.framework.media.NotificationOptions
|
|
||||||
|
|
||||||
|
|
||||||
class CastOptionsProvider : OptionsProvider {
|
|
||||||
override fun getCastOptions(context: Context): CastOptions {
|
|
||||||
val buttonActions: MutableList<String> = ArrayList()
|
|
||||||
buttonActions.add(MediaIntentReceiver.ACTION_SKIP_PREV)
|
|
||||||
buttonActions.add(MediaIntentReceiver.ACTION_TOGGLE_PLAYBACK)
|
|
||||||
buttonActions.add(MediaIntentReceiver.ACTION_SKIP_NEXT)
|
|
||||||
buttonActions.add(MediaIntentReceiver.ACTION_STOP_CASTING)
|
|
||||||
val compatButtonActionsIndices = intArrayOf(1, 3)
|
|
||||||
val notificationOptions = NotificationOptions.Builder()
|
|
||||||
.setActions(buttonActions, compatButtonActionsIndices)
|
|
||||||
.setTargetActivityClassName(ExpandedControlsActivity::class.java.name)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
val mediaOptions = CastMediaOptions.Builder()
|
|
||||||
.setNotificationOptions(notificationOptions)
|
|
||||||
.setExpandedControllerActivityClassName(ExpandedControlsActivity::class.java.name)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
return CastOptions.Builder()
|
|
||||||
.setReceiverApplicationId(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)
|
|
||||||
.setCastMediaOptions(mediaOptions)
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getAdditionalSessionProviders(context: Context): MutableList<SessionProvider>? {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
package code.name.monkey.retromusic.cast
|
|
||||||
|
|
||||||
|
|
||||||
import android.view.Menu
|
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
|
|
||||||
import com.google.android.gms.cast.framework.CastButtonFactory
|
|
||||||
|
|
||||||
import com.google.android.gms.cast.framework.media.widget.ExpandedControllerActivity
|
|
||||||
|
|
||||||
|
|
||||||
class ExpandedControlsActivity : ExpandedControllerActivity() {
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
|
||||||
super.onCreateOptionsMenu(menu)
|
|
||||||
menuInflater.inflate(R.menu.menu_cast, menu)
|
|
||||||
CastButtonFactory.setUpMediaRouteButton(this, menu, R.id.action_cast)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
package code.name.monkey.retromusic.cast
|
|
||||||
|
|
||||||
import com.google.android.gms.cast.framework.CastSession
|
|
||||||
import com.google.android.gms.cast.framework.SessionManagerListener
|
|
||||||
|
|
||||||
interface RetroSessionManagerListener : SessionManagerListener<CastSession> {
|
|
||||||
override fun onSessionResuming(p0: CastSession, p1: String) {}
|
|
||||||
|
|
||||||
override fun onSessionStartFailed(p0: CastSession, p1: Int) {}
|
|
||||||
|
|
||||||
override fun onSessionResumeFailed(p0: CastSession, p1: Int) {}
|
|
||||||
|
|
||||||
override fun onSessionEnding(castSession: CastSession) {}
|
|
||||||
}
|
|
|
@ -1,127 +0,0 @@
|
||||||
package code.name.monkey.retromusic.cast
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
|
||||||
import fi.iki.elonen.NanoHTTPD
|
|
||||||
import fi.iki.elonen.NanoHTTPD.Response.Status
|
|
||||||
import java.io.*
|
|
||||||
|
|
||||||
|
|
||||||
const val SERVER_PORT = 9090
|
|
||||||
|
|
||||||
class RetroWebServer(val context: Context) : NanoHTTPD(SERVER_PORT) {
|
|
||||||
companion object {
|
|
||||||
private const val MIME_TYPE_IMAGE = "image/jpg"
|
|
||||||
const val MIME_TYPE_AUDIO = "audio/mp3"
|
|
||||||
|
|
||||||
const val PART_COVER_ART = "coverart"
|
|
||||||
const val PART_SONG = "song"
|
|
||||||
const val PARAM_ID = "id"
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun serve(session: IHTTPSession?): Response {
|
|
||||||
if (session?.uri?.contains(PART_COVER_ART) == true) {
|
|
||||||
val albumId = session.parameters?.get(PARAM_ID)?.get(0) ?: return errorResponse()
|
|
||||||
val albumArtUri = MusicUtil.getMediaStoreAlbumCoverUri(albumId.toLong())
|
|
||||||
val fis: InputStream?
|
|
||||||
try {
|
|
||||||
fis = context.contentResolver.openInputStream(albumArtUri)
|
|
||||||
} catch (e: FileNotFoundException) {
|
|
||||||
return errorResponse()
|
|
||||||
}
|
|
||||||
return newChunkedResponse(Status.OK, MIME_TYPE_IMAGE, fis)
|
|
||||||
} else if (session?.uri?.contains(PART_SONG) == true) {
|
|
||||||
val songId = session.parameters?.get(PARAM_ID)?.get(0) ?: return errorResponse()
|
|
||||||
val songUri = MusicUtil.getSongFileUri(songId.toLong())
|
|
||||||
val songPath = MusicUtil.getSongFilePath(context, songUri)
|
|
||||||
val song = File(songPath)
|
|
||||||
return serveFile(session.headers!!, song, MIME_TYPE_AUDIO)
|
|
||||||
}
|
|
||||||
return newFixedLengthResponse(Status.NOT_FOUND, MIME_PLAINTEXT, "Not Found")
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun serveFile(
|
|
||||||
header: MutableMap<String, String>, file: File,
|
|
||||||
mime: String
|
|
||||||
): Response {
|
|
||||||
var res: Response
|
|
||||||
try {
|
|
||||||
// Support (simple) skipping:
|
|
||||||
var startFrom: Long = 0
|
|
||||||
var endAt: Long = -1
|
|
||||||
// The value of header range will be bytes=0-1024 something like this
|
|
||||||
// We get the value of from Bytes i.e. startFrom and toBytes i.e. endAt below
|
|
||||||
var range = header["range"]
|
|
||||||
if (range != null) {
|
|
||||||
if (range.startsWith("bytes=")) {
|
|
||||||
range = range.substring("bytes=".length)
|
|
||||||
val minus = range.indexOf('-')
|
|
||||||
try {
|
|
||||||
if (minus > 0) {
|
|
||||||
startFrom = range
|
|
||||||
.substring(0, minus).toLong()
|
|
||||||
endAt = range.substring(minus + 1).toLong()
|
|
||||||
}
|
|
||||||
} catch (ignored: NumberFormatException) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Chunked Response is used when serving audio file
|
|
||||||
// Change return code and add Content-Range header when skipping is
|
|
||||||
// requested
|
|
||||||
val fileLen = file.length()
|
|
||||||
if (range != null && startFrom >= 0) {
|
|
||||||
if (startFrom >= fileLen) {
|
|
||||||
res = newFixedLengthResponse(
|
|
||||||
Status.RANGE_NOT_SATISFIABLE,
|
|
||||||
MIME_PLAINTEXT, ""
|
|
||||||
)
|
|
||||||
res.addHeader("Content-Range", "bytes 0-0/$fileLen")
|
|
||||||
} else {
|
|
||||||
if (endAt < 0) {
|
|
||||||
endAt = fileLen - 1
|
|
||||||
}
|
|
||||||
var newLen = endAt - startFrom + 1
|
|
||||||
if (newLen < 0) {
|
|
||||||
newLen = 0
|
|
||||||
}
|
|
||||||
val dataLen = newLen
|
|
||||||
val fis: FileInputStream = object : FileInputStream(file) {
|
|
||||||
@Throws(IOException::class)
|
|
||||||
override fun available(): Int {
|
|
||||||
return dataLen.toInt()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fis.skip(startFrom)
|
|
||||||
res = newChunkedResponse(
|
|
||||||
Status.PARTIAL_CONTENT, mime,
|
|
||||||
fis
|
|
||||||
)
|
|
||||||
res.addHeader("Content-Length", "" + dataLen)
|
|
||||||
res.addHeader(
|
|
||||||
"Content-Range", "bytes " + startFrom + "-"
|
|
||||||
+ endAt + "/" + fileLen
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
res = newFixedLengthResponse(
|
|
||||||
Status.OK, mime,
|
|
||||||
file.inputStream(), file.length()
|
|
||||||
)
|
|
||||||
res.addHeader("Accept-Ranges", "bytes")
|
|
||||||
res.addHeader("Content-Length", "" + fileLen)
|
|
||||||
}
|
|
||||||
} catch (ioe: IOException) {
|
|
||||||
res = newFixedLengthResponse(
|
|
||||||
Status.FORBIDDEN,
|
|
||||||
MIME_PLAINTEXT, "FORBIDDEN: Reading file failed."
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun errorResponse(message: String = "Error Occurred"): Response {
|
|
||||||
return newFixedLengthResponse(Status.INTERNAL_ERROR, MIME_PLAINTEXT, message)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
package code.name.monkey.retromusic.interfaces
|
|
||||||
|
|
||||||
import code.name.monkey.retromusic.model.Album
|
|
||||||
import code.name.monkey.retromusic.model.Artist
|
|
||||||
import code.name.monkey.retromusic.model.Genre
|
|
||||||
|
|
||||||
interface IHomeClickListener {
|
|
||||||
fun onAlbumClick(album: Album)
|
|
||||||
|
|
||||||
fun onArtistClick(artist: Artist)
|
|
||||||
|
|
||||||
fun onGenreClick(genre: Genre)
|
|
||||||
}
|
|
|
@ -11,15 +11,15 @@
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic
|
package io.github.muntashirakon.music
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import cat.ereza.customactivityoncrash.config.CaocConfig
|
import cat.ereza.customactivityoncrash.config.CaocConfig
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.activities.ErrorActivity
|
import io.github.muntashirakon.music.activities.ErrorActivity
|
||||||
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
|
import io.github.muntashirakon.music.appshortcuts.DynamicShortcutManager
|
||||||
import code.name.monkey.retromusic.helper.WallpaperAccentManager
|
import io.github.muntashirakon.music.helper.WallpaperAccentManager
|
||||||
import org.koin.android.ext.koin.androidContext
|
import org.koin.android.ext.koin.androidContext
|
||||||
import org.koin.core.context.startKoin
|
import org.koin.core.context.startKoin
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic
|
package io.github.muntashirakon.music
|
||||||
|
|
||||||
import android.provider.BaseColumns
|
import android.provider.BaseColumns
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic
|
package io.github.muntashirakon.music
|
||||||
|
|
||||||
import androidx.annotation.IntDef
|
import androidx.annotation.IntDef
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
package code.name.monkey.retromusic
|
package io.github.muntashirakon.music
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.ContextWrapper
|
import android.content.ContextWrapper
|
||||||
import android.os.LocaleList
|
import android.os.LocaleList
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils.hasNougatMR
|
import code.name.monkey.appthemehelper.util.VersionUtils.hasNougatMR
|
||||||
import com.google.android.gms.common.annotation.KeepName
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class LanguageContextWrapper(base: Context?) : ContextWrapper(base) {
|
class LanguageContextWrapper(base: Context?) : ContextWrapper(base) {
|
||||||
companion object {
|
companion object {
|
||||||
@KeepName
|
|
||||||
fun wrap(context: Context?, newLocale: Locale?): LanguageContextWrapper {
|
fun wrap(context: Context?, newLocale: Locale?): LanguageContextWrapper {
|
||||||
if (context == null) return LanguageContextWrapper(context)
|
if (context == null) return LanguageContextWrapper(context)
|
||||||
val configuration = context.resources.configuration
|
val configuration = context.resources.configuration
|
|
@ -1,26 +1,25 @@
|
||||||
package code.name.monkey.retromusic
|
package io.github.muntashirakon.music
|
||||||
|
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||||
import code.name.monkey.retromusic.auto.AutoMusicProvider
|
import io.github.muntashirakon.music.auto.AutoMusicProvider
|
||||||
import code.name.monkey.retromusic.cast.RetroWebServer
|
import io.github.muntashirakon.music.db.BlackListStoreDao
|
||||||
import code.name.monkey.retromusic.db.BlackListStoreDao
|
import io.github.muntashirakon.music.db.BlackListStoreEntity
|
||||||
import code.name.monkey.retromusic.db.BlackListStoreEntity
|
import io.github.muntashirakon.music.db.PlaylistWithSongs
|
||||||
import code.name.monkey.retromusic.db.PlaylistWithSongs
|
import io.github.muntashirakon.music.db.RetroDatabase
|
||||||
import code.name.monkey.retromusic.db.RetroDatabase
|
import io.github.muntashirakon.music.fragments.LibraryViewModel
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
import io.github.muntashirakon.music.fragments.albums.AlbumDetailsViewModel
|
||||||
import code.name.monkey.retromusic.fragments.albums.AlbumDetailsViewModel
|
import io.github.muntashirakon.music.fragments.artists.ArtistDetailsViewModel
|
||||||
import code.name.monkey.retromusic.fragments.artists.ArtistDetailsViewModel
|
import io.github.muntashirakon.music.fragments.genres.GenreDetailsViewModel
|
||||||
import code.name.monkey.retromusic.fragments.genres.GenreDetailsViewModel
|
import io.github.muntashirakon.music.fragments.playlists.PlaylistDetailsViewModel
|
||||||
import code.name.monkey.retromusic.fragments.playlists.PlaylistDetailsViewModel
|
import io.github.muntashirakon.music.model.Genre
|
||||||
import code.name.monkey.retromusic.model.Genre
|
import io.github.muntashirakon.music.network.provideDefaultCache
|
||||||
import code.name.monkey.retromusic.network.provideDefaultCache
|
import io.github.muntashirakon.music.network.provideLastFmRest
|
||||||
import code.name.monkey.retromusic.network.provideLastFmRest
|
import io.github.muntashirakon.music.network.provideLastFmRetrofit
|
||||||
import code.name.monkey.retromusic.network.provideLastFmRetrofit
|
import io.github.muntashirakon.music.network.provideOkHttp
|
||||||
import code.name.monkey.retromusic.network.provideOkHttp
|
import io.github.muntashirakon.music.repository.*
|
||||||
import code.name.monkey.retromusic.repository.*
|
import io.github.muntashirakon.music.util.FilePathUtil
|
||||||
import code.name.monkey.retromusic.util.FilePathUtil
|
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -104,9 +103,6 @@ private val mainModule = module {
|
||||||
single {
|
single {
|
||||||
androidContext().contentResolver
|
androidContext().contentResolver
|
||||||
}
|
}
|
||||||
single {
|
|
||||||
RetroWebServer(get())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
private val dataModule = module {
|
private val dataModule = module {
|
||||||
single {
|
single {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.animation.ObjectAnimator
|
import android.animation.ObjectAnimator
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
@ -22,25 +22,25 @@ import android.os.Bundle
|
||||||
import android.view.animation.LinearInterpolator
|
import android.view.animation.LinearInterpolator
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
import io.github.muntashirakon.music.activities.base.AbsMusicServiceActivity
|
||||||
import code.name.monkey.retromusic.databinding.ActivityDriveModeBinding
|
import io.github.muntashirakon.music.databinding.ActivityDriveModeBinding
|
||||||
import code.name.monkey.retromusic.db.toSongEntity
|
import io.github.muntashirakon.music.db.toSongEntity
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.drawAboveSystemBars
|
import io.github.muntashirakon.music.extensions.drawAboveSystemBars
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
import io.github.muntashirakon.music.fragments.base.AbsPlayerControlsFragment
|
||||||
import code.name.monkey.retromusic.glide.BlurTransformation
|
import io.github.muntashirakon.music.glide.BlurTransformation
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import io.github.muntashirakon.music.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
|
import io.github.muntashirakon.music.helper.MusicProgressViewUpdateHelper.Callback
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import io.github.muntashirakon.music.helper.PlayPauseButtonOnClickHandler
|
||||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
|
import io.github.muntashirakon.music.misc.SimpleOnSeekbarChangeListener
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.repository.RealRepository
|
import io.github.muntashirakon.music.repository.RealRepository
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
|
@ -6,9 +6,9 @@ import android.widget.ImageView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import cat.ereza.customactivityoncrash.CustomActivityOnCrash
|
import cat.ereza.customactivityoncrash.CustomActivityOnCrash
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.util.FileUtils.createFile
|
import io.github.muntashirakon.music.util.FileUtils.createFile
|
||||||
import code.name.monkey.retromusic.util.Share.shareFile
|
import io.github.muntashirakon.music.util.Share.shareFile
|
||||||
import java.text.DateFormat
|
import java.text.DateFormat
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
|
@ -11,7 +11,7 @@
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -19,11 +19,11 @@ import android.view.MenuItem
|
||||||
import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
|
import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil.lightenColor
|
import code.name.monkey.appthemehelper.util.ColorUtil.lightenColor
|
||||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||||
import code.name.monkey.retromusic.activities.base.AbsThemeActivity
|
import io.github.muntashirakon.music.activities.base.AbsThemeActivity
|
||||||
import code.name.monkey.retromusic.databinding.ActivityLicenseBinding
|
import io.github.muntashirakon.music.databinding.ActivityLicenseBinding
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.drawAboveSystemBars
|
import io.github.muntashirakon.music.extensions.drawAboveSystemBars
|
||||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
import io.github.muntashirakon.music.extensions.surfaceColor
|
||||||
import java.io.BufferedReader
|
import java.io.BufferedReader
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
import java.nio.charset.StandardCharsets
|
import java.nio.charset.StandardCharsets
|
|
@ -12,25 +12,25 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.app.KeyguardManager
|
import android.app.KeyguardManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
import io.github.muntashirakon.music.activities.base.AbsMusicServiceActivity
|
||||||
import code.name.monkey.retromusic.databinding.ActivityLockScreenBinding
|
import io.github.muntashirakon.music.databinding.ActivityLockScreenBinding
|
||||||
import code.name.monkey.retromusic.extensions.hideStatusBar
|
import io.github.muntashirakon.music.extensions.hideStatusBar
|
||||||
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
import io.github.muntashirakon.music.extensions.setTaskDescriptionColorAuto
|
||||||
import code.name.monkey.retromusic.extensions.whichFragment
|
import io.github.muntashirakon.music.extensions.whichFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.lockscreen.LockScreenControlsFragment
|
import io.github.muntashirakon.music.fragments.player.lockscreen.LockScreenControlsFragment
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
import com.r0adkll.slidr.Slidr
|
import com.r0adkll.slidr.Slidr
|
||||||
import com.r0adkll.slidr.model.SlidrConfig
|
import com.r0adkll.slidr.model.SlidrConfig
|
||||||
import com.r0adkll.slidr.model.SlidrListener
|
import com.r0adkll.slidr.model.SlidrListener
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
@ -23,23 +23,23 @@ import android.provider.MediaStore
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.contains
|
import androidx.navigation.contains
|
||||||
import androidx.navigation.ui.setupWithNavController
|
import androidx.navigation.ui.setupWithNavController
|
||||||
import code.name.monkey.retromusic.*
|
import io.github.muntashirakon.music.*
|
||||||
import code.name.monkey.retromusic.activities.base.AbsCastActivity
|
import io.github.muntashirakon.music.activities.base.AbsSlidingMusicPanelActivity
|
||||||
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
|
import io.github.muntashirakon.music.databinding.SlidingMusicPanelLayoutBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs
|
import io.github.muntashirakon.music.helper.SearchQueryHelper.getSongs
|
||||||
import code.name.monkey.retromusic.interfaces.IScrollHelper
|
import io.github.muntashirakon.music.interfaces.IScrollHelper
|
||||||
import code.name.monkey.retromusic.model.CategoryInfo
|
import io.github.muntashirakon.music.model.CategoryInfo
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.repository.PlaylistSongsLoader
|
import io.github.muntashirakon.music.repository.PlaylistSongsLoader
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
|
|
||||||
class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
|
class MainActivity : AbsSlidingMusicPanelActivity(), OnSharedPreferenceChangeListener {
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "MainActivity"
|
const val TAG = "MainActivity"
|
||||||
const val EXPAND_PANEL = "expand_panel"
|
const val EXPAND_PANEL = "expand_panel"
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.Manifest.permission.BLUETOOTH_CONNECT
|
import android.Manifest.permission.BLUETOOTH_CONNECT
|
||||||
|
@ -28,10 +28,10 @@ import androidx.core.net.toUri
|
||||||
import androidx.core.text.parseAsHtml
|
import androidx.core.text.parseAsHtml
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
import io.github.muntashirakon.music.activities.base.AbsMusicServiceActivity
|
||||||
import code.name.monkey.retromusic.databinding.ActivityPermissionBinding
|
import io.github.muntashirakon.music.databinding.ActivityPermissionBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
|
|
||||||
class PermissionActivity : AbsMusicServiceActivity() {
|
class PermissionActivity : AbsMusicServiceActivity() {
|
||||||
private lateinit var binding: ActivityPermissionBinding
|
private lateinit var binding: ActivityPermissionBinding
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.Manifest.permission.BLUETOOTH_CONNECT
|
import android.Manifest.permission.BLUETOOTH_CONNECT
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
@ -22,11 +22,11 @@ import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDestination
|
import androidx.navigation.NavDestination
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
|
import io.github.muntashirakon.music.activities.base.AbsBaseActivity
|
||||||
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
|
import io.github.muntashirakon.music.appshortcuts.DynamicShortcutManager
|
||||||
import code.name.monkey.retromusic.databinding.ActivitySettingsBinding
|
import io.github.muntashirakon.music.databinding.ActivitySettingsBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
import com.afollestad.materialdialogs.color.ColorCallback
|
import com.afollestad.materialdialogs.color.ColorCallback
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
|
@ -25,17 +25,17 @@ import androidx.core.net.toUri
|
||||||
import androidx.core.view.drawToBitmap
|
import androidx.core.view.drawToBitmap
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
|
import io.github.muntashirakon.music.activities.base.AbsBaseActivity
|
||||||
import code.name.monkey.retromusic.databinding.ActivityShareInstagramBinding
|
import io.github.muntashirakon.music.databinding.ActivityShareInstagramBinding
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.setLightStatusBar
|
import io.github.muntashirakon.music.extensions.setLightStatusBar
|
||||||
import code.name.monkey.retromusic.extensions.setStatusBarColor
|
import io.github.muntashirakon.music.extensions.setStatusBarColor
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.Share
|
import io.github.muntashirakon.music.util.Share
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by hemanths on 2020-02-02.
|
* Created by hemanths on 2020-02-02.
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.activities
|
package io.github.muntashirakon.music.activities
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
|
@ -14,12 +14,12 @@ import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil.isColorLight
|
import code.name.monkey.appthemehelper.util.ColorUtil.isColorLight
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil.lightenColor
|
import code.name.monkey.appthemehelper.util.ColorUtil.lightenColor
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper.getPrimaryTextColor
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper.getPrimaryTextColor
|
||||||
import code.name.monkey.retromusic.BuildConfig
|
import io.github.muntashirakon.music.BuildConfig
|
||||||
import code.name.monkey.retromusic.Constants
|
import io.github.muntashirakon.music.Constants
|
||||||
import code.name.monkey.retromusic.databinding.FragmentWhatsNewBinding
|
import io.github.muntashirakon.music.databinding.FragmentWhatsNewBinding
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.openUrl
|
import io.github.muntashirakon.music.extensions.openUrl
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil.lastVersion
|
import io.github.muntashirakon.music.util.PreferenceUtil.lastVersion
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import java.nio.charset.StandardCharsets
|
import java.nio.charset.StandardCharsets
|
||||||
import java.util.*
|
import java.util.*
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.base
|
package io.github.muntashirakon.music.activities.base
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
@ -30,8 +30,8 @@ import android.widget.EditText
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
|
||||||
abstract class AbsBaseActivity : AbsThemeActivity() {
|
abstract class AbsBaseActivity : AbsThemeActivity() {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.base
|
package io.github.muntashirakon.music.activities.base
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.content.*
|
import android.content.*
|
||||||
|
@ -20,19 +20,19 @@ import android.os.Bundle
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.db.toPlayCount
|
import io.github.muntashirakon.music.db.toPlayCount
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.interfaces.IMusicServiceEventListener
|
import io.github.muntashirakon.music.interfaces.IMusicServiceEventListener
|
||||||
import code.name.monkey.retromusic.repository.RealRepository
|
import io.github.muntashirakon.music.repository.RealRepository
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.FAVORITE_STATE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.FAVORITE_STATE_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.MEDIA_STORE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.MEDIA_STORE_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.META_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.META_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.PLAY_STATE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.PLAY_STATE_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.QUEUE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.QUEUE_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.REPEAT_MODE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.REPEAT_MODE_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.SHUFFLE_MODE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.SHUFFLE_MODE_CHANGED
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.base
|
package io.github.muntashirakon.music.activities.base
|
||||||
|
|
||||||
import android.animation.ArgbEvaluator
|
import android.animation.ArgbEvaluator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
|
@ -29,37 +29,37 @@ import androidx.core.view.*
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.commit
|
import androidx.fragment.app.commit
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
|
import io.github.muntashirakon.music.databinding.SlidingMusicPanelLayoutBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
import io.github.muntashirakon.music.fragments.LibraryViewModel
|
||||||
import code.name.monkey.retromusic.fragments.NowPlayingScreen
|
import io.github.muntashirakon.music.fragments.NowPlayingScreen
|
||||||
import code.name.monkey.retromusic.fragments.NowPlayingScreen.*
|
import io.github.muntashirakon.music.fragments.NowPlayingScreen.*
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
|
import io.github.muntashirakon.music.fragments.base.AbsPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.other.MiniPlayerFragment
|
import io.github.muntashirakon.music.fragments.other.MiniPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.adaptive.AdaptiveFragment
|
import io.github.muntashirakon.music.fragments.player.adaptive.AdaptiveFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.blur.BlurPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.blur.BlurPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.card.CardFragment
|
import io.github.muntashirakon.music.fragments.player.card.CardFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.cardblur.CardBlurFragment
|
import io.github.muntashirakon.music.fragments.player.cardblur.CardBlurFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.circle.CirclePlayerFragment
|
import io.github.muntashirakon.music.fragments.player.circle.CirclePlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.classic.ClassicPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.classic.ClassicPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.color.ColorFragment
|
import io.github.muntashirakon.music.fragments.player.color.ColorFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.fit.FitFragment
|
import io.github.muntashirakon.music.fragments.player.fit.FitFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.flat.FlatPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.flat.FlatPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.full.FullPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.full.FullPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.gradient.GradientPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.gradient.GradientPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.material.MaterialFragment
|
import io.github.muntashirakon.music.fragments.player.material.MaterialFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.md3.MD3PlayerFragment
|
import io.github.muntashirakon.music.fragments.player.md3.MD3PlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment
|
import io.github.muntashirakon.music.fragments.player.normal.PlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.peek.PeekPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.peek.PeekPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.plain.PlainPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.plain.PlainPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.simple.SimplePlayerFragment
|
import io.github.muntashirakon.music.fragments.player.simple.SimplePlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.tiny.TinyPlayerFragment
|
import io.github.muntashirakon.music.fragments.player.tiny.TinyPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.queue.PlayingQueueFragment
|
import io.github.muntashirakon.music.fragments.queue.PlayingQueueFragment
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.model.CategoryInfo
|
import io.github.muntashirakon.music.model.CategoryInfo
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.ViewUtil
|
import io.github.muntashirakon.music.util.ViewUtil
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior.*
|
import com.google.android.material.bottomsheet.BottomSheetBehavior.*
|
||||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
import org.koin.androidx.viewmodel.ext.android.viewModel
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.base
|
package io.github.muntashirakon.music.activities.base
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
|
@ -25,13 +25,12 @@ import androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode
|
||||||
import androidx.core.os.ConfigurationCompat
|
import androidx.core.os.ConfigurationCompat
|
||||||
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
|
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.LanguageContextWrapper
|
import io.github.muntashirakon.music.LanguageContextWrapper
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.theme.getNightMode
|
import io.github.muntashirakon.music.util.theme.getNightMode
|
||||||
import code.name.monkey.retromusic.util.theme.getThemeResValue
|
import io.github.muntashirakon.music.util.theme.getThemeResValue
|
||||||
import com.google.android.play.core.splitcompat.SplitCompat
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
||||||
|
@ -123,6 +122,5 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
||||||
Locale.forLanguageTag(code)
|
Locale.forLanguageTag(code)
|
||||||
}
|
}
|
||||||
super.attachBaseContext(LanguageContextWrapper.wrap(newBase, locale))
|
super.attachBaseContext(LanguageContextWrapper.wrap(newBase, locale))
|
||||||
SplitCompat.install(this)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.bugreport
|
package io.github.muntashirakon.music.activities.bugreport
|
||||||
|
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
|
@ -28,17 +28,17 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import code.name.monkey.appthemehelper.util.MaterialUtil
|
import code.name.monkey.appthemehelper.util.MaterialUtil
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsThemeActivity
|
import io.github.muntashirakon.music.activities.base.AbsThemeActivity
|
||||||
import code.name.monkey.retromusic.activities.bugreport.model.DeviceInfo
|
import io.github.muntashirakon.music.activities.bugreport.model.DeviceInfo
|
||||||
import code.name.monkey.retromusic.activities.bugreport.model.Report
|
import io.github.muntashirakon.music.activities.bugreport.model.Report
|
||||||
import code.name.monkey.retromusic.activities.bugreport.model.github.ExtraInfo
|
import io.github.muntashirakon.music.activities.bugreport.model.github.ExtraInfo
|
||||||
import code.name.monkey.retromusic.activities.bugreport.model.github.GithubLogin
|
import io.github.muntashirakon.music.activities.bugreport.model.github.GithubLogin
|
||||||
import code.name.monkey.retromusic.activities.bugreport.model.github.GithubTarget
|
import io.github.muntashirakon.music.activities.bugreport.model.github.GithubTarget
|
||||||
import code.name.monkey.retromusic.databinding.ActivityBugReportBinding
|
import io.github.muntashirakon.music.databinding.ActivityBugReportBinding
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
import io.github.muntashirakon.music.extensions.setTaskDescriptionColorAuto
|
||||||
import code.name.monkey.retromusic.extensions.showToast
|
import io.github.muntashirakon.music.extensions.showToast
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.activities.bugreport.model
|
package io.github.muntashirakon.music.activities.bugreport.model
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -6,10 +6,10 @@ import android.content.pm.PackageManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.annotation.IntRange
|
import androidx.annotation.IntRange
|
||||||
import androidx.core.content.pm.PackageInfoCompat
|
import androidx.core.content.pm.PackageInfoCompat
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil.isAdaptiveColor
|
import io.github.muntashirakon.music.util.PreferenceUtil.isAdaptiveColor
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil.languageCode
|
import io.github.muntashirakon.music.util.PreferenceUtil.languageCode
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil.nowPlayingScreen
|
import io.github.muntashirakon.music.util.PreferenceUtil.nowPlayingScreen
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class DeviceInfo(context: Context) {
|
class DeviceInfo(context: Context) {
|
|
@ -1,6 +1,6 @@
|
||||||
package code.name.monkey.retromusic.activities.bugreport.model
|
package io.github.muntashirakon.music.activities.bugreport.model
|
||||||
|
|
||||||
import code.name.monkey.retromusic.activities.bugreport.model.github.ExtraInfo
|
import io.github.muntashirakon.music.activities.bugreport.model.github.ExtraInfo
|
||||||
|
|
||||||
class Report(
|
class Report(
|
||||||
val title: String,
|
val title: String,
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.activities.bugreport.model.github
|
package io.github.muntashirakon.music.activities.bugreport.model.github
|
||||||
|
|
||||||
class ExtraInfo {
|
class ExtraInfo {
|
||||||
private val extraInfo: MutableMap<String, String> = LinkedHashMap()
|
private val extraInfo: MutableMap<String, String> = LinkedHashMap()
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.activities.bugreport.model.github
|
package io.github.muntashirakon.music.activities.bugreport.model.github
|
||||||
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
package io.github.muntashirakon.music.activities.bugreport.model.github
|
||||||
|
|
||||||
|
class GithubTarget(val username: String, val repository: String)
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package code.name.monkey.retromusic.activities.saf;
|
package io.github.muntashirakon.music.activities.saf;
|
||||||
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -22,7 +22,7 @@ import androidx.annotation.Nullable;
|
||||||
import com.heinrichreimersoftware.materialintro.app.IntroActivity;
|
import com.heinrichreimersoftware.materialintro.app.IntroActivity;
|
||||||
import com.heinrichreimersoftware.materialintro.slide.SimpleSlide;
|
import com.heinrichreimersoftware.materialintro.slide.SimpleSlide;
|
||||||
|
|
||||||
import code.name.monkey.retromusic.R;
|
import io.github.muntashirakon.music.R;
|
||||||
|
|
||||||
/** Created by hemanths on 2019-07-31. */
|
/** Created by hemanths on 2019-07-31. */
|
||||||
public class SAFGuideActivity extends IntroActivity {
|
public class SAFGuideActivity extends IntroActivity {
|
|
@ -11,13 +11,13 @@
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.saf
|
package io.github.muntashirakon.music.activities.saf
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import code.name.monkey.retromusic.activities.saf.SAFGuideActivity.REQUEST_CODE_SAF_GUIDE
|
import io.github.muntashirakon.music.activities.saf.SAFGuideActivity.REQUEST_CODE_SAF_GUIDE
|
||||||
import code.name.monkey.retromusic.util.SAFUtil
|
import io.github.muntashirakon.music.util.SAFUtil
|
||||||
|
|
||||||
/** Created by buliasz on 2021-02-07. */
|
/** Created by buliasz on 2021-02-07. */
|
||||||
class SAFRequestActivity : Activity() {
|
class SAFRequestActivity : Activity() {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.tageditor
|
package io.github.muntashirakon.music.activities.tageditor
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.SearchManager
|
import android.app.SearchManager
|
||||||
|
@ -36,18 +36,18 @@ import androidx.viewbinding.ViewBinding
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.R.drawable
|
import io.github.muntashirakon.music.R.drawable
|
||||||
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
|
import io.github.muntashirakon.music.activities.base.AbsBaseActivity
|
||||||
import code.name.monkey.retromusic.activities.saf.SAFGuideActivity
|
import io.github.muntashirakon.music.activities.saf.SAFGuideActivity
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.colorButtons
|
import io.github.muntashirakon.music.extensions.colorButtons
|
||||||
import code.name.monkey.retromusic.extensions.hideSoftKeyboard
|
import io.github.muntashirakon.music.extensions.hideSoftKeyboard
|
||||||
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
import io.github.muntashirakon.music.extensions.setTaskDescriptionColorAuto
|
||||||
import code.name.monkey.retromusic.model.ArtworkInfo
|
import io.github.muntashirakon.music.model.ArtworkInfo
|
||||||
import code.name.monkey.retromusic.model.AudioTagInfo
|
import io.github.muntashirakon.music.model.AudioTagInfo
|
||||||
import code.name.monkey.retromusic.repository.Repository
|
import io.github.muntashirakon.music.repository.Repository
|
||||||
import code.name.monkey.retromusic.util.SAFUtil
|
import io.github.muntashirakon.music.util.SAFUtil
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.tageditor
|
package io.github.muntashirakon.music.activities.tageditor
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
|
@ -28,17 +28,17 @@ import android.widget.ImageView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.widget.doAfterTextChanged
|
import androidx.core.widget.doAfterTextChanged
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.ActivityAlbumTagEditorBinding
|
import io.github.muntashirakon.music.databinding.ActivityAlbumTagEditorBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.model.ArtworkInfo
|
import io.github.muntashirakon.music.model.ArtworkInfo
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.ImageUtil
|
import io.github.muntashirakon.music.util.ImageUtil
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.RetroColorUtil.generatePalette
|
import io.github.muntashirakon.music.util.RetroColorUtil.generatePalette
|
||||||
import code.name.monkey.retromusic.util.RetroColorUtil.getColor
|
import io.github.muntashirakon.music.util.RetroColorUtil.getColor
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.request.target.ImageViewTarget
|
import com.bumptech.glide.request.target.ImageViewTarget
|
||||||
import com.bumptech.glide.request.transition.Transition
|
import com.bumptech.glide.request.transition.Transition
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.activities.tageditor
|
package io.github.muntashirakon.music.activities.tageditor
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
@ -28,16 +28,16 @@ import android.widget.ImageView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.widget.doAfterTextChanged
|
import androidx.core.widget.doAfterTextChanged
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.ActivitySongTagEditorBinding
|
import io.github.muntashirakon.music.databinding.ActivitySongTagEditorBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import io.github.muntashirakon.music.extensions.*
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.model.ArtworkInfo
|
import io.github.muntashirakon.music.model.ArtworkInfo
|
||||||
import code.name.monkey.retromusic.repository.SongRepository
|
import io.github.muntashirakon.music.repository.SongRepository
|
||||||
import code.name.monkey.retromusic.util.ImageUtil
|
import io.github.muntashirakon.music.util.ImageUtil
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
import io.github.muntashirakon.music.util.RetroColorUtil
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.request.target.ImageViewTarget
|
import com.bumptech.glide.request.target.ImageViewTarget
|
||||||
import com.bumptech.glide.request.transition.Transition
|
import com.bumptech.glide.request.transition.Transition
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.activities.tageditor
|
package io.github.muntashirakon.music.activities.tageditor
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -7,12 +7,12 @@ import android.media.MediaScannerConnection
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import code.name.monkey.retromusic.extensions.showToast
|
import io.github.muntashirakon.music.extensions.showToast
|
||||||
import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener
|
import io.github.muntashirakon.music.misc.UpdateToastMediaScannerCompletionListener
|
||||||
import code.name.monkey.retromusic.model.AudioTagInfo
|
import io.github.muntashirakon.music.model.AudioTagInfo
|
||||||
import code.name.monkey.retromusic.util.MusicUtil.createAlbumArtFile
|
import io.github.muntashirakon.music.util.MusicUtil.createAlbumArtFile
|
||||||
import code.name.monkey.retromusic.util.MusicUtil.deleteAlbumArt
|
import io.github.muntashirakon.music.util.MusicUtil.deleteAlbumArt
|
||||||
import code.name.monkey.retromusic.util.MusicUtil.insertAlbumArt
|
import io.github.muntashirakon.music.util.MusicUtil.insertAlbumArt
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.jaudiotagger.audio.AudioFileIO
|
import org.jaudiotagger.audio.AudioFileIO
|
|
@ -11,7 +11,7 @@
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
|
@ -22,13 +22,13 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor
|
import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.PreferenceDialogLibraryCategoriesListitemBinding
|
import io.github.muntashirakon.music.databinding.PreferenceDialogLibraryCategoriesListitemBinding
|
||||||
import code.name.monkey.retromusic.extensions.showToast
|
import io.github.muntashirakon.music.extensions.showToast
|
||||||
import code.name.monkey.retromusic.model.CategoryInfo
|
import io.github.muntashirakon.music.model.CategoryInfo
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.SwipeAndDragHelper
|
import io.github.muntashirakon.music.util.SwipeAndDragHelper
|
||||||
import code.name.monkey.retromusic.util.SwipeAndDragHelper.ActionCompletionContract
|
import io.github.muntashirakon.music.util.SwipeAndDragHelper.ActionCompletionContract
|
||||||
|
|
||||||
class CategoryInfoAdapter : RecyclerView.Adapter<CategoryInfoAdapter.ViewHolder>(),
|
class CategoryInfoAdapter : RecyclerView.Adapter<CategoryInfoAdapter.ViewHolder>(),
|
||||||
ActionCompletionContract {
|
ActionCompletionContract {
|
|
@ -12,17 +12,17 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.openUrl
|
import io.github.muntashirakon.music.extensions.openUrl
|
||||||
import code.name.monkey.retromusic.model.Contributor
|
import io.github.muntashirakon.music.model.Contributor
|
||||||
import code.name.monkey.retromusic.views.RetroShapeableImageView
|
import io.github.muntashirakon.music.views.RetroShapeableImageView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
|
|
||||||
class ContributorAdapter(
|
class ContributorAdapter(
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -21,15 +21,15 @@ import android.view.ViewGroup
|
||||||
import android.view.ViewOutlineProvider
|
import android.view.ViewOutlineProvider
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.ItemGenreBinding
|
import io.github.muntashirakon.music.databinding.ItemGenreBinding
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.interfaces.IGenreClickListener
|
import io.github.muntashirakon.music.interfaces.IGenreClickListener
|
||||||
import code.name.monkey.retromusic.model.Genre
|
import io.github.muntashirakon.music.model.Genre
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -28,16 +28,16 @@ import androidx.navigation.fragment.FragmentNavigatorExtras
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.retromusic.*
|
import io.github.muntashirakon.music.*
|
||||||
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
|
import io.github.muntashirakon.music.adapter.album.AlbumAdapter
|
||||||
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
|
import io.github.muntashirakon.music.adapter.artist.ArtistAdapter
|
||||||
import code.name.monkey.retromusic.adapter.song.SongAdapter
|
import io.github.muntashirakon.music.adapter.song.SongAdapter
|
||||||
import code.name.monkey.retromusic.fragments.home.HomeFragment
|
import io.github.muntashirakon.music.fragments.home.HomeFragment
|
||||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
import io.github.muntashirakon.music.interfaces.IAlbumClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
import io.github.muntashirakon.music.interfaces.IArtistClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.IGenreClickListener
|
import io.github.muntashirakon.music.interfaces.IGenreClickListener
|
||||||
import code.name.monkey.retromusic.model.*
|
import io.github.muntashirakon.music.model.*
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
|
|
||||||
class HomeAdapter(
|
class HomeAdapter(
|
||||||
private val activity: AppCompatActivity
|
private val activity: AppCompatActivity
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -26,18 +26,18 @@ import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.retromusic.*
|
import io.github.muntashirakon.music.*
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.db.PlaylistWithSongs
|
import io.github.muntashirakon.music.db.PlaylistWithSongs
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.menu.SongMenuHelper
|
import io.github.muntashirakon.music.helper.menu.SongMenuHelper
|
||||||
import code.name.monkey.retromusic.model.Album
|
import io.github.muntashirakon.music.model.Album
|
||||||
import code.name.monkey.retromusic.model.Artist
|
import io.github.muntashirakon.music.model.Artist
|
||||||
import code.name.monkey.retromusic.model.Genre
|
import io.github.muntashirakon.music.model.Genre
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class SearchAdapter(
|
class SearchAdapter(
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -22,16 +22,16 @@ import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
import io.github.muntashirakon.music.adapter.base.AbsMultiSelectAdapter
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.audiocover.AudioFileCover
|
import io.github.muntashirakon.music.glide.audiocover.AudioFileCover
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.interfaces.ICallbacks
|
import io.github.muntashirakon.music.interfaces.ICallbacks
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.signature.MediaStoreSignature
|
import com.bumptech.glide.signature.MediaStoreSignature
|
||||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
import me.zhanghai.android.fastscroll.PopupTextProvider
|
|
@ -1,11 +1,11 @@
|
||||||
package code.name.monkey.retromusic.adapter
|
package io.github.muntashirakon.music.adapter
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class StorageAdapter(
|
class StorageAdapter(
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.album
|
package io.github.muntashirakon.music.adapter.album
|
||||||
|
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -21,21 +21,21 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
import io.github.muntashirakon.music.adapter.base.AbsMultiSelectAdapter
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.helper.SortOrder
|
import io.github.muntashirakon.music.helper.SortOrder
|
||||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
import io.github.muntashirakon.music.helper.menu.SongsMenuHelper
|
||||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
import io.github.muntashirakon.music.interfaces.IAlbumClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Album
|
import io.github.muntashirakon.music.model.Album
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
import me.zhanghai.android.fastscroll.PopupTextProvider
|
||||||
|
|
||||||
open class AlbumAdapter(
|
open class AlbumAdapter(
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.album
|
package io.github.muntashirakon.music.adapter.album
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -23,19 +23,19 @@ import androidx.core.os.bundleOf
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.fragments.AlbumCoverStyle
|
import io.github.muntashirakon.music.fragments.AlbumCoverStyle
|
||||||
import code.name.monkey.retromusic.fragments.NowPlayingScreen.*
|
import io.github.muntashirakon.music.fragments.NowPlayingScreen.*
|
||||||
import code.name.monkey.retromusic.fragments.base.goToLyrics
|
import io.github.muntashirakon.music.fragments.base.goToLyrics
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.misc.CustomFragmentStatePagerAdapter
|
import io.github.muntashirakon.music.misc.CustomFragmentStatePagerAdapter
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
|
import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
|
@ -12,20 +12,20 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.album
|
package io.github.muntashirakon.music.adapter.album
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.helper.HorizontalAdapterHelper
|
import io.github.muntashirakon.music.helper.HorizontalAdapterHelper
|
||||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
import io.github.muntashirakon.music.interfaces.IAlbumClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Album
|
import io.github.muntashirakon.music.model.Album
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
|
|
||||||
class HorizontalAlbumAdapter(
|
class HorizontalAlbumAdapter(
|
||||||
activity: FragmentActivity,
|
activity: FragmentActivity,
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.artist
|
package io.github.muntashirakon.music.adapter.artist
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
|
@ -23,22 +23,22 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
import io.github.muntashirakon.music.adapter.base.AbsMultiSelectAdapter
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.extensions.hide
|
import io.github.muntashirakon.music.extensions.hide
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
import io.github.muntashirakon.music.helper.menu.SongsMenuHelper
|
||||||
import code.name.monkey.retromusic.interfaces.IAlbumArtistClickListener
|
import io.github.muntashirakon.music.interfaces.IAlbumArtistClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
import io.github.muntashirakon.music.interfaces.IArtistClickListener
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Artist
|
import io.github.muntashirakon.music.model.Artist
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
import me.zhanghai.android.fastscroll.PopupTextProvider
|
||||||
|
|
||||||
class ArtistAdapter(
|
class ArtistAdapter(
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.adapter.backup
|
package io.github.muntashirakon.music.adapter.backup
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -7,8 +7,8 @@ import android.view.ViewGroup
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.ItemListBackupBinding
|
import io.github.muntashirakon.music.databinding.ItemListBackupBinding
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.adapter.base
|
package io.github.muntashirakon.music.adapter.base
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
@ -8,11 +8,11 @@ import androidx.annotation.MenuRes
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
import io.github.muntashirakon.music.extensions.surfaceColor
|
||||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
import io.github.muntashirakon.music.interfaces.ICabCallback
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
import io.github.muntashirakon.music.util.RetroColorUtil
|
||||||
import com.afollestad.materialcab.attached.AttachedCab
|
import com.afollestad.materialcab.attached.AttachedCab
|
||||||
import com.afollestad.materialcab.attached.destroy
|
import com.afollestad.materialcab.attached.destroy
|
||||||
import com.afollestad.materialcab.attached.isActive
|
import com.afollestad.materialcab.attached.isActive
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package code.name.monkey.retromusic.adapter.base;
|
package io.github.muntashirakon.music.adapter.base;
|
||||||
|
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -27,7 +27,7 @@ import androidx.appcompat.widget.AppCompatImageView;
|
||||||
import com.google.android.material.card.MaterialCardView;
|
import com.google.android.material.card.MaterialCardView;
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.utils.AbstractDraggableSwipeableItemViewHolder;
|
import com.h6ah4i.android.widget.advrecyclerview.utils.AbstractDraggableSwipeableItemViewHolder;
|
||||||
|
|
||||||
import code.name.monkey.retromusic.R;
|
import io.github.muntashirakon.music.R;
|
||||||
|
|
||||||
public class MediaEntryViewHolder extends AbstractDraggableSwipeableItemViewHolder
|
public class MediaEntryViewHolder extends AbstractDraggableSwipeableItemViewHolder
|
||||||
implements View.OnLongClickListener, View.OnClickListener {
|
implements View.OnLongClickListener, View.OnClickListener {
|
|
@ -12,16 +12,16 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.playlist
|
package io.github.muntashirakon.music.adapter.playlist
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.model.Playlist
|
import io.github.muntashirakon.music.model.Playlist
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
|
|
||||||
class LegacyPlaylistAdapter(
|
class LegacyPlaylistAdapter(
|
||||||
private val activity: FragmentActivity,
|
private val activity: FragmentActivity,
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.playlist
|
package io.github.muntashirakon.music.adapter.playlist
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -23,23 +23,23 @@ import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.core.view.setPadding
|
import androidx.core.view.setPadding
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
import io.github.muntashirakon.music.adapter.base.AbsMultiSelectAdapter
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.db.PlaylistEntity
|
import io.github.muntashirakon.music.db.PlaylistEntity
|
||||||
import code.name.monkey.retromusic.db.PlaylistWithSongs
|
import io.github.muntashirakon.music.db.PlaylistWithSongs
|
||||||
import code.name.monkey.retromusic.db.toSongs
|
import io.github.muntashirakon.music.db.toSongs
|
||||||
import code.name.monkey.retromusic.extensions.dipToPix
|
import io.github.muntashirakon.music.extensions.dipToPix
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.playlistPreview.PlaylistPreview
|
import io.github.muntashirakon.music.glide.playlistPreview.PlaylistPreview
|
||||||
import code.name.monkey.retromusic.helper.SortOrder.PlaylistSortOrder
|
import io.github.muntashirakon.music.helper.SortOrder.PlaylistSortOrder
|
||||||
import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper
|
import io.github.muntashirakon.music.helper.menu.PlaylistMenuHelper
|
||||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
import io.github.muntashirakon.music.helper.menu.SongsMenuHelper
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.interfaces.IPlaylistClickListener
|
import io.github.muntashirakon.music.interfaces.IPlaylistClickListener
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
import me.zhanghai.android.fastscroll.PopupTextProvider
|
||||||
|
|
||||||
class PlaylistAdapter(
|
class PlaylistAdapter(
|
|
@ -12,17 +12,17 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.song
|
package io.github.muntashirakon.music.adapter.song
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.annotation.LayoutRes
|
import androidx.annotation.LayoutRes
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
|
|
||||||
abstract class AbsOffsetSongAdapter(
|
abstract class AbsOffsetSongAdapter(
|
||||||
activity: FragmentActivity,
|
activity: FragmentActivity,
|
|
@ -12,24 +12,24 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.song
|
package io.github.muntashirakon.music.adapter.song
|
||||||
|
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.db.PlaylistEntity
|
import io.github.muntashirakon.music.db.PlaylistEntity
|
||||||
import code.name.monkey.retromusic.db.toSongEntity
|
import io.github.muntashirakon.music.db.toSongEntity
|
||||||
import code.name.monkey.retromusic.db.toSongsEntity
|
import io.github.muntashirakon.music.db.toSongsEntity
|
||||||
import code.name.monkey.retromusic.dialogs.RemoveSongFromPlaylistDialog
|
import io.github.muntashirakon.music.dialogs.RemoveSongFromPlaylistDialog
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.accentOutlineColor
|
import io.github.muntashirakon.music.extensions.accentOutlineColor
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
import io.github.muntashirakon.music.fragments.LibraryViewModel
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
|
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange
|
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange
|
|
@ -12,22 +12,22 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.song
|
package io.github.muntashirakon.music.adapter.song
|
||||||
|
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.isPlaying
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote.isPlaying
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.playNextSong
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote.playNextSong
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.removeFromQueue
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote.removeFromQueue
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.ViewUtil
|
import io.github.muntashirakon.music.util.ViewUtil
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
|
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange
|
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.annotation.DraggableItemStateFlags
|
import com.h6ah4i.android.widget.advrecyclerview.draggable.annotation.DraggableItemStateFlags
|
|
@ -12,19 +12,19 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.song
|
package io.github.muntashirakon.music.adapter.song
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.accentColor
|
import io.github.muntashirakon.music.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.accentOutlineColor
|
import io.github.muntashirakon.music.extensions.accentOutlineColor
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import io.github.muntashirakon.music.util.RetroUtil
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
|
|
||||||
class ShuffleButtonSongAdapter(
|
class ShuffleButtonSongAdapter(
|
|
@ -12,15 +12,15 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.song
|
package io.github.muntashirakon.music.adapter.song
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
|
|
||||||
class SimpleSongAdapter(
|
class SimpleSongAdapter(
|
||||||
context: FragmentActivity,
|
context: FragmentActivity,
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.adapter.song
|
package io.github.muntashirakon.music.adapter.song
|
||||||
|
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
|
@ -25,24 +25,24 @@ import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import code.name.monkey.retromusic.EXTRA_ALBUM_ID
|
import io.github.muntashirakon.music.EXTRA_ALBUM_ID
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
import io.github.muntashirakon.music.adapter.base.AbsMultiSelectAdapter
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
import io.github.muntashirakon.music.adapter.base.MediaEntryViewHolder
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import io.github.muntashirakon.music.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.SortOrder
|
import io.github.muntashirakon.music.helper.SortOrder
|
||||||
import code.name.monkey.retromusic.helper.menu.SongMenuHelper
|
import io.github.muntashirakon.music.helper.menu.SongMenuHelper
|
||||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
import io.github.muntashirakon.music.helper.menu.SongsMenuHelper
|
||||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
import io.github.muntashirakon.music.interfaces.ICabCallback
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
import io.github.muntashirakon.music.interfaces.ICabHolder
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import io.github.muntashirakon.music.util.RetroUtil
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
import io.github.muntashirakon.music.util.color.MediaNotificationProcessor
|
||||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
import me.zhanghai.android.fastscroll.PopupTextProvider
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts
|
package io.github.muntashirakon.music.appshortcuts
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Icon
|
import android.graphics.drawable.Icon
|
||||||
|
@ -22,9 +22,9 @@ import android.util.TypedValue
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N_MR1)
|
@RequiresApi(Build.VERSION_CODES.N_MR1)
|
||||||
object AppShortcutIconGenerator {
|
object AppShortcutIconGenerator {
|
|
@ -12,26 +12,26 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts
|
package io.github.muntashirakon.music.appshortcuts
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType
|
import io.github.muntashirakon.music.appshortcuts.shortcuttype.LastAddedShortcutType
|
||||||
import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType
|
import io.github.muntashirakon.music.appshortcuts.shortcuttype.ShuffleAllShortcutType
|
||||||
import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType
|
import io.github.muntashirakon.music.appshortcuts.shortcuttype.TopTracksShortcutType
|
||||||
import code.name.monkey.retromusic.extensions.extraNotNull
|
import io.github.muntashirakon.music.extensions.extraNotNull
|
||||||
import code.name.monkey.retromusic.model.Playlist
|
import io.github.muntashirakon.music.model.Playlist
|
||||||
import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist
|
import io.github.muntashirakon.music.model.smartplaylist.LastAddedPlaylist
|
||||||
import code.name.monkey.retromusic.model.smartplaylist.ShuffleAllPlaylist
|
import io.github.muntashirakon.music.model.smartplaylist.ShuffleAllPlaylist
|
||||||
import code.name.monkey.retromusic.model.smartplaylist.TopTracksPlaylist
|
import io.github.muntashirakon.music.model.smartplaylist.TopTracksPlaylist
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_PLAY_PLAYLIST
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_PLAY_PLAYLIST
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.INTENT_EXTRA_PLAYLIST
|
import io.github.muntashirakon.music.service.MusicService.Companion.INTENT_EXTRA_PLAYLIST
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.INTENT_EXTRA_SHUFFLE_MODE
|
import io.github.muntashirakon.music.service.MusicService.Companion.INTENT_EXTRA_SHUFFLE_MODE
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.SHUFFLE_MODE_NONE
|
import io.github.muntashirakon.music.service.MusicService.Companion.SHUFFLE_MODE_NONE
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.SHUFFLE_MODE_SHUFFLE
|
import io.github.muntashirakon.music.service.MusicService.Companion.SHUFFLE_MODE_SHUFFLE
|
||||||
|
|
||||||
class AppShortcutLauncherActivity : Activity() {
|
class AppShortcutLauncherActivity : Activity() {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts
|
package io.github.muntashirakon.music.appshortcuts
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -22,9 +22,9 @@ import android.content.pm.ShortcutManager
|
||||||
import android.graphics.drawable.Icon
|
import android.graphics.drawable.Icon
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType
|
import io.github.muntashirakon.music.appshortcuts.shortcuttype.LastAddedShortcutType
|
||||||
import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType
|
import io.github.muntashirakon.music.appshortcuts.shortcuttype.ShuffleAllShortcutType
|
||||||
import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType
|
import io.github.muntashirakon.music.appshortcuts.shortcuttype.TopTracksShortcutType
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.N_MR1)
|
@TargetApi(Build.VERSION_CODES.N_MR1)
|
||||||
class DynamicShortcutManager(private val context: Context) {
|
class DynamicShortcutManager(private val context: Context) {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts.shortcuttype
|
package io.github.muntashirakon.music.appshortcuts.shortcuttype
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -20,7 +20,7 @@ import android.content.Intent
|
||||||
import android.content.pm.ShortcutInfo
|
import android.content.pm.ShortcutInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutLauncherActivity
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.N_MR1)
|
@TargetApi(Build.VERSION_CODES.N_MR1)
|
||||||
abstract class BaseShortcutType(internal var context: Context) {
|
abstract class BaseShortcutType(internal var context: Context) {
|
|
@ -12,15 +12,15 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts.shortcuttype
|
package io.github.muntashirakon.music.appshortcuts.shortcuttype
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.ShortcutInfo
|
import android.content.pm.ShortcutInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutIconGenerator
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutLauncherActivity
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.N_MR1)
|
@TargetApi(Build.VERSION_CODES.N_MR1)
|
||||||
class LastAddedShortcutType(context: Context) : BaseShortcutType(context) {
|
class LastAddedShortcutType(context: Context) : BaseShortcutType(context) {
|
|
@ -12,15 +12,15 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts.shortcuttype
|
package io.github.muntashirakon.music.appshortcuts.shortcuttype
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.ShortcutInfo
|
import android.content.pm.ShortcutInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutIconGenerator
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutLauncherActivity
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.N_MR1)
|
@TargetApi(Build.VERSION_CODES.N_MR1)
|
||||||
class ShuffleAllShortcutType(context: Context) : BaseShortcutType(context) {
|
class ShuffleAllShortcutType(context: Context) : BaseShortcutType(context) {
|
|
@ -11,15 +11,15 @@
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appshortcuts.shortcuttype
|
package io.github.muntashirakon.music.appshortcuts.shortcuttype
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.ShortcutInfo
|
import android.content.pm.ShortcutInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutIconGenerator
|
||||||
import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity
|
import io.github.muntashirakon.music.appshortcuts.AppShortcutLauncherActivity
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.N_MR1)
|
@TargetApi(Build.VERSION_CODES.N_MR1)
|
||||||
class TopTracksShortcutType(context: Context) : BaseShortcutType(context) {
|
class TopTracksShortcutType(context: Context) : BaseShortcutType(context) {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -25,18 +25,18 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_REWIND
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import io.github.muntashirakon.music.util.RetroUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -25,18 +25,18 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_REWIND
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -24,19 +24,19 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.TOGGLE_FAVORITE
|
import io.github.muntashirakon.music.service.MusicService.Companion.TOGGLE_FAVORITE
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import io.github.muntashirakon.music.util.RetroUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -26,18 +26,18 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_REWIND
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -25,19 +25,19 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_REWIND
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.util.DensityUtil
|
import io.github.muntashirakon.music.util.DensityUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -25,18 +25,18 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import io.github.muntashirakon.music.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import io.github.muntashirakon.music.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import io.github.muntashirakon.music.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_REWIND
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
@ -23,15 +23,15 @@ import android.widget.RemoteViews
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.graphics.drawable.toBitmap
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
import io.github.muntashirakon.music.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
import io.github.muntashirakon.music.appwidgets.base.BaseAppWidget
|
||||||
import code.name.monkey.retromusic.extensions.getTintedDrawable
|
import io.github.muntashirakon.music.extensions.getTintedDrawable
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_REWIND
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
import io.github.muntashirakon.music.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
|
|
||||||
class AppWidgetText : BaseAppWidget() {
|
class AppWidgetText : BaseAppWidget() {
|
||||||
override fun defaultAppWidget(context: Context, appWidgetIds: IntArray) {
|
override fun defaultAppWidget(context: Context, appWidgetIds: IntArray) {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets
|
package io.github.muntashirakon.music.appwidgets
|
||||||
|
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
|
@ -20,7 +20,7 @@ import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
|
|
||||||
class BootReceiver : BroadcastReceiver() {
|
class BootReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.appwidgets.base
|
package io.github.muntashirakon.music.appwidgets.base
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
|
@ -26,14 +26,14 @@ import android.graphics.drawable.Drawable
|
||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.APP_WIDGET_UPDATE
|
import io.github.muntashirakon.music.service.MusicService.Companion.APP_WIDGET_UPDATE
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.EXTRA_APP_WIDGET_NAME
|
import io.github.muntashirakon.music.service.MusicService.Companion.EXTRA_APP_WIDGET_NAME
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.FAVORITE_STATE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.FAVORITE_STATE_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.META_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.META_CHANGED
|
||||||
import code.name.monkey.retromusic.service.MusicService.Companion.PLAY_STATE_CHANGED
|
import io.github.muntashirakon.music.service.MusicService.Companion.PLAY_STATE_CHANGED
|
||||||
|
|
||||||
abstract class BaseAppWidget : AppWidgetProvider() {
|
abstract class BaseAppWidget : AppWidgetProvider() {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package code.name.monkey.retromusic.auto;
|
package io.github.muntashirakon.music.auto;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
|
@ -11,19 +11,19 @@
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.auto
|
package io.github.muntashirakon.music.auto
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.support.v4.media.MediaBrowserCompat
|
import android.support.v4.media.MediaBrowserCompat
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import io.github.muntashirakon.music.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.model.CategoryInfo
|
import io.github.muntashirakon.music.model.CategoryInfo
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import code.name.monkey.retromusic.repository.*
|
import io.github.muntashirakon.music.repository.*
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import io.github.muntashirakon.music.service.MusicService
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import io.github.muntashirakon.music.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import io.github.muntashirakon.music.util.PreferenceUtil
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.auto
|
package io.github.muntashirakon.music.auto
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.room.*
|
import androidx.room.*
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.room.*
|
import androidx.room.*
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import androidx.room.Embedded
|
import androidx.room.Embedded
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
|
@ -12,7 +12,7 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
|
@ -12,9 +12,9 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.db
|
package io.github.muntashirakon.music.db
|
||||||
|
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
|
|
||||||
fun List<HistoryEntity>.fromHistoryToSongs(): List<Song> {
|
fun List<HistoryEntity>.fromHistoryToSongs(): List<Song> {
|
||||||
return map {
|
return map {
|
|
@ -12,21 +12,21 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.dialogs
|
package io.github.muntashirakon.music.dialogs
|
||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import code.name.monkey.retromusic.EXTRA_PLAYLISTS
|
import io.github.muntashirakon.music.EXTRA_PLAYLISTS
|
||||||
import code.name.monkey.retromusic.EXTRA_SONG
|
import io.github.muntashirakon.music.EXTRA_SONG
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.db.PlaylistEntity
|
import io.github.muntashirakon.music.db.PlaylistEntity
|
||||||
import code.name.monkey.retromusic.extensions.colorButtons
|
import io.github.muntashirakon.music.extensions.colorButtons
|
||||||
import code.name.monkey.retromusic.extensions.extraNotNull
|
import io.github.muntashirakon.music.extensions.extraNotNull
|
||||||
import code.name.monkey.retromusic.extensions.materialDialog
|
import io.github.muntashirakon.music.extensions.materialDialog
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
import io.github.muntashirakon.music.fragments.LibraryViewModel
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
|
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
|
||||||
|
|
||||||
class AddToPlaylistDialog : DialogFragment() {
|
class AddToPlaylistDialog : DialogFragment() {
|
|
@ -1,4 +1,4 @@
|
||||||
package code.name.monkey.retromusic.dialogs
|
package io.github.muntashirakon.music.dialogs
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
|
@ -8,9 +8,9 @@ import android.os.Bundle
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.extensions.materialDialog
|
import io.github.muntashirakon.music.extensions.materialDialog
|
||||||
import code.name.monkey.retromusic.util.getExternalStorageDirectory
|
import io.github.muntashirakon.music.util.getExternalStorageDirectory
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
import com.afollestad.materialdialogs.list.listItems
|
import com.afollestad.materialdialogs.list.listItems
|
||||||
import com.afollestad.materialdialogs.list.updateListItems
|
import com.afollestad.materialdialogs.list.updateListItems
|
|
@ -12,21 +12,21 @@
|
||||||
* See the GNU General Public License for more details.
|
* See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package code.name.monkey.retromusic.dialogs
|
package io.github.muntashirakon.music.dialogs
|
||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import code.name.monkey.retromusic.EXTRA_SONG
|
import io.github.muntashirakon.music.EXTRA_SONG
|
||||||
import code.name.monkey.retromusic.R
|
import io.github.muntashirakon.music.R
|
||||||
import code.name.monkey.retromusic.databinding.DialogPlaylistBinding
|
import io.github.muntashirakon.music.databinding.DialogPlaylistBinding
|
||||||
import code.name.monkey.retromusic.extensions.colorButtons
|
import io.github.muntashirakon.music.extensions.colorButtons
|
||||||
import code.name.monkey.retromusic.extensions.extra
|
import io.github.muntashirakon.music.extensions.extra
|
||||||
import code.name.monkey.retromusic.extensions.materialDialog
|
import io.github.muntashirakon.music.extensions.materialDialog
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
import io.github.muntashirakon.music.fragments.LibraryViewModel
|
||||||
import code.name.monkey.retromusic.model.Song
|
import io.github.muntashirakon.music.model.Song
|
||||||
import com.google.android.material.textfield.TextInputEditText
|
import com.google.android.material.textfield.TextInputEditText
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
|
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue