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

@@ -5,7 +5,8 @@
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginTop="-10dp" android:layout_marginTop="-10dp"
android:background="@android:drawable/title_bar" android:background="@android:drawable/title_bar"
android:orientation="vertical" > android:orientation="vertical"
android:tag="title" >
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/first_title_line" android:id="@+id/first_title_line"
@@ -13,7 +14,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:orientation="horizontal" > android:orientation="horizontal"
android:tag="title" >
<TextView <TextView
android:id="@+id/white_clock" android:id="@+id/white_clock"
style="?android:attr/windowTitleStyle" style="?android:attr/windowTitleStyle"
@@ -26,7 +28,8 @@
android:gravity="left" android:gravity="left"
android:marqueeRepeatLimit="marquee_forever" android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="false" android:scrollHorizontally="false"
android:singleLine="true"> android:singleLine="true"
android:tag="title" >
</TextView> </TextView>
<TextView <TextView
android:id="@+id/title_text" android:id="@+id/title_text"
@@ -35,6 +38,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:tag="title"
android:text="@string/app_name"> android:text="@string/app_name">
</TextView> </TextView>
<TextView <TextView
@@ -49,7 +53,8 @@
android:gravity="right" android:gravity="right"
android:marqueeRepeatLimit="marquee_forever" android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true" android:scrollHorizontally="true"
android:singleLine="true"> android:singleLine="true"
android:tag="title" >
</TextView> </TextView>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@@ -58,7 +63,8 @@
android:orientation="horizontal" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical"> android:layout_gravity="center_vertical"
android:tag="title" >
<TextView <TextView
android:id="@+id/white_pieces" android:id="@+id/white_pieces"
style="?android:attr/windowTitleStyle" style="?android:attr/windowTitleStyle"
@@ -71,6 +77,7 @@
android:gravity="center|center_vertical" android:gravity="center|center_vertical"
android:marqueeRepeatLimit="marquee_forever" android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true" android:singleLine="true"
android:tag="title"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"> android:textStyle="bold">
</TextView> </TextView>
@@ -81,6 +88,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center|center_vertical" android:gravity="center|center_vertical"
android:tag="title"
android:text=""> android:text="">
</TextView> </TextView>
<TextView <TextView
@@ -96,6 +104,7 @@
android:marqueeRepeatLimit="marquee_forever" android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true" android:scrollHorizontally="true"
android:singleLine="true" android:singleLine="true"
android:tag="title"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"> android:textStyle="bold">
</TextView> </TextView>

View File

@@ -319,6 +319,8 @@ you are not actively using the program.\
<string name="prefs_move_list">Move List</string> <string name="prefs_move_list">Move List</string>
<string name="prefs_color_currentMove_title">Current Move</string> <string name="prefs_color_currentMove_title">Current Move</string>
<string name="prefs_color_pgnComment_title">Comments</string> <string name="prefs_color_pgnComment_title">Comments</string>
<string name="prefs_color_fontForeground_title">Font color</string>
<string name="prefs_color_generalBackground_title">Background</string>
<string name="prefs_other">Other</string> <string name="prefs_other">Other</string>
<string name="prefs_bookSettings_title">Opening Book Settings</string> <string name="prefs_bookSettings_title">Opening Book Settings</string>
<string name="prefs_bookSettings_summary">Settings for opening book usage</string> <string name="prefs_bookSettings_summary">Settings for opening book usage</string>

View File

@@ -473,6 +473,18 @@
alphaSlider="true" alphaSlider="true"
android:defaultValue="#FFC0C000"> android:defaultValue="#FFC0C000">
</net.margaritov.preference.colorpicker.ColorPickerPreference> </net.margaritov.preference.colorpicker.ColorPickerPreference>
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="color_fontForeground"
android:title="@string/prefs_color_fontForeground_title"
alphaSlider="false"
android:defaultValue="#FFFFFFFF">
</net.margaritov.preference.colorpicker.ColorPickerPreference>
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="color_generalBackground"
android:title="@string/prefs_color_generalBackground_title"
alphaSlider="false"
android:defaultValue="#FF000000">
</net.margaritov.preference.colorpicker.ColorPickerPreference>
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>
</PreferenceCategory> </PreferenceCategory>

View File

