Menu for editing on-screen controls, not finished yet!

This commit is contained in:
pelya
2010-12-15 17:56:20 +00:00
parent 2f5ac6d276
commit 8c7f63e62b
14 changed files with 285 additions and 48 deletions

View File

@@ -82,6 +82,8 @@ class Globals {
public static int ClickScreenPressure = 0;
public static int ClickScreenTouchspotSize = 0;
public static int RemapHwKeycode[] = new int[SDL_Keys.JAVA_KEYCODE_LAST];
public static int RemapScreenKbKeycode[] = new int[10];
public static boolean ScreenKbControlsShown[] = new boolean[12];
}
class LoadLibrary {

View File

@@ -496,7 +496,7 @@ class SDL_Keys
public static String [] names = null;
public static Integer [] values = null;
static final int JAVA_KEYCODE_LAST = android.view.KeyEvent.KEYCODE_MUTE; // = 91
static final int JAVA_KEYCODE_LAST = 110; // Android 2.3 added several new gaming keys, it ends up at keycode 110 currently - plz keep in sync with javakeycodes.h
static
{

View File

@@ -64,6 +64,17 @@ class Settings
{
out.writeInt(Globals.RemapHwKeycode[i]);
}
out.writeInt(Globals.RemapScreenKbKeycode.length);
for( int i = 0; i < Globals.RemapScreenKbKeycode.length; i++ )
{
out.writeInt(Globals.RemapScreenKbKeycode[i]);
}
out.writeInt(Globals.ScreenKbControlsShown.length);
for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ )
{
out.writeBoolean(Globals.ScreenKbControlsShown[i]);
out.writeInt(Globals.RemapScreenKbKeycode[i]);
}
out.close();
settingsLoaded = true;
@@ -90,6 +101,23 @@ class Settings
idx = ii;
Globals.RemapHwKeycode[i] = idx;
}
for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ )
{
int sdlKey = nativeGetKeymapKeyScreenKb(i);
int idx = 0;
for(int ii = 0; ii < SDL_Keys.values.length; ii++)
if(SDL_Keys.values[ii] == sdlKey)
idx = ii;
Globals.RemapHwKeycode[i] = idx;
Globals.RemapScreenKbKeycode[i] = idx;
}
Globals.ScreenKbControlsShown[0] = Globals.AppNeedsArrowKeys;
for( int i = 1; i < 7; i++ )
Globals.ScreenKbControlsShown[i] = ( i <= Globals.AppTouchscreenKeyboardKeysAmount );
Globals.ScreenKbControlsShown[7] = Globals.AppNeedsTextInput;
for( int i = 8; i < 12; i++ )
Globals.ScreenKbControlsShown[i] = true;
try {
ObjectInputStream settingsFile = new ObjectInputStream(new FileInputStream( p.getFilesDir().getAbsolutePath() + "/" + SettingsFileName ));
Globals.DownloadToSdcard = settingsFile.readBoolean();
@@ -116,12 +144,24 @@ class Settings
Globals.KeepAspectRatio = settingsFile.readBoolean();
Globals.MoveMouseWithJoystickSpeed = settingsFile.readInt();
Globals.MoveMouseWithJoystickAccel = settingsFile.readInt();
if( settingsFile.readInt() != SDL_Keys.JAVA_KEYCODE_LAST )
throw new IOException();
for( int i = 0; i < SDL_Keys.JAVA_KEYCODE_LAST; i++ )
int readKeys = settingsFile.readInt();
for( int i = 0; i < readKeys; i++ )
{
Globals.RemapHwKeycode[i] = settingsFile.readInt();
}
if( settingsFile.readInt() != Globals.RemapScreenKbKeycode.length )
throw new IOException();
for( int i = 0; i < Globals.RemapScreenKbKeycode.length; i++ )
{
Globals.RemapScreenKbKeycode[i] = settingsFile.readInt();
}
if( settingsFile.readInt() != Globals.ScreenKbControlsShown.length )
throw new IOException();
for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ )
{
Globals.ScreenKbControlsShown[i] = settingsFile.readBoolean();
Globals.RemapScreenKbKeycode[i] = settingsFile.readInt();
}
settingsLoaded = true;
@@ -158,6 +198,8 @@ class Settings
p.setUpStatusLabel();
showConfig(p);
}
// ===============================================================================================
public static void showConfig(final MainActivity p) {
settingsChanged = true;
@@ -203,6 +245,8 @@ class Settings
items.add(p.getResources().getString(R.string.remap_hwkeys));
items.add(p.getResources().getString(R.string.remap_screenkb));
items.add(p.getResources().getString(R.string.ok));
AlertDialog.Builder builder = new AlertDialog.Builder(p);
@@ -280,6 +324,10 @@ class Settings
if( item == selected )
showRemapHwKeysConfig(p);
selected++;
if( item == selected )
showRemapScreenKbConfig(p);
selected++;
if( item == selected )
{
@@ -545,20 +593,17 @@ class Settings
}
final CharSequence[] items = {
p.getResources().getString(R.string.controls_screenkb_by, "Ultimate Droid", "Sean Stieber"),
p.getResources().getString(R.string.controls_screenkb_by, "Ugly Arrows", "pelya")
p.getResources().getString(R.string.controls_screenkb_by, "Ugly Arrows", "pelya"),
p.getResources().getString(R.string.controls_screenkb_by, "Ultimate Droid", "Sean Stieber")
};
AlertDialog.Builder builder = new AlertDialog.Builder(p);
builder.setTitle(p.getResources().getString(R.string.controls_screenkb_theme));
builder.setSingleChoiceItems(items, Globals.TouchscreenKeyboardTheme == 1 ? 0 : 1, new DialogInterface.OnClickListener()
builder.setSingleChoiceItems(items, Globals.TouchscreenKeyboardTheme, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int item)
{
if( item == 0 )
Globals.TouchscreenKeyboardTheme = 1;
if( item == 1 )
Globals.TouchscreenKeyboardTheme = 0;
Globals.TouchscreenKeyboardTheme = item;
dialog.dismiss();
showConfigMainMenu(p);
@@ -890,7 +935,132 @@ class Settings
alert.show();
}
}
static void showRemapScreenKbConfig(final MainActivity p)
{
CharSequence[] items = {
p.getResources().getString(R.string.remap_screenkb_joystick),
p.getResources().getString(R.string.remap_screenkb_button_text),
p.getResources().getString(R.string.remap_screenkb_button) + " 1",
p.getResources().getString(R.string.remap_screenkb_button) + " 2",
p.getResources().getString(R.string.remap_screenkb_button) + " 3",
p.getResources().getString(R.string.remap_screenkb_button) + " 4",
p.getResources().getString(R.string.remap_screenkb_button) + " 5",
p.getResources().getString(R.string.remap_screenkb_button) + " 6",
p.getResources().getString(R.string.remap_screenkb_button_zoomin),
p.getResources().getString(R.string.remap_screenkb_button_zoomout),
p.getResources().getString(R.string.remap_screenkb_button_rotateleft),
p.getResources().getString(R.string.remap_screenkb_button_rotateright),
};
boolean defaults[] = {
Globals.ScreenKbControlsShown[0],
Globals.ScreenKbControlsShown[1],
Globals.ScreenKbControlsShown[2],
Globals.ScreenKbControlsShown[3],
Globals.ScreenKbControlsShown[4],
Globals.ScreenKbControlsShown[5],
Globals.ScreenKbControlsShown[6],
Globals.ScreenKbControlsShown[7],
Globals.ScreenKbControlsShown[8],
Globals.ScreenKbControlsShown[9],
Globals.ScreenKbControlsShown[10],
Globals.ScreenKbControlsShown[11],
};
if( ! Globals.UseTouchscreenKeyboard )
{
for( int i = 0; i < 8; i++ )
Globals.ScreenKbControlsShown[i] = false;
CharSequence[] items2 = {
p.getResources().getString(R.string.remap_screenkb_button_zoomin),
p.getResources().getString(R.string.remap_screenkb_button_zoomout),
p.getResources().getString(R.string.remap_screenkb_button_rotateleft),
p.getResources().getString(R.string.remap_screenkb_button_rotateright),
};
boolean defaults2[] = {
Globals.ScreenKbControlsShown[8],
Globals.ScreenKbControlsShown[9],
Globals.ScreenKbControlsShown[10],
Globals.ScreenKbControlsShown[11],
};
items = items2;
defaults = defaults2;
}
AlertDialog.Builder builder = new AlertDialog.Builder(p);
builder.setTitle(p.getResources().getString(R.string.remap_screenkb));
builder.setMultiChoiceItems(items, defaults, new DialogInterface.OnMultiChoiceClickListener()
{
public void onClick(DialogInterface dialog, int item, boolean isChecked)
{
if( ! Globals.UseTouchscreenKeyboard )
item += 8;
Globals.ScreenKbControlsShown[item] = isChecked;
}
});
builder.setPositiveButton(p.getResources().getString(R.string.ok), new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int item)
{
dialog.dismiss();
showRemapScreenKbConfig2(p, 0);
}
});
AlertDialog alert = builder.create();
alert.setOwnerActivity(p);
alert.show();
}
static void showRemapScreenKbConfig2(final MainActivity p, final int currentButton)
{
CharSequence[] items = {
p.getResources().getString(R.string.remap_screenkb_button) + " 1",
p.getResources().getString(R.string.remap_screenkb_button) + " 2",
p.getResources().getString(R.string.remap_screenkb_button) + " 3",
p.getResources().getString(R.string.remap_screenkb_button) + " 4",
p.getResources().getString(R.string.remap_screenkb_button) + " 5",
p.getResources().getString(R.string.remap_screenkb_button) + " 6",
p.getResources().getString(R.string.remap_screenkb_button_zoomin),
p.getResources().getString(R.string.remap_screenkb_button_zoomout),
p.getResources().getString(R.string.remap_screenkb_button_rotateleft),
p.getResources().getString(R.string.remap_screenkb_button_rotateright),
};
if( currentButton >= Globals.RemapScreenKbKeycode.length )
{
showConfigMainMenu(p);
return;
}
if( ! Globals.ScreenKbControlsShown[currentButton + 2] )
{
showRemapScreenKbConfig2(p, currentButton + 1);
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(p);
builder.setTitle(items[currentButton]);
builder.setSingleChoiceItems(SDL_Keys.names, Globals.RemapScreenKbKeycode[currentButton], new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int item)
{
Globals.RemapScreenKbKeycode[currentButton] = item;
dialog.dismiss();
showRemapScreenKbConfig2(p, currentButton + 1);
}
});
AlertDialog alert = builder.create();
alert.setOwnerActivity(p);
alert.show();
}
// ===============================================================================================
static void Apply(Activity p)
{
nativeIsSdcardUsed( Globals.DownloadToSdcard ? 1 : 0 );
@@ -929,6 +1099,11 @@ class Settings
nativeSetKeymapKey(i, SDL_Keys.values[Globals.RemapHwKeycode[i]]);
}
for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ )
{
nativeSetKeymapKeyScreenKb(i, i >= 2 ? SDL_Keys.values[Globals.RemapScreenKbKeycode[i-2]] : 0, Globals.ScreenKbControlsShown[i] ? 1 : 0);
}
String lang = new String(Locale.getDefault().getLanguage());
if( Locale.getDefault().getCountry().length() > 0 )
lang = lang + "_" + Locale.getDefault().getCountry();
@@ -981,7 +1156,9 @@ class Settings
private static native void nativeSetupScreenKeyboardButtons(byte[] img);
private static native void nativeInitKeymap();
private static native int nativeGetKeymapKey(int key);
private static native int nativeGetKeymapKeyScreenKb(int key);
private static native void nativeSetKeymapKey(int javakey, int key);
private static native void nativeSetKeymapKeyScreenKb(int javakey, int key, int used);
public static native void nativeSetEnv(final String name, final String value);
}

