mirror of
https://github.com/Michatec/Radio.git
synced 2026-01-30 23:17:21 +00:00
- Fixing some bug fixes.
This commit is contained in:
@@ -59,6 +59,7 @@ dependencies {
|
|||||||
implementation 'com.google.code.gson:gson:2.13.2'
|
implementation 'com.google.code.gson:gson:2.13.2'
|
||||||
|
|
||||||
// AndroidX Stuff //
|
// AndroidX Stuff //
|
||||||
|
implementation 'androidx.core:core-ktx:1.17.0'
|
||||||
implementation 'androidx.activity:activity-ktx:1.12.2'
|
implementation 'androidx.activity:activity-ktx:1.12.2'
|
||||||
implementation 'androidx.palette:palette-ktx:1.0.0'
|
implementation 'androidx.palette:palette-ktx:1.0.0'
|
||||||
implementation 'androidx.preference:preference-ktx:1.2.1'
|
implementation 'androidx.preference:preference-ktx:1.2.1'
|
||||||
@@ -73,4 +74,5 @@ dependencies {
|
|||||||
|
|
||||||
// Volley HTTP request //
|
// Volley HTTP request //
|
||||||
implementation 'com.android.volley:volley:1.2.1'
|
implementation 'com.android.volley:volley:1.2.1'
|
||||||
|
implementation 'androidx.compose.material3:material3:1.4.0'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,7 +183,6 @@ class PlayerFragment : Fragment(),
|
|||||||
|
|
||||||
// set the same background color of the player sheet for the navigation bar
|
// set the same background color of the player sheet for the navigation bar
|
||||||
requireActivity().window.navigationBarColor = ContextCompat.getColor(requireActivity(), R.color.player_sheet_background)
|
requireActivity().window.navigationBarColor = ContextCompat.getColor(requireActivity(), R.color.player_sheet_background)
|
||||||
|
|
||||||
// associate the ItemTouchHelper with the RecyclerView
|
// associate the ItemTouchHelper with the RecyclerView
|
||||||
itemTouchHelper = ItemTouchHelper(ItemTouchHelperCallback())
|
itemTouchHelper = ItemTouchHelper(ItemTouchHelperCallback())
|
||||||
itemTouchHelper?.attachToRecyclerView(layout.recyclerView)
|
itemTouchHelper?.attachToRecyclerView(layout.recyclerView)
|
||||||
@@ -536,7 +535,7 @@ class PlayerFragment : Fragment(),
|
|||||||
private fun requestSleepTimerUpdate() {
|
private fun requestSleepTimerUpdate() {
|
||||||
val resultFuture: ListenableFuture<SessionResult>? =
|
val resultFuture: ListenableFuture<SessionResult>? =
|
||||||
controller?.requestSleepTimerRemaining()
|
controller?.requestSleepTimerRemaining()
|
||||||
resultFuture?.addListener(Runnable {
|
resultFuture?.addListener({
|
||||||
val timeRemaining: Long = resultFuture.get().extras.getLong(Keys.EXTRA_SLEEP_TIMER_REMAINING)
|
val timeRemaining: Long = resultFuture.get().extras.getLong(Keys.EXTRA_SLEEP_TIMER_REMAINING)
|
||||||
layout.updateSleepTimer(activity as Context, timeRemaining)
|
layout.updateSleepTimer(activity as Context, timeRemaining)
|
||||||
}, MoreExecutors.directExecutor())
|
}, MoreExecutors.directExecutor())
|
||||||
@@ -546,7 +545,7 @@ class PlayerFragment : Fragment(),
|
|||||||
/* Requests an update of the metadata history from the player service */
|
/* Requests an update of the metadata history from the player service */
|
||||||
private fun requestMetadataUpdate() {
|
private fun requestMetadataUpdate() {
|
||||||
val resultFuture: ListenableFuture<SessionResult>? = controller?.requestMetadataHistory()
|
val resultFuture: ListenableFuture<SessionResult>? = controller?.requestMetadataHistory()
|
||||||
resultFuture?.addListener(Runnable {
|
resultFuture?.addListener({
|
||||||
val metadata: ArrayList<String>? = resultFuture.get().extras.getStringArrayList(Keys.EXTRA_METADATA_HISTORY)
|
val metadata: ArrayList<String>? = resultFuture.get().extras.getStringArrayList(Keys.EXTRA_METADATA_HISTORY)
|
||||||
layout.updateMetadata(metadata?.toMutableList())
|
layout.updateMetadata(metadata?.toMutableList())
|
||||||
}, MoreExecutors.directExecutor())
|
}, MoreExecutors.directExecutor())
|
||||||
@@ -808,4 +807,3 @@ class PlayerFragment : Fragment(),
|
|||||||
queue.add(request)
|
queue.add(request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ import android.view.View
|
|||||||
import androidx.activity.result.ActivityResult
|
import androidx.activity.result.ActivityResult
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
|
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
|||||||
@@ -651,7 +651,7 @@ class CollectionAdapter(
|
|||||||
/*
|
/*
|
||||||
* Inner class: ViewHolder for the Add New Station action
|
* Inner class: ViewHolder for the Add New Station action
|
||||||
*/
|
*/
|
||||||
private inner class AddNewViewHolder(listItemAddNewLayout: View) :
|
private class AddNewViewHolder(listItemAddNewLayout: View) :
|
||||||
RecyclerView.ViewHolder(listItemAddNewLayout) {
|
RecyclerView.ViewHolder(listItemAddNewLayout) {
|
||||||
val addNewStationView: ExtendedFloatingActionButton =
|
val addNewStationView: ExtendedFloatingActionButton =
|
||||||
listItemAddNewLayout.findViewById(R.id.card_add_new_station)
|
listItemAddNewLayout.findViewById(R.id.card_add_new_station)
|
||||||
@@ -666,7 +666,7 @@ class CollectionAdapter(
|
|||||||
/*
|
/*
|
||||||
* Inner class: ViewHolder for a station
|
* Inner class: ViewHolder for a station
|
||||||
*/
|
*/
|
||||||
private inner class StationViewHolder(stationCardLayout: View) :
|
private class StationViewHolder(stationCardLayout: View) :
|
||||||
RecyclerView.ViewHolder(stationCardLayout) {
|
RecyclerView.ViewHolder(stationCardLayout) {
|
||||||
val stationCardView: CardView = stationCardLayout.findViewById(R.id.station_card)
|
val stationCardView: CardView = stationCardLayout.findViewById(R.id.station_card)
|
||||||
val stationImageView: ImageView = stationCardLayout.findViewById(R.id.station_icon)
|
val stationImageView: ImageView = stationCardLayout.findViewById(R.id.station_icon)
|
||||||
|
|||||||
@@ -288,32 +288,6 @@ object CollectionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Gets MediaIem for next station within collection */
|
|
||||||
fun getNextMediaItem(context: Context, collection: Collection, stationUuid: String): MediaItem {
|
|
||||||
val currentStationPosition: Int = getStationPosition(collection, stationUuid)
|
|
||||||
return if (collection.stations.isEmpty() || currentStationPosition == -1) {
|
|
||||||
buildMediaItem(context, Station())
|
|
||||||
} else if (currentStationPosition < collection.stations.size -1) {
|
|
||||||
buildMediaItem(context, collection.stations[currentStationPosition + 1])
|
|
||||||
} else {
|
|
||||||
buildMediaItem(context, collection.stations.first())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Gets MediaIem for previous station within collection */
|
|
||||||
fun getPreviousMediaItem(context: Context, collection: Collection, stationUuid: String): MediaItem {
|
|
||||||
val currentStationPosition: Int = getStationPosition(collection, stationUuid)
|
|
||||||
return if (collection.stations.isEmpty() || currentStationPosition == -1) {
|
|
||||||
buildMediaItem(context, Station())
|
|
||||||
} else if (currentStationPosition > 0) {
|
|
||||||
buildMediaItem(context, collection.stations[currentStationPosition - 1])
|
|
||||||
} else {
|
|
||||||
buildMediaItem(context, collection.stations.last())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Get the position from collection for given UUID */
|
/* Get the position from collection for given UUID */
|
||||||
fun getStationPosition(collection: Collection, stationUuid: String): Int {
|
fun getStationPosition(collection: Collection, stationUuid: String): Int {
|
||||||
collection.stations.forEachIndexed { stationId, station ->
|
collection.stations.forEachIndexed { stationId, station ->
|
||||||
@@ -561,7 +535,7 @@ object CollectionHelper {
|
|||||||
fun exportCollectionM3u(context: Context, collection: Collection) {
|
fun exportCollectionM3u(context: Context, collection: Collection) {
|
||||||
Log.v(TAG, "Exporting collection of stations as M3U")
|
Log.v(TAG, "Exporting collection of stations as M3U")
|
||||||
// export collection as M3U - launch = fire & forget (no return value from save collection)
|
// export collection as M3U - launch = fire & forget (no return value from save collection)
|
||||||
if (collection.stations.size > 0) {
|
if (collection.stations.isNotEmpty()) {
|
||||||
CoroutineScope(IO).launch {
|
CoroutineScope(IO).launch {
|
||||||
FileHelper.backupCollectionAsM3uSuspended(
|
FileHelper.backupCollectionAsM3uSuspended(
|
||||||
context,
|
context,
|
||||||
@@ -603,7 +577,7 @@ object CollectionHelper {
|
|||||||
fun exportCollectionPls(context: Context, collection: Collection) {
|
fun exportCollectionPls(context: Context, collection: Collection) {
|
||||||
Log.v(TAG, "Exporting collection of stations as PLS")
|
Log.v(TAG, "Exporting collection of stations as PLS")
|
||||||
// export collection as PLS - launch = fire & forget (no return value from save collection)
|
// export collection as PLS - launch = fire & forget (no return value from save collection)
|
||||||
if (collection.stations.size > 0) {
|
if (collection.stations.isNotEmpty()) {
|
||||||
CoroutineScope(IO).launch {
|
CoroutineScope(IO).launch {
|
||||||
FileHelper.backupCollectionAsPlsSuspended(
|
FileHelper.backupCollectionAsPlsSuspended(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ package com.michatec.radio.helpers
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.os.Build
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.content.pm.ShortcutInfoCompat
|
import androidx.core.content.pm.ShortcutInfoCompat
|
||||||
import androidx.core.content.pm.ShortcutManagerCompat
|
import androidx.core.content.pm.ShortcutManagerCompat
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ data class LayoutHolder(var rootView: View) {
|
|||||||
/* Shows player */
|
/* Shows player */
|
||||||
fun showPlayer(context: Context): Boolean {
|
fun showPlayer(context: Context): Boolean {
|
||||||
UiHelper.setViewMargins(context, recyclerView, 0, 0, 0, Keys.BOTTOM_SHEET_PEEK_HEIGHT)
|
UiHelper.setViewMargins(context, recyclerView, 0, 0, 0, Keys.BOTTOM_SHEET_PEEK_HEIGHT)
|
||||||
if (bottomSheetBehavior.state == BottomSheetBehavior.STATE_HIDDEN && onboardingLayout.visibility == View.GONE) {
|
if (bottomSheetBehavior.state == BottomSheetBehavior.STATE_HIDDEN && onboardingLayout.isGone) {
|
||||||
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
|
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@@ -440,7 +440,7 @@ data class LayoutHolder(var rootView: View) {
|
|||||||
/*
|
/*
|
||||||
* Inner class: Custom LinearLayoutManager
|
* Inner class: Custom LinearLayoutManager
|
||||||
*/
|
*/
|
||||||
private inner class CustomLayoutManager(context: Context) :
|
private class CustomLayoutManager(context: Context) :
|
||||||
LinearLayoutManager(context, VERTICAL, false) {
|
LinearLayoutManager(context, VERTICAL, false) {
|
||||||
override fun supportsPredictiveItemAnimations(): Boolean {
|
override fun supportsPredictiveItemAnimations(): Boolean {
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ org.gradle.jvmargs=-Xmx1536m
|
|||||||
|
|
||||||
# enables androidx repo
|
# enables androidx repo
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
|
org.gradle.configuration-cache=true
|
||||||
|
|||||||
Reference in New Issue
Block a user