From 953fc1f706ae6b5dbfbe1465dbc5e5533e9e01f5 Mon Sep 17 00:00:00 2001 From: Tim Tennyson Date: Sun, 25 Sep 2016 16:50:38 -0700 Subject: [PATCH 1/4] a few more translations and corrections --- app/src/main/assets/about-ru.html | 4 ++-- app/src/main/assets/help-ru.html | 4 ++-- app/src/main/assets/help_practice-ru.html | 2 +- .../jwtc/android/chess/puzzle/ChessViewPuzzle.java | 11 ++++++----- app/src/main/res/values-es/strings.xml | 10 ++++++++++ app/src/main/res/values-it/strings.xml | 10 ++++++++++ app/src/main/res/values-pt/strings.xml | 10 ++++++++++ app/src/main/res/values-ru/strings.xml | 14 ++++++++++++-- app/src/main/res/values-zh/strings.xml | 10 ++++++++++ app/src/main/res/values/strings.xml | 10 ++++++++++ app/src/main/res/xml/globalprefs.xml | 2 +- app/src/main/res/xml/icsprefs.xml | 2 +- app/src/main/res/xml/mainprefs.xml | 2 +- app/src/main/res/xml/puzzleprefs.xml | 2 +- 14 files changed, 77 insertions(+), 16 deletions(-) diff --git a/app/src/main/assets/about-ru.html b/app/src/main/assets/about-ru.html index 6fb503aa..27999906 100644 --- a/app/src/main/assets/about-ru.html +++ b/app/src/main/assets/about-ru.html @@ -19,8 +19,8 @@

О приложении

Тим Теннисон: несколько улучшений.

Алессандро Дал Белло, Паоло Страффи: итальянский перевод.

Ильдар Губайдулин: русский перевод.

-

Марселла De Rosa: Испанские и португальские переводы.

-

Стан Zheng: Китайский перевод.

+

Марселья Де Роса: Испанские и португальские переводы.

+

Стан Чжэн: Китайский перевод.

\ No newline at end of file diff --git a/app/src/main/assets/help-ru.html b/app/src/main/assets/help-ru.html index 7e0d5312..7dc43516 100644 --- a/app/src/main/assets/help-ru.html +++ b/app/src/main/assets/help-ru.html @@ -23,8 +23,8 @@

Помощь

Тим Теннисон: несколько улучшений.

Алессандро Дал Белло, Паоло Страффи: итальянский перевод.

Ильдар Губайдулин: русский перевод.

-

Марселла De Rosa: Испанские и португальские переводы.

-

Стан Zheng: Китайский перевод.

+

Марселья Де Роса: Испанские и португальские переводы.

+

Стан Чжэн: Китайский перевод.

Игра

Играйте против Android или используйте шахматную доску для анализа игр. diff --git a/app/src/main/assets/help_practice-ru.html b/app/src/main/assets/help_practice-ru.html index 289a9d34..fec11c57 100644 --- a/app/src/main/assets/help_practice-ru.html +++ b/app/src/main/assets/help_practice-ru.html @@ -15,7 +15,7 @@

Помощь в тренировке

Ваше время и среднее время для каждой позиции указано рядом с доской.
Нажмите кнопку 'Показать' для решения.
Нажмите кнопку 'Далее', чтобы перейти к следующей позиции.
-Иногда может быть найдено несколько решений, но приложение принимает только одно их них. +Иногда может быть найдено несколько решений, но приложение принимает только одно из них.

