diff --git a/DroidFish/res/layout-land/editboard.xml b/DroidFish/res/layout-land/editboard.xml index 68b222b..521c2a4 100644 --- a/DroidFish/res/layout-land/editboard.xml +++ b/DroidFish/res/layout-land/editboard.xml @@ -3,21 +3,65 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" - android:layout_height="fill_parent"> + android:layout_height="fill_parent" + android:layout_gravity="center_vertical"> + android:layout_height="fill_parent" + class="org.petero.droidfish.activities.ChessBoardEdit"/> - + - + android:layout_gravity="center_vertical" + android:background="@android:drawable/title_bar" + android:orientation="horizontal" + android:tag="title" > + + + + + android:layout_weight="1" + android:text="@string/cancel" /> + + + + + + + diff --git a/DroidFish/res/layout/title.xml b/DroidFish/res/layout/title.xml index 7a3218e..cb7685c 100644 --- a/DroidFish/res/layout/title.xml +++ b/DroidFish/res/layout/title.xml @@ -8,6 +8,7 @@ android:orientation="vertical" > = Piece.WQUEEN; p--) { + for (int p = Piece.WPAWN; p >= Piece.WKING; p--) { int diff = pos.nPieces(p) - pos.nPieces(Piece.swapColor(p)); while (diff < 0) { whiteString.append(Piece.toUniCode(Piece.swapColor(p))); diff --git a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java index 4007079..681906f 100644 --- a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java +++ b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java @@ -24,6 +24,7 @@ import org.petero.droidfish.ChessBoard; import org.petero.droidfish.R; import org.petero.droidfish.ChessBoard.SquareDecoration; import org.petero.droidfish.Util; +import org.petero.droidfish.Util.MaterialDiff; import org.petero.droidfish.gamelogic.ChessParseError; import org.petero.droidfish.gamelogic.Move; import org.petero.droidfish.gamelogic.Pair; @@ -39,6 +40,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; +import android.graphics.Typeface; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.ClipboardManager; @@ -63,15 +65,20 @@ public class EditBoard extends Activity { private Button okButton; private Button cancelButton; private TextView whiteTitleText, blackTitleText, engineTitleText; - private View secondTitleLine; boolean egtbHints; + private TextView whiteFigText; + private TextView blackFigText; + private TextView summaryTitleText; + private Typeface figNotation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); + figNotation = Typeface.createFromAsset(getAssets(), "fonts/DroidFishChessNotationDark.otf"); + initUI(); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); @@ -84,6 +91,7 @@ public class EditBoard extends Activity { try { pos = TextIO.readFEN(i.getAction()); cb.setPosition(pos); + checkValidAndUpdateMaterialDiff(); } catch (ChessParseError e) { } } @@ -101,6 +109,7 @@ public class EditBoard extends Activity { setSelection(oldCB.selectedSquare); cb.userSelectedSquare = oldCB.userSelectedSquare; status.setText(statusStr); + checkValidAndUpdateMaterialDiff(); } private final void initUI() { @@ -116,8 +125,16 @@ public class EditBoard extends Activity { blackTitleText.setVisibility(View.GONE); engineTitleText = (TextView)findViewById(R.id.title_text); engineTitleText.setVisibility(View.GONE); - secondTitleLine = findViewById(R.id.second_title_line); - secondTitleLine.setVisibility(View.GONE); + whiteFigText = (TextView) findViewById(R.id.white_pieces); + whiteFigText.setTypeface(figNotation); + whiteFigText.setSelected(true); + whiteFigText.setTextColor(whiteTitleText.getTextColors()); + blackFigText = (TextView) findViewById(R.id.black_pieces); + blackFigText.setTypeface(figNotation); + blackFigText.setSelected(true); + blackFigText.setTextColor(blackTitleText.getTextColors()); + summaryTitleText = (TextView) findViewById(R.id.title_text_summary); + summaryTitleText.setVisibility(View.GONE); okButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { @@ -243,7 +260,7 @@ public class EditBoard extends Activity { setSelection(-1); else setSelection(m.from); - checkValid(); + checkValidAndUpdateMaterialDiff(); } @Override @@ -256,7 +273,7 @@ public class EditBoard extends Activity { } private final void sendBackResult() { - if (checkValid()) { + if (checkValidAndUpdateMaterialDiff()) { setPosFields(); String fen = TextIO.toFEN(cb.pos); setResult(RESULT_OK, (new Intent()).setAction(fen)); @@ -287,9 +304,13 @@ public class EditBoard extends Activity { cb.pos.setEpSquare(epSquare); } - /** Test if a position is valid. */ - private final boolean checkValid() { + /** Test if a position is valid and update material diff display. */ + private final boolean checkValidAndUpdateMaterialDiff() { try { + MaterialDiff md = Util.getMaterialDiff(cb.pos); + whiteFigText.setText(md.white); + blackFigText.setText(md.black); + String fen = TextIO.toFEN(cb.pos); TextIO.readFEN(fen); status.setText(""); @@ -332,13 +353,13 @@ public class EditBoard extends Activity { case 0: // Edit side to move showDialog(SIDE_DIALOG); setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); break; case 1: { // Clear board Position pos = new Position(); cb.setPosition(pos); setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); break; } case 2: { // Set initial position @@ -346,7 +367,7 @@ public class EditBoard extends Activity { Position pos = TextIO.readFEN(TextIO.startPosFEN); cb.setPosition(pos); setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); } catch (ChessParseError e) { } break; @@ -355,19 +376,19 @@ public class EditBoard extends Activity { removeDialog(CASTLE_DIALOG); showDialog(CASTLE_DIALOG); setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); break; case 4: // Edit en passant file removeDialog(EP_DIALOG); showDialog(EP_DIALOG); setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); break; case 5: // Edit move counters removeDialog(MOVCNT_DIALOG); showDialog(MOVCNT_DIALOG); setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); break; case 6: { // Copy position setPosFields(); @@ -390,7 +411,7 @@ public class EditBoard extends Activity { Toast.makeText(getApplicationContext(), getParseErrString(e), Toast.LENGTH_SHORT).show(); } setSelection(-1); - checkValid(); + checkValidAndUpdateMaterialDiff(); } break; } @@ -408,11 +429,11 @@ public class EditBoard extends Activity { public void onClick(DialogInterface dialog, int id) { if (id == 0) { // white to move cb.pos.setWhiteMove(true); - checkValid(); + checkValidAndUpdateMaterialDiff(); dialog.cancel(); } else { cb.pos.setWhiteMove(false); - checkValid(); + checkValidAndUpdateMaterialDiff(); dialog.cancel(); } } @@ -452,7 +473,7 @@ public class EditBoard extends Activity { if (h8Castle) castleMask |= 1 << Position.H8_CASTLE; pos.setCastleMask(castleMask); cb.setPosition(pos); - checkValid(); + checkValidAndUpdateMaterialDiff(); } }); AlertDialog alert = builder.create();