diff --git a/DroidFish/res/layout/title.xml b/DroidFish/res/layout/title.xml
index cb7685c..6a64123 100644
--- a/DroidFish/res/layout/title.xml
+++ b/DroidFish/res/layout/title.xml
@@ -5,7 +5,8 @@
android:layout_gravity="center_vertical"
android:layout_marginTop="-10dp"
android:background="@android:drawable/title_bar"
- android:orientation="vertical" >
+ android:orientation="vertical"
+ android:tag="title" >
+ android:orientation="horizontal"
+ android:tag="title" >
+ android:singleLine="true"
+ android:tag="title" >
+ android:singleLine="true"
+ android:tag="title" >
+ android:layout_gravity="center_vertical"
+ android:tag="title" >
@@ -81,6 +88,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center|center_vertical"
+ android:tag="title"
android:text="">
diff --git a/DroidFish/res/values/strings.xml b/DroidFish/res/values/strings.xml
index 14b0246..5b45262 100644
--- a/DroidFish/res/values/strings.xml
+++ b/DroidFish/res/values/strings.xml
@@ -319,6 +319,8 @@ you are not actively using the program.\
Move List
Current Move
Comments
+ Font color
+ Background
Other
Opening Book Settings
Settings for opening book usage
diff --git a/DroidFish/res/xml/preferences.xml b/DroidFish/res/xml/preferences.xml
index f40a259..64732c2 100644
--- a/DroidFish/res/xml/preferences.xml
+++ b/DroidFish/res/xml/preferences.xml
@@ -473,6 +473,18 @@
alphaSlider="true"
android:defaultValue="#FFC0C000">
+
+
+
+
diff --git a/DroidFish/src/org/petero/droidfish/ColorTheme.java b/DroidFish/src/org/petero/droidfish/ColorTheme.java
index c14b4a5..3ac4ecf 100644
--- a/DroidFish/src/org/petero/droidfish/ColorTheme.java
+++ b/DroidFish/src/org/petero/droidfish/ColorTheme.java
@@ -26,7 +26,7 @@ public class ColorTheme {
private static ColorTheme inst = null;
/** Get singleton instance. */
- static final ColorTheme instance() {
+ public static final ColorTheme instance() {
if (inst == null)
inst = new ColorTheme();
return inst;
@@ -48,13 +48,16 @@ public class ColorTheme {
final static int SQUARE_LABEL = 13;
final static int DECORATION = 14;
final static int PGN_COMMENT = 15;
- private final static int numColors = 16;
+ public final static int FONT_FOREGROUND = 16;
+ public final static int GENERAL_BACKGROUND = 17;
+ private final static int numColors = 18;
private int colorTable[] = new int[numColors];
private static final String[] prefNames = {
"darkSquare", "brightSquare", "selectedSquare", "cursorSquare", "darkPiece", "brightPiece", "currentMove",
- "arrow0", "arrow1", "arrow2", "arrow3", "arrow4", "arrow5", "squareLabel", "decoration", "pgnComment"
+ "arrow0", "arrow1", "arrow2", "arrow3", "arrow4", "arrow5", "squareLabel", "decoration", "pgnComment",
+ "fontForeground", "generalBackground"
};
private static final String prefPrefix = "color_";
@@ -65,37 +68,37 @@ public class ColorTheme {
{ // Original
"#FF808080", "#FFBEBE5A", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF888888",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
- "#FF9F9F66", "#FFC0C000"
+ "#FF9F9F66", "#FFC0C000", "#FFFFFFFF", "#FF000000"
},
{ // XBoard
"#FF77A26D", "#FFC8C365", "#FFFFFF00", "#FF00FF00", "#FF202020", "#FFFFFFCC", "#FF6B9262",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
- "#FF808080", "#FFC0C000"
+ "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
},
{ // Blue
"#FF83A5D2", "#FFFFFFFA", "#FF3232D1", "#FF5F5FFD", "#FF282828", "#FFF0F0F0", "#FF3333FF",
"#A01F1FFF", "#A01FFF1F", "#501F1FFF", "#501FFF1F", "#1E1F1FFF", "#281FFF1F", "#FFFF0000",
- "#FF808080", "#FFC0C000"
+ "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
},
{ // Grey
"#FF666666", "#FFDDDDDD", "#FFFF0000", "#FF0000FF", "#FF000000", "#FFFFFFFF", "#FF888888",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
- "#FF909090", "#FFC0C000"
+ "#FF909090", "#FFC0C000", "#FFFFFFFF", "#FF000000"
},
{ // Scid Default
"#FF80A0A0", "#FFD0E0D0", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF666666",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
- "#FF808080", "#FFC0C000"
+ "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
},
{ // Scid Brown
"#B58863", "#F0D9B5", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF666666",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
- "#FF808080", "#FFC0C000"
+ "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
},
{ // Scid Green
"#FF769656", "#FFEEEED2", "#FFFF0000", "#FF0000FF", "#FF000000", "#FFFFFFFF", "#FF666666",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
- "#FF808080", "#FFC0C000"
+ "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}
};
@@ -121,7 +124,7 @@ public class ColorTheme {
readColors(settings);
}
- final int getColor(int colorType) {
+ public final int getColor(int colorType) {
return colorTable[colorType];
}
}
diff --git a/DroidFish/src/org/petero/droidfish/DroidFish.java b/DroidFish/src/org/petero/droidfish/DroidFish.java
index 7b465c9..d763795 100644
--- a/DroidFish/src/org/petero/droidfish/DroidFish.java
+++ b/DroidFish/src/org/petero/droidfish/DroidFish.java
@@ -535,6 +535,7 @@ public class DroidFish extends Activity implements GUIInterface {
private final void initUI() {
leftHanded = leftHandedView();
setContentView(leftHanded ? R.layout.main_left_handed : R.layout.main);
+ Util.overrideFonts(findViewById(android.R.id.content));
// title lines need to be regenerated every time due to layout changes (rotations)
secondTitleLine = findViewById(R.id.second_title_line);
@@ -888,6 +889,7 @@ public class DroidFish extends Activity implements GUIInterface {
ColorTheme.instance().readColors(settings);
cb.setColors();
+ Util.overrideFonts(findViewById(android.R.id.content));
gameTextListener.clear();
setPieceNames(pgnOptions.view.pieceType);
@@ -2026,6 +2028,7 @@ public class DroidFish extends Activity implements GUIInterface {
gameTextListener.clear();
ctrl.prefsChanged(false);
dialog.dismiss();
+ Util.overrideFonts(findViewById(android.R.id.content));
}
});
return builder.create();
diff --git a/DroidFish/src/org/petero/droidfish/Util.java b/DroidFish/src/org/petero/droidfish/Util.java
index d8e7282..9ff228b 100644
--- a/DroidFish/src/org/petero/droidfish/Util.java
+++ b/DroidFish/src/org/petero/droidfish/Util.java
@@ -12,7 +12,14 @@ import org.petero.droidfish.gamelogic.Position;
import android.app.Activity;
import android.os.Build;
+import android.view.View;
+import android.view.ViewGroup;
import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ListView;
+import android.widget.TextView;
public final class Util {
public final static String boldStart;
@@ -82,4 +89,29 @@ public final class Util {
}
a.getWindow().setAttributes(attrs);
}
+
+ /** Change foreground/background color in a view. */
+ public static void overrideFonts(final View v) {
+ if (v == null)
+ return;
+ final int bg = ColorTheme.instance().getColor(ColorTheme.GENERAL_BACKGROUND);
+ final boolean excludedItems = v instanceof Button ||
+ v instanceof EditText ||
+ v instanceof ImageButton ||
+ "title".equals(v.getTag());
+ if (!excludedItems)
+ v.setBackgroundColor(bg);
+ if (v instanceof ListView)
+ ((ListView) v).setCacheColorHint(bg);
+ if (v instanceof ViewGroup) {
+ ViewGroup vg = (ViewGroup) v;
+ for (int i = 0; i < vg.getChildCount(); i++) {
+ View child = vg.getChildAt(i);
+ overrideFonts(child);
+ }
+ } else if ((v instanceof TextView) && !excludedItems) {
+ int fg = ColorTheme.instance().getColor(ColorTheme.FONT_FOREGROUND);
+ ((TextView) v).setTextColor(fg);
+ }
+ }
}
diff --git a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java
index 681906f..6f77c2f 100644
--- a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java
+++ b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java
@@ -114,6 +114,8 @@ public class EditBoard extends Activity {
private final void initUI() {
setContentView(R.layout.editboard);
+ Util.overrideFonts(findViewById(android.R.id.content));
+
cb = (ChessBoardEdit)findViewById(R.id.eb_chessboard);
status = (TextView)findViewById(R.id.eb_status);
okButton = (Button)findViewById(R.id.eb_ok);
diff --git a/DroidFish/src/org/petero/droidfish/activities/EditPGN.java b/DroidFish/src/org/petero/droidfish/activities/EditPGN.java
index 8872148..3296778 100644
--- a/DroidFish/src/org/petero/droidfish/activities/EditPGN.java
+++ b/DroidFish/src/org/petero/droidfish/activities/EditPGN.java
@@ -21,7 +21,9 @@ package org.petero.droidfish.activities;
import java.io.File;
import java.util.ArrayList;
+import org.petero.droidfish.ColorTheme;
import org.petero.droidfish.R;
+import org.petero.droidfish.Util;
import org.petero.droidfish.activities.PGNFile.GameInfo;
import org.petero.droidfish.activities.PGNFile.GameInfoResult;
import org.petero.droidfish.gamelogic.Pair;
@@ -43,6 +45,7 @@ import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
@@ -234,7 +237,18 @@ public class EditPGN extends ListActivity {
private final void showList() {
progress.dismiss();
setContentView(R.layout.select_game);
- aa = new ArrayAdapter(this, R.layout.select_game_list_item, gamesInFile);
+ Util.overrideFonts(findViewById(android.R.id.content));
+ aa = new ArrayAdapter(this, R.layout.select_game_list_item, gamesInFile) {
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View view = super.getView(position, convertView, parent);
+ if (view instanceof TextView) {
+ int fg = ColorTheme.instance().getColor(ColorTheme.FONT_FOREGROUND);
+ ((TextView) view).setTextColor(fg);
+ }
+ return view;
+ }
+ };
setListAdapter(aa);
ListView lv = getListView();
lv.setSelectionFromTop(defaultItem, 0);
diff --git a/DroidFish/src/org/petero/droidfish/activities/LoadScid.java b/DroidFish/src/org/petero/droidfish/activities/LoadScid.java
index b0b7e56..2f1c77f 100644
--- a/DroidFish/src/org/petero/droidfish/activities/LoadScid.java
+++ b/DroidFish/src/org/petero/droidfish/activities/LoadScid.java
@@ -21,7 +21,9 @@ package org.petero.droidfish.activities;
import java.io.File;
import java.util.Vector;
+import org.petero.droidfish.ColorTheme;
import org.petero.droidfish.R;
+import org.petero.droidfish.Util;
import android.app.Dialog;
import android.app.ListActivity;
@@ -36,9 +38,11 @@ import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
+import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
@@ -167,9 +171,21 @@ public class LoadScid extends ListActivity {
private final void showList() {
progress.dismiss();
- final ArrayAdapter aa = new ArrayAdapter(this, R.layout.select_game_list_item, gamesInFile);
+ final ArrayAdapter aa =
+ new ArrayAdapter(this, R.layout.select_game_list_item, gamesInFile) {
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View view = super.getView(position, convertView, parent);
+ if (view instanceof TextView) {
+ int fg = ColorTheme.instance().getColor(ColorTheme.FONT_FOREGROUND);
+ ((TextView) view).setTextColor(fg);
+ }
+ return view;
+ }
+ };
setListAdapter(aa);
ListView lv = getListView();
+ Util.overrideFonts(lv);
lv.setSelectionFromTop(defaultItem, 0);
lv.setFastScrollEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {