mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Various Android TV homepage fixes
This commit is contained in:
parent
0ebc12e29b
commit
06c2cf86ec
4 changed files with 25 additions and 5 deletions
|
@ -1,6 +1,7 @@
|
||||||
package com.lagradost.cloudstream3
|
package com.lagradost.cloudstream3
|
||||||
|
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
|
@ -102,6 +103,7 @@ import java.net.URI
|
||||||
import java.net.URLDecoder
|
import java.net.URLDecoder
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
|
|
||||||
//https://github.com/videolan/vlc-android/blob/3706c4be2da6800b3d26344fc04fab03ffa4b860/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt#L1898
|
//https://github.com/videolan/vlc-android/blob/3706c4be2da6800b3d26344fc04fab03ffa4b860/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt#L1898
|
||||||
|
@ -505,10 +507,13 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
val builder: AlertDialog.Builder = AlertDialog.Builder(this)
|
val builder: AlertDialog.Builder = AlertDialog.Builder(this)
|
||||||
builder.setTitle(R.string.confirm_exit_dialog)
|
builder.setTitle(R.string.confirm_exit_dialog)
|
||||||
builder.apply {
|
builder.apply {
|
||||||
setPositiveButton(R.string.yes) { _, _ -> super.onBackPressed() }
|
// Forceful exit since back button can actually go back to setup
|
||||||
|
setPositiveButton(R.string.yes) { _, _ -> exitProcess(0) }
|
||||||
setNegativeButton(R.string.no) { _, _ -> }
|
setNegativeButton(R.string.no) { _, _ -> }
|
||||||
}
|
}
|
||||||
builder.show()
|
builder.show().also {
|
||||||
|
it.getButton(DialogInterface.BUTTON_NEGATIVE).requestFocus()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun backPressed() {
|
private fun backPressed() {
|
||||||
|
|
|
@ -81,6 +81,8 @@ class APIRepository(val api: MainAPI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
api.load(fixedUrl)?.also { response ->
|
api.load(fixedUrl)?.also { response ->
|
||||||
|
// Remove all blank tags as early as possible
|
||||||
|
response.tags = response.tags?.filter { it.isNotBlank() }
|
||||||
val add = SavedLoadResponse(unixTime, response, lookingForHash)
|
val add = SavedLoadResponse(unixTime, response, lookingForHash)
|
||||||
|
|
||||||
synchronized(cache) {
|
synchronized(cache) {
|
||||||
|
@ -122,7 +124,6 @@ class APIRepository(val api: MainAPI) {
|
||||||
delay(delta)
|
delay(delta)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(DelicateCoroutinesApi::class)
|
|
||||||
suspend fun getMainPage(page: Int, nameIndex: Int? = null): Resource<List<HomePageResponse?>> {
|
suspend fun getMainPage(page: Int, nameIndex: Int? = null): Resource<List<HomePageResponse?>> {
|
||||||
return safeApiCall {
|
return safeApiCall {
|
||||||
api.lastHomepageRequest = unixTimeMS
|
api.lastHomepageRequest = unixTimeMS
|
||||||
|
|
|
@ -268,11 +268,23 @@ class HomeParentItemAdapterPreview(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This makes the hidden next buttons only available when on the info button
|
||||||
|
// Otherwise you might be able to go to the next item without being at the info button
|
||||||
|
itemView.home_preview_info_btt?.setOnFocusChangeListener { _, hasFocus ->
|
||||||
|
itemView.home_preview_hidden_next_focus?.isFocusable = hasFocus
|
||||||
|
}
|
||||||
|
itemView.home_preview_play_btt?.setOnFocusChangeListener { _, hasFocus ->
|
||||||
|
itemView.home_preview_hidden_prev_focus?.isFocusable = hasFocus
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
itemView.home_preview_info_btt?.setOnClickListener { view ->
|
itemView.home_preview_info_btt?.setOnClickListener { view ->
|
||||||
clickCallback?.invoke(
|
clickCallback?.invoke(
|
||||||
LoadClickCallback(0, view, position, this)
|
LoadClickCallback(0, view, position, this)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
itemView.home_preview_hidden_next_focus?.setOnFocusChangeListener { _, hasFocus ->
|
itemView.home_preview_hidden_next_focus?.setOnFocusChangeListener { _, hasFocus ->
|
||||||
if (hasFocus) {
|
if (hasFocus) {
|
||||||
previewViewpager?.apply {
|
previewViewpager?.apply {
|
||||||
|
@ -281,6 +293,7 @@ class HomeParentItemAdapterPreview(
|
||||||
itemView.home_preview_info_btt?.requestFocus()
|
itemView.home_preview_info_btt?.requestFocus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
itemView.home_preview_hidden_prev_focus?.setOnFocusChangeListener { _, hasFocus ->
|
itemView.home_preview_hidden_prev_focus?.setOnFocusChangeListener { _, hasFocus ->
|
||||||
if (hasFocus) {
|
if (hasFocus) {
|
||||||
previewViewpager?.apply {
|
previewViewpager?.apply {
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<androidx.viewpager2.widget.ViewPager2
|
<androidx.viewpager2.widget.ViewPager2
|
||||||
|
android:descendantFocusability="blocksDescendants"
|
||||||
android:id="@+id/home_preview_viewpager"
|
android:id="@+id/home_preview_viewpager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="400dp"
|
android:layout_height="400dp"
|
||||||
|
@ -87,7 +88,7 @@
|
||||||
android:id="@+id/home_preview_hidden_prev_focus"
|
android:id="@+id/home_preview_hidden_prev_focus"
|
||||||
android:layout_width="1dp"
|
android:layout_width="1dp"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:focusable="true" />
|
android:focusable="false" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/home_preview_play_btt"
|
android:id="@+id/home_preview_play_btt"
|
||||||
|
@ -119,7 +120,7 @@
|
||||||
android:id="@+id/home_preview_hidden_next_focus"
|
android:id="@+id/home_preview_hidden_next_focus"
|
||||||
android:layout_width="1dp"
|
android:layout_width="1dp"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:focusable="true" />
|
android:focusable="false" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
Loading…
Reference in a new issue