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() {