From 379eb2ebe7bec02362fa17a3e64002f89bb65788 Mon Sep 17 00:00:00 2001 From: ixiumu Date: Thu, 24 Nov 2022 00:11:13 +0800 Subject: [PATCH] fix bottom dialog --- .../cloudstream3/ui/home/HomeFragment.kt | 47 +++++++++++++++---- app/src/main/res/anim/slide_in_down.xml | 7 +++ app/src/main/res/anim/slide_out_down.xml | 7 +++ app/src/main/res/values/styles.xml | 5 ++ 4 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/anim/slide_in_down.xml create mode 100644 app/src/main/res/anim/slide_out_down.xml 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 ac6daa53..557beec0 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 @@ -8,6 +8,7 @@ import android.content.Intent import android.content.res.Configuration import android.net.Uri import android.os.Bundle +import android.os.Handler import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -37,6 +38,7 @@ import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings import com.lagradost.cloudstream3.APIHolder.getId +import com.lagradost.cloudstream3.AcraApplication.Companion.getActivity import com.lagradost.cloudstream3.AcraApplication.Companion.getKey import com.lagradost.cloudstream3.MainActivity.Companion.afterPluginsLoadedEvent import com.lagradost.cloudstream3.MainActivity.Companion.mainPluginsLoadedEvent @@ -123,6 +125,7 @@ class HomeFragment : Fragment() { val configEvent = Event() var currentSpan = 1 val listHomepageItems = mutableListOf() + val handler = Handler(android.os.Looper.getMainLooper()) private val errorProfilePics = listOf( R.drawable.monke_benene, @@ -142,8 +145,8 @@ class HomeFragment : Fragment() { fun Activity.loadHomepageList( item: HomePageList, deleteCallback: (() -> Unit)? = null, - ) { - loadHomepageList( + ): BottomSheetDialog? { + return loadHomepageList( expand = HomeViewModel.ExpandableHomepageList(item, 1, false), deleteCallback = deleteCallback, expandCallback = null @@ -154,10 +157,10 @@ class HomeFragment : Fragment() { expand: HomeViewModel.ExpandableHomepageList, deleteCallback: (() -> Unit)? = null, expandCallback: (suspend (String) -> HomeViewModel.ExpandableHomepageList?)? = null - ) { + ): BottomSheetDialog? { val context = this - val bottomSheetDialogBuilder = BottomSheetDialog(context) - bottomSheetDialogBuilder.setContentView(R.layout.home_episodes_expanded) + var bottomSheetDialogBuilder: BottomSheetDialog? = BottomSheetDialog(context) + bottomSheetDialogBuilder!!.setContentView(R.layout.home_episodes_expanded) val title = bottomSheetDialogBuilder.findViewById(R.id.home_expanded_text)!! val item = expand.list title.text = item.name @@ -200,7 +203,7 @@ class HomeFragment : Fragment() { } titleHolder.setOnClickListener { - bottomSheetDialogBuilder.dismissSafe(this) + bottomSheetDialogBuilder?.dismissSafe(this) } @@ -210,7 +213,13 @@ class HomeFragment : Fragment() { recycle.adapter = SearchAdapter(item.list.toMutableList(), recycle) { callback -> handleSearchClickCallback(this, callback) if (callback.action == SEARCH_ACTION_LOAD || callback.action == SEARCH_ACTION_PLAY_FILE) { - bottomSheetDialogBuilder.dismissSafe(this) +// bottomSheetDialogBuilder.dismissSafe(this) + handler.postDelayed({ + bottomSheetDialogBuilder?.let { + it.window?.setWindowAnimations(-1) + it.hide() + } + }, 200) } }.apply { hasNext = expand.hasNext @@ -257,6 +266,17 @@ class HomeFragment : Fragment() { //(recycle.adapter as SearchAdapter).notifyDataSetChanged() bottomSheetDialogBuilder.show() + + return bottomSheetDialogBuilder + } + + fun BottomSheetDialog.onResume(context: Context?) { + // resume dialog + this.window?.setWindowAnimations(-1) + this.show() + handler.postDelayed({ + this.window?.setWindowAnimations(R.style.BottomSheetDialog) + }, 400) } fun getPairList( @@ -427,6 +447,8 @@ class HomeFragment : Fragment() { private val homeViewModel: HomeViewModel by activityViewModels() + private var bottomSheetDialog: BottomSheetDialog? = null + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -473,6 +495,8 @@ class HomeFragment : Fragment() { reloadStored() afterPluginsLoadedEvent += ::firstLoadHomePage mainPluginsLoadedEvent += ::firstLoadHomePage + + bottomSheetDialog?.onResume(context) } override fun onStop() { @@ -907,7 +931,7 @@ class HomeFragment : Fragment() { ) home_bookmarked_child_more_info?.setOnClickListener { - activity?.loadHomepageList( + bottomSheetDialog = activity?.loadHomepageList( HomePageList( getString(R.string.error_bookmarks_text), //home_bookmarked_parent_item_title?.text?.toString() ?: getString(R.string.error_bookmarks_text), bookmarks @@ -916,6 +940,7 @@ class HomeFragment : Fragment() { deleteAllBookmarkedData() homeViewModel.loadStoredData(null) } + bottomSheetDialog?.setOnDismissListener { bottomSheetDialog = null } } } @@ -932,7 +957,7 @@ class HomeFragment : Fragment() { //} home_watch_child_more_info?.setOnClickListener { - activity?.loadHomepageList( + bottomSheetDialog = activity?.loadHomepageList( HomePageList( home_watch_parent_item_title?.text?.toString() ?: getString(R.string.continue_watching), @@ -942,6 +967,7 @@ class HomeFragment : Fragment() { deleteAllResumeStateIds() homeViewModel.loadResumeWatching() } + bottomSheetDialog?.setOnDismissListener { bottomSheetDialog = null } } } @@ -1099,9 +1125,10 @@ class HomeFragment : Fragment() { ParentItemAdapter(mutableListOf(), { callback -> homeHandleSearch(callback) }, { item -> - activity?.loadHomepageList(item, expandCallback = { + bottomSheetDialog = activity?.loadHomepageList(item, expandCallback = { homeViewModel.expandAndReturn(it) }) + bottomSheetDialog?.setOnDismissListener { bottomSheetDialog = null } }, { name -> homeViewModel.expand(name) }) diff --git a/app/src/main/res/anim/slide_in_down.xml b/app/src/main/res/anim/slide_in_down.xml new file mode 100644 index 00000000..ea9d5133 --- /dev/null +++ b/app/src/main/res/anim/slide_in_down.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_down.xml b/app/src/main/res/anim/slide_out_down.xml new file mode 100644 index 00000000..066c3ea7 --- /dev/null +++ b/app/src/main/res/anim/slide_out_down.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9c2f62fc..12a2d869 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -727,4 +727,9 @@ @drawable/cast_ic_mini_controller_closed_caption + + \ No newline at end of file