Skip to content

Commit ddc0f94

Browse files
committed
6.5.10 commit
1 parent 8f1fd25 commit ddc0f94

File tree

10 files changed

+46
-28
lines changed

10 files changed

+46
-28
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ android {
3131
testApplicationId "ac.mdiq.podcini.tests"
3232
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
3333

34-
versionCode 3020243
35-
versionName "6.5.9"
34+
versionCode 3020244
35+
versionName "6.5.10"
3636

3737
applicationId "ac.mdiq.podcini.R"
3838
def commit = ""

app/src/main/kotlin/ac/mdiq/podcini/playback/service/PlaybackService.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ import ac.mdiq.podcini.storage.model.FeedPreferences.AutoDeleteAction
5454
import ac.mdiq.podcini.storage.utils.ChapterUtils
5555
import ac.mdiq.podcini.storage.utils.EpisodeUtil
5656
import ac.mdiq.podcini.storage.utils.EpisodeUtil.hasAlmostEnded
57-
import ac.mdiq.podcini.ui.activity.VideoplayerActivity.Companion.videoMode
5857
import ac.mdiq.podcini.ui.activity.starter.MainActivityStarter
5958
import ac.mdiq.podcini.ui.activity.starter.VideoPlayerActivityStarter
6059
import ac.mdiq.podcini.ui.utils.NotificationUtils
@@ -1033,10 +1032,6 @@ class PlaybackService : MediaLibraryService() {
10331032
// if (curMedia is EpisodeMedia && episode != null) addToQueue(true, episode)
10341033
}
10351034

1036-
fun clearCurTempSpeed() {
1037-
curState = upsertBlk(curState) { it.curTempSpeed = FeedPreferences.SPEED_USE_GLOBAL }
1038-
}
1039-
10401035
private var eventSink: Job? = null
10411036
private fun cancelFlowEvents() {
10421037
eventSink?.cancel()
@@ -2549,6 +2544,10 @@ class PlaybackService : MediaLibraryService() {
25492544
return playbackService?.taskManager?.isSleepTimerActive ?: false
25502545
}
25512546

2547+
fun clearCurTempSpeed() {
2548+
curState = upsertBlk(curState) { it.curTempSpeed = FeedPreferences.SPEED_USE_GLOBAL }
2549+
}
2550+
25522551
fun playPause() {
25532552
when (MediaPlayerBase.status) {
25542553
PlayerStatus.FALLBACK -> toggleFallbackSpeed(1.0f)

app/src/main/kotlin/ac/mdiq/podcini/ui/actions/actionbutton/EpisodeActionButton.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,8 @@ abstract class EpisodeActionButton internal constructor(@JvmField var item: Epis
3434
icon.setImageResource(getDrawable())
3535
}
3636

37-
protected fun playVideoIfNeeded(context: Context, media: Playable) {
38-
if (item.feed?.preferences?.videoModePolicy != VideoMode.AUDIO_ONLY
39-
&& videoPlayMode != VideoMode.AUDIO_ONLY.code && videoMode != VideoMode.AUDIO_ONLY
40-
&& media.getMediaType() == MediaType.VIDEO)
41-
context.startActivity(getPlayerActivityIntent(context, MediaType.VIDEO))
42-
}
43-
4437
@UnstableApi companion object {
38+
4539
fun forItem(episode: Episode): EpisodeActionButton {
4640
val media = episode.media ?: return TTSActionButton(episode)
4741
val isDownloadingMedia = when (media.downloadUrl) {
@@ -60,5 +54,13 @@ abstract class EpisodeActionButton internal constructor(@JvmField var item: Epis
6054
else -> DownloadActionButton(episode)
6155
}
6256
}
57+
58+
fun playVideoIfNeeded(context: Context, media: Playable) {
59+
val item = (media as? EpisodeMedia)?.episode
60+
if (item?.feed?.preferences?.videoModePolicy != VideoMode.AUDIO_ONLY
61+
&& videoPlayMode != VideoMode.AUDIO_ONLY.code && videoMode != VideoMode.AUDIO_ONLY
62+
&& media.getMediaType() == MediaType.VIDEO)
63+
context.startActivity(getPlayerActivityIntent(context, MediaType.VIDEO))
64+
}
6365
}
6466
}

app/src/main/kotlin/ac/mdiq/podcini/ui/actions/actionbutton/PlayActionButton.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ac.mdiq.podcini.ui.actions.actionbutton
33
import ac.mdiq.podcini.R
44
import ac.mdiq.podcini.playback.PlaybackServiceStarter
55
import ac.mdiq.podcini.playback.base.InTheatre
6+
import ac.mdiq.podcini.playback.service.PlaybackService.Companion.clearCurTempSpeed
67
import ac.mdiq.podcini.playback.service.PlaybackService.Companion.playbackService
78
import ac.mdiq.podcini.storage.database.RealmDB.realm
89
import ac.mdiq.podcini.storage.database.RealmDB.upsertBlk
@@ -42,6 +43,7 @@ class PlayActionButton(item: Episode) : EpisodeActionButton(item) {
4243
playbackService?.mPlayer?.resume()
4344
playbackService?.taskManager?.restartSleepTimer()
4445
} else {
46+
clearCurTempSpeed()
4547
PlaybackServiceStarter(context, media).callEvenIfRunning(true).start()
4648
EventFlow.postEvent(FlowEvent.PlayEvent(item))
4749
}

app/src/main/kotlin/ac/mdiq/podcini/ui/actions/actionbutton/PlayLocalActionButton.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ac.mdiq.podcini.ui.actions.actionbutton
33
import ac.mdiq.podcini.R
44
import ac.mdiq.podcini.playback.PlaybackServiceStarter
55
import ac.mdiq.podcini.playback.base.InTheatre
6+
import ac.mdiq.podcini.playback.service.PlaybackService.Companion.clearCurTempSpeed
67
import ac.mdiq.podcini.playback.service.PlaybackService.Companion.getPlayerActivityIntent
78
import ac.mdiq.podcini.playback.service.PlaybackService.Companion.playbackService
89
import ac.mdiq.podcini.storage.model.Episode
@@ -33,6 +34,7 @@ class PlayLocalActionButton(item: Episode) : EpisodeActionButton(item) {
3334
playbackService?.mPlayer?.resume()
3435
playbackService?.taskManager?.restartSleepTimer()
3536
} else {
37+
clearCurTempSpeed()
3638
PlaybackServiceStarter(context, media).callEvenIfRunning(true).start()
3739
EventFlow.postEvent(FlowEvent.PlayEvent(item))
3840
}

app/src/main/kotlin/ac/mdiq/podcini/ui/actions/actionbutton/StreamActionButton.kt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import ac.mdiq.podcini.R
44
import ac.mdiq.podcini.net.utils.NetworkUtils.isAllowMobileStreaming
55
import ac.mdiq.podcini.net.utils.NetworkUtils.isStreamingAllowed
66
import ac.mdiq.podcini.playback.PlaybackServiceStarter
7+
import ac.mdiq.podcini.playback.base.InTheatre
8+
import ac.mdiq.podcini.playback.service.PlaybackService.Companion.clearCurTempSpeed
79
import ac.mdiq.podcini.preferences.UsageStatistics
810
import ac.mdiq.podcini.preferences.UsageStatistics.logAction
911
import ac.mdiq.podcini.storage.model.Episode
12+
import ac.mdiq.podcini.storage.model.EpisodeMedia
1013
import ac.mdiq.podcini.storage.model.Playable
1114
import ac.mdiq.podcini.storage.model.RemoteMedia
1215
import ac.mdiq.podcini.util.EventFlow
@@ -34,10 +37,7 @@ class StreamActionButton(item: Episode) : EpisodeActionButton(item) {
3437
StreamingConfirmationDialog(context, media).show()
3538
return
3639
}
37-
PlaybackServiceStarter(context, media).shouldStreamThisTime(true).callEvenIfRunning(true).start()
38-
EventFlow.postEvent(FlowEvent.PlayEvent(item))
39-
40-
playVideoIfNeeded(context, media)
40+
stream(context, media)
4141
}
4242

4343
class StreamingConfirmationDialog(private val context: Context, private val playable: Playable) {
@@ -46,17 +46,23 @@ class StreamActionButton(item: Episode) : EpisodeActionButton(item) {
4646
MaterialAlertDialogBuilder(context)
4747
.setTitle(R.string.stream_label)
4848
.setMessage(R.string.confirm_mobile_streaming_notification_message)
49-
.setPositiveButton(R.string.confirm_mobile_streaming_button_once) { _: DialogInterface?, _: Int -> stream() }
49+
.setPositiveButton(R.string.confirm_mobile_streaming_button_once) { _: DialogInterface?, _: Int -> stream(context, playable) }
5050
.setNegativeButton(R.string.confirm_mobile_streaming_button_always) { _: DialogInterface?, _: Int ->
5151
isAllowMobileStreaming = true
52-
stream()
52+
stream(context, playable)
5353
}
5454
.setNeutralButton(R.string.cancel_label, null)
5555
.show()
5656
}
57-
@UnstableApi
58-
private fun stream() {
59-
PlaybackServiceStarter(context, playable).callEvenIfRunning(true).shouldStreamThisTime(true).start()
57+
}
58+
59+
companion object {
60+
61+
fun stream(context: Context, media: Playable) {
62+
if (media !is EpisodeMedia || !InTheatre.isCurMedia(media)) clearCurTempSpeed()
63+
PlaybackServiceStarter(context, media).shouldStreamThisTime(true).callEvenIfRunning(true).start()
64+
if (media is EpisodeMedia && media.episode != null) EventFlow.postEvent(FlowEvent.PlayEvent(media.episode!!))
65+
playVideoIfNeeded(context, media)
6066
}
6167
}
6268
}

app/src/main/kotlin/ac/mdiq/podcini/ui/dialog/VariableSpeedDialog.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,6 @@ open class VariableSpeedDialog : BottomSheetDialogFragment() {
241241

242242
private fun setPlaybackSpeed(speed: Float, codeArray: BooleanArray? = null) {
243243
if (playbackService != null) {
244-
// playbackService!!.setSpeed(speed, codeArray)
245244
playbackService!!.isSpeedForward = false
246245
playbackService!!.isFallbackSpeed = false
247246

app/src/main/kotlin/ac/mdiq/podcini/ui/fragment/QueuesFragment.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ import kotlin.math.max
105105
private lateinit var spinnerTexts: MutableList<String>
106106
private lateinit var queueSpinner: Spinner
107107
private lateinit var spinnerAdaptor: ArrayAdapter<String>
108+
private lateinit var queues: List<PlayQueue>
108109

109110
private var displayUpArrow = false
110111
private var queueItems: MutableList<Episode> = mutableListOf()
@@ -136,7 +137,7 @@ import kotlin.math.max
136137
displayUpArrow = parentFragmentManager.backStackEntryCount != 0
137138
if (savedInstanceState != null) displayUpArrow = savedInstanceState.getBoolean(KEY_UP_ARROW)
138139

139-
val queues = realm.query(PlayQueue::class).find()
140+
queues = realm.query(PlayQueue::class).find()
140141
queueNames = queues.map { it.name }.toTypedArray()
141142
spinnerTexts = queues.map { "${it.name} : ${it.episodeIds.size}" }.toMutableList()
142143
spinnerLayout = inflater.inflate(R.layout.queue_title_spinner, toolbar, false)
@@ -588,11 +589,9 @@ import kotlin.math.max
588589
newQueue.id = queueNames.size.toLong()
589590
newQueue.name = newName
590591
upsertBlk(newQueue) {}
591-
val queues = realm.query(PlayQueue::class).find()
592+
queues = realm.query(PlayQueue::class).find()
592593
queueNames = queues.map { it.name }.toTypedArray()
593594
spinnerTexts.addAll(queues.map { "${it.name} : ${it.episodeIds.size}" })
594-
// spinnerAdaptor = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, spinnerTexts)
595-
// spinnerAdaptor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
596595
spinnerAdaptor.notifyDataSetChanged()
597596
queueSpinner.adapter = spinnerAdaptor
598597
queueSpinner.setSelection(spinnerAdaptor.getPosition(curQueue.name))

changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 6.5.10
2+
3+
* fixed crash when switching to a newly created queue in Queues view
4+
* reset temp speed when manually playing a new episode to ensure preset speed is used
5+
16
# 6.5.9
27

38
* partially fixed an issue seen on Samsung Android 14 device where after playing the user-started episode, subsequent episode in the queue is not played in foreground service and there is not notification panel and can get stopped by the system.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Version 6.5.10 brings several changes:
2+
3+
* fixed crash when switching to a newly created queue in Queues view
4+
* reset temp speed when manually playing a new episode to ensure preset speed is used

0 commit comments

Comments
 (0)