From 4a0a0005d14015eb978f5a4dc5b71c7d806bafe4 Mon Sep 17 00:00:00 2001 From: casey langen Date: Sat, 9 Dec 2017 15:20:44 -0800 Subject: [PATCH] Fixed some Activity animations and some bugs in header fetching. --- .../service/gapless/GaplessHeaderService.kt | 18 ++++++++++++------ .../remote/service/playback/PlayerWrapper.kt | 6 ++++-- .../remote/ui/home/activity/MainActivity.kt | 1 + .../ui/playqueue/activity/PlayQueueActivity.kt | 16 ++++++++++++++++ .../ui/shared/fragment/TransportFragment.kt | 11 +++++++---- .../app/src/main/res/anim/slide_down.xml | 7 +++++++ .../app/src/main/res/anim/slide_up.xml | 7 +++++++ .../app/src/main/res/anim/stay_put.xml | 3 +++ 8 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 src/musikdroid/app/src/main/res/anim/slide_down.xml create mode 100644 src/musikdroid/app/src/main/res/anim/slide_up.xml create mode 100644 src/musikdroid/app/src/main/res/anim/stay_put.xml diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/GaplessHeaderService.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/GaplessHeaderService.kt index 70e4ca7f2..47a1da3d8 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/GaplessHeaderService.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/GaplessHeaderService.kt @@ -17,6 +17,7 @@ import okhttp3.Request import okhttp3.Response import java.io.File import java.io.RandomAccessFile +import java.net.SocketTimeoutException import javax.inject.Inject /** @@ -96,13 +97,18 @@ class GaplessHeaderService { } if (res?.code() == 206) { - val bytes = res.body()?.bytes() - if (bytes?.isNotEmpty() == true) { - RandomAccessFile(fn, "rw").use { - it.seek(0) - it.write(bytes, 0, Math.min(bytes.size, HEADER_SIZE_BYTES)) + try { + val bytes = res.body()?.bytes() + if (bytes?.isNotEmpty() == true) { + RandomAccessFile(fn, "rw").use { + it.seek(0) + it.write(bytes, 0, Math.min(bytes.size, HEADER_SIZE_BYTES)) + } + newState = GaplessTrack.UPDATED } - newState = GaplessTrack.UPDATED + } + catch (ex: SocketTimeoutException) { + newState = GaplessTrack.DOWNLOADED } } else { diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt index ccebdb5d4..f80ca5167 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt @@ -96,8 +96,10 @@ abstract class PlayerWrapper { } gaplessDb.dao().queryByUrl(uri).forEach { - gaplessDb.dao().update(GaplessTrack.DOWNLOADED, it.url) - gaplessService.schedule() + if (it.state != GaplessTrack.UPDATED) { + gaplessDb.dao().update(GaplessTrack.DOWNLOADED, it.url) + gaplessService.schedule() + } } } .subscribeOn(Schedulers.io()) diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt index 9e7fec5e5..eb66b0b72 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt @@ -405,6 +405,7 @@ class MainActivity : BaseActivity() { private fun navigateToPlayQueue() { startActivity(PlayQueueActivity.getStartIntent(this@MainActivity, playback.service.queuePosition)) + overridePendingTransition(R.anim.slide_up, R.anim.stay_put) } private fun scheduleUpdateTime(immediate: Boolean) { diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/playqueue/activity/PlayQueueActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/playqueue/activity/PlayQueueActivity.kt index e1f8aeb15..e3345025e 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/playqueue/activity/PlayQueueActivity.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/playqueue/activity/PlayQueueActivity.kt @@ -3,6 +3,7 @@ package io.casey.musikcube.remote.ui.playqueue.activity import android.content.Context import android.content.Intent import android.os.Bundle +import android.view.MenuItem import android.view.View import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView import io.casey.musikcube.remote.R @@ -88,6 +89,21 @@ class PlayQueueActivity : BaseActivity() { } } + override fun onOptionsItemSelected(item: MenuItem): Boolean { + val result = super.onOptionsItemSelected(item) + + if (item.itemId == android.R.id.home) { + overridePendingTransition(R.anim.stay_put, R.anim.slide_down) + } + + return result + } + + override fun onBackPressed() { + super.onBackPressed() + overridePendingTransition(R.anim.stay_put, R.anim.slide_down) + } + private val adapterListener = object: PlayQueueAdapter.EventListener { override fun onItemClicked(position: Int) = playback.service.playAt(position) diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/fragment/TransportFragment.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/fragment/TransportFragment.kt index e8628f905..b21bbdba6 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/fragment/TransportFragment.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/fragment/TransportFragment.kt @@ -50,21 +50,24 @@ class TransportFragment: BaseFragment() { private fun bindEventHandlers() { this.title = this.rootView.findViewById(R.id.track_title) + this.title.isClickable = false + this.title.isFocusable = false + this.buffering = this.rootView.findViewById(R.id.buffering) val titleBar = this.rootView.findViewById(R.id.title_bar) titleBar?.setOnClickListener { _: View -> if (playback.service.state != PlaybackState.Stopped) { - val intent = PlayQueueActivity + startActivity(PlayQueueActivity .getStartIntent(activity, playback.service.queuePosition) - .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) + .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)) - startActivity(intent) + activity.overridePendingTransition(R.anim.slide_up, R.anim.stay_put) } } - this.title.setOnLongClickListener { _: View -> + titleBar?.setOnLongClickListener { _: View -> startActivity(MainActivity.getStartIntent(activity)) true } diff --git a/src/musikdroid/app/src/main/res/anim/slide_down.xml b/src/musikdroid/app/src/main/res/anim/slide_down.xml new file mode 100644 index 000000000..49d36eacd --- /dev/null +++ b/src/musikdroid/app/src/main/res/anim/slide_down.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/src/musikdroid/app/src/main/res/anim/slide_up.xml b/src/musikdroid/app/src/main/res/anim/slide_up.xml new file mode 100644 index 000000000..ac183e5ba --- /dev/null +++ b/src/musikdroid/app/src/main/res/anim/slide_up.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/src/musikdroid/app/src/main/res/anim/stay_put.xml b/src/musikdroid/app/src/main/res/anim/stay_put.xml new file mode 100644 index 000000000..9278b711e --- /dev/null +++ b/src/musikdroid/app/src/main/res/anim/stay_put.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file