Fix a bunch of issues found by the Linter and rename Dolphin functions to Citra
This commit is contained in:
parent
7a5d78c4b7
commit
63e0dc0f7e
@ -25,7 +25,7 @@ import java.lang.ref.WeakReference;
|
||||
|
||||
/**
|
||||
* Class which contains methods that interact
|
||||
* with the native side of the Dolphin code.
|
||||
* with the native side of the Citra code.
|
||||
*/
|
||||
public final class NativeLibrary {
|
||||
/**
|
||||
@ -157,15 +157,6 @@ public final class NativeLibrary {
|
||||
|
||||
public static native long GetFilesize(String filename);
|
||||
|
||||
public static native int GetPlatform(String filename);
|
||||
|
||||
/**
|
||||
* Gets the Dolphin version string.
|
||||
*
|
||||
* @return the Dolphin version string.
|
||||
*/
|
||||
public static native String GetVersionString();
|
||||
|
||||
public static native String GetGitRevision();
|
||||
|
||||
/**
|
||||
@ -231,8 +222,6 @@ public final class NativeLibrary {
|
||||
*/
|
||||
public static native void Run(String path, String savestatePath, boolean deleteSavestate);
|
||||
|
||||
public static native void ChangeDisc(String path);
|
||||
|
||||
// Surface Handling
|
||||
public static native void SurfaceChanged(Surface surf);
|
||||
|
||||
@ -275,11 +264,6 @@ public final class NativeLibrary {
|
||||
**/
|
||||
public static native void eglBindAPI(int api);
|
||||
|
||||
/**
|
||||
* Provides a way to refresh the connections on Wiimotes
|
||||
*/
|
||||
public static native void RefreshWiimotes();
|
||||
|
||||
/**
|
||||
* Returns the performance stats for the current game
|
||||
**/
|
||||
@ -353,7 +337,7 @@ public final class NativeLibrary {
|
||||
}
|
||||
|
||||
// Show the AlertDialog on the main thread.
|
||||
emulationActivity.runOnUiThread(() -> builder.show());
|
||||
emulationActivity.runOnUiThread(builder::show);
|
||||
|
||||
// Wait for the lock to notify that it is complete.
|
||||
synchronized (lock) {
|
||||
@ -485,8 +469,6 @@ public final class NativeLibrary {
|
||||
alert.show();
|
||||
((TextView) alert.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public static void setEmulationActivity(EmulationActivity emulationActivity) {
|
||||
|
@ -246,9 +246,7 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
.setNegativeButton(android.R.string.cancel, (dialogInterface, i) ->
|
||||
{
|
||||
}).setOnDismissListener(dialogInterface ->
|
||||
{
|
||||
NativeLibrary.UnPauseEmulation();
|
||||
})
|
||||
NativeLibrary.UnPauseEmulation())
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
|
@ -6,8 +6,10 @@ import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceHolder;
|
||||
@ -112,10 +114,10 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (DirectoryInitialization.areDolphinDirectoriesReady()) {
|
||||
if (DirectoryInitialization.areCitraDirectoriesReady()) {
|
||||
mEmulationState.run(activity.isActivityRecreated());
|
||||
} else {
|
||||
setupDolphinDirectoriesThenStartEmulation();
|
||||
setupCitraDirectoriesThenStartEmulation();
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,7 +139,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
super.onDetach();
|
||||
}
|
||||
|
||||
private void setupDolphinDirectoriesThenStartEmulation() {
|
||||
private void setupCitraDirectoriesThenStartEmulation() {
|
||||
IntentFilter statusIntentFilter = new IntentFilter(
|
||||
DirectoryInitialization.BROADCAST_ACTION);
|
||||
|
||||
@ -145,7 +147,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
new DirectoryStateReceiver(directoryInitializationState ->
|
||||
{
|
||||
if (directoryInitializationState ==
|
||||
DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED) {
|
||||
DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED) {
|
||||
mEmulationState.run(activity.isActivityRecreated());
|
||||
} else if (directoryInitializationState ==
|
||||
DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED) {
|
||||
@ -245,7 +247,6 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
|
||||
private static class EmulationState {
|
||||
private final String mGamePath;
|
||||
private Thread mEmulationThread;
|
||||
private State state;
|
||||
private Surface mSurface;
|
||||
private boolean mRunWhenSurfaceIsValid;
|
||||
@ -341,7 +342,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
private void runWithValidSurface() {
|
||||
mRunWhenSurfaceIsValid = false;
|
||||
if (state == State.STOPPED) {
|
||||
mEmulationThread = new Thread(() ->
|
||||
Thread mEmulationThread = new Thread(() ->
|
||||
{
|
||||
NativeLibrary.SurfaceChanged(mSurface);
|
||||
Log.debug("[EmulationFragment] Starting emulation thread.");
|
||||
|
@ -46,7 +46,6 @@ public final class MenuFragment extends Fragment implements View.OnClickListener
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_ingame_menu, container, false);
|
||||
|
@ -4,7 +4,6 @@ import android.content.ContentValues;
|
||||
import android.database.Cursor;
|
||||
import android.os.Environment;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
public final class Game {
|
||||
|
@ -147,7 +147,7 @@ public final class GameDatabase extends SQLiteOpenHelper {
|
||||
null,
|
||||
null); // Order of folders is irrelevant.
|
||||
|
||||
Set<String> allowedExtensions = new HashSet<String>(Arrays.asList(
|
||||
Set<String> allowedExtensions = new HashSet<>(Arrays.asList(
|
||||
".3ds", ".3dsx", ".elf", ".axf", ".cci", ".cxi", ".cia", ".app", ".rar", ".zip", ".7z", ".torrent", ".tar", ".gz"));
|
||||
|
||||
// Possibly overly defensive, but ensures that moveToNext() does not skip a row.
|
||||
|
@ -88,8 +88,6 @@ public final class GameProvider extends ContentProvider {
|
||||
SQLiteDatabase database = mDbHelper.getWritableDatabase();
|
||||
String table = uri.getLastPathSegment();
|
||||
|
||||
long id = -1;
|
||||
|
||||
if (table != null) {
|
||||
if (table.equals(RESET_LIBRARY)) {
|
||||
mDbHelper.resetDatabase(database);
|
||||
@ -102,7 +100,7 @@ public final class GameProvider extends ContentProvider {
|
||||
return uri;
|
||||
}
|
||||
|
||||
id = database.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_IGNORE);
|
||||
long id = database.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_IGNORE);
|
||||
|
||||
// If insertion was successful...
|
||||
if (id > 0) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package org.citra.citra_emu.model.settings;
|
||||
|
||||
/**
|
||||
* Abstraction for a setting item as read from / written to Dolphin's configuration ini files.
|
||||
* Abstraction for a setting item as read from / written to Citra's configuration ini files.
|
||||
* These files generally consist of a key/value pair, though the type of value is ambiguous and
|
||||
* must be inferred at read-time. The type of value determines which child of this class is used
|
||||
* to represent the Setting.
|
||||
|
@ -212,7 +212,7 @@ public final class InputBindingSetting extends SettingsItem {
|
||||
|
||||
// Try remove all possible keys we wrote for this setting
|
||||
String oldKey = preferences.getString(getReverseKey(), "");
|
||||
if (oldKey != "") {
|
||||
if (!oldKey.equals("")) {
|
||||
editor.remove(getKey()); // Used for ui text
|
||||
editor.remove(oldKey); // Used for button mapping
|
||||
editor.remove(oldKey + "_GuestOrientation"); // Used for axis orientation
|
||||
|
@ -111,7 +111,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener {
|
||||
* within a SharedPreferences instance so that those values can be retrieved here.
|
||||
* <p>
|
||||
* This has a few benefits over the conventional way of storing the values
|
||||
* (ie. within the Dolphin ini file).
|
||||
* (ie. within the Citra ini file).
|
||||
* <ul>
|
||||
* <li>No native calls</li>
|
||||
* <li>Keeps Android-only values inside the Android environment</li>
|
||||
@ -641,9 +641,9 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener {
|
||||
|
||||
public void refreshControls() {
|
||||
// Remove all the overlay buttons from the HashSet.
|
||||
overlayButtons.removeAll(overlayButtons);
|
||||
overlayDpads.removeAll(overlayDpads);
|
||||
overlayJoysticks.removeAll(overlayJoysticks);
|
||||
overlayButtons.clear();
|
||||
overlayDpads.clear();
|
||||
overlayJoysticks.clear();
|
||||
|
||||
String orientation =
|
||||
getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT ?
|
||||
|
@ -16,8 +16,8 @@ import android.view.View;
|
||||
* Without this View, the emulation SurfaceView acts like it has the
|
||||
* highest Z-value, blocking any other View, such as the menu fragments.
|
||||
*/
|
||||
public final class NVidiaShieldWorkaroundView extends View {
|
||||
public NVidiaShieldWorkaroundView(Context context, AttributeSet attrs) {
|
||||
public final class NvidiaShieldWorkaroundView extends View {
|
||||
public NvidiaShieldWorkaroundView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
// Setting this seems to workaround the bug
|
@ -1,5 +0,0 @@
|
||||
package org.citra.citra_emu.ui.input.gamecube;
|
||||
|
||||
|
||||
public class ControllerFragment {
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package org.citra.citra_emu.ui.input.gamecube;
|
||||
|
||||
|
||||
public class ControllerFragmentPresenter {
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package org.citra.citra_emu.ui.input.gamecube;
|
||||
|
||||
|
||||
public interface ControllerFragmentView {
|
||||
}
|
@ -62,7 +62,7 @@ public final class MainPresenter {
|
||||
databaseHelper.getGames()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(games -> mView.showGames(games));
|
||||
.subscribe(mView::showGames);
|
||||
}
|
||||
|
||||
private void refeshGameList() {
|
||||
|
@ -52,14 +52,11 @@ public final class PlatformGamesFragment extends Fragment implements PlatformGam
|
||||
|
||||
// Add swipe down to refresh gesture
|
||||
final SwipeRefreshLayout pullToRefresh = view.findViewById(R.id.refresh_grid_games);
|
||||
pullToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
GameDatabase databaseHelper = CitraApplication.databaseHelper;
|
||||
databaseHelper.scanLibrary(databaseHelper.getWritableDatabase());
|
||||
refresh();
|
||||
pullToRefresh.setRefreshing(false);
|
||||
}
|
||||
pullToRefresh.setOnRefreshListener(() -> {
|
||||
GameDatabase databaseHelper = CitraApplication.databaseHelper;
|
||||
databaseHelper.scanLibrary(databaseHelper.getWritableDatabase());
|
||||
refresh();
|
||||
pullToRefresh.setRefreshing(false);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -224,21 +224,6 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
|
||||
mPresenter.onSettingChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGcPadSettingChanged(String key, int value) {
|
||||
mPresenter.onGcPadSettingChanged(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWiimoteSettingChanged(String section, int value) {
|
||||
mPresenter.onWiimoteSettingChanged(section, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExtensionSettingChanged(String key, int value) {
|
||||
mPresenter.onExtensionSettingChanged(key, value);
|
||||
}
|
||||
|
||||
private SettingsFragment getFragment() {
|
||||
return (SettingsFragment) getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG);
|
||||
}
|
||||
|
@ -46,15 +46,15 @@ public final class SettingsActivityPresenter {
|
||||
}
|
||||
|
||||
public void onStart() {
|
||||
prepareDolphinDirectoriesIfNeeded();
|
||||
prepareCitraDirectoriesIfNeeded();
|
||||
}
|
||||
|
||||
void loadSettingsUI() {
|
||||
if (mSettings.isEmpty()) {
|
||||
if (!TextUtils.isEmpty(gameId)) {
|
||||
mSettings.add(SettingsFile.SETTINGS_DOLPHIN, SettingsFile.readFile("../GameSettings/" + gameId, mView));
|
||||
mSettings.add(SettingsFile.SETTINGS_CITRA, SettingsFile.readFile("../GameSettings/" + gameId, mView));
|
||||
} else {
|
||||
mSettings.add(SettingsFile.SETTINGS_DOLPHIN, SettingsFile.readFile(SettingsFile.FILE_NAME_CONFIG, mView));
|
||||
mSettings.add(SettingsFile.SETTINGS_CITRA, SettingsFile.readFile(SettingsFile.FILE_NAME_CONFIG, mView));
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,12 +62,12 @@ public final class SettingsActivityPresenter {
|
||||
mView.onSettingsFileLoaded(mSettings);
|
||||
}
|
||||
|
||||
private void prepareDolphinDirectoriesIfNeeded() {
|
||||
private void prepareCitraDirectoriesIfNeeded() {
|
||||
File configFile = new File(DirectoryInitialization.getUserDirectory() + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini");
|
||||
if (!configFile.exists()) {
|
||||
|
||||
}
|
||||
if (DirectoryInitialization.areDolphinDirectoriesReady()) {
|
||||
if (DirectoryInitialization.areCitraDirectoriesReady()) {
|
||||
loadSettingsUI();
|
||||
} else {
|
||||
mView.showLoading();
|
||||
@ -77,7 +77,7 @@ public final class SettingsActivityPresenter {
|
||||
directoryStateReceiver =
|
||||
new DirectoryStateReceiver(directoryInitializationState ->
|
||||
{
|
||||
if (directoryInitializationState == DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED) {
|
||||
if (directoryInitializationState == DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED) {
|
||||
mView.hideLoading();
|
||||
loadSettingsUI();
|
||||
} else if (directoryInitializationState == DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED) {
|
||||
@ -112,12 +112,12 @@ public final class SettingsActivityPresenter {
|
||||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...");
|
||||
// Needed workaround for now due to an odd bug in how it handles saving two different settings sections to the same file. It won't save GFX settings if it follows the normal saving pattern
|
||||
if (menuTag.equals("Dolphin")) {
|
||||
SettingsFile.saveFile("../GameSettings/" + gameId, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView);
|
||||
SettingsFile.saveFile("../GameSettings/" + gameId, mSettings.get(SettingsFile.SETTINGS_CITRA), mView);
|
||||
}
|
||||
mView.showToastMessage("Saved settings for " + gameId, false);
|
||||
} else {
|
||||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...");
|
||||
SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView);
|
||||
SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG, mSettings.get(SettingsFile.SETTINGS_CITRA), mView);
|
||||
mView.showToastMessage("Saved settings", false);
|
||||
}
|
||||
NativeLibrary.ReloadSettings();
|
||||
@ -148,30 +148,4 @@ public final class SettingsActivityPresenter {
|
||||
public void saveState(Bundle outState) {
|
||||
outState.putBoolean(KEY_SHOULD_SAVE, mShouldSave);
|
||||
}
|
||||
|
||||
public void onGcPadSettingChanged(String key, int value) {
|
||||
if (value != 0) // Not disabled
|
||||
{
|
||||
mView.showSettingsFragment(key + (value / 6), true, gameId);
|
||||
}
|
||||
}
|
||||
|
||||
public void onWiimoteSettingChanged(String section, int value) {
|
||||
switch (value) {
|
||||
case 1:
|
||||
mView.showSettingsFragment(section, true, gameId);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
mView.showToastMessage("Please make sure Continuous Scanning is enabled in Core Settings.", false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void onExtensionSettingChanged(String key, int value) {
|
||||
if (value != 0) // None
|
||||
{
|
||||
mView.showSettingsFragment(key + value, true, gameId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -75,34 +75,6 @@ public interface SettingsActivityView {
|
||||
*/
|
||||
void onSettingChanged();
|
||||
|
||||
/**
|
||||
* Called by a containing Fragment to tell the containing Activity that a GCPad's setting
|
||||
* was modified.
|
||||
*
|
||||
* @param key Identifier for the GCPad that was modified.
|
||||
* @param value New setting for the GCPad.
|
||||
*/
|
||||
void onGcPadSettingChanged(String key, int value);
|
||||
|
||||
/**
|
||||
* Called by a containing Fragment to tell the containing Activity that a Wiimote's setting
|
||||
* was modified.
|
||||
*
|
||||
* @param section Identifier for Wiimote that was modified; Wiimotes are identified by their section,
|
||||
* not their key.
|
||||
* @param value New setting for the Wiimote.
|
||||
*/
|
||||
void onWiimoteSettingChanged(String section, int value);
|
||||
|
||||
/**
|
||||
* Called by a containing Fragment to tell the containing Activity that an extension setting
|
||||
* was modified.
|
||||
*
|
||||
* @param key Identifier for the extension that was modified.
|
||||
* @param value New setting for the extension.
|
||||
*/
|
||||
void onExtensionSettingChanged(String key, int value);
|
||||
|
||||
/**
|
||||
* Show loading dialog while loading the settings
|
||||
*/
|
||||
|
@ -149,12 +149,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
||||
mDialog = builder.show();
|
||||
}
|
||||
|
||||
DialogInterface.OnClickListener defaultCancelListener = new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
closeDialog();
|
||||
}
|
||||
};
|
||||
DialogInterface.OnClickListener defaultCancelListener = (dialog, which) -> closeDialog();
|
||||
|
||||
public void onDateTimeClick(DateTimeSetting item, int position) {
|
||||
mClickedItem = item;
|
||||
@ -173,33 +168,30 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
||||
dp.updateDate(Integer.parseInt(settingValue.substring(0, 4)), Integer.parseInt(settingValue.substring(5, 7)) - 1, Integer.parseInt(settingValue.substring(8, 10)));
|
||||
|
||||
tp.setIs24HourView(true);
|
||||
tp.setCurrentHour(Integer.parseInt(settingValue.substring(11, 13)));
|
||||
tp.setCurrentMinute(Integer.parseInt(settingValue.substring(14, 16)));
|
||||
tp.setHour(Integer.parseInt(settingValue.substring(11, 13)));
|
||||
tp.setMinute(Integer.parseInt(settingValue.substring(14, 16)));
|
||||
|
||||
DialogInterface.OnClickListener ok = new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
//set it
|
||||
int year = dp.getYear();
|
||||
if (year < 2000) {
|
||||
year = 2000;
|
||||
}
|
||||
String month = ("00" + (dp.getMonth() + 1)).substring(String.valueOf(dp.getMonth() + 1).length());
|
||||
String day = ("00" + dp.getDayOfMonth()).substring(String.valueOf(dp.getDayOfMonth()).length());
|
||||
String hr = ("00" + tp.getCurrentHour()).substring(String.valueOf(tp.getCurrentHour()).length());
|
||||
String min = ("00" + tp.getCurrentMinute()).substring(String.valueOf(tp.getCurrentMinute()).length());
|
||||
String datetime = year + "-" + month + "-" + day + " " + hr + ":" + min + ":01";
|
||||
|
||||
StringSetting setting = item.setSelectedValue(datetime);
|
||||
if (setting != null) {
|
||||
mView.putSetting(setting);
|
||||
}
|
||||
|
||||
mView.onSettingChanged();
|
||||
|
||||
mClickedItem = null;
|
||||
closeDialog();
|
||||
DialogInterface.OnClickListener ok = (dialog, which) -> {
|
||||
//set it
|
||||
int year = dp.getYear();
|
||||
if (year < 2000) {
|
||||
year = 2000;
|
||||
}
|
||||
String month = ("00" + (dp.getMonth() + 1)).substring(String.valueOf(dp.getMonth() + 1).length());
|
||||
String day = ("00" + dp.getDayOfMonth()).substring(String.valueOf(dp.getDayOfMonth()).length());
|
||||
String hr = ("00" + tp.getHour()).substring(String.valueOf(tp.getHour()).length());
|
||||
String min = ("00" + tp.getMinute()).substring(String.valueOf(tp.getMinute()).length());
|
||||
String datetime = year + "-" + month + "-" + day + " " + hr + ":" + min + ":01";
|
||||
|
||||
StringSetting setting = item.setSelectedValue(datetime);
|
||||
if (setting != null) {
|
||||
mView.putSetting(setting);
|
||||
}
|
||||
|
||||
mView.onSettingChanged();
|
||||
|
||||
mClickedItem = null;
|
||||
closeDialog();
|
||||
};
|
||||
|
||||
builder.setView(view);
|
||||
@ -263,17 +255,13 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
||||
dialog.setMessage(String.format(mContext.getString(messageResId), mContext.getString(item.getNameId())));
|
||||
dialog.setButton(AlertDialog.BUTTON_NEGATIVE, mContext.getString(android.R.string.cancel), this);
|
||||
dialog.setButton(AlertDialog.BUTTON_NEUTRAL, mContext.getString(R.string.clear), (dialogInterface, i) ->
|
||||
{
|
||||
item.removeOldMapping();
|
||||
});
|
||||
item.removeOldMapping());
|
||||
dialog.setOnDismissListener(dialog1 ->
|
||||
{
|
||||
StringSetting setting = new StringSetting(item.getKey(), item.getSection(), item.getFile(), item.getValue());
|
||||
notifyItemChanged(position);
|
||||
|
||||
if (setting != null) {
|
||||
mView.putSetting(setting);
|
||||
}
|
||||
mView.putSetting(setting);
|
||||
|
||||
mView.onSettingChanged();
|
||||
});
|
||||
|
@ -81,7 +81,7 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
|
||||
SettingsActivityView activity = (SettingsActivityView) getActivity();
|
||||
|
||||
ArrayList<HashMap<String, SettingSection>> settings = new ArrayList<>();
|
||||
settings.add(SettingsFile.SETTINGS_DOLPHIN, activity.getSettings(SettingsFile.SETTINGS_DOLPHIN));
|
||||
settings.add(SettingsFile.SETTINGS_CITRA, activity.getSettings(SettingsFile.SETTINGS_CITRA));
|
||||
mPresenter.onViewCreated(settings);
|
||||
}
|
||||
|
||||
|
@ -121,18 +121,18 @@ public final class SettingsFragmentPresenter {
|
||||
Setting frameLimitEnable = null;
|
||||
Setting frameLimitValue = null;
|
||||
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) {
|
||||
useCpuJit = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_CPU_JIT);
|
||||
frameLimitEnable = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_FRAME_LIMIT_ENABLED);
|
||||
frameLimitValue = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_FRAME_LIMIT);
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_CITRA).isEmpty()) {
|
||||
useCpuJit = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_CPU_JIT);
|
||||
frameLimitEnable = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_FRAME_LIMIT_ENABLED);
|
||||
frameLimitValue = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_FRAME_LIMIT);
|
||||
|
||||
} else {
|
||||
mView.passSettingsToActivity(mSettings);
|
||||
}
|
||||
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_CPU_JIT, SettingsFile.SECTION_CORE, SettingsFile.SETTINGS_DOLPHIN, R.string.cpu_jit, R.string.cpu_jit_description, true, useCpuJit, true, mView));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_FRAME_LIMIT_ENABLED, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.frame_limit_enable, R.string.frame_limit_enable_description, true, frameLimitEnable));
|
||||
sl.add(new SliderSetting(SettingsFile.KEY_FRAME_LIMIT, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.frame_limit_slider, R.string.frame_limit_slider_description, 0, 200, "%", 100, frameLimitValue));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_CPU_JIT, SettingsFile.SECTION_CORE, SettingsFile.SETTINGS_CITRA, R.string.cpu_jit, R.string.cpu_jit_description, true, useCpuJit, true, mView));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_FRAME_LIMIT_ENABLED, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.frame_limit_enable, R.string.frame_limit_enable_description, true, frameLimitEnable));
|
||||
sl.add(new SliderSetting(SettingsFile.KEY_FRAME_LIMIT, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.frame_limit_slider, R.string.frame_limit_slider_description, 0, 200, "%", 100, frameLimitValue));
|
||||
}
|
||||
|
||||
private void addSystemSettings(ArrayList<SettingsItem> sl) {
|
||||
@ -143,19 +143,19 @@ public final class SettingsFragmentPresenter {
|
||||
Setting systemClock = null;
|
||||
Setting dateTime = null;
|
||||
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) {
|
||||
region = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_REGION_VALUE);
|
||||
language = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_LANGUAGE);
|
||||
systemClock = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_INIT_CLOCK);
|
||||
dateTime = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_INIT_TIME);
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_CITRA).isEmpty()) {
|
||||
region = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_REGION_VALUE);
|
||||
language = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_LANGUAGE);
|
||||
systemClock = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_INIT_CLOCK);
|
||||
dateTime = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_SYSTEM).getSetting(SettingsFile.KEY_INIT_TIME);
|
||||
} else {
|
||||
mView.passSettingsToActivity(mSettings);
|
||||
}
|
||||
|
||||
sl.add(new SingleChoiceSetting(SettingsFile.KEY_REGION_VALUE, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_DOLPHIN, R.string.emulated_region, 0, R.array.regionNames, R.array.regionValues, -1, region));
|
||||
sl.add(new SingleChoiceSetting(SettingsFile.KEY_LANGUAGE, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_DOLPHIN, R.string.emulated_language, 0, R.array.languageNames, R.array.languageValues, 1, language));
|
||||
sl.add(new SingleChoiceSetting(SettingsFile.KEY_INIT_CLOCK, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_DOLPHIN, R.string.init_clock, R.string.init_clock_description, R.array.systemClockNames, R.array.systemClockValues, 0, systemClock));
|
||||
sl.add(new DateTimeSetting(SettingsFile.KEY_INIT_TIME, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_DOLPHIN, R.string.init_time, R.string.init_time_description, "2000-01-01 00:00:01", dateTime));
|
||||
sl.add(new SingleChoiceSetting(SettingsFile.KEY_REGION_VALUE, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_CITRA, R.string.emulated_region, 0, R.array.regionNames, R.array.regionValues, -1, region));
|
||||
sl.add(new SingleChoiceSetting(SettingsFile.KEY_LANGUAGE, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_CITRA, R.string.emulated_language, 0, R.array.languageNames, R.array.languageValues, 1, language));
|
||||
sl.add(new SingleChoiceSetting(SettingsFile.KEY_INIT_CLOCK, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_CITRA, R.string.init_clock, R.string.init_clock_description, R.array.systemClockNames, R.array.systemClockValues, 0, systemClock));
|
||||
sl.add(new DateTimeSetting(SettingsFile.KEY_INIT_TIME, SettingsFile.SECTION_SYSTEM, SettingsFile.SETTINGS_CITRA, R.string.init_time, R.string.init_time_description, "2000-01-01 00:00:01", dateTime));
|
||||
}
|
||||
|
||||
|
||||
@ -183,62 +183,62 @@ public final class SettingsFragmentPresenter {
|
||||
Setting buttonZL = null;
|
||||
Setting buttonZR = null;
|
||||
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) {
|
||||
buttonA = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_A);
|
||||
buttonB = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_B);
|
||||
buttonX = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_X);
|
||||
buttonY = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_Y);
|
||||
buttonSelect = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_SELECT);
|
||||
buttonStart = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_START);
|
||||
circlepadAxisVert = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_VERTICAL);
|
||||
circlepadAxisHoriz = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_HORIZONTAL);
|
||||
cstickAxisVert = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CSTICK_AXIS_VERTICAL);
|
||||
cstickAxisHoriz = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CSTICK_AXIS_HORIZONTAL);
|
||||
dpadAxisVert = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_DPAD_AXIS_VERTICAL);
|
||||
dpadAxisHoriz = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_DPAD_AXIS_HORIZONTAL);
|
||||
// buttonUp = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_UP);
|
||||
// buttonDown = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_DOWN);
|
||||
// buttonLeft = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_LEFT);
|
||||
// buttonRight = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_RIGHT);
|
||||
buttonL = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_L);
|
||||
buttonR = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_R);
|
||||
buttonZL = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_ZL);
|
||||
buttonZR = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_ZR);
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_CITRA).isEmpty()) {
|
||||
buttonA = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_A);
|
||||
buttonB = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_B);
|
||||
buttonX = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_X);
|
||||
buttonY = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_Y);
|
||||
buttonSelect = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_SELECT);
|
||||
buttonStart = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_START);
|
||||
circlepadAxisVert = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_VERTICAL);
|
||||
circlepadAxisHoriz = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_HORIZONTAL);
|
||||
cstickAxisVert = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CSTICK_AXIS_VERTICAL);
|
||||
cstickAxisHoriz = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_CSTICK_AXIS_HORIZONTAL);
|
||||
dpadAxisVert = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_DPAD_AXIS_VERTICAL);
|
||||
dpadAxisHoriz = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_DPAD_AXIS_HORIZONTAL);
|
||||
// buttonUp = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_UP);
|
||||
// buttonDown = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_DOWN);
|
||||
// buttonLeft = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_LEFT);
|
||||
// buttonRight = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_RIGHT);
|
||||
buttonL = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_L);
|
||||
buttonR = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_R);
|
||||
buttonZL = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_ZL);
|
||||
buttonZR = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_CONTROLS).getSetting(SettingsFile.KEY_BUTTON_ZR);
|
||||
} else {
|
||||
mView.passSettingsToActivity(mSettings);
|
||||
}
|
||||
|
||||
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_A, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_a, buttonA));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_B, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_b, buttonB));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_X, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_x, buttonX));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_Y, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_y, buttonY));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_SELECT, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_select, buttonSelect));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_START, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_start, buttonStart));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_A, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_a, buttonA));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_B, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_b, buttonB));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_X, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_x, buttonX));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_Y, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_y, buttonY));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_SELECT, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_select, buttonSelect));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_START, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_start, buttonStart));
|
||||
|
||||
sl.add(new HeaderSetting(null, null, R.string.controller_circlepad, 0));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_VERTICAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.controller_axis_vertical, circlepadAxisVert));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_HORIZONTAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.controller_axis_horizontal, circlepadAxisHoriz));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_VERTICAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.controller_axis_vertical, circlepadAxisVert));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CIRCLEPAD_AXIS_HORIZONTAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.controller_axis_horizontal, circlepadAxisHoriz));
|
||||
|
||||
sl.add(new HeaderSetting(null, null, R.string.controller_c, 0));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CSTICK_AXIS_VERTICAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.controller_axis_vertical, cstickAxisVert));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CSTICK_AXIS_HORIZONTAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.controller_axis_horizontal, cstickAxisHoriz));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CSTICK_AXIS_VERTICAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.controller_axis_vertical, cstickAxisVert));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_CSTICK_AXIS_HORIZONTAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.controller_axis_horizontal, cstickAxisHoriz));
|
||||
|
||||
sl.add(new HeaderSetting(null, null, R.string.controller_dpad, 0));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_DPAD_AXIS_VERTICAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.controller_axis_vertical, dpadAxisVert));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_DPAD_AXIS_HORIZONTAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.controller_axis_horizontal, dpadAxisHoriz));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_DPAD_AXIS_VERTICAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.controller_axis_vertical, dpadAxisVert));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_DPAD_AXIS_HORIZONTAL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.controller_axis_horizontal, dpadAxisHoriz));
|
||||
|
||||
// TODO(bunnei): Figure out what to do with these. Configuring is functional, but removing for MVP because they are confusing.
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_UP, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.generic_up, buttonUp));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_DOWN, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.generic_down, buttonDown));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_LEFT, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.generic_left, buttonLeft));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_RIGHT, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.generic_right, buttonRight));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_UP, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.generic_up, buttonUp));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_DOWN, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.generic_down, buttonDown));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_LEFT, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.generic_left, buttonLeft));
|
||||
// sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_RIGHT, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.generic_right, buttonRight));
|
||||
|
||||
sl.add(new HeaderSetting(null, null, R.string.controller_triggers, 0));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_L, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_l, buttonL));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_R, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_r, buttonR));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_ZL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_zl, buttonZL));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_ZR, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_DOLPHIN, R.string.button_zr, buttonZR));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_L, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_l, buttonL));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_R, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_r, buttonR));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_ZL, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_zl, buttonZL));
|
||||
sl.add(new InputBindingSetting(SettingsFile.KEY_BUTTON_ZR, SettingsFile.SECTION_CONTROLS, SettingsFile.SETTINGS_CITRA, R.string.button_zr, buttonZR));
|
||||
}
|
||||
|
||||
private void addGraphicsSettings(ArrayList<SettingsItem> sl) {
|
||||
@ -251,23 +251,23 @@ public final class SettingsFragmentPresenter {
|
||||
Setting vsyncEnable = null;
|
||||
Setting filterMode = null;
|
||||
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) {
|
||||
hardwareRenderer = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_HW_RENDERER);
|
||||
hardwareShader = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_HW_SHADER);
|
||||
shadersAccurateMul = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL);
|
||||
resolutionFactor = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_RESOLUTION_FACTOR);
|
||||
vsyncEnable = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_USE_VSYNC);
|
||||
filterMode = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_FILTER_MODE);
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_CITRA).isEmpty()) {
|
||||
hardwareRenderer = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_HW_RENDERER);
|
||||
hardwareShader = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_HW_SHADER);
|
||||
shadersAccurateMul = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL);
|
||||
resolutionFactor = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_RESOLUTION_FACTOR);
|
||||
vsyncEnable = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_USE_VSYNC);
|
||||
filterMode = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_RENDERER).getSetting(SettingsFile.KEY_FILTER_MODE);
|
||||
} else {
|
||||
mView.passSettingsToActivity(mSettings);
|
||||
}
|
||||
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_RENDERER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.hw_renderer, R.string.hw_renderer_description, true, hardwareRenderer, true, mView));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_SHADER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.hw_shaders, R.string.hw_shaders_description, true, hardwareShader, true, mView));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.shaders_accurate_mul, R.string.shaders_accurate_mul_description, false, shadersAccurateMul));
|
||||
sl.add(new SliderSetting(SettingsFile.KEY_RESOLUTION_FACTOR, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.internal_resolution, R.string.internal_resolution_description, 1, 4, "x", 1, resolutionFactor));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_VSYNC, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.vsync, R.string.vsync_description, true, vsyncEnable));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_FILTER_MODE, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.linear_filtering, R.string.linear_filtering_description, true, filterMode));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_RENDERER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.hw_renderer, R.string.hw_renderer_description, true, hardwareRenderer, true, mView));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_SHADER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.hw_shaders, R.string.hw_shaders_description, true, hardwareShader, true, mView));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.shaders_accurate_mul, R.string.shaders_accurate_mul_description, false, shadersAccurateMul));
|
||||
sl.add(new SliderSetting(SettingsFile.KEY_RESOLUTION_FACTOR, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.internal_resolution, R.string.internal_resolution_description, 1, 4, "x", 1, resolutionFactor));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_VSYNC, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.vsync, R.string.vsync_description, true, vsyncEnable));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_FILTER_MODE, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_CITRA, R.string.linear_filtering, R.string.linear_filtering_description, true, filterMode));
|
||||
}
|
||||
|
||||
private void addAudioSettings(ArrayList<SettingsItem> sl) {
|
||||
@ -275,12 +275,12 @@ public final class SettingsFragmentPresenter {
|
||||
|
||||
Setting audioStretch = null;
|
||||
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) {
|
||||
audioStretch = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_AUDIO).getSetting(SettingsFile.KEY_ENABLE_AUDIO_STRETCHING);
|
||||
if (!mSettings.get(SettingsFile.SETTINGS_CITRA).isEmpty()) {
|
||||
audioStretch = mSettings.get(SettingsFile.SETTINGS_CITRA).get(SettingsFile.SECTION_AUDIO).getSetting(SettingsFile.KEY_ENABLE_AUDIO_STRETCHING);
|
||||
} else {
|
||||
mView.passSettingsToActivity(mSettings);
|
||||
}
|
||||
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_AUDIO_STRETCHING, SettingsFile.SECTION_AUDIO, SettingsFile.SETTINGS_DOLPHIN, R.string.audio_stretch, R.string.audio_stretch_description, false, audioStretch));
|
||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_AUDIO_STRETCHING, SettingsFile.SECTION_AUDIO, SettingsFile.SETTINGS_CITRA, R.string.audio_stretch, R.string.audio_stretch_description, false, audioStretch));
|
||||
}
|
||||
}
|
@ -8,7 +8,6 @@ import android.widget.FrameLayout;
|
||||
* FrameLayout subclass with few Properties added to simplify animations.
|
||||
*/
|
||||
public final class SettingsFrameLayout extends FrameLayout {
|
||||
private float mVisibleness = 1.0f;
|
||||
|
||||
public SettingsFrameLayout(Context context) {
|
||||
super(context);
|
||||
@ -36,7 +35,7 @@ public final class SettingsFrameLayout extends FrameLayout {
|
||||
}
|
||||
|
||||
public float getVisibleness() {
|
||||
return mVisibleness;
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
public void setVisibleness(float visibleness) {
|
||||
|
@ -21,8 +21,8 @@ public final class SingleChoiceViewHolder extends SettingViewHolder {
|
||||
|
||||
@Override
|
||||
protected void findViews(View root) {
|
||||
mTextSettingName = (TextView) root.findViewById(R.id.text_setting_name);
|
||||
mTextSettingDescription = (TextView) root.findViewById(R.id.text_setting_description);
|
||||
mTextSettingName = root.findViewById(R.id.text_setting_name);
|
||||
mTextSettingDescription = root.findViewById(R.id.text_setting_description);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -25,7 +25,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* A service that spawns its own thread in order to copy several binary and shader files
|
||||
* from the Dolphin APK to the external file system.
|
||||
* from the Citra APK to the external file system.
|
||||
*/
|
||||
public final class DirectoryInitialization {
|
||||
public static final String BROADCAST_ACTION = "org.citra.citra_emu.BROADCAST";
|
||||
@ -33,7 +33,7 @@ public final class DirectoryInitialization {
|
||||
public static final String EXTRA_STATE = "directoryState";
|
||||
private static volatile DirectoryInitializationState directoryState = null;
|
||||
private static String userPath;
|
||||
private static AtomicBoolean isDolphinDirectoryInitializationRunning = new AtomicBoolean(false);
|
||||
private static AtomicBoolean isCitraDirectoryInitializationRunning = new AtomicBoolean(false);
|
||||
|
||||
public static void start(Context context) {
|
||||
// Can take a few seconds to run, so don't block UI thread.
|
||||
@ -42,16 +42,16 @@ public final class DirectoryInitialization {
|
||||
}
|
||||
|
||||
private static void init(Context context) {
|
||||
if (!isDolphinDirectoryInitializationRunning.compareAndSet(false, true))
|
||||
if (!isCitraDirectoryInitializationRunning.compareAndSet(false, true))
|
||||
return;
|
||||
|
||||
if (directoryState != DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED) {
|
||||
if (directoryState != DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED) {
|
||||
if (PermissionsHandler.hasWriteAccess(context)) {
|
||||
if (setDolphinUserDirectory()) {
|
||||
if (setCitraUserDirectory()) {
|
||||
initializeInternalStorage(context);
|
||||
CreateUserDirectories();
|
||||
NativeLibrary.CreateConfigFile();
|
||||
directoryState = DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED;
|
||||
directoryState = DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED;
|
||||
} else {
|
||||
directoryState = DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE;
|
||||
}
|
||||
@ -60,7 +60,7 @@ public final class DirectoryInitialization {
|
||||
}
|
||||
}
|
||||
|
||||
isDolphinDirectoryInitializationRunning.set(false);
|
||||
isCitraDirectoryInitializationRunning.set(false);
|
||||
sendBroadcastState(directoryState, context);
|
||||
}
|
||||
|
||||
@ -72,14 +72,14 @@ public final class DirectoryInitialization {
|
||||
file.delete();
|
||||
}
|
||||
|
||||
public static boolean areDolphinDirectoriesReady() {
|
||||
return directoryState == DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED;
|
||||
public static boolean areCitraDirectoriesReady() {
|
||||
return directoryState == DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED;
|
||||
}
|
||||
|
||||
public static String getUserDirectory() {
|
||||
if (directoryState == null) {
|
||||
throw new IllegalStateException("DirectoryInitialization has to run at least once!");
|
||||
} else if (isDolphinDirectoryInitializationRunning.get()) {
|
||||
} else if (isCitraDirectoryInitializationRunning.get()) {
|
||||
throw new IllegalStateException(
|
||||
"DirectoryInitialization has to finish running first!");
|
||||
}
|
||||
@ -91,7 +91,7 @@ public final class DirectoryInitialization {
|
||||
|
||||
private static native void SetSysDirectory(String path);
|
||||
|
||||
private static boolean setDolphinUserDirectory() {
|
||||
private static boolean setCitraUserDirectory() {
|
||||
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
|
||||
File externalPath = Environment.getExternalStorageDirectory();
|
||||
if (externalPath != null) {
|
||||
@ -113,7 +113,7 @@ public final class DirectoryInitialization {
|
||||
String revision = NativeLibrary.GetGitRevision();
|
||||
if (!preferences.getString("sysDirectoryVersion", "").equals(revision)) {
|
||||
// There is no extracted Sys directory, or there is a Sys directory from another
|
||||
// version of Dolphin that might contain outdated files. Let's (re-)extract Sys.
|
||||
// version of Citra that might contain outdated files. Let's (re-)extract Sys.
|
||||
deleteDirectoryRecursively(sysDirectory);
|
||||
copyAssetFolder("Sys", sysDirectory, true, context);
|
||||
|
||||
@ -183,7 +183,7 @@ public final class DirectoryInitialization {
|
||||
}
|
||||
|
||||
public enum DirectoryInitializationState {
|
||||
DOLPHIN_DIRECTORIES_INITIALIZED,
|
||||
CITRA_DIRECTORIES_INITIALIZED,
|
||||
EXTERNAL_STORAGE_PERMISSION_NEEDED,
|
||||
CANT_FIND_EXTERNAL_STORAGE
|
||||
}
|
||||
|
@ -1,134 +0,0 @@
|
||||
package org.citra.citra_emu.utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.hardware.usb.UsbConfiguration;
|
||||
import android.hardware.usb.UsbConstants;
|
||||
import android.hardware.usb.UsbDevice;
|
||||
import android.hardware.usb.UsbDeviceConnection;
|
||||
import android.hardware.usb.UsbEndpoint;
|
||||
import android.hardware.usb.UsbInterface;
|
||||
import android.hardware.usb.UsbManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.citra.citra_emu.NativeLibrary;
|
||||
import org.citra.citra_emu.services.USBPermService;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Java_GCAdapter {
|
||||
public static UsbManager manager;
|
||||
static byte[] controller_payload = new byte[37];
|
||||
|
||||
static UsbDeviceConnection usb_con;
|
||||
static UsbInterface usb_intf;
|
||||
static UsbEndpoint usb_in;
|
||||
static UsbEndpoint usb_out;
|
||||
|
||||
private static void RequestPermission() {
|
||||
Context context = NativeLibrary.sEmulationActivity.get();
|
||||
if (context != null) {
|
||||
HashMap<String, UsbDevice> devices = manager.getDeviceList();
|
||||
for (Map.Entry<String, UsbDevice> pair : devices.entrySet()) {
|
||||
UsbDevice dev = pair.getValue();
|
||||
if (dev.getProductId() == 0x0337 && dev.getVendorId() == 0x057e) {
|
||||
if (!manager.hasPermission(dev)) {
|
||||
Intent intent = new Intent();
|
||||
PendingIntent pend_intent;
|
||||
intent.setClass(context, USBPermService.class);
|
||||
pend_intent = PendingIntent.getService(context, 0, intent, 0);
|
||||
manager.requestPermission(dev, pend_intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.warning("Cannot request GameCube Adapter permission as EmulationActivity is null.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void Shutdown() {
|
||||
usb_con.close();
|
||||
}
|
||||
|
||||
public static int GetFD() {
|
||||
return usb_con.getFileDescriptor();
|
||||
}
|
||||
|
||||
public static boolean QueryAdapter() {
|
||||
HashMap<String, UsbDevice> devices = manager.getDeviceList();
|
||||
for (Map.Entry<String, UsbDevice> pair : devices.entrySet()) {
|
||||
UsbDevice dev = pair.getValue();
|
||||
if (dev.getProductId() == 0x0337 && dev.getVendorId() == 0x057e) {
|
||||
if (manager.hasPermission(dev))
|
||||
return true;
|
||||
else
|
||||
RequestPermission();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void InitAdapter() {
|
||||
byte[] init = {0x13};
|
||||
usb_con.bulkTransfer(usb_in, init, init.length, 0);
|
||||
}
|
||||
|
||||
public static int Input() {
|
||||
return usb_con.bulkTransfer(usb_in, controller_payload, controller_payload.length, 16);
|
||||
}
|
||||
|
||||
public static int Output(byte[] rumble) {
|
||||
return usb_con.bulkTransfer(usb_out, rumble, 5, 16);
|
||||
}
|
||||
|
||||
public static boolean OpenAdapter() {
|
||||
HashMap<String, UsbDevice> devices = manager.getDeviceList();
|
||||
for (Map.Entry<String, UsbDevice> pair : devices.entrySet()) {
|
||||
UsbDevice dev = pair.getValue();
|
||||
if (dev.getProductId() == 0x0337 && dev.getVendorId() == 0x057e) {
|
||||
if (manager.hasPermission(dev)) {
|
||||
usb_con = manager.openDevice(dev);
|
||||
|
||||
Log.info("GCAdapter: Number of configurations: " + dev.getConfigurationCount());
|
||||
Log.info("GCAdapter: Number of interfaces: " + dev.getInterfaceCount());
|
||||
|
||||
if (dev.getConfigurationCount() > 0 && dev.getInterfaceCount() > 0) {
|
||||
UsbConfiguration conf = dev.getConfiguration(0);
|
||||
usb_intf = conf.getInterface(0);
|
||||
usb_con.claimInterface(usb_intf, true);
|
||||
|
||||
Log.info("GCAdapter: Number of endpoints: " + usb_intf.getEndpointCount());
|
||||
|
||||
if (usb_intf.getEndpointCount() == 2) {
|
||||
for (int i = 0; i < usb_intf.getEndpointCount(); ++i)
|
||||
if (usb_intf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN)
|
||||
usb_in = usb_intf.getEndpoint(i);
|
||||
else
|
||||
usb_out = usb_intf.getEndpoint(i);
|
||||
|
||||
InitAdapter();
|
||||
return true;
|
||||
} else {
|
||||
usb_con.releaseInterface(usb_intf);
|
||||
}
|
||||
}
|
||||
|
||||
final Activity emulationActivity = NativeLibrary.sEmulationActivity.get();
|
||||
if (emulationActivity != null) {
|
||||
emulationActivity.runOnUiThread(() -> Toast.makeText(emulationActivity,
|
||||
"GameCube Adapter couldn't be opened. Please re-plug the device.",
|
||||
Toast.LENGTH_LONG).show());
|
||||
} else {
|
||||
Log.warning("Cannot show toast for GameCube Adapter failure.");
|
||||
}
|
||||
usb_con.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -36,8 +36,4 @@ public final class Log {
|
||||
public static void error(String message) {
|
||||
android.util.Log.e(TAG, message);
|
||||
}
|
||||
|
||||
public static void wtf(String message) {
|
||||
android.util.Log.wtf(TAG, message);
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ final class SettingsSectionMap extends HashMap<String, SettingSection> {
|
||||
* Contains static methods for interacting with .ini files in which settings are stored.
|
||||
*/
|
||||
public final class SettingsFile {
|
||||
public static final int SETTINGS_DOLPHIN = 0;
|
||||
public static final int SETTINGS_CITRA = 0;
|
||||
|
||||
public static final String FILE_NAME_CONFIG = "config";
|
||||
|
||||
@ -186,15 +186,13 @@ public final class SettingsFile {
|
||||
* @param fileName The target filename without a path or extension.
|
||||
* @param sections The HashMap containing the Settings we want to serialize.
|
||||
* @param view The current view.
|
||||
* @return An Observable representing the operation.
|
||||
*/
|
||||
public static void saveFile(final String fileName, final HashMap<String, SettingSection> sections,
|
||||
SettingsActivityView view) {
|
||||
File ini = getSettingsFile(fileName);
|
||||
|
||||
Wini writer = null;
|
||||
try {
|
||||
writer = new Wini(ini);
|
||||
Wini writer = new Wini(ini);
|
||||
|
||||
Set<String> keySet = sections.keySet();
|
||||
for (String key : keySet) {
|
||||
@ -244,17 +242,17 @@ public final class SettingsFile {
|
||||
return null;
|
||||
}
|
||||
|
||||
int file = SETTINGS_DOLPHIN;
|
||||
int file = SETTINGS_CITRA;
|
||||
|
||||
try {
|
||||
int valueAsInt = Integer.valueOf(value);
|
||||
int valueAsInt = Integer.parseInt(value);
|
||||
|
||||
return new IntSetting(key, current.getName(), file, valueAsInt);
|
||||
} catch (NumberFormatException ex) {
|
||||
}
|
||||
|
||||
try {
|
||||
float valueAsFloat = Float.valueOf(value);
|
||||
float valueAsFloat = Float.parseFloat(value);
|
||||
|
||||
return new FloatSetting(key, current.getName(), file, valueAsFloat);
|
||||
} catch (NumberFormatException ex) {
|
||||
|
@ -187,7 +187,6 @@ enable_dsp_lle =
|
||||
# 0 (default): No, 1: Yes
|
||||
enable_dsp_lle_thread =
|
||||
|
||||
|
||||
# Which audio output engine to use.
|
||||
# auto (default): Auto-select, null: No audio output, sdl2: SDL2 (if available)
|
||||
output_engine =
|
||||
|
@ -10,7 +10,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<org.citra.citra_emu.ui.NVidiaShieldWorkaroundView
|
||||
<org.citra.citra_emu.ui.NvidiaShieldWorkaroundView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<code_scheme name="Dolphin-Java" version="173">
|
||||
<code_scheme name="Citra-Java" version="173">
|
||||
<option name="OTHER_INDENT_OPTIONS">
|
||||
<value>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user