From 25f9174ff1009e8ad0fffc13ebad52016d7813cf Mon Sep 17 00:00:00 2001
From: Luna712 <142361265+Luna712@users.noreply.github.com>
Date: Sun, 29 Oct 2023 17:36:12 -0600
Subject: [PATCH] Focus on last used account and improve layout for TV
---
.../cloudstream3/ui/account/AccountAdapter.kt | 11 +++++++++++
.../ui/account/AccountSelectActivity.kt | 9 ++++++++-
app/src/main/res/layout/account_list_item.xml | 14 +++++++++++---
3 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountAdapter.kt
index eb3e5e54..eb478c83 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountAdapter.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountAdapter.kt
@@ -1,11 +1,14 @@
package com.lagradost.cloudstream3.ui.account
+import android.os.Build
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.annotation.RequiresApi
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.lagradost.cloudstream3.databinding.AccountListItemBinding
import com.lagradost.cloudstream3.ui.result.setImage
+import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
import com.lagradost.cloudstream3.utils.DataStoreHelper
class AccountAdapter(
@@ -17,9 +20,17 @@ class AccountAdapter(
RecyclerView.ViewHolder(binding.root) {
fun bind(account: DataStoreHelper.Account) {
+ val isLastUsedAccount = account.keyIndex == DataStoreHelper.selectedKeyIndex
+
binding.accountName.text = account.name
binding.accountImage.setImage(account.image)
binding.lockIcon.isVisible = account.lockPin != null
+ binding.outline.isVisible = isLastUsedAccount
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ if (isTrueTvSettings()) {
+ binding.root.isFocusedByDefault = isLastUsedAccount
+ }
binding.root.setOnClickListener {
onItemClick(account)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountSelectActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountSelectActivity.kt
index a629c444..991759b9 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountSelectActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountSelectActivity.kt
@@ -4,10 +4,13 @@ import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.lagradost.cloudstream3.CommonActivity
import com.lagradost.cloudstream3.MainActivity
import com.lagradost.cloudstream3.databinding.ActivityAccountSelectBinding
import com.lagradost.cloudstream3.ui.account.AccountDialog.showPinInputDialog
+import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
import com.lagradost.cloudstream3.utils.DataStoreHelper
import com.lagradost.cloudstream3.utils.DataStoreHelper.getAccounts
@@ -17,6 +20,8 @@ class AccountSelectActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ CommonActivity.init(this)
+
binding = ActivityAccountSelectBinding.inflate(layoutInflater)
setContentView(binding.root)
@@ -30,7 +35,9 @@ class AccountSelectActivity : AppCompatActivity() {
}
recyclerView.adapter = adapter
- recyclerView.layoutManager = GridLayoutManager(this, 3)
+ recyclerView.layoutManager = if (isTvSettings()) {
+ LinearLayoutManager(this)
+ } else GridLayoutManager(this, 3)
}
private fun onAccountSelected(selectedAccount: DataStoreHelper.Account) {
diff --git a/app/src/main/res/layout/account_list_item.xml b/app/src/main/res/layout/account_list_item.xml
index 1a740c06..17ccf26a 100644
--- a/app/src/main/res/layout/account_list_item.xml
+++ b/app/src/main/res/layout/account_list_item.xml
@@ -1,14 +1,14 @@
-
+
+