summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2022-11-27 22:19:25 -0500
committerCharles Lombardo <clombardo169@gmail.com>2022-12-17 02:00:48 -0500
commit6090694eab008b88c6d4bb58f7ccf7ff7733f47d (patch)
tree4f4aedf7ccd77d4d56602883028110820552fcaf /Source/Android/app/src/main/java/org
parenta1c4861ad8666b622f96266a20af6e8e787c9693 (diff)
Android: Move game grid options to Main/TV Activities
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt124
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java17
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java18
6 files changed, 158 insertions, 13 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 7e2d15bb22..5a83729f17 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -324,10 +324,6 @@ public final class SettingsFragmentPresenter
R.string.panic_handlers, R.string.panic_handlers_description));
sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_OSD_MESSAGES, R.string.osd_messages,
R.string.osd_messages_description));
- sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_USE_GAME_COVERS,
- R.string.download_game_covers, 0));
- sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_SHOW_GAME_TITLES,
- R.string.show_titles_in_game_list, R.string.show_titles_in_game_list_description));
AbstractIntSetting appTheme = new AbstractIntSetting()
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt
new file mode 100644
index 0000000000..94dda3f579
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt
@@ -0,0 +1,124 @@
+package org.dolphinemu.dolphinemu.fragments
+
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import android.os.Bundle
+import android.view.View
+import com.google.android.material.bottomsheet.BottomSheetBehavior
+import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
+import android.widget.CompoundButton
+import androidx.appcompat.app.AppCompatActivity
+import com.google.android.material.bottomsheet.BottomSheetDialog
+import org.dolphinemu.dolphinemu.databinding.FragmentGridOptionsBinding
+import org.dolphinemu.dolphinemu.databinding.FragmentGridOptionsTvBinding
+import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
+import org.dolphinemu.dolphinemu.ui.main.MainView
+
+class GridOptionDialogFragment : BottomSheetDialogFragment() {
+
+ private lateinit var mView: MainView
+
+ private var _mBindingMobile: FragmentGridOptionsBinding? = null
+ private var _mBindingTv: FragmentGridOptionsTvBinding? = null
+
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val mBindingMobile get() = _mBindingMobile!!
+ private val mBindingTv get() = _mBindingTv!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ mView = (activity as MainView)
+
+ if (activity is AppCompatActivity)
+ {
+ _mBindingMobile = FragmentGridOptionsBinding.inflate(inflater, container, false)
+ return mBindingMobile.root
+ }
+ _mBindingTv = FragmentGridOptionsTvBinding.inflate(inflater, container, false)
+ return mBindingTv.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ if (activity is AppCompatActivity) {
+ setUpCoverButtons()
+ setUpTitleButtons()
+
+ // Pins fragment to the top of the dialog ensures the dialog is expanded in landscape by default
+ BottomSheetBehavior.from<View>(mBindingMobile.gridSheet).state =
+ BottomSheetBehavior.STATE_EXPANDED
+ dialog?.setOnShowListener {
+ val dialog = it as BottomSheetDialog
+ mBindingMobile.gridSheet.let { sheet ->
+ dialog.behavior.peekHeight = sheet.height
+ }
+ }
+ } else {
+ setUpCoverButtonsTv()
+
+ // Pins fragment to the top of the dialog ensures the dialog is expanded in landscape by default
+ BottomSheetBehavior.from<View>(mBindingTv.gridSheet).state =
+ BottomSheetBehavior.STATE_EXPANDED
+ dialog?.setOnShowListener {
+ val dialog = it as BottomSheetDialog
+ mBindingTv.gridSheet.let { sheet ->
+ dialog.behavior.peekHeight = sheet.height
+ }
+ }
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _mBindingMobile = null
+ _mBindingTv = null
+ }
+
+ private fun setUpCoverButtons() {
+ mBindingMobile.switchDownloadCovers.isChecked =
+ BooleanSetting.MAIN_USE_GAME_COVERS.booleanGlobal
+ mBindingMobile.rootDownloadCovers.setOnClickListener {
+ mBindingMobile.switchDownloadCovers.isChecked = !mBindingMobile.switchDownloadCovers.isChecked
+ }
+ mBindingMobile.switchDownloadCovers.setOnCheckedChangeListener { _: CompoundButton, _: Boolean ->
+ BooleanSetting.MAIN_USE_GAME_COVERS.setBooleanGlobal(
+ NativeConfig.LAYER_BASE,
+ mBindingMobile.switchDownloadCovers.isChecked
+ )
+ mView.reloadGrid()
+ }
+ }
+
+ private fun setUpTitleButtons() {
+ mBindingMobile.switchShowTitles.isChecked = BooleanSetting.MAIN_SHOW_GAME_TITLES.booleanGlobal
+ mBindingMobile.rootShowTitles.setOnClickListener {
+ mBindingMobile.switchShowTitles.isChecked = !mBindingMobile.switchShowTitles.isChecked
+ }
+ mBindingMobile.switchShowTitles.setOnCheckedChangeListener { _: CompoundButton, _: Boolean ->
+ BooleanSetting.MAIN_SHOW_GAME_TITLES.setBooleanGlobal(
+ NativeConfig.LAYER_BASE,
+ mBindingMobile.switchShowTitles.isChecked
+ )
+ mView.reloadGrid()
+ }
+ }
+
+ // TODO: Remove this when leanback is removed
+ private fun setUpCoverButtonsTv() {
+ mBindingTv.switchDownloadCovers.isChecked =
+ BooleanSetting.MAIN_USE_GAME_COVERS.booleanGlobal
+ mBindingTv.rootDownloadCovers.setOnClickListener {
+ mBindingTv.switchDownloadCovers.isChecked = !mBindingTv.switchDownloadCovers.isChecked
+ }
+ mBindingTv.switchDownloadCovers.setOnCheckedChangeListener { _: CompoundButton, _: Boolean ->
+ BooleanSetting.MAIN_USE_GAME_COVERS.setBooleanGlobal(
+ NativeConfig.LAYER_BASE,
+ mBindingTv.switchDownloadCovers.isChecked
+ )
+ mView.reloadGrid()
+ }
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
index 35e5b1051e..464c2a2c89 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
@@ -24,6 +24,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.tabs.TabLayout;
+import org.dolphinemu.dolphinemu.fragments.GridOptionDialogFragment;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter;
@@ -123,10 +124,6 @@ public final class MainActivity extends AppCompatActivity
}
mPresenter.onResume();
-
- // In case the user changed a setting that affects how games are displayed,
- // such as system language, cover downloading...
- forEachPlatformGamesView(PlatformGamesView::refetchMetadata);
}
@Override
@@ -333,6 +330,18 @@ public final class MainActivity extends AppCompatActivity
forEachPlatformGamesView(PlatformGamesView::showGames);
}
+ @Override
+ public void reloadGrid()
+ {
+ forEachPlatformGamesView(PlatformGamesView::refetchMetadata);
+ }
+
+ @Override
+ public void showGridOptions()
+ {
+ new GridOptionDialogFragment().show(getSupportFragmentManager(), "gridOptions");
+ }
+
private void forEachPlatformGamesView(Action1<PlatformGamesView> action)
{
for (Platform platform : Platform.values())
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
index d43187dcca..0115dba7cc 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
@@ -94,6 +94,10 @@ public final class MainPresenter
mView.launchSettingsActivity(MenuTag.SETTINGS);
return true;
+ case R.id.menu_grid_options:
+ mView.showGridOptions();
+ return true;
+
case R.id.menu_refresh:
mView.setRefreshing(true);
GameFileCacheManager.startRescan();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java
index a40b0a7d7d..604cb5d1a8 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java
@@ -34,4 +34,8 @@ public interface MainView
* To be called when the game file cache is updated.
*/
void showGames();
+
+ void reloadGrid();
+
+ void showGridOptions();
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
index 925c755880..21a8fc2880 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
@@ -19,6 +19,7 @@ import androidx.leanback.widget.ListRow;
import androidx.leanback.widget.ListRowPresenter;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import org.dolphinemu.dolphinemu.fragments.GridOptionDialogFragment;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import org.dolphinemu.dolphinemu.adapters.GameRowPresenter;
@@ -87,10 +88,6 @@ public final class TvMainActivity extends FragmentActivity
}
mPresenter.onResume();
-
- // In case the user changed a setting that affects how games are displayed,
- // such as system language, cover downloading...
- refetchMetadata();
}
@Override
@@ -217,7 +214,8 @@ public final class TvMainActivity extends FragmentActivity
buildRowsAdapter();
}
- private void refetchMetadata()
+ @Override
+ public void reloadGrid()
{
for (ArrayObjectAdapter row : mGameRows)
{
@@ -225,6 +223,12 @@ public final class TvMainActivity extends FragmentActivity
}
}
+ @Override
+ public void showGridOptions()
+ {
+ new GridOptionDialogFragment().show(getSupportFragmentManager(), "gridOptions");
+ }
+
/**
* Callback from AddDirectoryActivity. Applies any changes necessary to the GameGridActivity.
*
@@ -370,6 +374,10 @@ public final class TvMainActivity extends FragmentActivity
R.drawable.ic_add_tv,
R.string.add_directory_title));
+ rowItems.add(new TvSettingsItem(R.id.menu_grid_options,
+ R.drawable.ic_list_tv,
+ R.string.grid_menu_grid_options));
+
rowItems.add(new TvSettingsItem(R.id.menu_refresh,
R.drawable.ic_refresh_tv,
R.string.grid_menu_refresh));