diff --git a/app/src/main/java/jwtc/android/chess/puzzle/ChessViewPuzzle.java b/app/src/main/java/jwtc/android/chess/puzzle/ChessViewPuzzle.java index b5e0f27c..57bc2505 100644 --- a/app/src/main/java/jwtc/android/chess/puzzle/ChessViewPuzzle.java +++ b/app/src/main/java/jwtc/android/chess/puzzle/ChessViewPuzzle.java @@ -11,6 +11,7 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; +import android.content.res.Resources; import android.os.Handler; import android.os.Message; import android.text.InputType; @@ -65,7 +66,7 @@ public void handleMessage(Message msg) { _progressDlg.setMessage(_parent.getString(R.string.msg_progress) + String.format(" %d", (_cnt * 100) / _num) + " %"); } else if (msg.what == 3) { _progressDlg.hide(); - _tvPuzzleText.setText("An error occured during install"); + _tvPuzzleText.setText(_parent.getString(R.string.puzzle_error_install)); } } @@ -282,7 +283,7 @@ public void flipBoard() { @Override protected boolean requestMove(int from, int to) { if (_arrPGN.size() <= _jni.getNumBoard() - 1) { - setMessage("(position allready solved)"); + setMessage(_parent.getString(R.string.puzzle_already_solved)); return super.requestMove(from, to); } int move = _arrPGN.get(_jni.getNumBoard() - 1)._move; @@ -307,7 +308,7 @@ protected boolean requestMove(int from, int to) { return true; } else { // check for illegal move - setMessage("Move " + Move.toDbgString(theMove) + (checkIsLegalMove(from, to) ? " is not the expected move" : " is an invalid move")); + setMessage(Move.toDbgString(theMove) + (checkIsLegalMove(from, to) ? _parent.getString(R.string.puzzle_not_correct_move) : _parent.getString(R.string.puzzle_invalid_move))); _imgStatus.setImageResource(R.drawable.indicator_error); m_iFrom = -1; @@ -331,7 +332,7 @@ public void play() { if (_iPos < 1) _iPos = 1; if (_iPos > _num) { - setMessage("You completed all puzzles!!!"); + setMessage(_parent.getString(R.string.puzzle_all_completed)); return; } @@ -398,7 +399,7 @@ public boolean handleClick(int index) { final String[] items = _parent.getResources().getStringArray(R.array.promotionpieces); AlertDialog.Builder builder = new AlertDialog.Builder(_parent); - builder.setTitle("Pick promotion piece"); + builder.setTitle(_parent.getString(R.string.puzzle_pick_promotion)); builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { dialog.dismiss(); diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 61f1f2cc..4ae178d6 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -24,6 +24,9 @@ Pantalla TV Configuración global + Configuración rompecabezas + Configuración jugar + Configuración línea jugar Configuración Utilice bloqueo modo reposo Esto evitará que el teléfono se ponga en modo reposo @@ -219,6 +222,13 @@ Editare Eliminar + Se produjo un error durante la instalación + (Posición ya resuelto) + no es el movimiento esperado + es un movimiento no válido + Has completado todos los puzzles!!! + Escoja piece la promoción + Brillo claro oscuro diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bb65b212..23be4092 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -24,6 +24,9 @@ Schermo TV Preferenze globali + Preferenze Puzzle + Preferenze giocare + Configurazione gioco online Preferenze Usa blocco sospensione Impedisce al telefono di andare in sospensione @@ -219,6 +222,13 @@ Modifica Cancella + Verificato un errore durante l\'installazione + (Posizione già risolto) + non è prevista la mossa + è una mossa non valida + Hai completato tutti i puzzle!!! + Scegli piece Promozione + Luminosità chiaro scuro diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 2f863397..1578aab5 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -24,6 +24,9 @@ Tela da TV Configuração global + Configuração enigma + Configuração jogar + Configuração jogar online Configuração Use wake lock Isso impedirá que o seu teléfono fique em modo repouso @@ -219,6 +222,13 @@ Editar Remover + Ocorreu um erro durante a instalação + (Posição já resolvido) + não é o movimento esperado + é um movimento inválido + Você completou todos os enigmas!!! + Escolha pedaço promoção + Brilho clara escura diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 23c0991e..29d66a3f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -24,6 +24,9 @@ Экран ТВ Глобальные настройки + Настройки головоломок + Настройки игры + Настройки онлайн-игры Настройки Использовать удержание в режиме бодрствования Не давать телефону перейти в спящий режим @@ -69,8 +72,8 @@ В PGN показывать время на часах для каждого хода Звук при включении Включать звук в начале игры или при потере соединения - Уведомление новой игры - Позволяет знать начало игры с иконой + Уведомление о новой игре + Позволяет узнать о начале игры с помощью иконки Показывать ползунок поиска Быстрое перемещение между головоломками с помощью ползунка Установить язык @@ -219,6 +222,13 @@ Редактировать Удалить + Произошла ошибка во время установки + (Позиция уже решена) + не предполагается + является недопустимым шагом + Вы выполнили все головоломки!!! + Pick продвижение кусок + яркость светлый темный diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 5e2abcf1..d3275b51 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -24,6 +24,9 @@ 电视屏幕 通用设置 + 配置拼图 + 游戏配置 + 在线游戏配置 设置 禁止休眠 此设置可以防止手机在对局时进入休眠 @@ -219,6 +222,13 @@ 编辑 删除 + 错误发生在安装过程中 + (位置已经解决) + 不是预期的动 + 是一个无效的举动 + 你完成了所有的谜题! + 挑选一件促销 + 亮度 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1779c882..09f3b881 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,6 +24,9 @@ TV Screen Global settings + Puzzle settings + Play settings + Play online settings Settings Use wake lock This will prevent your phone going to sleep @@ -219,6 +222,13 @@ Edit Delete + An error occurred during install + (position already solved) + is not the expected move + is an invalid move + You completed all puzzles!!! + Pick promotion piece + Brightness Light Dark diff --git a/app/src/main/res/xml/globalprefs.xml b/app/src/main/res/xml/globalprefs.xml index 75e41bc6..9277c3bb 100644 --- a/app/src/main/res/xml/globalprefs.xml +++ b/app/src/main/res/xml/globalprefs.xml @@ -1,7 +1,7 @@ - + - + - + - + Date: Sun, 2 Oct 2016 19:46:12 +0200 Subject: [PATCH 2/4] updated gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 93793332..5576bb34 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.google.gms:google-services:1.5.0-beta2' } From b63b13e6f2bb844d5a925dd8b0279b5d3f165eb4 Mon Sep 17 00:00:00 2001 From: Jeroen Carolus Date: Sun, 16 Oct 2016 14:16:12 +0200 Subject: [PATCH 3/4] transfer styles to theme --- app/src/main/res/layout-land/main.xml | 4 ++-- app/src/main/res/layout-large-land/main.xml | 8 ++------ app/src/main/res/layout/main.xml | 11 ++++------- app/src/main/res/values/styles.xml | 6 ++++-- app/src/main/res/values/themes.xml | 15 ++++++++------- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/src/main/res/layout-land/main.xml b/app/src/main/res/layout-land/main.xml index 6f7b0c5c..0d7d5707 100644 --- a/app/src/main/res/layout-land/main.xml +++ b/app/src/main/res/layout-land/main.xml @@ -2,7 +2,7 @@ - - #ff585858 + #ffcccccc + #ff585858 #ffffffff + #ff000000 #ccffffff #ff282828 @@ -93,7 +95,7 @@ sans 2dp 2dp - #ffffff + 14sp \ No newline at end of file From aef2e5688a061f8388bdcb6464f09e0b940074b3 Mon Sep 17 00:00:00 2001 From: Jeroen Carolus Date: Tue, 15 Aug 2017 09:16:49 +0200 Subject: [PATCH 4/4] Gradle update. Fix runtime permissions. Set root file browse to external storage for >= kitkat --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 4 +-- .../android/chess/tools/FileListView.java | 33 +++++++++++-------- .../jwtc/android/chess/tools/pgntool.java | 24 ++++++++++++++ build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +-- 6 files changed, 50 insertions(+), 19 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b9acbd6d..363b6dcd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ android { } } compileSdkVersion 24 - buildToolsVersion "24.0.0" + buildToolsVersion '25.0.0' defaultConfig { applicationId "jwtc.android.chess" minSdkVersion 11 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aebf0fbf..c2b488f4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ = Build.VERSION_CODES.KITKAT) { + sRoot = Environment.getExternalStorageDirectory().toString(); + } + browseTo(new File(sRoot)); } @Override @@ -165,19 +171,20 @@ private void fill(File[] files) { getResources().getDrawable(R.drawable.navigation_previous_item))); } Drawable currentIcon = null; - for (File currentFile : files){ - if (currentFile.canRead() /*&& (_mode == MODE_IMPORT || _mode == MODE_EXPORT && currentFile.canWrite())*/){ - if (currentFile.isDirectory()) { - currentIcon = getResources().getDrawable(R.drawable.collections_collection); - this.directoryEntries.add(new IconifiedText(currentFile.getPath(), currentIcon)); - }else { - String fileName = currentFile.getName(); - - if(fileNameFilterByMode(fileName)) - { - currentIcon = getResources().getDrawable(R.drawable.navigation_next_item); + if(files != null) { + for (File currentFile : files) { + if (currentFile.canRead() /*&& (_mode == MODE_IMPORT || _mode == MODE_EXPORT && currentFile.canWrite())*/) { + if (currentFile.isDirectory()) { + currentIcon = getResources().getDrawable(R.drawable.collections_collection); this.directoryEntries.add(new IconifiedText(currentFile.getPath(), currentIcon)); - } + } else { + String fileName = currentFile.getName(); + + if (fileNameFilterByMode(fileName)) { + currentIcon = getResources().getDrawable(R.drawable.navigation_next_item); + this.directoryEntries.add(new IconifiedText(currentFile.getPath(), currentIcon)); + } + } } } } diff --git a/app/src/main/java/jwtc/android/chess/tools/pgntool.java b/app/src/main/java/jwtc/android/chess/tools/pgntool.java index c81bbc1a..22d4e8b6 100644 --- a/app/src/main/java/jwtc/android/chess/tools/pgntool.java +++ b/app/src/main/java/jwtc/android/chess/tools/pgntool.java @@ -15,14 +15,19 @@ import jwtc.chess.PGNColumns; import jwtc.chess.algorithm.UCIWrapper; +import android.Manifest; import android.app.AlertDialog; import android.app.ListActivity; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.database.Cursor; +import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.*; import android.widget.AdapterView; @@ -42,6 +47,7 @@ public class pgntool extends ListActivity { protected static final String MODE_IMPORT_PRACTICE = "import_practice"; protected static final String MODE_IMPORT_PUZZLE = "import_puzzle"; protected static final String MODE_IMPORT_OPENINGDATABASE = "import_openingdatabase"; + protected static final int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1; protected static final String EXTRA_MODE = "jwtc.android.chess.tools.Mode"; @@ -70,6 +76,11 @@ public void onCreate(Bundle savedInstanceState) { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { + + if(false == pgntool.this.hasPermission()) { + return; + } + if (arrString[arg2].equals(getString(R.string.pgntool_export_explanation))) { doExport(); @@ -271,6 +282,19 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } + public boolean hasPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { + return true; + } else { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); + return false; + } + } else { + return true; + } + } + public void doExport() { try { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { diff --git a/build.gradle b/build.gradle index 5576bb34..cc4b51fc 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath 'com.android.tools.build:gradle:2.3.0' classpath 'com.google.gms:google-services:1.5.0-beta2' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a65acfb2..fd8afc79 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Aug 17 00:28:24 MST 2016 +#Tue Aug 15 08:18:07 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip