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