View File

@@ -13,7 +13,7 @@
<string name="dl_from">Lade Daten von %s</string>
<string name="error_dl_from">Fehler beim Download von %s</string>
<string name="error_write">Fehler beim schreiben auf %s</string>
<string name="dl_progress">Zu %.0f%% abgeschlossen: Datei %s</string>
<string name="dl_progress">Zu %1$.0f%% abgeschlossen: Datei %2$s</string>
<string name="dl_finished">Abgeschlossen</string>
<string name="storage_phone">Interner Speicher: %d MiB frei</string>
@@ -52,7 +52,7 @@
<string name="controls_screenkb_small">Kleine</string>
<string name="controls_screenkb_tiny">Winzig</string>
<string name="controls_screenkb_theme">On-Screen-Tastatur Thema</string>
<string name="controls_screenkb_by">%s von %s</string>
<string name="controls_screenkb_by">%1$s von %2$s</string>
<string name="accel_floating">Schwimmend</string>
<string name="accel_fixed_start">Feste, wenn die Anwendung startet</string>
<string name="accel_fixed_horiz">Fixiert auf Tisch Schreibtisch Orientierung</string>
@@ -74,7 +74,7 @@
<string name="leftclick_pressure">Touchscreen mit Kraft</string>
<string name="leftclick_dpadcenter">Trackball klicken Select-Taste</string>
<string name="pointandclick_joystickmouse">Bewegen Sie die Maus mit Joystick oder Trackball</string>
<string name="measurepressure_response">Pressure %03d Radius %03d</string>
<string name="measurepressure_response">Pressure %1$03d Radius %2$03d</string>
<string name="click_with_dpadcenter">Linker Mausklick mit Trackball / Joystick Zentrum</string>
<string name="pointandclick_joystickmousespeed">Bewegen Sie die Maus mit Joystick-Geschwindigkeit</string>
<string name="pointandclick_joystickmouseaccel">Bewegen Sie die Maus mit Joystick-Beschleunigung</string>

