From aabcc7fa161c688effff9c763893dc75d8a49fa1 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 20 Apr 2023 21:24:00 +0800 Subject: [PATCH] [mobile] revert site dialog --- .../tv/ui/activity/CollectActivity.java | 2 +- .../android/tv/ui/adapter/SiteAdapter.java | 1 + .../tv/ui/custom/dialog/SiteDialog.java | 83 ++++++++----------- .../tv/ui/fragment/SettingFragment.java | 2 +- .../android/tv/ui/fragment/VodFragment.java | 2 +- app/src/mobile/res/layout/adapter_site.xml | 31 ++++--- app/src/mobile/res/layout/dialog_site.xml | 1 + 7 files changed, 61 insertions(+), 61 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index e6755e1a1..8c43cb5fc 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -205,7 +205,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA private void onSite(View view) { Utils.hideKeyboard(mBinding.keyword); - App.post(() -> SiteDialog.create().search().show(this), 50); + App.post(() -> SiteDialog.create(this).search().show(), 50); } private void toggleView(View view) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java index 9c61fef30..e2bda0f6d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java @@ -65,6 +65,7 @@ public class SiteAdapter extends RecyclerView.Adapter { holder.binding.text.setText(item.getName()); holder.binding.text.setEnabled(!search || change); holder.binding.text.setFocusable(!search || change); + holder.binding.text.setSelected(item.isActivated()); holder.binding.text.setActivated(item.isActivated()); holder.binding.search.setImageResource(item.getSearchIcon()); holder.binding.change.setImageResource(item.getChangeIcon()); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java index 861c65a3a..65730947d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java @@ -1,14 +1,10 @@ package com.fongmi.android.tv.ui.custom.dialog; +import android.app.Activity; import android.view.LayoutInflater; -import android.view.ViewGroup; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Site; @@ -16,78 +12,71 @@ import com.fongmi.android.tv.databinding.DialogSiteBinding; import com.fongmi.android.tv.impl.SiteCallback; import com.fongmi.android.tv.ui.adapter.SiteAdapter; import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; -import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; -public class SiteDialog extends BaseDialog implements SiteAdapter.OnClickListener { +public class SiteDialog implements SiteAdapter.OnClickListener { + private final DialogSiteBinding binding; + private final SiteCallback callback; private final SiteAdapter adapter; - private DialogSiteBinding binding; - private SiteCallback callback; - private int count; + private final AlertDialog dialog; - public static SiteDialog create() { - return new SiteDialog(); + public static SiteDialog create(Activity activity) { + return new SiteDialog(activity); } - public SiteDialog() { + public static SiteDialog create(Fragment fragment) { + return new SiteDialog(fragment); + } + + public SiteDialog(Activity activity) { + this.callback = (activity instanceof SiteCallback) ? (SiteCallback) activity : null; + this.binding = DialogSiteBinding.inflate(LayoutInflater.from(activity)); + this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); + this.adapter = new SiteAdapter(this); + } + + public SiteDialog(Fragment fragment) { + this.callback = (fragment instanceof SiteCallback) ? (SiteCallback) fragment : null; + this.binding = DialogSiteBinding.inflate(LayoutInflater.from(fragment.getContext())); + this.dialog = new MaterialAlertDialogBuilder(fragment.getActivity()).setView(binding.getRoot()).create(); this.adapter = new SiteAdapter(this); } public SiteDialog search() { this.adapter.search(true); - this.count = 2; return this; } public SiteDialog change() { this.adapter.change(true); - this.count = 2; - return this; - } - - public SiteDialog all() { - this.adapter.search(true); - this.adapter.change(true); - this.count = 1; return this; } - public void show(FragmentActivity activity) { - for (Fragment f : activity.getSupportFragmentManager().getFragments()) if (f instanceof BottomSheetDialogFragment) return; - show(activity.getSupportFragmentManager(), null); - this.callback = (SiteCallback) activity; + public void show() { + setRecyclerView(); + setDialog(); } - public void show(Fragment fragment) { - for (Fragment f : fragment.getChildFragmentManager().getFragments()) if (f instanceof BottomSheetDialogFragment) return; - show(fragment.getChildFragmentManager(), null); - this.callback = (SiteCallback) fragment; - } - - private int getCount() { - return adapter.getItemCount() < 2 ? 1 : count; - } - - @Override - protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) { - return binding = DialogSiteBinding.inflate(inflater, container, false); - } - - @Override - protected void initView() { + private void setRecyclerView() { binding.recycler.setAdapter(adapter); binding.recycler.setItemAnimator(null); binding.recycler.setHasFixedSize(true); - binding.recycler.addItemDecoration(new SpaceItemDecoration(getCount(), 16)); - binding.recycler.setLayoutManager(new GridLayoutManager(getContext(), getCount())); + binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); binding.recycler.scrollToPosition(ApiConfig.getHomeIndex()); } + private void setDialog() { + if (adapter.getItemCount() == 0) return; + dialog.getWindow().setDimAmount(0); + dialog.show(); + } + @Override public void onTextClick(Site item) { if (callback == null) return; callback.setSite(item); - dismiss(); + dialog.dismiss(); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index 311e89b75..55ec13615 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -73,7 +73,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit @Override protected void initEvent() { - mBinding.vodHome.setOnClickListener(view -> SiteDialog.create().all().show(this)); + mBinding.vodHome.setOnClickListener(view -> SiteDialog.create(this).show()); mBinding.liveHome.setOnClickListener(view -> LiveDialog.create().show(this)); mBinding.vod.setOnClickListener(view -> ConfigDialog.create(this).type(type = 0).show()); mBinding.live.setOnClickListener(view -> ConfigDialog.create(this).type(type = 1).show()); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 8e586937d..4d0b4b257 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -182,7 +182,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } private void onLogo(View view) { - SiteDialog.create().change().show(this); + SiteDialog.create(this).change().show(); } private void onKeep(View view) { diff --git a/app/src/mobile/res/layout/adapter_site.xml b/app/src/mobile/res/layout/adapter_site.xml index ca1a8edab..7d35ea76c 100644 --- a/app/src/mobile/res/layout/adapter_site.xml +++ b/app/src/mobile/res/layout/adapter_site.xml @@ -1,36 +1,45 @@ + android:src="@drawable/ic_site_search_on" + app:tint="@color/text" /> + android:src="@drawable/ic_site_change_on" + app:tint="@color/text" /> \ No newline at end of file diff --git a/app/src/mobile/res/layout/dialog_site.xml b/app/src/mobile/res/layout/dialog_site.xml index 1d15b6c8d..29632553f 100644 --- a/app/src/mobile/res/layout/dialog_site.xml +++ b/app/src/mobile/res/layout/dialog_site.xml @@ -5,4 +5,5 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:maxHeight="352dp" /> \ No newline at end of file