From b297eb10861fee496c4e2396f0b05fa83f0eafb7 Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Sun, 20 Jan 2013 11:10:51 +0000 Subject: [PATCH] DroidFish: If DroidFish is started with a FEN intent corresponding to an illegal chess position, go automatically into edit board mode, so the user can correct the position. --- .../src/org/petero/droidfish/DroidFish.java | 17 ++++++++++++++--- .../petero/droidfish/activities/EditBoard.java | 8 +++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/DroidFish/src/org/petero/droidfish/DroidFish.java b/DroidFish/src/org/petero/droidfish/DroidFish.java index 884fb0c..1776bf7 100644 --- a/DroidFish/src/org/petero/droidfish/DroidFish.java +++ b/DroidFish/src/org/petero/droidfish/DroidFish.java @@ -406,6 +406,13 @@ public class DroidFish extends Activity implements GUIInterface { ctrl.setFENOrPGN(intentPgnOrFen); setBoardFlip(true); } catch (ChessParseError e) { + // If FEN corresponds to illegal chess position, go into edit board mode. + try { + TextIO.readFEN(intentPgnOrFen); + } catch (ChessParseError e2) { + if (e2.pos != null) + startEditBoard(intentPgnOrFen); + } } } else if (intentFilename != null) { loadPGNFromFile(intentFilename); @@ -1160,9 +1167,7 @@ public class DroidFish extends Activity implements GUIInterface { showDialog(NEW_GAME_DIALOG); return true; case R.id.item_editboard: { - Intent i = new Intent(DroidFish.this, EditBoard.class); - i.setAction(ctrl.getFEN()); - startActivityForResult(i, RESULT_EDITBOARD); + startEditBoard(ctrl.getFEN()); return true; } case R.id.item_settings: { @@ -1216,6 +1221,12 @@ public class DroidFish extends Activity implements GUIInterface { return false; } + private void startEditBoard(String fen) { + Intent i = new Intent(DroidFish.this, EditBoard.class); + i.setAction(fen); + startActivityForResult(i, RESULT_EDITBOARD); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { diff --git a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java index f8ec315..6377498 100644 --- a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java +++ b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java @@ -90,13 +90,15 @@ public class EditBoard extends Activity { Util.setFullScreenMode(this, settings); Intent i = getIntent(); - Position pos; + Position pos = null; try { pos = TextIO.readFEN(i.getAction()); - cb.setPosition(pos); - checkValidAndUpdateMaterialDiff(); } catch (ChessParseError e) { + pos = e.pos; } + if (pos != null) + cb.setPosition(pos); + checkValidAndUpdateMaterialDiff(); } @Override