@@ -26,7 +26,7 @@ public class ColorTheme {
private static ColorTheme inst = null; private static ColorTheme inst = null;
/** Get singleton instance. */ /** Get singleton instance. */
static final ColorTheme instance() { public static final ColorTheme instance() {
if (inst == null) if (inst == null)
inst = new ColorTheme(); inst = new ColorTheme();
return inst; return inst;
@@ -48,13 +48,16 @@ public class ColorTheme {
final static int SQUARE_LABEL = 13; final static int SQUARE_LABEL = 13;
final static int DECORATION = 14; final static int DECORATION = 14;
final static int PGN_COMMENT = 15; 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 int colorTable[] = new int[numColors];
private static final String[] prefNames = { private static final String[] prefNames = {
"darkSquare", "brightSquare", "selectedSquare", "cursorSquare", "darkPiece", "brightPiece", "currentMove", "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_"; private static final String prefPrefix = "color_";
@@ -65,37 +68,37 @@ public class ColorTheme {
{ // Original { // Original
"#FF808080", "#FFBEBE5A", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF888888", "#FF808080", "#FFBEBE5A", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF888888",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000", "#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
"#FF9F9F66", "#FFC0C000" "#FF9F9F66", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}, },
{ // XBoard { // XBoard
"#FF77A26D", "#FFC8C365", "#FFFFFF00", "#FF00FF00", "#FF202020", "#FFFFFFCC", "#FF6B9262", "#FF77A26D", "#FFC8C365", "#FFFFFF00", "#FF00FF00", "#FF202020", "#FFFFFFCC", "#FF6B9262",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000", "#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
"#FF808080", "#FFC0C000" "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}, },
{ // Blue { // Blue
"#FF83A5D2", "#FFFFFFFA", "#FF3232D1", "#FF5F5FFD", "#FF282828", "#FFF0F0F0", "#FF3333FF", "#FF83A5D2", "#FFFFFFFA", "#FF3232D1", "#FF5F5FFD", "#FF282828", "#FFF0F0F0", "#FF3333FF",
"#A01F1FFF", "#A01FFF1F", "#501F1FFF", "#501FFF1F", "#1E1F1FFF", "#281FFF1F", "#FFFF0000", "#A01F1FFF", "#A01FFF1F", "#501F1FFF", "#501FFF1F", "#1E1F1FFF", "#281FFF1F", "#FFFF0000",
"#FF808080", "#FFC0C000" "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}, },
{ // Grey { // Grey
"#FF666666", "#FFDDDDDD", "#FFFF0000", "#FF0000FF", "#FF000000", "#FFFFFFFF", "#FF888888", "#FF666666", "#FFDDDDDD", "#FFFF0000", "#FF0000FF", "#FF000000", "#FFFFFFFF", "#FF888888",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000", "#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
"#FF909090", "#FFC0C000" "#FF909090", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}, },
{ // Scid Default { // Scid Default
"#FF80A0A0", "#FFD0E0D0", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF666666", "#FF80A0A0", "#FFD0E0D0", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF666666",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000", "#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
"#FF808080", "#FFC0C000" "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}, },
{ // Scid Brown { // Scid Brown
"#B58863", "#F0D9B5", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF666666", "#B58863", "#F0D9B5", "#FFFF0000", "#FF00FF00", "#FF000000", "#FFFFFFFF", "#FF666666",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000", "#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
"#FF808080", "#FFC0C000" "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
}, },
{ // Scid Green { // Scid Green
"#FF769656", "#FFEEEED2", "#FFFF0000", "#FF0000FF", "#FF000000", "#FFFFFFFF", "#FF666666", "#FF769656", "#FFEEEED2", "#FFFF0000", "#FF0000FF", "#FF000000", "#FFFFFFFF", "#FF666666",
"#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000", "#A01F1FFF", "#A0FF1F1F", "#501F1FFF", "#50FF1F1F", "#1E1F1FFF", "#28FF1F1F", "#FFFF0000",
"#FF808080", "#FFC0C000" "#FF808080", "#FFC0C000", "#FFFFFFFF", "#FF000000"
} }
}; };
@@ -121,7 +124,7 @@ public class ColorTheme {
readColors(settings); readColors(settings);
} }
final int getColor(int colorType) { public final int getColor(int colorType) {
return colorTable[colorType]; return colorTable[colorType];
} }
} }

View File

@@ -535,6 +535,7 @@ public class DroidFish extends Activity implements GUIInterface {
private final void initUI() { private final void initUI() {
leftHanded = leftHandedView(); leftHanded = leftHandedView();
setContentView(leftHanded ? R.layout.main_left_handed : R.layout.main); 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) // title lines need to be regenerated every time due to layout changes (rotations)
secondTitleLine = findViewById(R.id.second_title_line); secondTitleLine = findViewById(R.id.second_title_line);
@@ -888,6 +889,7 @@ public class DroidFish extends Activity implements GUIInterface {
ColorTheme.instance().readColors(settings); ColorTheme.instance().readColors(settings);
cb.setColors(); cb.setColors();
Util.overrideFonts(findViewById(android.R.id.content));
gameTextListener.clear(); gameTextListener.clear();
setPieceNames(pgnOptions.view.pieceType); setPieceNames(pgnOptions.view.pieceType);
@@ -2026,6 +2028,7 @@ public class DroidFish extends Activity implements GUIInterface {
gameTextListener.clear(); gameTextListener.clear();
ctrl.prefsChanged(false); ctrl.prefsChanged(false);
dialog.dismiss(); dialog.dismiss();
Util.overrideFonts(findViewById(android.R.id.content));
} }
}); });
return builder.create(); return builder.create();

