diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/billing/BillingManager.kt b/app/src/fdroid/java/code/name/monkey/retromusic/billing/BillingManager.kt
deleted file mode 100644
index 51c350adcf..0000000000
--- a/app/src/fdroid/java/code/name/monkey/retromusic/billing/BillingManager.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package code.name.monkey.retromusic.billing
-
-import android.content.Context
-
-@Suppress("UNUSED_PARAMETER")
-class BillingManager(context: Context) {
-
- fun release() {}
-
- val isProVersion: Boolean
- get() = true
-}
\ No newline at end of file
diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/cast/RetroWebServer.kt b/app/src/fdroid/java/code/name/monkey/retromusic/cast/RetroWebServer.kt
deleted file mode 100644
index 03103dfb7c..0000000000
--- a/app/src/fdroid/java/code/name/monkey/retromusic/cast/RetroWebServer.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package code.name.monkey.retromusic.cast
-
-import android.content.Context
-
-@Suppress("UNUSED_PARAMETER")
-class RetroWebServer(context: Context)
\ No newline at end of file
diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt b/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt
deleted file mode 100644
index 1dc3ae58f7..0000000000
--- a/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-@file:Suppress("UNUSED_PARAMETER", "unused")
-
-package code.name.monkey.retromusic.extensions
-
-import android.content.Context
-import android.view.Menu
-import androidx.fragment.app.FragmentActivity
-
-fun Context.setUpMediaRouteButton(menu: Menu) {}
-
-fun FragmentActivity.installLanguageAndRecreate(code: String) {
- recreate()
-}
-
-fun Context.goToProVersion() {}
-
-fun Context.installSplitCompat() {}
\ No newline at end of file
diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt b/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt
deleted file mode 100644
index 3a0eaca286..0000000000
--- a/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package code.name.monkey.retromusic.service
-
-import code.name.monkey.retromusic.model.Song
-import code.name.monkey.retromusic.service.playback.Playback
-
-// Empty CastPlayer implementation
-class CastPlayer : Playback {
- override val isInitialized: Boolean
- get() = true
- override val isPlaying: Boolean
- get() = true
- override val audioSessionId: Int
- get() = 0
-
- override fun setDataSource(
- song: Song,
- force: Boolean,
- completion: (success: Boolean) -> Unit,
- ) {
- }
-
- override fun setNextDataSource(path: String?) {}
-
- override var callbacks: Playback.PlaybackCallbacks? = null
-
- override fun start() = true
-
- override fun stop() {}
-
- override fun release() {}
-
- override fun pause(): Boolean = true
-
- override fun duration() = 0
-
- override fun position() = 0
-
- override fun seek(whereto: Int) = whereto
-
- override fun setVolume(vol: Float) = true
-
- override fun setAudioSessionId(sessionId: Int) = true
-
- override fun setCrossFadeDuration(duration: Int) {}
-
- override fun setPlaybackSpeedPitch(speed: Float, pitch: Float) {}
-}
\ No newline at end of file
diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/util/AppRater.kt b/app/src/fdroid/java/code/name/monkey/retromusic/util/AppRater.kt
deleted file mode 100644
index 2691d70b28..0000000000
--- a/app/src/fdroid/java/code/name/monkey/retromusic/util/AppRater.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package code.name.monkey.retromusic.util
-
-import android.content.Context
-
-@Suppress("UNUSED_PARAMETER")
-object AppRater {
- fun appLaunched(context: Context) {}
-}
\ No newline at end of file
diff --git a/app/src/fdroid/res/values/donottranslate.xml b/app/src/fdroid/res/values/donottranslate.xml
deleted file mode 100644
index 3dd38a7b55..0000000000
--- a/app/src/fdroid/res/values/donottranslate.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- never
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_pro_version.xml b/app/src/main/res/layout-land/activity_pro_version.xml
deleted file mode 100644
index 6f434096e8..0000000000
--- a/app/src/main/res/layout-land/activity_pro_version.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/normal/AndroidManifest.xml b/app/src/normal/AndroidManifest.xml
deleted file mode 100644
index 750dacabc1..0000000000
--- a/app/src/normal/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/normal/java/code/name/monkey/retromusic/billing/BillingManager.kt b/app/src/normal/java/code/name/monkey/retromusic/billing/BillingManager.kt
deleted file mode 100644
index 445044e734..0000000000
--- a/app/src/normal/java/code/name/monkey/retromusic/billing/BillingManager.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package code.name.monkey.retromusic.billing
-
-import android.content.Context
-import code.name.monkey.retromusic.BuildConfig
-import code.name.monkey.retromusic.Constants
-import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.extensions.showToast
-import com.anjlab.android.iab.v3.BillingProcessor
-import com.anjlab.android.iab.v3.PurchaseInfo
-
-class BillingManager(context: Context) {
- private val billingProcessor: BillingProcessor
-
- init {
- // automatically restores purchases
- billingProcessor = BillingProcessor(
- context, BuildConfig.GOOGLE_PLAY_LICENSING_KEY,
- object : BillingProcessor.IBillingHandler {
- override fun onProductPurchased(productId: String, details: PurchaseInfo?) {}
-
- override fun onPurchaseHistoryRestored() {
- context.showToast(R.string.restored_previous_purchase_please_restart)
- }
-
- override fun onBillingError(errorCode: Int, error: Throwable?) {}
-
- override fun onBillingInitialized() {}
- })
- }
-
- fun release() {
- billingProcessor.release()
- }
-
- val isProVersion: Boolean
- get() = billingProcessor.isPurchased(Constants.PRO_VERSION_PRODUCT_ID)
-}
\ No newline at end of file
diff --git a/app/src/normal/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt b/app/src/normal/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt
deleted file mode 100644
index 6ebc71010f..0000000000
--- a/app/src/normal/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-@file:Suppress("unused")
-
-package code.name.monkey.retromusic.cast
-
-import android.content.Context
-import com.google.android.gms.cast.CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
-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
-
-
-class CastOptionsProvider : OptionsProvider {
- override fun getCastOptions(context: Context): CastOptions {
- val mediaOptions = CastMediaOptions.Builder().setNotificationOptions(null).build()
- return CastOptions.Builder()
- .setReceiverApplicationId(DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)
- .setCastMediaOptions(mediaOptions)
- .build()
- }
-
- override fun getAdditionalSessionProviders(context: Context): MutableList? {
- return null
- }
-}
\ No newline at end of file
diff --git a/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt b/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt
deleted file mode 100644
index 59d05fb745..0000000000
--- a/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package code.name.monkey.retromusic.extensions
-
-import android.content.Context
-import android.content.Intent
-import android.view.Menu
-import androidx.fragment.app.FragmentActivity
-import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.activities.PurchaseActivity
-import com.google.android.gms.cast.framework.CastButtonFactory
-import com.google.android.play.core.splitcompat.SplitCompat
-import com.google.android.play.core.splitinstall.SplitInstallManagerFactory
-import com.google.android.play.core.splitinstall.SplitInstallRequest
-import com.google.android.play.core.splitinstall.SplitInstallSessionState
-import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener
-import java.util.*
-
-fun Context.setUpMediaRouteButton(menu: Menu) {
- CastButtonFactory.setUpMediaRouteButton(this, menu, R.id.action_cast)
-}
-
-fun FragmentActivity.installLanguageAndRecreate(code: String) {
- var mySessionId = 0
-
- val manager = SplitInstallManagerFactory.create(this)
- val listener = object: SplitInstallStateUpdatedListener{
- override fun onStateUpdate(state: SplitInstallSessionState) {
- if (state.sessionId() == mySessionId) {
- recreate()
- manager.unregisterListener(this)
- }
- }
- }
- manager.registerListener(listener)
-
- if (code != "auto") {
- // Try to download language resources
- val request =
- SplitInstallRequest.newBuilder().addLanguage(Locale.forLanguageTag(code))
- .build()
- manager.startInstall(request)
- // Recreate the activity on download complete
- .addOnSuccessListener {
- mySessionId = it
- }
- .addOnFailureListener {
- showToast("Language download failed.")
- }
- } else {
- recreate()
- }
-}
-
-fun Context.goToProVersion() {
- startActivity(Intent(this, PurchaseActivity::class.java))
-}
-
-fun Context.installSplitCompat() {
- SplitCompat.install(this)
-}
\ No newline at end of file
diff --git a/app/src/normal/java/code/name/monkey/retromusic/service/CastPlayer.kt b/app/src/normal/java/code/name/monkey/retromusic/service/CastPlayer.kt
deleted file mode 100644
index 514612e33e..0000000000
--- a/app/src/normal/java/code/name/monkey/retromusic/service/CastPlayer.kt
+++ /dev/null
@@ -1,110 +0,0 @@
-package code.name.monkey.retromusic.service
-
-import code.name.monkey.retromusic.cast.CastHelper.toMediaInfo
-import code.name.monkey.retromusic.model.Song
-import code.name.monkey.retromusic.service.playback.Playback
-import code.name.monkey.retromusic.util.PreferenceUtil.playbackSpeed
-import com.google.android.gms.cast.MediaLoadOptions
-import com.google.android.gms.cast.MediaSeekOptions
-import com.google.android.gms.cast.MediaStatus
-import com.google.android.gms.cast.framework.CastSession
-import com.google.android.gms.cast.framework.media.RemoteMediaClient
-
-class CastPlayer(castSession: CastSession) : Playback, RemoteMediaClient.Callback() {
-
- override val isInitialized: Boolean = true
-
- private val remoteMediaClient: RemoteMediaClient? = castSession.remoteMediaClient
-
- init {
- remoteMediaClient?.registerCallback(this)
- remoteMediaClient?.setPlaybackRate(playbackSpeed.toDouble().coerceIn(0.5, 2.0))
- }
-
- private var isActuallyPlaying = false
-
- override val isPlaying: Boolean
- get() {
- return remoteMediaClient?.isPlaying == true || isActuallyPlaying
- }
-
- override val audioSessionId: Int = 0
-
- override var callbacks: Playback.PlaybackCallbacks? = null
-
- override fun setDataSource(
- song: Song,
- force: Boolean,
- completion: (success: Boolean) -> Unit,
- ) {
- try {
- val mediaLoadOptions =
- MediaLoadOptions.Builder().setPlayPosition(0).setAutoplay(true).build()
- remoteMediaClient?.load(song.toMediaInfo()!!, mediaLoadOptions)
- completion(true)
- } catch (e: Exception) {
- e.printStackTrace()
- completion(false)
- }
- }
-
- override fun setNextDataSource(path: String?) {}
-
- override fun start(): Boolean {
- isActuallyPlaying = true
- remoteMediaClient?.play()
- return true
- }
-
- override fun stop() {
- isActuallyPlaying = false
- remoteMediaClient?.stop()
- }
-
- override fun release() {
- stop()
- }
-
- override fun pause(): Boolean {
- isActuallyPlaying = false
- remoteMediaClient?.pause()
- return true
- }
-
- override fun duration(): Int {
- return remoteMediaClient?.streamDuration?.toInt() ?: 0
- }
-
- override fun position(): Int {
- return remoteMediaClient?.approximateStreamPosition?.toInt() ?: 0
- }
-
- override fun seek(whereto: Int): Int {
- remoteMediaClient?.seek(MediaSeekOptions.Builder().setPosition(whereto.toLong()).build())
- return whereto
- }
-
- override fun setVolume(vol: Float) = true
-
- override fun setAudioSessionId(sessionId: Int) = true
-
- override fun setCrossFadeDuration(duration: Int) {}
-
- override fun setPlaybackSpeedPitch(speed: Float, pitch: Float) {
- remoteMediaClient?.setPlaybackRate(speed.toDouble().coerceIn(0.5, 2.0))
- }
-
- override fun onStatusUpdated() {
- when (remoteMediaClient?.playerState) {
- MediaStatus.PLAYER_STATE_IDLE -> {
- val idleReason = remoteMediaClient.idleReason
- if (idleReason == MediaStatus.IDLE_REASON_FINISHED) {
- callbacks?.onTrackEnded()
- }
- }
- MediaStatus.PLAYER_STATE_PLAYING, MediaStatus.PLAYER_STATE_PAUSED -> {
- callbacks?.onPlayStateChanged()
- }
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/normal/res/values/donottranslate.xml b/app/src/normal/res/values/donottranslate.xml
deleted file mode 100644
index fbaac79921..0000000000
--- a/app/src/normal/res/values/donottranslate.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- always
-
\ No newline at end of file