View File

@@ -13,7 +13,7 @@
<string name="dl_from">Ladataan kohteesta %s</string>
<string name="error_dl_from">Virhe ladattaessa kohteesta %s</string>
<string name="error_write">Virhe kirjoittaessa %s</string>
<string name="dl_progress">%.0f%% valmis: tiedosto %s</string>
<string name="dl_progress">%1$.0f%% valmis: tiedosto %2$s</string>
<string name="dl_finished">Valmis</string>
<string name="storage_phone">Sisäinen muisti - %d Mt vapaana</string>
@@ -52,7 +52,7 @@
<string name="controls_screenkb_small">Pienet</string>
<string name="controls_screenkb_tiny">Tiny</string>
<string name="controls_screenkb_theme">Näyttönäppäimistöllä teema</string>
<string name="controls_screenkb_by">%s %s</string>
<string name="controls_screenkb_by">%1$s %2$s</string>
<string name="accel_floating">Kelluva</string>
<string name="accel_fixed_start">Kiinteät kun sovellus käynnistyy</string>
<string name="accel_fixed_horiz">Korjattu taulukko työpöytä suuntautumiseen</string>
@@ -74,7 +74,7 @@
<string name="leftclick_pressure">Kosketusnäyttö voimalla</string>
<string name="leftclick_dpadcenter">Trackball Valitse / Select-näppäintä</string>
<string name="pointandclick_joystickmouse">Siirrä hiiren ohjaimella tai trackball</string>
<string name="measurepressure_response">Paine %03d säde %03d</string>
<string name="measurepressure_response">Paine %1$03d säde %2$03d</string>
<string name="click_with_dpadcenter">Vasen hiiren klikkaus trackball-ohjaimella keskusta</string>
<string name="pointandclick_joystickmousespeed">Siirrä hiiri ohjainta nopeasti</string>
<string name="pointandclick_joystickmouseaccel">Siirrä hiiri ohjainta kiihtyvyys</string>

