diff --git a/changeAppSettings.sh b/changeAppSettings.sh
index 5804ea834..98b6ad3e8 100755
--- a/changeAppSettings.sh
+++ b/changeAppSettings.sh
@@ -485,7 +485,7 @@ if [ -n "$var" ] ; then
fi
fi
-FirstStartMenuOptionsDefault='(AppUsesMouse \&\& \! ForceRelativeMouseMode ? new Settings.DisplaySizeConfig(true) : new Settings.DummyMenu()), new Settings.OptionalDownloadConfig(true), new Settings.GyroscopeCalibration()'
+FirstStartMenuOptionsDefault='(ReadmeText.length() > 2 ? new Settings.ShowReadme() : new Settings.DummyMenu()), (AppUsesMouse \&\& \! ForceRelativeMouseMode ? new Settings.DisplaySizeConfig(true) : new Settings.DummyMenu()), new Settings.OptionalDownloadConfig(true), new Settings.GyroscopeCalibration()'
if [ -z "$AUTO" ]; then
echo
echo "Menu items to show at startup - this is Java code snippet, leave empty for default"
@@ -627,9 +627,12 @@ if [ -n "$var" ] ; then
fi
fi
-if [ -z "$ReadmeText" -o -z "$AUTO" ]; then
+if [ -z "$AUTO" ]; then
echo
-echo "Here you may type some short readme text - it is currently not used anywhere"
+echo "Here you may type readme text, which will be shown during startup. Format is:"
+echo "Text in English, use \\n for newline"
+echo "de:Text in Deutsch"
+echo "ru:Text in Russian, and so on"
echo "Current text:"
echo
echo "`echo $ReadmeText | tr '^' '\\n'`"
diff --git a/project/java/Settings.java b/project/java/Settings.java
index 0ccc6e1d0..1553b65fe 100644
--- a/project/java/Settings.java
+++ b/project/java/Settings.java
@@ -2033,6 +2033,8 @@ class Settings
R.drawable.b5,
R.drawable.b6
};
+ int oldX = 0, oldY = 0;
+ boolean resizing = false;
public CustomizeScreenKbLayoutTool(MainActivity _p)
{
@@ -2045,7 +2047,7 @@ class Settings
boundaryBmp = BitmapFactory.decodeResource( p.getResources(), R.drawable.rectangle );
boundary.setImageBitmap(boundaryBmp);
layout.addView(boundary);
- currentButton = 0;
+ currentButton = -1;
if( Globals.TouchscreenKeyboardTheme == 2 )
{
int buttons2[] = {
@@ -2063,6 +2065,10 @@ class Settings
for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ )
{
+ if( ! Globals.ScreenKbControlsShown[currentButton] )
+ continue;
+ if( currentButton == -1 )
+ currentButton = i;
imgs[i] = new ImageView(p);
imgs[i].setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
imgs[i].setScaleType(ImageView.ScaleType.MATRIX);
@@ -2072,115 +2078,123 @@ class Settings
layout.addView(imgs[i]);
Matrix m = new Matrix();
RectF src = new RectF(0, 0, bmps[i].getWidth(), bmps[i].getHeight());
+ if( Globals.ScreenKbControlsLayout[i][0] == Globals.ScreenKbControlsLayout[i][2] ||
+ Globals.ScreenKbControlsLayout[i][1] == Globals.ScreenKbControlsLayout[i][3] )
+ {
+ int displayX = 800;
+ int displayY = 480;
+ try {
+ DisplayMetrics dm = new DisplayMetrics();
+ p.getWindowManager().getDefaultDisplay().getMetrics(dm);
+ displayX = dm.widthPixels;
+ displayY = dm.heightPixels;
+ } catch (Exception eeeee) {}
+ Globals.ScreenKbControlsLayout[i][0] = displayX / 2 - displayX / 6;
+ Globals.ScreenKbControlsLayout[i][2] = displayX / 2 + displayX / 6;
+ Globals.ScreenKbControlsLayout[i][1] = displayY / 2 - displayY / 4;
+ Globals.ScreenKbControlsLayout[i][3] = displayY / 2 + displayY / 4;
+ }
RectF dst = new RectF(Globals.ScreenKbControlsLayout[i][0], Globals.ScreenKbControlsLayout[i][1],
Globals.ScreenKbControlsLayout[i][2], Globals.ScreenKbControlsLayout[i][3]);
m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
imgs[i].setImageMatrix(m);
}
boundary.bringToFront();
-
- setupButton(true);
+ if( currentButton == -1 )
+ onKeyEvent( KeyEvent.KEYCODE_BACK ); // All buttons disabled - do not show anything
+ else
+ setupButton(currentButton);
}
- void setupButton(boolean undo)
+ void setupButton(int i)
{
- do {
- currentButton += (undo ? -1 : 1);
- if(currentButton >= Globals.ScreenKbControlsLayout.length)
- {
- p.getVideoLayout().removeView(layout);
- layout = null;
- p.touchListener = null;
- p.keyListener = null;
- goBack(p);
- return;
- }
- if(currentButton < 0)
- {
- currentButton = 0;
- undo = false;
- }
- } while( ! Globals.ScreenKbControlsShown[currentButton] );
-
- if( Globals.ScreenKbControlsLayout[currentButton][0] == Globals.ScreenKbControlsLayout[currentButton][2] ||
- Globals.ScreenKbControlsLayout[currentButton][1] == Globals.ScreenKbControlsLayout[currentButton][3] )
- {
- int displayX = 800;
- int displayY = 480;
- try {
- DisplayMetrics dm = new DisplayMetrics();
- p.getWindowManager().getDefaultDisplay().getMetrics(dm);
- displayX = dm.widthPixels;
- displayY = dm.heightPixels;
- } catch (Exception eeeee) {}
- Globals.ScreenKbControlsLayout[currentButton][0] = displayX / 2 - displayX / 6;
- Globals.ScreenKbControlsLayout[currentButton][2] = displayX / 2 + displayX / 6;
- Globals.ScreenKbControlsLayout[currentButton][1] = displayY / 2 - displayY / 4;
- Globals.ScreenKbControlsLayout[currentButton][3] = displayY / 2 + displayY / 4;
- }
Matrix m = new Matrix();
- RectF src = new RectF(0, 0, bmps[currentButton].getWidth(), bmps[currentButton].getHeight());
- RectF dst = new RectF(Globals.ScreenKbControlsLayout[currentButton][0], Globals.ScreenKbControlsLayout[currentButton][1],
- Globals.ScreenKbControlsLayout[currentButton][2], Globals.ScreenKbControlsLayout[currentButton][3]);
+ RectF src = new RectF(0, 0, bmps[i].getWidth(), bmps[i].getHeight());
+ RectF dst = new RectF(Globals.ScreenKbControlsLayout[i][0], Globals.ScreenKbControlsLayout[i][1],
+ Globals.ScreenKbControlsLayout[i][2], Globals.ScreenKbControlsLayout[i][3]);
m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
- imgs[currentButton].setImageMatrix(m);
+ imgs[i].setImageMatrix(m);
m = new Matrix();
src = new RectF(0, 0, boundaryBmp.getWidth(), boundaryBmp.getHeight());
m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
boundary.setImageMatrix(m);
- String buttonText = (currentButton == 0 ? "DPAD" : ( currentButton == 1 ? "Text input" : "" ));
- if ( currentButton >= 2 && currentButton - 2 < Globals.AppTouchscreenKeyboardKeysNames.length )
- buttonText = Globals.AppTouchscreenKeyboardKeysNames[currentButton - 2];
+ String buttonText = (i == 0 ? "Joystick" : ( i == 1 ? "Text input" : "" ));
+ if ( i >= 2 && i - 2 < Globals.AppTouchscreenKeyboardKeysNames.length )
+ buttonText = Globals.AppTouchscreenKeyboardKeysNames[i - 2];
p.setText(p.getResources().getString(R.string.screenkb_custom_layout_help) + "\n" + buttonText.replace("_", " "));
}
public void onTouchEvent(final MotionEvent ev)
{
- if(currentButton >= Globals.ScreenKbControlsLayout.length)
- {
- setupButton(false);
- return;
- }
if( ev.getAction() == MotionEvent.ACTION_DOWN )
{
- Globals.ScreenKbControlsLayout[currentButton][0] = (int)ev.getX();
- Globals.ScreenKbControlsLayout[currentButton][1] = (int)ev.getY();
- Globals.ScreenKbControlsLayout[currentButton][2] = (int)ev.getX();
- Globals.ScreenKbControlsLayout[currentButton][3] = (int)ev.getY();
+ oldX = (int)ev.getX();
+ oldY = (int)ev.getY();
+ resizing = true;
+ for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ )
+ {
+ if( ! Globals.ScreenKbControlsShown[currentButton] )
+ continue;
+ if( Globals.ScreenKbControlsLayout[currentButton][0] <= oldX &&
+ Globals.ScreenKbControlsLayout[currentButton][2] >= oldX &&
+ Globals.ScreenKbControlsLayout[currentButton][1] <= oldY &&
+ Globals.ScreenKbControlsLayout[currentButton][2] >= oldY )
+ {
+ currentButton = i;
+ setupButton(currentButton);
+ resizing = false;
+ break;
+ }
+ }
}
if( ev.getAction() == MotionEvent.ACTION_MOVE )
{
- if( Globals.ScreenKbControlsLayout[currentButton][0] > (int)ev.getX() )
- Globals.ScreenKbControlsLayout[currentButton][0] = (int)ev.getX();
- if( Globals.ScreenKbControlsLayout[currentButton][1] > (int)ev.getY() )
- Globals.ScreenKbControlsLayout[currentButton][1] = (int)ev.getY();
- if( Globals.ScreenKbControlsLayout[currentButton][2] < (int)ev.getX() )
- Globals.ScreenKbControlsLayout[currentButton][2] = (int)ev.getX();
- if( Globals.ScreenKbControlsLayout[currentButton][3] < (int)ev.getY() )
- Globals.ScreenKbControlsLayout[currentButton][3] = (int)ev.getY();
+ int dx = (int)ev.getX() - oldX;
+ int dy = (int)ev.getY() - oldY;
+ if( resizing )
+ {
+ // Resize slowly, with 1/3 of movement speed
+ dx /= 6;
+ dy /= 6;
+ Globals.ScreenKbControlsLayout[currentButton][0] -= dx;
+ Globals.ScreenKbControlsLayout[currentButton][2] += dx;
+ Globals.ScreenKbControlsLayout[currentButton][1] -= dy;
+ Globals.ScreenKbControlsLayout[currentButton][3] += dy;
+ dx *= 6;
+ dy *= 6;
+ }
+ else
+ {
+ Globals.ScreenKbControlsLayout[currentButton][0] += dx;
+ Globals.ScreenKbControlsLayout[currentButton][2] += dx;
+ Globals.ScreenKbControlsLayout[currentButton][1] += dy;
+ Globals.ScreenKbControlsLayout[currentButton][3] += dy;
+ }
+ oldX += dx;
+ oldY += dy;
+ Matrix m = new Matrix();
+ RectF src = new RectF(0, 0, bmps[currentButton].getWidth(), bmps[currentButton].getHeight());
+ RectF dst = new RectF(Globals.ScreenKbControlsLayout[currentButton][0], Globals.ScreenKbControlsLayout[currentButton][1],
+ Globals.ScreenKbControlsLayout[currentButton][2], Globals.ScreenKbControlsLayout[currentButton][3]);
+ m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
+ imgs[currentButton].setImageMatrix(m);
+ m = new Matrix();
+ src = new RectF(0, 0, boundaryBmp.getWidth(), boundaryBmp.getHeight());
+ m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
+ boundary.setImageMatrix(m);
}
-
- Matrix m = new Matrix();
- RectF src = new RectF(0, 0, bmps[currentButton].getWidth(), bmps[currentButton].getHeight());
- RectF dst = new RectF(Globals.ScreenKbControlsLayout[currentButton][0], Globals.ScreenKbControlsLayout[currentButton][1],
- Globals.ScreenKbControlsLayout[currentButton][2], Globals.ScreenKbControlsLayout[currentButton][3]);
- m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
- imgs[currentButton].setImageMatrix(m);
- m = new Matrix();
- src = new RectF(0, 0, boundaryBmp.getWidth(), boundaryBmp.getHeight());
- m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
- boundary.setImageMatrix(m);
-
- if( ev.getAction() == MotionEvent.ACTION_UP )
- setupButton(false);
}
public void onKeyEvent(final int keyCode)
{
- if( layout != null && imgs[currentButton] != null )
- layout.removeView(imgs[currentButton]);
- imgs[currentButton] = null;
- setupButton(true);
+ if( keyCode == KeyEvent.KEYCODE_BACK )
+ {
+ p.getVideoLayout().removeView(layout);
+ layout = null;
+ p.touchListener = null;
+ p.keyListener = null;
+ goBack(p);
+ }
}
}
}
diff --git a/project/java/translations/values-fr/strings.xml b/project/java/translations/values-fr/strings.xml
index 3224cc78a..33f606fc2 100644
--- a/project/java/translations/values-fr/strings.xml
+++ b/project/java/translations/values-fr/strings.xml
@@ -137,7 +137,6 @@
Geste de rotation à droite avec deux doigts
Personnalisation de la présentation du clavier à l\'écran
-Faites glisser l\'écran pour ajouter le bouton, appuyez sur Retour/BACK pour annuler le dernier bouton
Calibrer l\'écran tactile
Touchez les bords de l\'écran, appuyez sur Retour/BACK lorsque vous avez terminé
@@ -158,9 +157,6 @@
Afficher plus d\'options
-Erreur interne détectée (OS/LibC)
-Certaines librairies sont mal installées et cette application va probablement ne pas fonctionner. Merci de mettre à jour votre système, flash, ROM custom, ou bien de copier le fichier /system/lib/libc.so depuis un autre système (Attention, Experts uniquement !).
-
Hardware mouse detected, disabling mouse emulation
Not enough RAM
This app needs %1$d Mb RAM, your device has %2$d Mb
@@ -175,4 +171,5 @@
You can resume it later, the data will not be downloaded twice.
Yes
No
+Press BACK when done. Resize buttons by sliding on empty space.
diff --git a/project/java/translations/values-ru/strings.xml b/project/java/translations/values-ru/strings.xml
index c10d240e4..b81408e8b 100644
--- a/project/java/translations/values-ru/strings.xml
+++ b/project/java/translations/values-ru/strings.xml
@@ -99,7 +99,7 @@
Калибровка сенсорного экрана
Дотроньтесь до всех краев экрана, потом нажмите Назад/BACK
Настройка расположения кнопок
-Проведите по экрану, чтобы добавить кнопку, нажмите клавишу Назад/BACK, чтобы отменить последнюю кнопку
+Нажмите клавишу Назад/BACK для завершения. Проведите по пустому месту, чтобы изменить размер кнопки
Физическая кнопка
Наэкранная лупа
Настройки видео
@@ -126,8 +126,6 @@
Маленький (телефон)
Крохотный
Показать больше параметров
-Обнаружена бракованная прошивка
-Ваше устройство содержит дефективные системные библиотеки, данное приложение скорее всего не будет работать. Пожалуйста, установите обновление, либо установите неофициальную прошивку, либо скопируйте /system/lib/libc.so с другого устройства (только для специалистов!)
Размер изображения кнопок
Маленький, режим тачпада
Крохотный, режим тачпада
diff --git a/project/java/translations/values-uk/strings.xml b/project/java/translations/values-uk/strings.xml
index 11b168d89..d9573df4a 100644
--- a/project/java/translations/values-uk/strings.xml
+++ b/project/java/translations/values-uk/strings.xml
@@ -99,7 +99,7 @@
Калібрування сенсорного екрану
Доторкнiться до всіх країв екрану, потiм натисніть Назад/BACK
Налаштування положення кнопок
-Проведiть по екрану, щоб додати кнопку, натисніть Назад/BACK, щоб скасувати останню кнопку
+Натисніть Назад/BACK для завершення. Проведiть по екрану, щоб змінити розмір кнопки
Фізична кнопка
Наекранна лупа
Налаштування відео
@@ -131,19 +131,17 @@
Крихiтний, режим тачпаду
Виявлена зовнiшня миша, емуляція миші вимкнена
-Broken OS detected
-Your device has broken system libraries, this application will most probably crash. Please install a system update, or flash a custom ROM, or copy file /system/lib/libc.so from another device (experts only!)
-Not enough RAM
-This app needs %1$d Mb RAM, your device has %2$d Mb
-Ignore
-Calibrate gyroscope
-Put your phone on a flat surface
-Reset config to defaults
-Cancel
-Your device does not have gyroscope
-Reset all options to default values?
-Cancel data downloading?
-You can resume it later, the data will not be downloaded twice.
-Yes
-No
+Недостатньо пам’яті
+Потрібно %1$d Mb пам’яті, доступно лише %2$d Mb
+Ігнорувати
+Калібрувати гіроскоп
+Покладіть телефон на рівну поверхню
+Скинути всі налаштування
+Відмінити
+Гіроскоп відсутній
+Скинути всі налаштування у значення за замовчуванням?
+Припинити завантаження?
+Завантаження може бути відновлено пізніше.
+Так
+Ні
diff --git a/project/java/translations/values/strings.xml b/project/java/translations/values/strings.xml
index c8bc65289..f232b23d4 100644
--- a/project/java/translations/values/strings.xml
+++ b/project/java/translations/values/strings.xml
@@ -136,7 +136,7 @@
Rotate right two-finger gesture
Customize on-screen keyboard layout
- Slide screen to add button, press BACK to undo last button
+ Press BACK when done. Resize buttons by sliding on empty space.
Calibrate touchscreen
Touch all edges of the screen, press BACK when done
@@ -157,9 +157,6 @@
Show more options
- Broken OS detected
- Your device has broken system libraries, this application will most probably crash. Please install a system update, or flash a custom ROM, or copy file /system/lib/libc.so from another device (experts only!)
-
Hardware mouse detected, disabling mouse emulation
Not enough RAM
diff --git a/project/jni/application/openarena/engine b/project/jni/application/openarena/engine
index 386bfea5e..4997b5070 160000
--- a/project/jni/application/openarena/engine
+++ b/project/jni/application/openarena/engine
@@ -1 +1 @@
-Subproject commit 386bfea5ea71757fbf369bdddd2e24a03c3d1e33
+Subproject commit 4997b50704c7134585a48a03dd595b4155cf3d14