1056 lines
44 KiB
Java
1056 lines
44 KiB
Java
/*
|
|
* Apple // emulator for *nix
|
|
*
|
|
* This software package is subject to the GNU General Public License
|
|
* version 3 or later (your choice) as published by the Free Software
|
|
* Foundation.
|
|
*
|
|
* Copyright 2015 Aaron Culliney
|
|
*
|
|
*/
|
|
|
|
package org.deadc0de.apple2ix;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.util.Log;
|
|
|
|
import java.io.File;
|
|
|
|
import org.deadc0de.apple2ix.basic.R;
|
|
|
|
public enum Apple2Preferences {
|
|
FIRST_TIME_CONFIGURED {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public void saveBoolean(Apple2Activity activity, boolean ignored) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), true).apply();
|
|
}
|
|
},
|
|
CURRENT_DISK_PATH {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
Apple2MainMenu mainMenu = activity.getMainMenu();
|
|
if (mainMenu != null) {
|
|
mainMenu.getDisksMenu().setPathStackJSON(stringValue(activity));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String stringValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getString(toString(), "[]");
|
|
}
|
|
|
|
@Override
|
|
public void saveString(Apple2Activity activity, String value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putString(toString(), value).apply();
|
|
//load(activity);
|
|
}
|
|
},
|
|
CURRENT_DRIVE_A_BUTTON {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
|
|
@Override
|
|
public void saveBoolean(Apple2Activity activity, boolean value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), value).apply();
|
|
//load(activity);
|
|
}
|
|
},
|
|
CURRENT_DISK_RO_BUTTON {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
|
|
@Override
|
|
public void saveBoolean(Apple2Activity activity, boolean value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), value).apply();
|
|
//load(activity);
|
|
}
|
|
},
|
|
CURRENT_DISK_A {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
insertDisk(activity, stringValue(activity), /*driveA:*/true, /*readOnly:*/CURRENT_DISK_A_RO.booleanValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public String stringValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getString(toString(), "");
|
|
}
|
|
|
|
@Override
|
|
public void saveString(Apple2Activity activity, String str) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putString(toString(), str).apply();
|
|
load(activity);
|
|
}
|
|
},
|
|
CURRENT_DISK_A_RO {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
|
|
@Override
|
|
public void saveBoolean(Apple2Activity activity, boolean value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), value).apply();
|
|
//load(activity);
|
|
}
|
|
},
|
|
CURRENT_DISK_B {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
insertDisk(activity, stringValue(activity), /*driveA:*/false, /*readOnly:*/CURRENT_DISK_B_RO.booleanValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public String stringValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getString(toString(), "");
|
|
}
|
|
|
|
@Override
|
|
public void saveString(Apple2Activity activity, String str) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putString(toString(), str).apply();
|
|
load(activity);
|
|
}
|
|
},
|
|
CURRENT_DISK_B_RO {
|
|
@Override
|
|
public void load(final Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
|
|
@Override
|
|
public void saveBoolean(Apple2Activity activity, boolean value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), value).apply();
|
|
//load(activity);
|
|
}
|
|
},
|
|
CPU_SPEED_PERCENT {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeSetCPUSpeed(intValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 100);
|
|
}
|
|
},
|
|
HIRES_COLOR {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeSetColor(intValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), HiresColor.INTERPOLATED.ordinal());
|
|
}
|
|
},
|
|
SPEAKER_ENABLED {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
boolean enabled = booleanValue(activity);
|
|
boolean result = nativeSetSpeakerEnabled(enabled);
|
|
if (enabled && !result) {
|
|
warnError(activity, R.string.speaker_disabled_title, R.string.speaker_disabled_mesg);
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), false).apply();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
},
|
|
SPEAKER_VOLUME {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeSetSpeakerVolume(intValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), Volume.MEDIUM.ordinal());
|
|
}
|
|
},
|
|
MOCKINGBOARD_ENABLED {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
boolean enabled = booleanValue(activity);
|
|
boolean result = nativeSetMockingboardEnabled(enabled);
|
|
if (enabled && !result) {
|
|
warnError(activity, R.string.mockingboard_disabled_title, R.string.mockingboard_disabled_mesg);
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), false).apply();
|
|
}
|
|
}
|
|
},
|
|
MOCKINGBOARD_VOLUME {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeSetMockingboardVolume(intValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), Volume.MEDIUM.ordinal());
|
|
}
|
|
},
|
|
AUDIO_LATENCY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int tick = intValue(activity);
|
|
nativeSetAudioLatency(((float) tick / AUDIO_LATENCY_NUM_CHOICES));
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
|
|
int defaultLatency = 0;
|
|
int sampleRateCanary = DevicePropertyCalculator.getRecommendedSampleRate(activity);
|
|
if (sampleRateCanary == DevicePropertyCalculator.defaultSampleRate) {
|
|
// quite possibly an audio-challenged device
|
|
defaultLatency = 8; // /AUDIO_LATENCY_NUM_CHOICES -> 0.4f
|
|
} else {
|
|
// reasonable default for high-end devices
|
|
defaultLatency = 5; // /AUDIO_LATENCY_NUM_CHOICES -> 0.25f
|
|
}
|
|
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), defaultLatency);
|
|
}
|
|
},
|
|
CURRENT_TOUCH_DEVICE {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int intVariant = intValue(activity);
|
|
nativeSetCurrentTouchDevice(intVariant);
|
|
TouchDeviceVariant variant = TouchDeviceVariant.values()[intVariant];
|
|
switch (variant) {
|
|
case JOYSTICK:
|
|
loadAllJoystickButtons(activity);
|
|
break;
|
|
case JOYSTICK_KEYPAD:
|
|
loadAllKeypadKeys(activity);
|
|
break;
|
|
case KEYBOARD:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), TouchDeviceVariant.KEYBOARD.ordinal());
|
|
}
|
|
},
|
|
TOUCH_MENU_ENABLED {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
boolean enabled = booleanValue(activity);
|
|
nativeSetTouchMenuEnabled(enabled);
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
},
|
|
TOUCH_MENU_VISIBILITY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int setting = intValue(activity);
|
|
float alpha = (float) setting / AUDIO_LATENCY_NUM_CHOICES;
|
|
nativeSetTouchMenuVisibility(alpha);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 5);
|
|
}
|
|
},
|
|
JOYSTICK_AXIS_SENSITIVIY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
float sensitivity = floatValue(activity);
|
|
nativeSetTouchJoystickAxisSensitivity(sensitivity);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
final int pivot = JOYSTICK_AXIS_SENSITIVITY_DEC_NUMCHOICES;
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), pivot);
|
|
}
|
|
|
|
@Override
|
|
public float floatValue(Apple2Activity activity) {
|
|
int tick = intValue(activity);
|
|
final int pivot = JOYSTICK_AXIS_SENSITIVITY_DEC_NUMCHOICES;
|
|
float sensitivity = 1.f;
|
|
if (tick < pivot) {
|
|
int decAmount = (pivot - tick);
|
|
sensitivity -= (JOYSTICK_AXIS_SENSITIVITY_DEC_STEP * decAmount);
|
|
} else if (tick > pivot) {
|
|
int incAmount = (tick - pivot);
|
|
sensitivity += (JOYSTICK_AXIS_SENSITIVITY_INC_STEP * incAmount);
|
|
}
|
|
return sensitivity;
|
|
}
|
|
},
|
|
JOYSTICK_BUTTON_THRESHOLD {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int tick = intValue(activity);
|
|
nativeSetTouchJoystickButtonSwitchThreshold(tick * JOYSTICK_BUTTON_THRESHOLD_STEP);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 5);
|
|
}
|
|
},
|
|
JOYSTICK_TAP_BUTTON {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllJoystickButtons(activity);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), TouchJoystickButtons.BUTTON1.ordinal());
|
|
}
|
|
},
|
|
JOYSTICK_TAPDELAY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int tick = intValue(activity);
|
|
nativeSetTouchJoystickTapDelay(((float) tick / TAPDELAY_NUM_CHOICES) * TAPDELAY_SCALE);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
int defaultLatency = 3; // /TAPDELAY_NUM_CHOICES * TAPDELAY_SCALE -> 0.075f
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), defaultLatency);
|
|
}
|
|
},
|
|
JOYSTICK_SWIPEUP_BUTTON {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllJoystickButtons(activity);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), TouchJoystickButtons.BOTH.ordinal());
|
|
}
|
|
},
|
|
JOYSTICK_SWIPEDOWN_BUTTON {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllJoystickButtons(activity);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), TouchJoystickButtons.BUTTON2.ordinal());
|
|
}
|
|
},
|
|
JOYSTICK_AXIS_ON_LEFT {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeTouchJoystickSetAxisOnLeft(booleanValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
},
|
|
JOYSTICK_DIVIDER {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int tick = intValue(activity);
|
|
nativeTouchJoystickSetScreenDivision(((float) tick / JOYSTICK_DIVIDER_NUM_CHOICES));
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), JOYSTICK_DIVIDER_NUM_CHOICES >> 1);
|
|
}
|
|
},
|
|
JOYSTICK_VISIBILITY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeSetTouchJoystickVisibility(booleanValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
},
|
|
KEYPAD_KEYS {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), KeypadPreset.IJKM_SPACE.ordinal() + 1);
|
|
}
|
|
},
|
|
KEYPAD_NORTHWEST_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_NORTH_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_NORTHEAST_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_WEST_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_CENTER_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_EAST_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_SOUTHWEST_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_SOUTH_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_SOUTHEAST_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_TAP_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_SWIPEUP_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYPAD_SWIPEDOWN_KEY {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
loadAllKeypadKeys(activity);
|
|
}
|
|
},
|
|
KEYREPEAT_THRESHOLD {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int tick = intValue(activity);
|
|
nativeSetTouchDeviceKeyRepeatThreshold((float) tick / KEYREPEAT_NUM_CHOICES);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
int defaultLatency = KEYREPEAT_NUM_CHOICES / 4;
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), defaultLatency);
|
|
}
|
|
},
|
|
KEYBOARD_ALT {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
/* ... */
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 0);
|
|
}
|
|
},
|
|
KEYBOARD_ALT_PATH {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
nativeLoadTouchKeyboardJSON(stringValue(activity));
|
|
}
|
|
|
|
@Override
|
|
public String stringValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getString(toString(), "");
|
|
}
|
|
},
|
|
KEYBOARD_VISIBILITY_ACTIVE {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int inactiveTick = KEYBOARD_VISIBILITY_INACTIVE.intValue(activity);
|
|
int activeTick = intValue(activity);
|
|
nativeSetTouchKeyboardVisibility((float) inactiveTick / ALPHA_SLIDER_NUM_CHOICES, (float) activeTick / ALPHA_SLIDER_NUM_CHOICES);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), ALPHA_SLIDER_NUM_CHOICES);
|
|
}
|
|
},
|
|
KEYBOARD_VISIBILITY_INACTIVE {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
int inactiveTick = intValue(activity);
|
|
int activeTick = KEYBOARD_VISIBILITY_ACTIVE.intValue(activity);
|
|
nativeSetTouchKeyboardVisibility((float) inactiveTick / ALPHA_SLIDER_NUM_CHOICES, (float) activeTick / ALPHA_SLIDER_NUM_CHOICES);
|
|
}
|
|
|
|
@Override
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 5);
|
|
}
|
|
},
|
|
KEYBOARD_LOWERCASE_ENABLED {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
boolean enabled = booleanValue(activity);
|
|
nativeSetTouchKeyboardLowercaseEnabled(enabled);
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), false);
|
|
}
|
|
},
|
|
KEYBOARD_CLICK_ENABLED {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
boolean enabled = booleanValue(activity);
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
},
|
|
CRASH_CHECK {
|
|
@Override
|
|
public void load(Apple2Activity activity) {
|
|
boolean enabled = booleanValue(activity);
|
|
}
|
|
|
|
@Override
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
|
|
}
|
|
};
|
|
|
|
public enum HiresColor {
|
|
BW,
|
|
COLOR,
|
|
INTERPOLATED
|
|
}
|
|
|
|
public enum Volume {
|
|
OFF(0),
|
|
ONE(1),
|
|
TWO(2),
|
|
THREE(3),
|
|
FOUR(4),
|
|
MEDIUM(5),
|
|
FIVE(5),
|
|
SIX(6),
|
|
SEVEN(7),
|
|
EIGHT(8),
|
|
NINE(9),
|
|
MAX(10),
|
|
ELEVEN(11);
|
|
private int vol;
|
|
|
|
Volume(int vol) {
|
|
this.vol = vol;
|
|
}
|
|
}
|
|
|
|
public enum TouchDeviceVariant {
|
|
NONE(0),
|
|
JOYSTICK(1),
|
|
JOYSTICK_KEYPAD(2),
|
|
KEYBOARD(3);
|
|
private int dev;
|
|
|
|
public static final int size = TouchDeviceVariant.values().length;
|
|
|
|
TouchDeviceVariant(int dev) {
|
|
this.dev = dev;
|
|
}
|
|
|
|
static TouchDeviceVariant next(int ord) {
|
|
++ord;
|
|
if (ord >= size) {
|
|
ord = 1;
|
|
}
|
|
return TouchDeviceVariant.values()[ord];
|
|
}
|
|
}
|
|
|
|
public enum TouchJoystickButtons {
|
|
NONE(0),
|
|
BUTTON1(1),
|
|
BUTTON2(2),
|
|
BOTH(3);
|
|
private int butt;
|
|
|
|
TouchJoystickButtons(int butt) {
|
|
this.butt = butt;
|
|
}
|
|
}
|
|
|
|
public enum KeypadPreset {
|
|
ARROWS_SPACE {
|
|
@Override
|
|
public String getTitle(Apple2Activity activity) {
|
|
return activity.getResources().getString(R.string.keypad_preset_arrows_space);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Apple2Activity activity) {
|
|
Apple2Preferences.KEYPAD_NORTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_NORTH_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_UP, Apple2KeyboardSettingsMenu.SCANCODE_UP);
|
|
Apple2Preferences.KEYPAD_NORTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_WEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_LEFT, Apple2KeyboardSettingsMenu.SCANCODE_LEFT);
|
|
Apple2Preferences.KEYPAD_CENTER_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_EAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_RIGHT, Apple2KeyboardSettingsMenu.SCANCODE_RIGHT);
|
|
Apple2Preferences.KEYPAD_SOUTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SOUTH_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_DOWN, Apple2KeyboardSettingsMenu.SCANCODE_DOWN);
|
|
Apple2Preferences.KEYPAD_SOUTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_TAP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_VISUAL_SPACE, Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
Apple2Preferences.KEYPAD_SWIPEDOWN_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SWIPEUP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
}
|
|
},
|
|
AZ_LEFT_RIGHT_SPACE {
|
|
@Override
|
|
public String getTitle(Apple2Activity activity) {
|
|
return activity.getResources().getString(R.string.keypad_preset_az_left_right_space);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Apple2Activity activity) {
|
|
Apple2Preferences.KEYPAD_NORTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_NORTH_KEY.saveChosenKey(activity, (char) 'A', Apple2KeyboardSettingsMenu.SCANCODE_A);
|
|
Apple2Preferences.KEYPAD_NORTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_WEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_LEFT, Apple2KeyboardSettingsMenu.SCANCODE_LEFT);
|
|
Apple2Preferences.KEYPAD_CENTER_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_EAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_RIGHT, Apple2KeyboardSettingsMenu.SCANCODE_RIGHT);
|
|
Apple2Preferences.KEYPAD_SOUTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SOUTH_KEY.saveChosenKey(activity, (char) 'Z', Apple2KeyboardSettingsMenu.SCANCODE_Z);
|
|
Apple2Preferences.KEYPAD_SOUTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_TAP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_VISUAL_SPACE, Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
Apple2Preferences.KEYPAD_SWIPEDOWN_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SWIPEUP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
}
|
|
},
|
|
LEFT_RIGHT_SPACE {
|
|
@Override
|
|
public String getTitle(Apple2Activity activity) {
|
|
return activity.getResources().getString(R.string.keypad_preset_left_right_space);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Apple2Activity activity) {
|
|
Apple2Preferences.KEYPAD_NORTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_NORTH_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_NORTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_WEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_LEFT, Apple2KeyboardSettingsMenu.SCANCODE_LEFT);
|
|
Apple2Preferences.KEYPAD_CENTER_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_EAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.MOUSETEXT_RIGHT, Apple2KeyboardSettingsMenu.SCANCODE_RIGHT);
|
|
Apple2Preferences.KEYPAD_SOUTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SOUTH_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SOUTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_TAP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_VISUAL_SPACE, Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
Apple2Preferences.KEYPAD_SWIPEDOWN_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SWIPEUP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
}
|
|
},
|
|
IJKM_SPACE {
|
|
@Override
|
|
public String getTitle(Apple2Activity activity) {
|
|
return activity.getResources().getString(R.string.keypad_preset_ijkm_space);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Apple2Activity activity) {
|
|
Apple2Preferences.KEYPAD_NORTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_NORTH_KEY.saveChosenKey(activity, (char) 'I', Apple2KeyboardSettingsMenu.SCANCODE_I);
|
|
Apple2Preferences.KEYPAD_NORTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_WEST_KEY.saveChosenKey(activity, (char) 'J', Apple2KeyboardSettingsMenu.SCANCODE_J);
|
|
Apple2Preferences.KEYPAD_CENTER_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_EAST_KEY.saveChosenKey(activity, (char) 'K', Apple2KeyboardSettingsMenu.SCANCODE_K);
|
|
Apple2Preferences.KEYPAD_SOUTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SOUTH_KEY.saveChosenKey(activity, (char) 'M', Apple2KeyboardSettingsMenu.SCANCODE_M);
|
|
Apple2Preferences.KEYPAD_SOUTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_TAP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_VISUAL_SPACE, Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
Apple2Preferences.KEYPAD_SWIPEDOWN_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SWIPEUP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
}
|
|
},
|
|
WADX_SPACE {
|
|
@Override
|
|
public String getTitle(Apple2Activity activity) {
|
|
return activity.getResources().getString(R.string.keypad_preset_wadx_space);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Apple2Activity activity) {
|
|
Apple2Preferences.KEYPAD_NORTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_NORTH_KEY.saveChosenKey(activity, (char) 'W', Apple2KeyboardSettingsMenu.SCANCODE_W);
|
|
Apple2Preferences.KEYPAD_NORTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_WEST_KEY.saveChosenKey(activity, (char) 'A', Apple2KeyboardSettingsMenu.SCANCODE_A);
|
|
Apple2Preferences.KEYPAD_CENTER_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_EAST_KEY.saveChosenKey(activity, (char) 'D', Apple2KeyboardSettingsMenu.SCANCODE_D);
|
|
Apple2Preferences.KEYPAD_SOUTHWEST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SOUTH_KEY.saveChosenKey(activity, (char) 'X', Apple2KeyboardSettingsMenu.SCANCODE_X);
|
|
Apple2Preferences.KEYPAD_SOUTHEAST_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_TAP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_VISUAL_SPACE, Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
Apple2Preferences.KEYPAD_SWIPEDOWN_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
Apple2Preferences.KEYPAD_SWIPEUP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_NONACTION, -1);
|
|
}
|
|
},
|
|
CRAZY_SEAFOX_KEYS {
|
|
@Override
|
|
public String getTitle(Apple2Activity activity) {
|
|
return activity.getResources().getString(R.string.keypad_preset_crazy_seafox);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Apple2Activity activity) {
|
|
// Heh, the entire purpose of the keypad-variant touch joystick is to make this possible ;-)
|
|
Apple2Preferences.KEYPAD_NORTHWEST_KEY.saveChosenKey(activity, (char) 'Y', Apple2KeyboardSettingsMenu.SCANCODE_Y);
|
|
Apple2Preferences.KEYPAD_NORTH_KEY.saveChosenKey(activity, (char) 'U', Apple2KeyboardSettingsMenu.SCANCODE_U);
|
|
Apple2Preferences.KEYPAD_NORTHEAST_KEY.saveChosenKey(activity, (char) 'I', Apple2KeyboardSettingsMenu.SCANCODE_I);
|
|
Apple2Preferences.KEYPAD_WEST_KEY.saveChosenKey(activity, (char) 'H', Apple2KeyboardSettingsMenu.SCANCODE_H);
|
|
Apple2Preferences.KEYPAD_CENTER_KEY.saveChosenKey(activity, (char) 'J', Apple2KeyboardSettingsMenu.SCANCODE_J);
|
|
Apple2Preferences.KEYPAD_EAST_KEY.saveChosenKey(activity, (char) 'K', Apple2KeyboardSettingsMenu.SCANCODE_K);
|
|
Apple2Preferences.KEYPAD_SOUTHWEST_KEY.saveChosenKey(activity, (char) 'N', Apple2KeyboardSettingsMenu.SCANCODE_N);
|
|
Apple2Preferences.KEYPAD_SOUTH_KEY.saveChosenKey(activity, (char) 'M', Apple2KeyboardSettingsMenu.SCANCODE_M);
|
|
Apple2Preferences.KEYPAD_SOUTHEAST_KEY.saveChosenKey(activity, (char) ',', Apple2KeyboardSettingsMenu.SCANCODE_COMMA);
|
|
Apple2Preferences.KEYPAD_TAP_KEY.saveChosenKey(activity, (char) 'D', Apple2KeyboardSettingsMenu.SCANCODE_D);
|
|
Apple2Preferences.KEYPAD_SWIPEDOWN_KEY.saveChosenKey(activity, (char) 'F', Apple2KeyboardSettingsMenu.SCANCODE_F);
|
|
Apple2Preferences.KEYPAD_SWIPEUP_KEY.saveChosenKey(activity, (char) Apple2KeyboardSettingsMenu.ICONTEXT_VISUAL_SPACE, Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
}
|
|
};
|
|
|
|
public abstract String getTitle(Apple2Activity activity);
|
|
|
|
public abstract void apply(Apple2Activity activity);
|
|
|
|
public static final int size = KeypadPreset.values().length;
|
|
|
|
public static String[] titles(Apple2Activity activity) {
|
|
String[] titles = new String[size];
|
|
int i = 0;
|
|
for (KeypadPreset preset : values()) {
|
|
titles[i++] = preset.getTitle(activity);
|
|
}
|
|
return titles;
|
|
}
|
|
}
|
|
|
|
public final static int DECENT_AMOUNT_OF_CHOICES = 20;
|
|
public final static int AUDIO_LATENCY_NUM_CHOICES = DECENT_AMOUNT_OF_CHOICES;
|
|
public final static int ALPHA_SLIDER_NUM_CHOICES = DECENT_AMOUNT_OF_CHOICES;
|
|
public final static int JOYSTICK_DIVIDER_NUM_CHOICES = DECENT_AMOUNT_OF_CHOICES;
|
|
|
|
public final static int TAPDELAY_NUM_CHOICES = DECENT_AMOUNT_OF_CHOICES;
|
|
public final static float TAPDELAY_SCALE = 0.5f;
|
|
|
|
public final static int KEYREPEAT_NUM_CHOICES = DECENT_AMOUNT_OF_CHOICES;
|
|
|
|
public final static String TAG = "Apple2Preferences";
|
|
|
|
public final static int JOYSTICK_BUTTON_THRESHOLD_NUM_CHOICES = DECENT_AMOUNT_OF_CHOICES;
|
|
public final static int JOYSTICK_BUTTON_THRESHOLD_STEP = 5;
|
|
|
|
public final static float JOYSTICK_AXIS_SENSITIVITY_MIN = 0.25f;
|
|
public final static float JOYSTICK_AXIS_SENSITIVITY_DEFAULT = 1.f;
|
|
public final static float JOYSTICK_AXIS_SENSITIVITY_MAX = 4.f;
|
|
public final static float JOYSTICK_AXIS_SENSITIVITY_DEC_STEP = 0.05f;
|
|
public final static float JOYSTICK_AXIS_SENSITIVITY_INC_STEP = 0.25f;
|
|
public final static int JOYSTICK_AXIS_SENSITIVITY_DEC_NUMCHOICES = (int) ((JOYSTICK_AXIS_SENSITIVITY_DEFAULT - JOYSTICK_AXIS_SENSITIVITY_MIN) / JOYSTICK_AXIS_SENSITIVITY_DEC_STEP); // 15
|
|
public final static int JOYSTICK_AXIS_SENSITIVITY_INC_NUMCHOICES = (int) ((JOYSTICK_AXIS_SENSITIVITY_MAX - JOYSTICK_AXIS_SENSITIVITY_DEFAULT) / JOYSTICK_AXIS_SENSITIVITY_INC_STEP); // 12
|
|
public final static int JOYSTICK_AXIS_SENSITIVITY_NUM_CHOICES = JOYSTICK_AXIS_SENSITIVITY_DEC_NUMCHOICES + JOYSTICK_AXIS_SENSITIVITY_INC_NUMCHOICES; // 15 + 12
|
|
|
|
// set and apply
|
|
|
|
public void saveBoolean(Apple2Activity activity, boolean value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putBoolean(toString(), value).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveInt(Apple2Activity activity, int value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(toString(), value).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveFloat(Apple2Activity activity, float value) {
|
|
throw new RuntimeException("DENIED! You're doing it wrong! =P");
|
|
}
|
|
|
|
public void saveString(Apple2Activity activity, String value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putString(toString(), value).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveHiresColor(Apple2Activity activity, HiresColor value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(toString(), value.ordinal()).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveVolume(Apple2Activity activity, Volume value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(toString(), value.ordinal()).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveTouchDevice(Apple2Activity activity, TouchDeviceVariant value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(toString(), value.ordinal()).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveTouchJoystickButtons(Apple2Activity activity, TouchJoystickButtons value) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(toString(), value.ordinal()).apply();
|
|
load(activity);
|
|
}
|
|
|
|
public void saveChosenKey(Apple2Activity activity, char ascii, int scancode) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(asciiString(), ascii).apply();
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().putInt(scancodeString(), scancode).apply();
|
|
load(activity);
|
|
}
|
|
|
|
// accessors
|
|
|
|
public boolean booleanValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), false);
|
|
}
|
|
|
|
public int intValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 0);
|
|
}
|
|
|
|
public float floatValue(Apple2Activity activity) {
|
|
return (float) activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), 0);
|
|
}
|
|
|
|
public String stringValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getString(toString(), null);
|
|
}
|
|
|
|
public char asciiValue(Apple2Activity activity) {
|
|
return (char) activity.getPreferences(Context.MODE_PRIVATE).getInt(asciiString(), ' ');
|
|
}
|
|
|
|
public int scancodeValue(Apple2Activity activity) {
|
|
return activity.getPreferences(Context.MODE_PRIVATE).getInt(scancodeString(), Apple2KeyboardSettingsMenu.SCANCODE_SPACE);
|
|
}
|
|
|
|
public static void loadPreferences(Apple2Activity activity) {
|
|
for (Apple2Preferences pref : Apple2Preferences.values()) {
|
|
pref.load(activity);
|
|
}
|
|
}
|
|
|
|
public static void resetPreferences(Apple2Activity activity) {
|
|
activity.getPreferences(Context.MODE_PRIVATE).edit().clear().commit();
|
|
FIRST_TIME_CONFIGURED.saveBoolean(activity, true);
|
|
KeypadPreset.IJKM_SPACE.apply(activity);
|
|
loadPreferences(activity);
|
|
}
|
|
|
|
public String asciiString() {
|
|
return toString() + "_ASCII";
|
|
}
|
|
|
|
public String scancodeString() {
|
|
return toString() + "_SCAN";
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
// internals ...
|
|
|
|
protected abstract void load(Apple2Activity activity);
|
|
|
|
protected static void warnError(Apple2Activity activity, int titleId, int mesgId) {
|
|
AlertDialog dialog = new AlertDialog.Builder(activity).setIcon(R.drawable.ic_launcher).setCancelable(true).setTitle(titleId).setMessage(mesgId).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
dialog.dismiss();
|
|
}
|
|
}).create();
|
|
activity.registerAndShowDialog(dialog);
|
|
}
|
|
|
|
public static void loadAllKeypadKeys(Apple2Activity activity) {
|
|
int[] rosetteChars = new int[]{
|
|
KEYPAD_NORTHWEST_KEY.asciiValue(activity),
|
|
KEYPAD_NORTH_KEY.asciiValue(activity),
|
|
KEYPAD_NORTHEAST_KEY.asciiValue(activity),
|
|
KEYPAD_WEST_KEY.asciiValue(activity),
|
|
KEYPAD_CENTER_KEY.asciiValue(activity),
|
|
KEYPAD_EAST_KEY.asciiValue(activity),
|
|
KEYPAD_SOUTHWEST_KEY.asciiValue(activity),
|
|
KEYPAD_SOUTH_KEY.asciiValue(activity),
|
|
KEYPAD_SOUTHEAST_KEY.asciiValue(activity),
|
|
};
|
|
int[] rosetteScancodes = new int[]{
|
|
KEYPAD_NORTHWEST_KEY.scancodeValue(activity),
|
|
KEYPAD_NORTH_KEY.scancodeValue(activity),
|
|
KEYPAD_NORTHEAST_KEY.scancodeValue(activity),
|
|
KEYPAD_WEST_KEY.scancodeValue(activity),
|
|
KEYPAD_CENTER_KEY.scancodeValue(activity),
|
|
KEYPAD_EAST_KEY.scancodeValue(activity),
|
|
KEYPAD_SOUTHWEST_KEY.scancodeValue(activity),
|
|
KEYPAD_SOUTH_KEY.scancodeValue(activity),
|
|
KEYPAD_SOUTHEAST_KEY.scancodeValue(activity),
|
|
};
|
|
int[] buttonsChars = new int[]{
|
|
KEYPAD_TAP_KEY.asciiValue(activity),
|
|
KEYPAD_SWIPEUP_KEY.asciiValue(activity),
|
|
KEYPAD_SWIPEDOWN_KEY.asciiValue(activity),
|
|
};
|
|
int[] buttonsScancodes = new int[]{
|
|
KEYPAD_TAP_KEY.scancodeValue(activity),
|
|
KEYPAD_SWIPEUP_KEY.scancodeValue(activity),
|
|
KEYPAD_SWIPEDOWN_KEY.scancodeValue(activity),
|
|
};
|
|
nativeTouchJoystickSetKeypadTypes(rosetteChars, rosetteScancodes, buttonsChars, buttonsScancodes);
|
|
}
|
|
|
|
public static void loadAllJoystickButtons(Apple2Activity activity) {
|
|
nativeSetTouchJoystickButtonTypes(
|
|
JOYSTICK_TAP_BUTTON.intValue(activity),
|
|
JOYSTICK_SWIPEUP_BUTTON.intValue(activity),
|
|
JOYSTICK_SWIPEDOWN_BUTTON.intValue(activity));
|
|
}
|
|
|
|
public static void insertDisk(Apple2Activity activity, String fullPath, boolean isDriveA, boolean isReadOnly) {
|
|
File file = new File(fullPath);
|
|
if (!file.exists()) {
|
|
fullPath = fullPath + ".gz";
|
|
file = new File(fullPath);
|
|
}
|
|
if (file.exists()) {
|
|
activity.nativeChooseDisk(fullPath, isDriveA, isReadOnly);
|
|
} else {
|
|
Log.d(TAG, "Cannot insert: " + fullPath);
|
|
}
|
|
}
|
|
|
|
// native hooks
|
|
|
|
private static native void nativeSetColor(int color);
|
|
|
|
private static native boolean nativeSetSpeakerEnabled(boolean enabled);
|
|
|
|
private static native void nativeSetSpeakerVolume(int volume);
|
|
|
|
private static native boolean nativeSetMockingboardEnabled(boolean enabled);
|
|
|
|
private static native void nativeSetMockingboardVolume(int volume);
|
|
|
|
private static native void nativeSetAudioLatency(float latencySecs);
|
|
|
|
public static native void nativeSetCurrentTouchDevice(int device);
|
|
|
|
private static native void nativeSetTouchJoystickButtonTypes(int down, int north, int south);
|
|
|
|
private static native void nativeSetTouchJoystickTapDelay(float secs);
|
|
|
|
private static native void nativeSetTouchJoystickAxisSensitivity(float multiplier);
|
|
|
|
private static native void nativeSetTouchJoystickButtonSwitchThreshold(int delta);
|
|
|
|
private static native void nativeSetTouchJoystickVisibility(boolean visibility);
|
|
|
|
public static native void nativeSetTouchMenuEnabled(boolean enabled);
|
|
|
|
private static native void nativeSetTouchMenuVisibility(float alpha);
|
|
|
|
private static native void nativeSetTouchKeyboardVisibility(float inactiveAlpha, float activeAlpha);
|
|
|
|
private static native void nativeSetTouchKeyboardLowercaseEnabled(boolean enabled);
|
|
|
|
public static native int nativeGetCurrentTouchDevice();
|
|
|
|
public static native int nativeGetCPUSpeed();
|
|
|
|
public static native void nativeSetCPUSpeed(int percentSpeed);
|
|
|
|
public static native void nativeTouchJoystickSetScreenDivision(float division);
|
|
|
|
public static native void nativeTouchJoystickSetAxisOnLeft(boolean axisIsOnLeft);
|
|
|
|
public static native void nativeTouchDeviceBeginCalibrationMode();
|
|
|
|
public static native void nativeTouchDeviceEndCalibrationMode();
|
|
|
|
private static native void nativeTouchJoystickSetKeypadTypes(int[] rosetteChars, int[] rosetteScancodes, int[] buttonsChars, int[] buttonsScancodes);
|
|
|
|
private static native void nativeSetTouchDeviceKeyRepeatThreshold(float threshold);
|
|
|
|
private static native void nativeLoadTouchKeyboardJSON(String path);
|
|
|
|
}
|