diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt index 1e7aba9d..45b1eaf1 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt @@ -125,6 +125,6 @@ class DownloadFragment : Fragment() { download_list.layoutManager = GridLayoutManager(context, 1) downloadsViewModel.updateList(requireContext()) - activity?.fixPaddingStatusbar(download_root) + context?.fixPaddingStatusbar(download_root) } } \ No newline at end of file diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt index 9c4e7c34..aae8871d 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt @@ -4,11 +4,14 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.lagradost.cloudstream3.R +import com.lagradost.cloudstream3.UIHelper.fixPaddingStatusbar +import com.lagradost.cloudstream3.UIHelper.loadResult import com.lagradost.cloudstream3.mvvm.Resource import com.lagradost.cloudstream3.mvvm.observe import com.lagradost.cloudstream3.utils.DataStore.getKey @@ -54,9 +57,13 @@ class HomeFragment : Fragment() { } } - val adapter: RecyclerView.Adapter = ParentItemAdapter(listOf()) { + val adapter: RecyclerView.Adapter = ParentItemAdapter(listOf(), { card -> + (activity as AppCompatActivity).loadResult(card.url, card.slug, card.apiName) + }, { - } + }) + + context?.fixPaddingStatusbar(home_root) home_master_recycler.adapter = adapter home_master_recycler.layoutManager = GridLayoutManager(context, 1) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt index 2a74df07..1607e217 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt @@ -3,6 +3,7 @@ package com.lagradost.cloudstream3.ui.home import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.FrameLayout import android.widget.TextView import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -14,12 +15,13 @@ import kotlinx.android.synthetic.main.homepage_parent.view.* class ParentItemAdapter( var itemList: List, - private val clickCallback: (SearchResponse) -> Unit + private val clickCallback: (SearchResponse) -> Unit, + private val moreInfoClickCallback: (List) -> Unit, ) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, i: Int): ParentViewHolder { val layout = R.layout.homepage_parent return ParentViewHolder( - LayoutInflater.from(parent.context).inflate(layout, parent, false), clickCallback + LayoutInflater.from(parent.context).inflate(layout, parent, false), clickCallback, moreInfoClickCallback ) } @@ -36,16 +38,23 @@ class ParentItemAdapter( } class ParentViewHolder - constructor(itemView: View, private val clickCallback: (SearchResponse) -> Unit) : + constructor( + itemView: View, + private val clickCallback: (SearchResponse) -> Unit, + private val moreInfoClickCallback: (List) -> Unit + ) : RecyclerView.ViewHolder(itemView) { val title: TextView = itemView.home_parent_item_title val recyclerView: RecyclerView = itemView.home_child_recyclerview + private val moreInfo: FrameLayout = itemView.home_child_more_info fun bind(info: HomePageList) { title.text = info.name recyclerView.adapter = HomeChildItemAdapter(info.list, clickCallback) - recyclerView.layoutManager = GridLayoutManager(itemView.context, 1) (recyclerView.adapter as HomeChildItemAdapter).notifyDataSetChanged() + + moreInfo.setOnClickListener { + moreInfoClickCallback.invoke(info.list) + } } } - } \ No newline at end of file diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchAdaptor.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchAdaptor.kt index 3a78f811..bc0cecc5 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchAdaptor.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchAdaptor.kt @@ -1,21 +1,21 @@ package com.lagradost.cloudstream3.ui.search -import android.app.Activity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.FrameLayout import android.widget.ImageView import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.cardview.widget.CardView import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.bumptech.glide.load.model.GlideUrl -import com.lagradost.cloudstream3.* +import com.lagradost.cloudstream3.AnimeSearchResponse +import com.lagradost.cloudstream3.DubStatus +import com.lagradost.cloudstream3.SearchResponse +import com.lagradost.cloudstream3.TvType import com.lagradost.cloudstream3.UIHelper.getGridFormatId import com.lagradost.cloudstream3.UIHelper.getGridIsCompact -import com.lagradost.cloudstream3.UIHelper.loadResult import com.lagradost.cloudstream3.UIHelper.toPx import com.lagradost.cloudstream3.ui.AutofitRecyclerView import kotlinx.android.synthetic.main.search_result_compact.view.backgroundCard @@ -25,17 +25,17 @@ import kotlinx.android.synthetic.main.search_result_grid.view.* import kotlin.math.roundToInt class SearchAdapter( - private var activity: Activity, var cardList: ArrayList, private val resView: AutofitRecyclerView, -) : + private val clickCallback: (SearchResponse) -> Unit, + ) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val layout = parent.context.getGridFormatId() return CardViewHolder( LayoutInflater.from(parent.context).inflate(layout, parent, false), - activity, + clickCallback, resView ) } @@ -54,8 +54,8 @@ class SearchAdapter( } class CardViewHolder - constructor(itemView: View, _activity: Activity, resView: AutofitRecyclerView) : RecyclerView.ViewHolder(itemView) { - val activity = _activity + constructor(itemView: View, private val clickCallback: (SearchResponse) -> Unit, resView: AutofitRecyclerView) : + RecyclerView.ViewHolder(itemView) { val cardView: ImageView = itemView.imageView private val cardText: TextView = itemView.imageText private val textType: TextView? = itemView.text_type @@ -100,14 +100,13 @@ class SearchAdapter( val glideUrl = GlideUrl(card.posterUrl) - Glide.with(cardView.context) - .load(glideUrl) - .into(cardView) - + Glide.with(cardView.context) + .load(glideUrl) + .into(cardView) } bg.setOnClickListener { - (activity as AppCompatActivity).loadResult(card.url, card.slug, card.apiName) + clickCallback.invoke(card) } when (card) { diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt index da70421c..ec2b4b1a 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt @@ -66,15 +66,16 @@ class SearchFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - activity?.fixPaddingStatusbar(searchRoot) + context?.fixPaddingStatusbar(searchRoot) fixGrid() val adapter: RecyclerView.Adapter? = activity?.let { SearchAdapter( - it, ArrayList(), cardSpace, - ) + ) { card -> + (activity as AppCompatActivity).loadResult(card.url, card.slug, card.apiName) + } } cardSpace.adapter = adapter @@ -90,7 +91,8 @@ class SearchFragment : Fragment() { val apiNames = apis.map { it.name } val builder: AlertDialog.Builder = AlertDialog.Builder(requireContext()) - builder.setMultiChoiceItems(apiNames.toTypedArray(), + builder.setMultiChoiceItems( + apiNames.toTypedArray(), apiNames.map { a -> apiNamesSetting.contains(a) }.toBooleanArray() ) { _, position: Int, checked: Boolean -> val apiNamesSettingLocal = activity?.getApiSettings() @@ -104,7 +106,8 @@ class SearchFragment : Fragment() { val edit = settingsManagerLocal.edit() edit.putStringSet(getString(R.string.search_providers_list_key), - apiNames.filter { a -> apiNamesSettingLocal.contains(a) }.toSet()) + apiNames.filter { a -> apiNamesSettingLocal.contains(a) }.toSet() + ) edit.apply() allApi.providersActive = apiNamesSettingLocal } @@ -131,8 +134,8 @@ class SearchFragment : Fragment() { when (it) { is Resource.Success -> { it.value.let { data -> - if(data != null) { - (cardSpace?.adapter as SearchAdapter?)?.cardList = ArrayList( data.filterNotNull()) + if (data != null) { + (cardSpace?.adapter as SearchAdapter?)?.cardList = ArrayList(data.filterNotNull()) cardSpace?.adapter?.notifyDataSetChanged() } } diff --git a/app/src/main/res/drawable/ic_baseline_arrow_forward_24.xml b/app/src/main/res/drawable/ic_baseline_arrow_forward_24.xml new file mode 100644 index 00000000..23072282 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_arrow_forward_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 4436b726..c69a39fe 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,10 +1,13 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/homepage_parent.xml b/app/src/main/res/layout/homepage_parent.xml index a2bb495d..3c307bde 100644 --- a/app/src/main/res/layout/homepage_parent.xml +++ b/app/src/main/res/layout/homepage_parent.xml @@ -4,30 +4,40 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" - android:background="@color/colorPrimary" android:layout_width="wrap_content" android:layout_height="wrap_content"> - - - + - + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39fb6939..57e0fb6c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,4 +54,5 @@ Sorry, the application crashed. An anonymous bug report will be sent to the developers Disable automatic bug reporting + More info \ No newline at end of file