/*
* Copyright (C) 2010-2015 FBReader.ORG Limited <contact@fbreader.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
package org.geometerplus.android.fbreader.bookmark;
import android.content.Context;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.view.Window;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.fbreader.book.BookmarkUtil;
import org.geometerplus.fbreader.book.HighlightingStyle;
import org.geometerplus.android.fbreader.libraryService.BookCollectionShadow;
import org.geometerplus.android.fbreader.preferences.*;
public class EditStyleActivity extends PreferenceActivity {
static final String STYLE_ID_KEY = "style.id";
private final ZLResource myRootResource = ZLResource.resource("editStyle");
private final BookCollectionShadow myCollection = new BookCollectionShadow();
private HighlightingStyle myStyle;
private BgColorPreference myBgColorPreference;
@Override
protected void onCreate(Bundle bundle) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(bundle);
Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
final PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this);
setPreferenceScreen(screen);
myCollection.bindToService(this, new Runnable() {
public void run() {
myStyle = myCollection.getHighlightingStyle(getIntent().getIntExtra(STYLE_ID_KEY, -1));
if (myStyle == null) {
finish();
return;
}
screen.addPreference(new NamePreference());
screen.addPreference(new InvisiblePreference());
myBgColorPreference = new BgColorPreference();
screen.addPreference(myBgColorPreference);
}
});
}
@Override
protected void onDestroy() {
myCollection.unbind();
super.onDestroy();
}
private class NamePreference extends ZLStringPreference {
NamePreference() {
super(EditStyleActivity.this, myRootResource, "name");
super.setValue(BookmarkUtil.getStyleName(myStyle));
}
@Override
protected void setValue(String value) {
super.setValue(value);
BookmarkUtil.setStyleName(myStyle, value);
myCollection.saveHighlightingStyle(myStyle);
}
}
private class InvisiblePreference extends ZLCheckBoxPreference {
private ZLColor mySavedBgColor;
InvisiblePreference() {
super(EditStyleActivity.this, myRootResource.getResource("invisible"));
setChecked(myStyle.getBackgroundColor() == null);
}
@Override
protected void onClick() {
super.onClick();
if (isChecked()) {
mySavedBgColor = myStyle.getBackgroundColor();
myStyle.setBackgroundColor(null);
myBgColorPreference.setEnabled(false);
} else {
myStyle.setBackgroundColor(
mySavedBgColor != null ? mySavedBgColor : new ZLColor(127, 127, 127)
);
myBgColorPreference.setEnabled(true);
}
myCollection.saveHighlightingStyle(myStyle);
}
}
private class BgColorPreference extends ColorPreference {
BgColorPreference() {
super(EditStyleActivity.this);
setEnabled(getSavedColor() != null);
}
@Override
public String getTitle() {
return myRootResource.getResource("bgColor").getValue();
}
@Override
protected ZLColor getSavedColor() {
return myStyle.getBackgroundColor();
}
@Override
protected void saveColor(ZLColor color) {
myStyle.setBackgroundColor(color);
myCollection.saveHighlightingStyle(myStyle);
}
}
}