DroidFish: Made it possible to change background color and text foreground color. From Leo Mayer.

This commit is contained in:
Peter Osterlund
2012-09-28 22:22:06 +00:00
parent fa0d1a20d9
commit 705e0ffea3
9 changed files with 111 additions and 18 deletions

View File

@@ -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];
}
}

View File

@@ -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();

View File

@@ -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);
}
}
}

View File

@@ -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);

View File

@@ -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<GameInfo>(this, R.layout.select_game_list_item, gamesInFile);
Util.overrideFonts(findViewById(android.R.id.content));
aa = new ArrayAdapter<GameInfo>(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);

View File

@@ -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<GameInfo> aa = new ArrayAdapter<GameInfo>(this, R.layout.select_game_list_item, gamesInFile);
final ArrayAdapter<GameInfo> aa =
new ArrayAdapter<GameInfo>(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() {