View File

@@ -13,7 +13,7 @@
<string name="dl_from">Téléchargement à partir de %s</string>
<string name="error_dl_from">Erreur lors du téléchargement à partir de %s</string>
<string name="error_write">Erreur d\'écriture dans %s</string>
<string name="dl_progress">%.0f%% fait: fichier %s</string>
<string name="dl_progress">%1$.0f%% fait: fichier %2$s</string>
<string name="dl_finished">Fini</string>
<string name="storage_phone">Stockage interne - %d Mo de libre</string>
@@ -38,7 +38,7 @@
<string name="controls_screenkb_small">Petite</string>
<string name="controls_screenkb_tiny">Minuscule</string>
<string name="controls_screenkb_theme">Thème du clavier à l\'écran</string>
<string name="controls_screenkb_by">%s par %s</string>
<string name="controls_screenkb_by">%1$s par %2$s</string>
<string name="trackball_no_dampening">Sans limite</string>
<string name="trackball_fast">Rapide</string>
@@ -77,7 +77,7 @@
<string name="leftclick_pressure">écran tactile avec une force</string>
<string name="leftclick_dpadcenter">Trackball cliquez / touche de sélection</string>
<string name="pointandclick_joystickmouse">Déplacez la souris ou un trackball avec joystick</string>
<string name="measurepressure_response">pression %03d rayon %03d</string>
<string name="measurepressure_response">pression %1$03d rayon %2$03d</string>
<string name="click_with_dpadcenter">cliquez gauche de la souris avec trackball centre du joystick /</string>
<string name="pointandclick_joystickmousespeed">Déplacez la souris avec la vitesse joystick</string>
<string name="pointandclick_joystickmouseaccel">Déplacez la souris avec une accélération joystick</string>

