diff options
| author | Charles Lombardo <clombardo169@gmail.com> | 2022-11-27 22:19:25 -0500 |
|---|---|---|
| committer | Charles Lombardo <clombardo169@gmail.com> | 2022-12-17 02:00:48 -0500 |
| commit | 6090694eab008b88c6d4bb58f7ccf7ff7733f47d (patch) | |
| tree | 4f4aedf7ccd77d4d56602883028110820552fcaf /Source/Android/app/src/main/java/org | |
| parent | a1c4861ad8666b622f96266a20af6e8e787c9693 (diff) | |
Android: Move game grid options to Main/TV Activities
Diffstat (limited to 'Source/Android/app/src/main/java/org')
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)); |
