From 7925b4ce1989f215d4cbc071913a383c3007dd48 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Dec 2015 08:34:45 +0100 Subject: [PATCH] (Android) Reimplement 'Quit RetroArch' --- .../browser/mainmenu/MainMenuActivity.java | 80 ++++++++----- .../browser/mainmenu/MainMenuFragment.java | 111 ------------------ .../retroactivity/RetroActivityCommon.java | 1 + 3 files changed, 49 insertions(+), 143 deletions(-) delete mode 100644 pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuFragment.java diff --git a/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuActivity.java b/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuActivity.java index ac72356e27..a8a41a47bf 100644 --- a/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuActivity.java +++ b/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuActivity.java @@ -2,14 +2,20 @@ package com.retroarch.browser.mainmenu; import java.io.File; -import com.retroarch.R; import com.retroarch.browser.preferences.util.UserPreferences; +import com.retroarch.browser.retroactivity.RetroActivityFuture; +import com.retroarch.browser.retroactivity.RetroActivityPast; +import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.media.AudioManager; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.preference.PreferenceActivity; +import android.preference.PreferenceManager; +import android.provider.Settings; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; @@ -19,6 +25,24 @@ import android.support.v4.app.FragmentTransaction; */ public final class MainMenuActivity extends FragmentActivity { + public static void startRetroActivity(Intent retro, String contentPath, String corePath, + String configFilePath, String imePath, String dataDirPath, String dataSourcePath) + { + if (contentPath != null) { + retro.putExtra("ROM", contentPath); + } + retro.putExtra("LIBRETRO", corePath); + retro.putExtra("CONFIGFILE", configFilePath); + retro.putExtra("IME", imePath); + retro.putExtra("DATADIR", dataDirPath); + retro.putExtra("APK", dataSourcePath); + retro.putExtra("SDCARD", Environment.getExternalStorageDirectory().getAbsolutePath()); + retro.putExtra("DOWNLOADS", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); + retro.putExtra("SCREENSHOTS", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()); + String external = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.retroarch/files"; + retro.putExtra("EXTERNAL", external); + } + @Override public void onCreate(Bundle savedInstanceState) { @@ -33,40 +57,32 @@ public final class MainMenuActivity extends FragmentActivity if (!infoDir.exists()) infoDir.mkdir(); - // Load the main menu layout - setContentView(R.layout.mainmenu_activity_layout); - if (savedInstanceState == null) - { - final MainMenuFragment mmf = new MainMenuFragment(); - final FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - - // Add the base main menu fragment to the content view. - ft.replace(R.id.content_frame, mmf); - ft.commit(); - } - // Bind audio stream to hardware controls. setVolumeControlStream(AudioManager.STREAM_MUSIC); - } - public void setCoreTitle(String core_name) - { - setTitle("RetroArch : " + core_name); - } + UserPreferences.updateConfigFile(this); + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + Intent retro; + + if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)) + { + retro = new Intent(this, RetroActivityFuture.class); + } + else + { + retro = new Intent(this, RetroActivityPast.class); + } + retro.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - @Override - protected void onSaveInstanceState(Bundle data) - { - super.onSaveInstanceState(data); - - data.putCharSequence("title", getTitle()); - } - - @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) - { - super.onRestoreInstanceState(savedInstanceState); - - setTitle(savedInstanceState.getCharSequence("title")); + startRetroActivity( + retro, + null, + prefs.getString("libretro_path", getApplicationInfo().dataDir + "/cores/"), + UserPreferences.getDefaultConfigPath(this), + Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD), + getApplicationInfo().dataDir, + getApplicationInfo().sourceDir); + startActivity(retro); + finish(); } } diff --git a/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuFragment.java b/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuFragment.java deleted file mode 100644 index 524e6b19fb..0000000000 --- a/pkg/android/phoenix/src/com/retroarch/browser/mainmenu/MainMenuFragment.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.retroarch.browser.mainmenu; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceClickListener; -import android.preference.PreferenceManager; -import android.provider.Settings; -import android.util.Log; -import android.os.Environment; -import android.content.Context; - -import com.retroarch.R; -import com.retroarch.browser.preferences.fragments.util.PreferenceListFragment; -import com.retroarch.browser.preferences.util.UserPreferences; -import com.retroarch.browser.retroactivity.RetroActivityFuture; -import com.retroarch.browser.retroactivity.RetroActivityPast; - -/** - * Represents the fragment that handles the layout of the main menu. - */ -public final class MainMenuFragment extends PreferenceListFragment implements OnPreferenceClickListener -{ - private static final String TAG = "MainMenuFragment"; - private Context ctx; - - public Intent getRetroActivity() - { - if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)) - { - return new Intent(ctx, RetroActivityFuture.class); - } - return new Intent(ctx, RetroActivityPast.class); - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - - // Cache the context - this.ctx = getActivity(); - - // Add the layout through the XML. - addPreferencesFromResource(R.xml.main_menu); - - // Set the listeners for the menu items - findPreference("resumeContentPref").setOnPreferenceClickListener(this); - findPreference("quitRetroArch").setOnPreferenceClickListener(this); - } - - @Override - public boolean onPreferenceClick(Preference preference) - { - final String prefKey = preference.getKey(); - - // Resume Content - if (prefKey.equals("resumeContentPref")) - { - UserPreferences.updateConfigFile(ctx); - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); - final Intent retro = getRetroActivity(); - - MainMenuFragment.startRetroActivity( - retro, - null, - prefs.getString("libretro_path", ctx.getApplicationInfo().dataDir + "/cores/"), - UserPreferences.getDefaultConfigPath(ctx), - Settings.Secure.getString(ctx.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD), - ctx.getApplicationInfo().dataDir, - ctx.getApplicationInfo().sourceDir); - startActivity(retro); - } - // Quit RetroArch preference - else if (prefKey.equals("quitRetroArch")) - { - // TODO - needs to close entire app gracefully - including - // NativeActivity if possible - getActivity().finish(); - } - - return true; - } - - public static void startRetroActivity(Intent retro, String contentPath, String corePath, - String configFilePath, String imePath, String dataDirPath, String dataSourcePath) - { - if (contentPath != null) { - retro.putExtra("ROM", contentPath); - } - retro.putExtra("LIBRETRO", corePath); - retro.putExtra("CONFIGFILE", configFilePath); - retro.putExtra("IME", imePath); - retro.putExtra("DATADIR", dataDirPath); - retro.putExtra("APK", dataSourcePath); - retro.putExtra("SDCARD", Environment.getExternalStorageDirectory().getAbsolutePath()); - retro.putExtra("DOWNLOADS", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); - retro.putExtra("SCREENSHOTS", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()); - String external = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.retroarch/files"; - retro.putExtra("EXTERNAL", external); - } -} - - - diff --git a/pkg/android/phoenix/src/com/retroarch/browser/retroactivity/RetroActivityCommon.java b/pkg/android/phoenix/src/com/retroarch/browser/retroactivity/RetroActivityCommon.java index 226471c8ff..9ac24b8cea 100644 --- a/pkg/android/phoenix/src/com/retroarch/browser/retroactivity/RetroActivityCommon.java +++ b/pkg/android/phoenix/src/com/retroarch/browser/retroactivity/RetroActivityCommon.java @@ -22,5 +22,6 @@ public class RetroActivityCommon extends RetroActivityLocation // Use a separate JNI function to explicitly trigger the readback. public void onRetroArchExit() { + finish(); } }