View File

@@ -11,7 +11,7 @@
<string name="dl_from">Загрузка данных с %s</string>
<string name="error_dl_from">Ошибка при загрузке данных с %s</string>
<string name="error_write">Ошибка записи в %s</string>
<string name="dl_progress">%.0f%% готово: файл %s</string>
<string name="dl_progress">%1$.0f%% готово: файл %2$s</string>
<string name="dl_finished">Завершенный</string>
<string name="storage_phone">Внутреннее хранение - %d Мб</string>
<string name="storage_sd">SD карта - %d Мб</string>
@@ -32,7 +32,7 @@
<string name="controls_screenkb_small">Малые</string>
<string name="controls_screenkb_tiny">Крошечный</string>
<string name="controls_screenkb_theme">Тема клавиатуры</string>
<string name="controls_screenkb_by">%s от %s</string>
<string name="controls_screenkb_by">%1$s от %2$s</string>
<string name="trackball_no_dampening">Нет</string>
<string name="trackball_fast">Быстрое</string>
<string name="trackball_medium">Среднее</string>
@@ -50,7 +50,7 @@
<string name="pointandclick_keepaspectratio">Сохранять соотношение сторон 4:3 на экране</string>
<string name="pointandclick_showcreenunderfinger">Экранная лупа</string>
<string name="measurepressure_touchplease">Пожалуйста, проведите пальцем по экрану в течение двух секунд</string>
<string name="measurepressure_response">Давление %03d радиус %03d </string>
<string name="measurepressure_response">Давление %1$03d радиус %2$03d </string>
<string name="audiobuf_verysmall">Очень мало (быстрые устройства)</string>
<string name="audiobuf_small">Малый</string>
<string name="audiobuf_medium">Средний</string>

View File

