diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml
index 8ef7dcade..71bde9eb2 100644
--- a/assets/resources/application/en.xml
+++ b/assets/resources/application/en.xml
@@ -320,10 +320,10 @@
-
-
-
-
+
+
+
+
diff --git a/res/layout/color_dialog.xml b/res/layout/color_dialog.xml
new file mode 100644
index 000000000..354195e7e
--- /dev/null
+++ b/res/layout/color_dialog.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
index f7850588d..f7d0b7435 100644
--- a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
+++ b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
@@ -230,17 +230,18 @@ public class PreferenceActivity extends ZLPreferenceActivity {
final Screen colorsScreen = optionsCategory.createPreferenceScreen("colors");
final Category colorsCategory = colorsScreen.createCategory(null);
+ final ColorProfile profile = fbReader.getColorProfile();
colorsCategory.addPreference(new ZLColorPreference(
- this, colorsCategory.Resource, "background"
+ this, colorsCategory.Resource, "background", profile.BackgroundOption
));
colorsCategory.addPreference(new ZLColorPreference(
- this, colorsCategory.Resource, "highlighting"
+ this, colorsCategory.Resource, "highlighting", profile.HighlightingOption
));
colorsCategory.addPreference(new ZLColorPreference(
- this, colorsCategory.Resource, "text"
+ this, colorsCategory.Resource, "text", profile.RegularTextOption
));
colorsCategory.addPreference(new ZLColorPreference(
- this, colorsCategory.Resource, "hyperlink"
+ this, colorsCategory.Resource, "hyperlink", profile.HyperlinkTextOption
));
final Screen marginsScreen = optionsCategory.createPreferenceScreen("margins");
diff --git a/src/org/geometerplus/android/fbreader/preferences/ZLColorPreference.java b/src/org/geometerplus/android/fbreader/preferences/ZLColorPreference.java
index d04390981..b0261e76e 100644
--- a/src/org/geometerplus/android/fbreader/preferences/ZLColorPreference.java
+++ b/src/org/geometerplus/android/fbreader/preferences/ZLColorPreference.java
@@ -20,27 +20,107 @@
package org.geometerplus.android.fbreader.preferences;
import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.graphics.drawable.*;
import android.preference.DialogPreference;
import android.view.View;
-import android.widget.ImageView;
+import android.widget.SeekBar;
+import org.geometerplus.zlibrary.core.util.ZLColor;
+import org.geometerplus.zlibrary.core.options.ZLColorOption;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.ui.android.R;
+import org.geometerplus.zlibrary.ui.android.util.ZLAndroidColorUtil;
class ZLColorPreference extends DialogPreference implements ZLPreference {
- ZLColorPreference(Context context, ZLResource resource, String resourceKey) {
+ private final ZLColorOption myOption;
+
+ private SeekBar myRedSlider;
+ private SeekBar myGreenSlider;
+ private SeekBar myBlueSlider;
+ private final GradientDrawable myPreviewDrawable = new GradientDrawable();
+
+ ZLColorPreference(Context context, ZLResource resource, String resourceKey, ZLColorOption option) {
super(context, null);
- setWidgetLayoutResource(R.layout.color_preference_widget);
- setTitle(resource.getResource(resourceKey).getValue());
+ myOption = option;
+ //setWidgetLayoutResource(R.layout.color_preference_widget);
+ final String title = resource.getResource(resourceKey).getValue();
+ setTitle(title);
+ setDialogTitle(title);
+ setDialogLayoutResource(R.layout.color_dialog);
}
+ @Override
+ protected void onBindDialogView(View view) {
+ final ZLColor color = myOption.getValue();
+
+ myRedSlider = (SeekBar)view.findViewById(R.id.color_red);
+ myRedSlider.setProgress(color.Red);
+
+ myGreenSlider = (SeekBar)view.findViewById(R.id.color_green);
+ myGreenSlider.setProgress(color.Green);
+
+ myBlueSlider = (SeekBar)view.findViewById(R.id.color_blue);
+ myBlueSlider.setProgress(color.Blue);
+
+ final View colorBox = view.findViewById(R.id.color_box);
+ colorBox.setBackgroundDrawable(myPreviewDrawable);
+ myPreviewDrawable.setCornerRadius(7);
+ myPreviewDrawable.setColor(ZLAndroidColorUtil.rgb(color));
+
+ final SeekBar.OnSeekBarChangeListener listener = new SeekBar.OnSeekBarChangeListener() {
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ myPreviewDrawable.setColor(Color.rgb(
+ myRedSlider.getProgress(),
+ myGreenSlider.getProgress(),
+ myBlueSlider.getProgress()
+ ));
+ myPreviewDrawable.invalidateSelf();
+ }
+
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ myPreviewDrawable.setColor(Color.rgb(
+ myRedSlider.getProgress(),
+ myGreenSlider.getProgress(),
+ myBlueSlider.getProgress()
+ ));
+ myPreviewDrawable.invalidateSelf();
+ }
+ };
+ myRedSlider.setOnSeekBarChangeListener(listener);
+ myGreenSlider.setOnSeekBarChangeListener(listener);
+ myBlueSlider.setOnSeekBarChangeListener(listener);
+
+ super.onBindDialogView(view);
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ myOption.setValue(new ZLColor(
+ myRedSlider.getProgress(),
+ myGreenSlider.getProgress(),
+ myBlueSlider.getProgress()
+ ));
+ }
+ }
+
+ /*
@Override
protected void onBindView(View view) {
final ImageView colorView = (ImageView)view.findViewById(R.id.color_preference_color);
- colorView.setImageResource(R.drawable.fbreader);
+ //colorView.setImageResource(R.drawable.fbreader);
+ final Drawable drawable = new ColorDrawable(0x00FF00);
+ colorView.setImageDrawable(drawable);
+
super.onBindView(view);
}
+ */
public void onAccept() {
}