View File

@@ -12,7 +12,14 @@ import org.petero.droidfish.gamelogic.Position;
import android.app.Activity; import android.app.Activity;
import android.os.Build; import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager; 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 class Util {
public final static String boldStart; public final static String boldStart;
@@ -82,4 +89,29 @@ public final class Util {
} }
a.getWindow().setAttributes(attrs); 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() { private final void initUI() {
setContentView(R.layout.editboard); setContentView(R.layout.editboard);
Util.overrideFonts(findViewById(android.R.id.content));
cb = (ChessBoardEdit)findViewById(R.id.eb_chessboard); cb = (ChessBoardEdit)findViewById(R.id.eb_chessboard);
status = (TextView)findViewById(R.id.eb_status); status = (TextView)findViewById(R.id.eb_status);
okButton = (Button)findViewById(R.id.eb_ok); okButton = (Button)findViewById(R.id.eb_ok);

View File

@@ -21,7 +21,9 @@ package org.petero.droidfish.activities;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import org.petero.droidfish.ColorTheme;
import org.petero.droidfish.R; import org.petero.droidfish.R;
import org.petero.droidfish.Util;
import org.petero.droidfish.activities.PGNFile.GameInfo; import org.petero.droidfish.activities.PGNFile.GameInfo;
import org.petero.droidfish.activities.PGNFile.GameInfoResult; import org.petero.droidfish.activities.PGNFile.GameInfoResult;
import org.petero.droidfish.gamelogic.Pair; import org.petero.droidfish.gamelogic.Pair;
@@ -43,6 +45,7 @@ import android.text.TextWatcher;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
@@ -234,7 +237,18 @@ public class EditPGN extends ListActivity {
private final void showList() { private final void showList() {
progress.dismiss(); progress.dismiss();
setContentView(R.layout.select_game); 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); setListAdapter(aa);
ListView lv = getListView(); ListView lv = getListView();
lv.setSelectionFromTop(defaultItem, 0); lv.setSelectionFromTop(defaultItem, 0);

View File

@@ -21,7 +21,9 @@ package org.petero.droidfish.activities;
import java.io.File; import java.io.File;
import java.util.Vector; import java.util.Vector;
import org.petero.droidfish.ColorTheme;
import org.petero.droidfish.R; import org.petero.droidfish.R;
import org.petero.droidfish.Util;
import android.app.Dialog; import android.app.Dialog;
import android.app.ListActivity; import android.app.ListActivity;
@@ -36,9 +38,11 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemClickListener;
@@ -167,9 +171,21 @@ public class LoadScid extends ListActivity {
private final void showList() { private final void showList() {
progress.dismiss(); 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); setListAdapter(aa);
ListView lv = getListView(); ListView lv = getListView();
Util.overrideFonts(lv);
lv.setSelectionFromTop(defaultItem, 0); lv.setSelectionFromTop(defaultItem, 0);
lv.setFastScrollEnabled(true); lv.setFastScrollEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() { lv.setOnItemClickListener(new OnItemClickListener() {