@@ -11,7 +11,7 @@
<string name="dl_from">Завантаження даних з %s</string>
<string name="error_dl_from">Помилка при завантаженні даних з %s</string>
<string name="error_write">Помилка запису в %s</string>
<string name="dl_progress">%.0f%% готово: файл %s</string>
<string name="dl_progress">%1$.0f%% готово: файл %2$s</string>
<string name="dl_finished">Завершений</string>
<string name="storage_phone">Внутрішнє зберігання - %d Мб</string>
<string name="storage_sd">SD карта - %d Мб</string>
@@ -32,7 +32,7 @@
<string name="controls_screenkb_small">Малий</string>
<string name="controls_screenkb_tiny">Дрібний</string>
<string name="controls_screenkb_theme">Тема кнопок</string>
<string name="controls_screenkb_by">%s від %s</string>
<string name="controls_screenkb_by">%1$s від %2$s</string>
<string name="trackball_no_dampening">Немає</string>
<string name="trackball_fast">Швидке</string>
<string name="trackball_medium">Середнє</string>
@@ -50,7 +50,7 @@
<string name="pointandclick_keepaspectratio">Зберігати співвідношення сторін 4:3 на екрані</string>
<string name="pointandclick_showcreenunderfinger">Наекранна лупа</string>
<string name="measurepressure_touchplease">Будь-ласка, проведіть пальцем по екрану на протязі двох секунд</string>
<string name="measurepressure_response">Тиск %03d радіус %03d </string>
<string name="measurepressure_response">Тиск %1$03d радіус %2$03d </string>
<string name="audiobuf_verysmall">Дуже мало (швидкі пристрої)</string>
<string name="audiobuf_small">Малий</string>
<string name="audiobuf_medium">Середній</string>

View File

@@ -16,7 +16,7 @@
<string name="dl_from">Downloading data from %s</string>
<string name="error_dl_from">Error downloading data from %s</string>
<string name="error_write">Error writing to %s</string>
<string name="dl_progress">%.0f%% done: file %s</string>
<string name="dl_progress">%1$.0f%% done: file %2$s</string>
<string name="dl_finished">Finished</string>
<string name="storage_phone">Internal storage - %d MB free</string>
@@ -41,7 +41,7 @@
<string name="controls_screenkb_small">Small</string>
<string name="controls_screenkb_tiny">Tiny</string>
<string name="controls_screenkb_theme">On-screen keyboard theme</string>
<string name="controls_screenkb_by">%s by %s</string>
<string name="controls_screenkb_by">%1$s by %1$s</string>
<string name="trackball_no_dampening">No dampening</string>
<string name="trackball_fast">Fast</string>
@@ -83,7 +83,7 @@
<string name="measurepressure">Calibrate touchscreen pressure</string>
<string name="measurepressure_touchplease">Please slide finger across the screen for two seconds</string>
<string name="measurepressure_response">Pressure %03d radius %03d</string>
<string name="measurepressure_response">Pressure %1$03d radius %2$03d</string>
<string name="audiobuf_verysmall">Very small (fast devices, less lag)</string>
<string name="audiobuf_small">Small</string>
@@ -95,4 +95,13 @@
<string name="remap_hwkeys_press">Press any key except HOME and POWER, you may use volume keys</string>
<string name="remap_hwkeys_select">Select SDL keycode</string>
<string name="remap_screenkb">Remap on-screen controls</string>
<string name="remap_screenkb_joystick">On-screen joystick</string>
<string name="remap_screenkb_button">On-screen button</string>
<string name="remap_screenkb_button_text">On-screen text input button</string>
<string name="remap_screenkb_button_zoomin">Zoom in two-finger gesture</string>
<string name="remap_screenkb_button_zoomout">Zoom out two-finger gesture</string>
<string name="remap_screenkb_button_rotateleft">Rotate left two-finger gesture</string>
<string name="remap_screenkb_button_rotateright">Rotate right two-finger gesture</string>
</resources>