diff --git a/ChangeLog b/ChangeLog
index 6bfbbb5b7..866ba2033 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+===== 1.0.12 (May ??, 2011) =====
+* Image view settings
+* Html in book description
+
===== 1.0.11 (May 07, 2011) =====
* Book description from OPDS full entry
* Fixed LitRes 'my books' entry loading
diff --git a/assets/resources/application/cs.xml b/assets/resources/application/cs.xml
index 7f7d52185..e2a9b14bf 100644
--- a/assets/resources/application/cs.xml
+++ b/assets/resources/application/cs.xml
@@ -544,6 +544,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/de.xml b/assets/resources/application/de.xml
index 943d1b38f..4added71f 100644
--- a/assets/resources/application/de.xml
+++ b/assets/resources/application/de.xml
@@ -531,6 +531,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml
index 473ee4e92..3e05d6b36 100644
--- a/assets/resources/application/en.xml
+++ b/assets/resources/application/en.xml
@@ -543,6 +543,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/fr.xml b/assets/resources/application/fr.xml
index 3486dd166..392507d99 100644
--- a/assets/resources/application/fr.xml
+++ b/assets/resources/application/fr.xml
@@ -533,6 +533,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/gl.xml b/assets/resources/application/gl.xml
index 7741bf670..ffd5c0cb5 100644
--- a/assets/resources/application/gl.xml
+++ b/assets/resources/application/gl.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/hu.xml b/assets/resources/application/hu.xml
index 3158ff021..d7fb743cc 100644
--- a/assets/resources/application/hu.xml
+++ b/assets/resources/application/hu.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/it.xml b/assets/resources/application/it.xml
index 4a64aeb63..f0a314b6f 100644
--- a/assets/resources/application/it.xml
+++ b/assets/resources/application/it.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/nl.xml b/assets/resources/application/nl.xml
index e1732b213..3d2e49232 100644
--- a/assets/resources/application/nl.xml
+++ b/assets/resources/application/nl.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/ru.xml b/assets/resources/application/ru.xml
index 304eaa893..1a3707743 100644
--- a/assets/resources/application/ru.xml
+++ b/assets/resources/application/ru.xml
@@ -529,6 +529,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/th.xml b/assets/resources/application/th.xml
index 3a2eda8dd..9cce38697 100644
--- a/assets/resources/application/th.xml
+++ b/assets/resources/application/th.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/uk.xml b/assets/resources/application/uk.xml
index c62c16959..b3f1348af 100644
--- a/assets/resources/application/uk.xml
+++ b/assets/resources/application/uk.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/vi.xml b/assets/resources/application/vi.xml
index e8459e11a..c6c93ff01 100644
--- a/assets/resources/application/vi.xml
+++ b/assets/resources/application/vi.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/zh.xml b/assets/resources/application/zh.xml
index 74f87c687..65b6fb314 100644
--- a/assets/resources/application/zh.xml
+++ b/assets/resources/application/zh.xml
@@ -530,6 +530,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/zlibrary/cs.xml b/assets/resources/zlibrary/cs.xml
index 5fa0b5efc..491acc198 100644
--- a/assets/resources/zlibrary/cs.xml
+++ b/assets/resources/zlibrary/cs.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/de.xml b/assets/resources/zlibrary/de.xml
index 764f238ef..569818ec0 100644
--- a/assets/resources/zlibrary/de.xml
+++ b/assets/resources/zlibrary/de.xml
@@ -25,14 +25,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/en.xml b/assets/resources/zlibrary/en.xml
index 0dec07d08..475cd11ee 100644
--- a/assets/resources/zlibrary/en.xml
+++ b/assets/resources/zlibrary/en.xml
@@ -23,14 +23,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/fr.xml b/assets/resources/zlibrary/fr.xml
index f73c6b20e..ae9677753 100644
--- a/assets/resources/zlibrary/fr.xml
+++ b/assets/resources/zlibrary/fr.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/gl.xml b/assets/resources/zlibrary/gl.xml
index e6e7f97d8..f61cd9ba5 100644
--- a/assets/resources/zlibrary/gl.xml
+++ b/assets/resources/zlibrary/gl.xml
@@ -23,14 +23,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/hu.xml b/assets/resources/zlibrary/hu.xml
index 55561ac81..02f773a49 100644
--- a/assets/resources/zlibrary/hu.xml
+++ b/assets/resources/zlibrary/hu.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/it.xml b/assets/resources/zlibrary/it.xml
index 7cf627e44..108b0701d 100644
--- a/assets/resources/zlibrary/it.xml
+++ b/assets/resources/zlibrary/it.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/nl.xml b/assets/resources/zlibrary/nl.xml
index 6fac220b9..f4fa1f8b2 100644
--- a/assets/resources/zlibrary/nl.xml
+++ b/assets/resources/zlibrary/nl.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/ru.xml b/assets/resources/zlibrary/ru.xml
index e33beb6f4..1cc20bf9c 100644
--- a/assets/resources/zlibrary/ru.xml
+++ b/assets/resources/zlibrary/ru.xml
@@ -23,14 +23,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/th.xml b/assets/resources/zlibrary/th.xml
index 16a07e026..fca4312bd 100644
--- a/assets/resources/zlibrary/th.xml
+++ b/assets/resources/zlibrary/th.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/uk.xml b/assets/resources/zlibrary/uk.xml
index 9dde3f7d2..6a6323ac4 100644
--- a/assets/resources/zlibrary/uk.xml
+++ b/assets/resources/zlibrary/uk.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/vi.xml b/assets/resources/zlibrary/vi.xml
index 882601af2..e549cdbfc 100644
--- a/assets/resources/zlibrary/vi.xml
+++ b/assets/resources/zlibrary/vi.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/assets/resources/zlibrary/zh.xml b/assets/resources/zlibrary/zh.xml
index fe0a3cbe4..56f9ad078 100644
--- a/assets/resources/zlibrary/zh.xml
+++ b/assets/resources/zlibrary/zh.xml
@@ -24,14 +24,6 @@
-
-
-
-
-
-
-
-
diff --git a/src/org/geometerplus/android/fbreader/BookInfoActivity.java b/src/org/geometerplus/android/fbreader/BookInfoActivity.java
index 1b5d7d6b9..047717411 100644
--- a/src/org/geometerplus/android/fbreader/BookInfoActivity.java
+++ b/src/org/geometerplus/android/fbreader/BookInfoActivity.java
@@ -27,7 +27,6 @@ import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
-import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.util.DisplayMetrics;
import android.view.View;
@@ -45,6 +44,7 @@ import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager;
import org.geometerplus.fbreader.library.*;
+import org.geometerplus.fbreader.network.HtmlUtil;
import org.geometerplus.android.fbreader.preferences.EditBookInfoActivity;
@@ -254,7 +254,7 @@ public class BookInfoActivity extends Activity {
bodyView.setVisibility(View.GONE);
} else {
titleView.setText(myResource.getResource("annotation").getValue());
- bodyView.setText(Html.fromHtml(annotation));
+ bodyView.setText(HtmlUtil.getHtmlText(annotation));
bodyView.setMovementMethod(new LinkMovementMethod());
}
}
diff --git a/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java b/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java
index 43a837075..8ecd1d7fb 100644
--- a/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java
+++ b/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java
@@ -51,7 +51,7 @@ class ProcessHyperlinkAction extends FBAction {
}
public void run() {
- final ZLTextElementRegion region = Reader.getTextView().getSelectedRegion();
+ final ZLTextRegion region = Reader.getTextView().getSelectedRegion();
if (region instanceof ZLTextHyperlinkRegion) {
Reader.getTextView().hideSelectedRegionBorder();
Reader.getViewWidget().repaint();
@@ -78,6 +78,10 @@ class ProcessHyperlinkAction extends FBAction {
final Intent intent = new Intent();
intent.setClass(myBaseActivity, ImageViewActivity.class);
intent.setData(Uri.parse(uriString));
+ intent.putExtra(
+ ImageViewActivity.BACKGROUND_COLOR_KEY,
+ Reader.ImageViewBackgroundOption.getValue().getIntValue()
+ );
myBaseActivity.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/org/geometerplus/android/fbreader/image/ImageViewActivity.java b/src/org/geometerplus/android/fbreader/image/ImageViewActivity.java
index 521b195b8..ce919320f 100644
--- a/src/org/geometerplus/android/fbreader/image/ImageViewActivity.java
+++ b/src/org/geometerplus/android/fbreader/image/ImageViewActivity.java
@@ -20,6 +20,7 @@
package org.geometerplus.android.fbreader.image;
import android.app.Activity;
+import android.content.Intent;
import android.graphics.*;
import android.net.Uri;
import android.os.Bundle;
@@ -28,12 +29,17 @@ import android.view.*;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.core.image.*;
import org.geometerplus.zlibrary.core.util.MimeType;
+import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.ui.android.library.ZLAndroidApplication;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
+import org.geometerplus.zlibrary.ui.android.util.ZLAndroidColorUtil;
public class ImageViewActivity extends Activity {
- Bitmap myBitmap;
+ public static final String BACKGROUND_COLOR_KEY = "bgColor";
+
+ private Bitmap myBitmap;
+ private ZLColor myBgColor;
@Override
protected void onCreate(Bundle icicle) {
@@ -53,7 +59,13 @@ public class ImageViewActivity extends Activity {
setContentView(new ImageView());
- final Uri uri = getIntent().getData();
+ final Intent intent = getIntent();
+
+ myBgColor = new ZLColor(
+ intent.getIntExtra(BACKGROUND_COLOR_KEY, new ZLColor(127, 127, 127).getIntValue())
+ );
+
+ final Uri uri = intent.getData();
if (ZLFileImage.SCHEME.equals(uri.getScheme())) {
try {
final String[] data = uri.getPath().split("\000");
@@ -96,7 +108,7 @@ public class ImageViewActivity extends Activity {
@Override
protected void onDraw(final Canvas canvas) {
- myPaint.setColor(Color.rgb(128, 128, 128));
+ myPaint.setColor(ZLAndroidColorUtil.rgb(myBgColor));
final int w = getWidth();
final int h = getHeight();
canvas.drawRect(0, 0, w, h, myPaint);
diff --git a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
index f0e1d50ce..d5c9f43fc 100644
--- a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
+++ b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
@@ -382,6 +382,10 @@ public class PreferenceActivity extends ZLPreferenceActivity {
));
dictionaryScreen.addOption(fbReader.DictionaryTappingActionOption, "tappingAction");
+ final Screen imagesScreen = createPreferenceScreen("images");
+ imagesScreen.addOption(fbReader.ImageTappingActionOption, "tappingAction");
+ imagesScreen.addOption(fbReader.ImageViewBackgroundOption, "backgroundColor");
+
final Screen cancelMenuScreen = createPreferenceScreen("cancelMenu");
cancelMenuScreen.addOption(fbReader.ShowPreviousBookInCancelMenuOption, "previousBook");
cancelMenuScreen.addOption(fbReader.ShowPositionsInCancelMenuOption, "positions");
diff --git a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
index af13d0502..3f1cc9bb2 100644
--- a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
+++ b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
@@ -26,6 +26,7 @@ import org.geometerplus.zlibrary.core.filesystem.*;
import org.geometerplus.zlibrary.core.application.*;
import org.geometerplus.zlibrary.core.dialogs.ZLDialogManager;
import org.geometerplus.zlibrary.core.options.*;
+import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.text.hyphenation.ZLTextHyphenator;
import org.geometerplus.zlibrary.text.view.ZLTextWordCursor;
@@ -55,6 +56,14 @@ public final class FBReaderApp extends ZLApplication {
public final ZLEnumOption DictionaryTappingActionOption =
new ZLEnumOption("Options", "DictionaryTappingAction", DictionaryTappingAction.selectWord);
+ public final ZLColorOption ImageViewBackgroundOption =
+ new ZLColorOption("Colors", "ImageViewBackground", new ZLColor(127, 127, 127));
+ public static enum ImageTappingAction {
+ doNothing, selectImage, openImageView
+ }
+ public final ZLEnumOption ImageTappingActionOption =
+ new ZLEnumOption("Options", "ImageTappingAction", ImageTappingAction.openImageView);
+
public final ZLIntegerRangeOption LeftMarginOption =
new ZLIntegerRangeOption("Options", "LeftMargin", 0, 30, 4);
public final ZLIntegerRangeOption RightMarginOption =
diff --git a/src/org/geometerplus/fbreader/fbreader/FBView.java b/src/org/geometerplus/fbreader/fbreader/FBView.java
index 644124ad4..35b79292f 100644
--- a/src/org/geometerplus/fbreader/fbreader/FBView.java
+++ b/src/org/geometerplus/fbreader/fbreader/FBView.java
@@ -75,7 +75,7 @@ public final class FBView extends ZLTextView {
return true;
}
- final ZLTextElementRegion region = findRegion(x, y, 10, ZLTextElementRegion.HyperlinkFilter);
+ final ZLTextRegion region = findRegion(x, y, 10, ZLTextRegion.HyperlinkFilter);
if (region != null) {
selectRegion(region);
myReader.getViewWidget().reset();
@@ -191,15 +191,25 @@ public final class FBView extends ZLTextView {
return true;
}
- if (myReader.DictionaryTappingActionOption.getValue() !=
- FBReaderApp.DictionaryTappingAction.doNothing) {
- final ZLTextElementRegion region = findRegion(x, y, 10, ZLTextElementRegion.AnyRegionFilter);
- if (region != null) {
- selectRegion(region);
- myReader.getViewWidget().reset();
- myReader.getViewWidget().repaint();
- return true;
- }
+ final ZLTextRegion region = findRegion(x, y, 10, ZLTextRegion.AnyRegionFilter);
+ boolean doSelectRegion = false;
+ if (region instanceof ZLTextWordRegion) {
+ doSelectRegion =
+ myReader.DictionaryTappingActionOption.getValue() !=
+ FBReaderApp.DictionaryTappingAction.doNothing;
+ } else if (region instanceof ZLTextImageRegion) {
+ doSelectRegion =
+ myReader.ImageTappingActionOption.getValue() !=
+ FBReaderApp.ImageTappingAction.doNothing;
+ } else if (region instanceof ZLTextHyperlinkRegion) {
+ doSelectRegion = true;
+ }
+
+ if (doSelectRegion) {
+ selectRegion(region);
+ myReader.getViewWidget().reset();
+ myReader.getViewWidget().repaint();
+ return true;
}
return false;
@@ -210,13 +220,17 @@ public final class FBView extends ZLTextView {
return true;
}
- if (myReader.DictionaryTappingActionOption.getValue() !=
- FBReaderApp.DictionaryTappingAction.doNothing) {
- final ZLTextElementRegion region = findRegion(x, y, 10, ZLTextElementRegion.AnyRegionFilter);
- if (region != null) {
- selectRegion(region);
- myReader.getViewWidget().reset();
- myReader.getViewWidget().repaint();
+ final ZLTextRegion selectedRegion = getSelectedRegion();
+ if (selectedRegion instanceof ZLTextHyperlinkRegion ||
+ selectedRegion instanceof ZLTextWordRegion) {
+ if (myReader.DictionaryTappingActionOption.getValue() !=
+ FBReaderApp.DictionaryTappingAction.doNothing) {
+ final ZLTextRegion region = findRegion(x, y, 10, ZLTextRegion.AnyRegionFilter);
+ if (region instanceof ZLTextHyperlinkRegion || region instanceof ZLTextWordRegion) {
+ selectRegion(region);
+ myReader.getViewWidget().reset();
+ myReader.getViewWidget().repaint();
+ }
}
}
return true;
@@ -227,8 +241,19 @@ public final class FBView extends ZLTextView {
return true;
}
- if (myReader.DictionaryTappingActionOption.getValue() ==
- FBReaderApp.DictionaryTappingAction.openDictionary) {
+ boolean doRunAction = false;
+ final ZLTextRegion region = getSelectedRegion();
+ if (region instanceof ZLTextWordRegion) {
+ doRunAction =
+ myReader.DictionaryTappingActionOption.getValue() ==
+ FBReaderApp.DictionaryTappingAction.openDictionary;
+ } else if (region instanceof ZLTextImageRegion) {
+ doRunAction =
+ myReader.ImageTappingActionOption.getValue() ==
+ FBReaderApp.ImageTappingAction.openImageView;
+ }
+
+ if (doRunAction) {
myReader.doAction(ActionCode.PROCESS_HYPERLINK);
return true;
}
@@ -245,10 +270,10 @@ public final class FBView extends ZLTextView {
(diffY > 0 ? Direction.down : Direction.up) :
(diffX > 0 ? Direction.leftToRight : Direction.rightToLeft);
- ZLTextElementRegion region = currentRegion();
- final ZLTextElementRegion.Filter filter =
+ ZLTextRegion region = currentRegion();
+ final ZLTextRegion.Filter filter =
region instanceof ZLTextWordRegion || myReader.NavigateAllWordsOption.getValue()
- ? ZLTextElementRegion.AnyRegionFilter : ZLTextElementRegion.ImageOrHyperlinkFilter;
+ ? ZLTextRegion.AnyRegionFilter : ZLTextRegion.ImageOrHyperlinkFilter;
region = nextRegion(direction, filter);
if (region != null) {
selectRegion(region);
diff --git a/src/org/geometerplus/fbreader/network/HtmlUtil.java b/src/org/geometerplus/fbreader/network/HtmlUtil.java
new file mode 100644
index 000000000..83dbb8559
--- /dev/null
+++ b/src/org/geometerplus/fbreader/network/HtmlUtil.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2010-2011 Geometer Plus
+ *
+ * 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.fbreader.network;
+
+import android.text.*;
+import android.text.style.URLSpan;
+
+public abstract class HtmlUtil {
+ public static CharSequence getHtmlText(String text) {
+ final Spanned htmlText = Html.fromHtml(text);
+ if (htmlText.getSpans(0, htmlText.length(), URLSpan.class).length == 0) {
+ return htmlText;
+ }
+ final Spannable newHtmlText = Spannable.Factory.getInstance().newSpannable(htmlText);
+ for (URLSpan span : newHtmlText.getSpans(0, newHtmlText.length(), URLSpan.class)) {
+ final int start = newHtmlText.getSpanStart(span);
+ final int end = newHtmlText.getSpanEnd(span);
+ final int flags = newHtmlText.getSpanFlags(span);
+ final String url = NetworkLibrary.Instance().rewriteUrl(span.getURL(), true);
+ newHtmlText.removeSpan(span);
+ newHtmlText.setSpan(new URLSpan(url), start, end, flags);
+ }
+ return newHtmlText;
+ }
+}
diff --git a/src/org/geometerplus/fbreader/network/atom/ATOMXMLReader.java b/src/org/geometerplus/fbreader/network/atom/ATOMXMLReader.java
index d3b4e88b9..1e6cb6d99 100644
--- a/src/org/geometerplus/fbreader/network/atom/ATOMXMLReader.java
+++ b/src/org/geometerplus/fbreader/network/atom/ATOMXMLReader.java
@@ -48,32 +48,32 @@ public class ATOMXMLReader extends ZLXMLReaderAdapter {
private Map myNamespaceMap;
- protected static final int START = 0;
+ private static final int START = 0;
protected static final int FEED = 1;
protected static final int F_ENTRY = 2;
- protected static final int F_ID = 3;
- protected static final int F_LINK = 4;
- protected static final int F_CATEGORY = 5;
- protected static final int F_TITLE = 6;
- protected static final int F_UPDATED = 7;
- protected static final int F_AUTHOR = 8;
- protected static final int FA_NAME = 9;
- protected static final int FA_URI = 10;
- protected static final int FA_EMAIL = 11;
- protected static final int FE_AUTHOR = 12;
- protected static final int FE_ID = 13;
- protected static final int FE_CATEGORY = 14;
- protected static final int FE_LINK = 15;
- protected static final int FE_PUBLISHED = 16;
- protected static final int FE_SUMMARY = 17;
- protected static final int FE_CONTENT = 18;
- protected static final int FE_TITLE = 19;
- protected static final int FE_UPDATED = 20;
- protected static final int FEA_NAME = 21;
- protected static final int FEA_URI = 22;
- protected static final int FEA_EMAIL = 23;
- protected static final int F_SUBTITLE = 24;
- protected static final int F_ICON = 25;
+ private static final int F_ID = 3;
+ private static final int F_LINK = 4;
+ private static final int F_CATEGORY = 5;
+ private static final int F_TITLE = 6;
+ private static final int F_UPDATED = 7;
+ private static final int F_AUTHOR = 8;
+ private static final int F_SUBTITLE = 9;
+ private static final int F_ICON = 10;
+ private static final int FA_NAME = 11;
+ private static final int FA_URI = 12;
+ private static final int FA_EMAIL = 13;
+ private static final int FE_AUTHOR = 14;
+ private static final int FE_ID = 15;
+ private static final int FE_CATEGORY = 16;
+ protected static final int FE_LINK = 17;
+ private static final int FE_PUBLISHED = 18;
+ private static final int FE_SUMMARY = 19;
+ protected static final int FE_CONTENT = 20;
+ private static final int FE_TITLE = 21;
+ private static final int FE_UPDATED = 22;
+ private static final int FEA_NAME = 23;
+ private static final int FEA_URI = 24;
+ private static final int FEA_EMAIL = 25;
protected static final int ATOM_STATE_FIRST_UNUSED = 26;
@@ -297,6 +297,7 @@ public class ATOMXMLReader extends ZLXMLReaderAdapter {
}
}
break;
+ case FE_CONTENT:
case FE_SUMMARY:
case FE_TITLE:
case F_TITLE:
@@ -311,8 +312,7 @@ public class ATOMXMLReader extends ZLXMLReaderAdapter {
return interruptReading;
}
- public boolean endElementHandler(final String ns, final String tag,
- final String bufferContent) {
+ public boolean endElementHandler(String ns, String tag, String bufferContent) {
boolean interruptReading = false;
switch (myState) {
case START:
diff --git a/src/org/geometerplus/fbreader/network/atom/FormattedBuffer.java b/src/org/geometerplus/fbreader/network/atom/FormattedBuffer.java
index d920828cb..cfdb34d53 100644
--- a/src/org/geometerplus/fbreader/network/atom/FormattedBuffer.java
+++ b/src/org/geometerplus/fbreader/network/atom/FormattedBuffer.java
@@ -19,11 +19,11 @@
package org.geometerplus.fbreader.network.atom;
-import android.text.Html;
-
import org.geometerplus.zlibrary.core.xml.ZLStringMap;
import org.geometerplus.fbreader.formats.xhtml.XHTMLReader;
+import org.geometerplus.fbreader.network.NetworkLibrary;
+import org.geometerplus.fbreader.network.HtmlUtil;
import org.geometerplus.fbreader.network.atom.ATOMConstants;
public class FormattedBuffer {
@@ -87,7 +87,7 @@ public class FormattedBuffer {
switch (myType) {
case Html:
case XHtml:
- return Html.fromHtml(text);
+ return HtmlUtil.getHtmlText(text);
default:
return text;
}
diff --git a/src/org/geometerplus/fbreader/network/opds/OPDSXMLReader.java b/src/org/geometerplus/fbreader/network/opds/OPDSXMLReader.java
index c24f70448..bf9e74e11 100644
--- a/src/org/geometerplus/fbreader/network/opds/OPDSXMLReader.java
+++ b/src/org/geometerplus/fbreader/network/opds/OPDSXMLReader.java
@@ -32,9 +32,6 @@ public class OPDSXMLReader extends ATOMXMLReader {
private DCDate myDCIssued;
private String myPriceCurrency;
- //private ATOMTitle myTitle; // TODO: implement ATOMTextConstruct & ATOMTitle
- //private ATOMSummary mySummary; // TODO: implement ATOMTextConstruct & ATOMSummary
-
public OPDSXMLReader(ATOMFeedHandler handler, boolean readEntryNotFeed) {
super(handler, readEntryNotFeed);
}
@@ -94,11 +91,8 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
@Override
- public boolean startElementHandler(final String ns, final String tag,
- final ZLStringMap attributes, final String bufferContent) {
- final int state = myState;
- final boolean interruptReading = super.startElementHandler(ns, tag, attributes, bufferContent);
- switch (state) {
+ public boolean startElementHandler(String ns, String tag, ZLStringMap attributes, String bufferContent) {
+ switch (myState) {
case FEED:
if (ns == XMLNamespaces.OpenSearch) {
if (tag == OPENSEARCH_TAG_TOTALRESULTS) {
@@ -108,8 +102,10 @@ public class OPDSXMLReader extends ATOMXMLReader {
} else if (tag == OPENSEARCH_TAG_STARTINDEX) {
myState = OPENSEARCH_STARTINDEX;
}
+ return false;
+ } else {
+ return super.startElementHandler(ns, tag, attributes, bufferContent);
}
- break;
case F_ENTRY:
if (ns == XMLNamespaces.DublinCoreTerms) {
if (tag == DC_TAG_LANGUAGE) {
@@ -120,41 +116,45 @@ public class OPDSXMLReader extends ATOMXMLReader {
} else if (tag == DC_TAG_PUBLISHER) {
myState = FE_DC_PUBLISHER;
}
+ return false;
} else if (ns == XMLNamespaces.CalibreMetadata) {
if (tag == CALIBRE_TAG_SERIES) {
myState = FE_CALIBRE_SERIES;
} else if (tag == CALIBRE_TAG_SERIES_INDEX) {
myState = FE_CALIBRE_SERIES_INDEX;
}
+ return false;
+ } else {
+ return super.startElementHandler(ns, tag, attributes, bufferContent);
}
- break;
case FE_LINK:
if (ns == XMLNamespaces.Opds && tag == TAG_PRICE) {
myPriceCurrency = attributes.getValue("currencycode");
myState = FEL_PRICE;
+ return false;
} if (ns == XMLNamespaces.DublinCoreTerms && tag == DC_TAG_FORMAT) {
myState = FEL_FORMAT;
+ return false;
+ } else {
+ return super.startElementHandler(ns, tag, attributes, bufferContent);
}
- break;
case FE_CONTENT:
- myFormattedBuffer.appendText(bufferContent);
- myFormattedBuffer.appendStartTag(tag, attributes);
+ super.startElementHandler(ns, tag, attributes, bufferContent);
// FIXME: HACK: html handling must be implemeted neatly
if (tag == TAG_HACK_SPAN || attributes.getValue("class") == "price") {
myState = FEC_HACK_SPAN;
}
- break;
+ return false;
default:
- break;
+ return super.startElementHandler(ns, tag, attributes, bufferContent);
}
-
- return interruptReading;
}
- public boolean endElementHandler(final String ns, final String tag,
- final String bufferContent) {
- final boolean interruptReading = super.endElementHandler(ns, tag, bufferContent);
+ @Override
+ public boolean endElementHandler(String ns, String tag, String bufferContent) {
switch (myState) {
+ default:
+ return super.endElementHandler(ns, tag, bufferContent);
case FEL_PRICE:
if (ns == XMLNamespaces.Opds && tag == TAG_PRICE) {
if (bufferContent != null && myPriceCurrency != null) {
@@ -163,7 +163,7 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
myState = FE_LINK;
}
- break;
+ return false;
case FEL_FORMAT:
if (ns == XMLNamespaces.DublinCoreTerms && tag == DC_TAG_FORMAT) {
if (bufferContent != null) {
@@ -171,7 +171,7 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
myState = FE_LINK;
}
- break;
+ return false;
case FEC_HACK_SPAN:
// FIXME: HACK
myFormattedBuffer.appendText(bufferContent);
@@ -181,14 +181,14 @@ public class OPDSXMLReader extends ATOMXMLReader {
getOPDSEntry().addAttribute(KEY_PRICE, bufferContent.intern());
}
myState = FE_CONTENT;
- break;
+ return false;
case FE_DC_LANGUAGE:
if (ns == XMLNamespaces.DublinCoreTerms && tag == DC_TAG_LANGUAGE) {
// FIXME:language can be lost:buffer will be truncated, if there are extension tags inside the tag
getOPDSEntry().DCLanguage = bufferContent;
myState = F_ENTRY;
}
- break;
+ return false;
case FE_DC_ISSUED:
if (ns == XMLNamespaces.DublinCoreTerms && tag == DC_TAG_ISSUED) {
// FIXME:issued can be lost:buffer will be truncated, if there are extension tags inside the tag
@@ -198,20 +198,20 @@ public class OPDSXMLReader extends ATOMXMLReader {
myDCIssued = null;
myState = F_ENTRY;
}
- break;
+ return false;
case FE_DC_PUBLISHER:
if (ns == XMLNamespaces.DublinCoreTerms && tag == DC_TAG_PUBLISHER) {
// FIXME:publisher can be lost:buffer will be truncated, if there are extension tags inside the tag
getOPDSEntry().DCPublisher = bufferContent;
myState = F_ENTRY;
}
- break;
+ return false;
case FE_CALIBRE_SERIES:
if (ns == XMLNamespaces.CalibreMetadata && tag == CALIBRE_TAG_SERIES) {
getOPDSEntry().SeriesTitle = bufferContent;
myState = F_ENTRY;
}
- break;
+ return false;
case FE_CALIBRE_SERIES_INDEX:
if (ns == XMLNamespaces.CalibreMetadata && tag == CALIBRE_TAG_SERIES_INDEX) {
if (bufferContent != null) {
@@ -222,7 +222,7 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
myState = F_ENTRY;
}
- break;
+ return false;
case OPENSEARCH_TOTALRESULTS:
if (ns == XMLNamespaces.OpenSearch && tag == OPENSEARCH_TAG_TOTALRESULTS) {
if (getOPDSFeed() != null && bufferContent != null) {
@@ -233,7 +233,7 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
myState = FEED;
}
- break;
+ return false;
case OPENSEARCH_ITEMSPERPAGE:
if (ns == XMLNamespaces.OpenSearch && tag == OPENSEARCH_TAG_ITEMSPERPAGE) {
if (getOPDSFeed() != null && bufferContent != null) {
@@ -244,7 +244,7 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
myState = FEED;
}
- break;
+ return false;
case OPENSEARCH_STARTINDEX:
if (ns == XMLNamespaces.OpenSearch && tag == OPENSEARCH_TAG_STARTINDEX) {
if (getOPDSFeed() != null && bufferContent != null) {
@@ -255,9 +255,7 @@ public class OPDSXMLReader extends ATOMXMLReader {
}
myState = FEED;
}
- break;
-
+ return false;
}
- return interruptReading;
}
}
diff --git a/src/org/geometerplus/zlibrary/core/network/ZLNetworkException.java b/src/org/geometerplus/zlibrary/core/network/ZLNetworkException.java
index d81945738..63c9da637 100644
--- a/src/org/geometerplus/zlibrary/core/network/ZLNetworkException.java
+++ b/src/org/geometerplus/zlibrary/core/network/ZLNetworkException.java
@@ -31,8 +31,6 @@ public class ZLNetworkException extends Exception {
public static final String ERROR_UNSUPPORTED_PROTOCOL = "unsupportedProtocol";
public static final String ERROR_INVALID_URL = "invalidURL";
public static final String ERROR_AUTHENTICATION_FAILED = "authenticationFailed";
- public static final String ERROR_SSL_SUBSYSTEM = "sslError";
- public static final String ERROR_SSL_PROTOCOL_ERROR = "sslProtocolError";
// Messages with one parameter:
public static final String ERROR_SOMETHING_WRONG = "somethingWrongMessage";
@@ -42,12 +40,6 @@ public class ZLNetworkException extends Exception {
public static final String ERROR_RESOLVE_HOST = "couldntResolveHostMessage";
public static final String ERROR_HOST_CANNOT_BE_REACHED = "hostCantBeReached";
public static final String ERROR_CONNECTION_REFUSED = "connectionRefused";
- public static final String ERROR_SSL_CONNECT = "sslConnectErrorMessage";
- public static final String ERROR_SSL_BAD_KEY = "sslBadKey";
- public static final String ERROR_SSL_PEER_UNVERIFIED = "sslPeerUnverified";
- public static final String ERROR_SSL_BAD_FILE = "sslBadCertificateFileMessage";
- public static final String ERROR_SSL_EXPIRED = "sslCertificateExpired";
- public static final String ERROR_SSL_NOT_YET_VALID = "sslCertificateNotYetValid";
private static ZLResource getResource() {
return ZLResource.resource("dialog").getResource("networkError");
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextElementAreaVector.java b/src/org/geometerplus/zlibrary/text/view/ZLTextElementAreaVector.java
index 7bbb563e5..88f35e012 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextElementAreaVector.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextElementAreaVector.java
@@ -24,8 +24,8 @@ import java.util.ArrayList;
final class ZLTextElementAreaVector extends ArrayList {
private static final long serialVersionUID = -7880472347947563506L;
- final ArrayList ElementRegions = new ArrayList();
- private ZLTextElementRegion myCurrentElementRegion;
+ final ArrayList ElementRegions = new ArrayList();
+ private ZLTextRegion myCurrentElementRegion;
@Override
public void clear() {
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextHyperlinkRegion.java b/src/org/geometerplus/zlibrary/text/view/ZLTextHyperlinkRegion.java
index 5ef53b908..5867e0d4b 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextHyperlinkRegion.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextHyperlinkRegion.java
@@ -21,7 +21,7 @@ package org.geometerplus.zlibrary.text.view;
import java.util.List;
-public class ZLTextHyperlinkRegion extends ZLTextElementRegion {
+public class ZLTextHyperlinkRegion extends ZLTextRegion {
public final ZLTextHyperlink Hyperlink;
ZLTextHyperlinkRegion(ZLTextHyperlink hyperlink, List list, int fromIndex) {
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextImageRegion.java b/src/org/geometerplus/zlibrary/text/view/ZLTextImageRegion.java
index 7c76a08fc..ebfac21e4 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextImageRegion.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextImageRegion.java
@@ -21,7 +21,7 @@ package org.geometerplus.zlibrary.text.view;
import java.util.List;
-public class ZLTextImageRegion extends ZLTextElementRegion {
+public class ZLTextImageRegion extends ZLTextRegion {
public final ZLTextImageElement ImageElement;
ZLTextImageRegion(ZLTextImageElement imageElement, List list, int fromIndex) {
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextElementRegion.java b/src/org/geometerplus/zlibrary/text/view/ZLTextRegion.java
similarity index 82%
rename from src/org/geometerplus/zlibrary/text/view/ZLTextElementRegion.java
rename to src/org/geometerplus/zlibrary/text/view/ZLTextRegion.java
index b86552b85..3a6a35065 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextElementRegion.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextRegion.java
@@ -23,25 +23,25 @@ import java.util.*;
import org.geometerplus.zlibrary.core.view.ZLPaintContext;
-public abstract class ZLTextElementRegion {
+public abstract class ZLTextRegion {
public static interface Filter {
- boolean accepts(ZLTextElementRegion region);
+ boolean accepts(ZLTextRegion region);
}
public static Filter AnyRegionFilter = new Filter() {
- public boolean accepts(ZLTextElementRegion region) {
+ public boolean accepts(ZLTextRegion region) {
return true;
}
};
public static Filter HyperlinkFilter = new Filter() {
- public boolean accepts(ZLTextElementRegion region) {
+ public boolean accepts(ZLTextRegion region) {
return region instanceof ZLTextHyperlinkRegion;
}
};
public static Filter ImageOrHyperlinkFilter = new Filter() {
- public boolean accepts(ZLTextElementRegion region) {
+ public boolean accepts(ZLTextRegion region) {
return
region instanceof ZLTextImageRegion ||
region instanceof ZLTextHyperlinkRegion;
@@ -53,7 +53,7 @@ public abstract class ZLTextElementRegion {
private int myToIndex;
private ZLTextHorizontalConvexHull myHull;
- ZLTextElementRegion(List list, int fromIndex) {
+ ZLTextRegion(List list, int fromIndex) {
myList = list;
myFromIndex = fromIndex;
myToIndex = fromIndex + 1;
@@ -90,27 +90,27 @@ public abstract class ZLTextElementRegion {
return convexHull().distanceTo(x, y);
}
- boolean isAtRightOf(ZLTextElementRegion other) {
+ boolean isAtRightOf(ZLTextRegion other) {
return
other == null ||
myList.get(myFromIndex).XStart >= other.myList.get(other.myToIndex - 1).XEnd;
}
- boolean isAtLeftOf(ZLTextElementRegion other) {
+ boolean isAtLeftOf(ZLTextRegion other) {
return other == null || other.isAtRightOf(this);
}
- boolean isUnder(ZLTextElementRegion other) {
+ boolean isUnder(ZLTextRegion other) {
return
other == null ||
myList.get(myFromIndex).YStart >= other.myList.get(other.myToIndex - 1).YEnd;
}
- boolean isOver(ZLTextElementRegion other) {
+ boolean isOver(ZLTextRegion other) {
return other == null || other.isUnder(this);
}
- boolean isExactlyUnder(ZLTextElementRegion other) {
+ boolean isExactlyUnder(ZLTextRegion other) {
if (other == null) {
return true;
}
@@ -129,7 +129,7 @@ public abstract class ZLTextElementRegion {
return false;
}
- boolean isExactlyOver(ZLTextElementRegion other) {
+ boolean isExactlyOver(ZLTextRegion other) {
return other == null || other.isExactlyUnder(this);
}
}
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java
index e835fb2be..09efce7fc 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java
@@ -304,7 +304,7 @@ public abstract class ZLTextView extends ZLTextViewBase {
++index;
}
- final ZLTextElementRegion selectedElementRegion = getCurrentElementRegion(page);
+ final ZLTextRegion selectedElementRegion = getCurrentElementRegion(page);
if (selectedElementRegion != null && myHighlightSelectedRegion) {
selectedElementRegion.draw(context);
}
@@ -1285,7 +1285,7 @@ public abstract class ZLTextView extends ZLTextViewBase {
}
*/
- private ZLTextElementRegion mySelectedRegion;
+ private ZLTextRegion mySelectedRegion;
private boolean myHighlightSelectedRegion = true;
public void hideSelectedRegionBorder() {
@@ -1293,8 +1293,8 @@ public abstract class ZLTextView extends ZLTextViewBase {
Application.getViewWidget().reset();
}
- private ZLTextElementRegion getCurrentElementRegion(ZLTextPage page) {
- final ArrayList elementRegions = page.TextElementMap.ElementRegions;
+ private ZLTextRegion getCurrentElementRegion(ZLTextPage page) {
+ final ArrayList elementRegions = page.TextElementMap.ElementRegions;
final int index = elementRegions.indexOf(mySelectedRegion);
if (index == -1) {
return null;
@@ -1302,14 +1302,14 @@ public abstract class ZLTextView extends ZLTextViewBase {
return elementRegions.get(index);
}
- public ZLTextElementRegion getSelectedRegion() {
+ public ZLTextRegion getSelectedRegion() {
return getCurrentElementRegion(myCurrentPage);
}
- protected ZLTextElementRegion findRegion(int x, int y, int maxDistance, ZLTextElementRegion.Filter filter) {
- ZLTextElementRegion bestRegion = null;
+ protected ZLTextRegion findRegion(int x, int y, int maxDistance, ZLTextRegion.Filter filter) {
+ ZLTextRegion bestRegion = null;
int distance = maxDistance + 1;
- for (ZLTextElementRegion region : myCurrentPage.TextElementMap.ElementRegions) {
+ for (ZLTextRegion region : myCurrentPage.TextElementMap.ElementRegions) {
if (filter.accepts(region)) {
final int d = region.distanceTo(x, y);
if (d < distance) {
@@ -1321,7 +1321,7 @@ public abstract class ZLTextView extends ZLTextViewBase {
return bestRegion;
}
- protected void selectRegion(ZLTextElementRegion region) {
+ protected void selectRegion(ZLTextRegion region) {
if (region == null || !region.equals(mySelectedRegion)) {
myHighlightSelectedRegion = true;
}
@@ -1333,11 +1333,11 @@ public abstract class ZLTextView extends ZLTextViewBase {
myHighlightSelectedRegion = true;
}
- protected ZLTextElementRegion currentRegion() {
+ protected ZLTextRegion currentRegion() {
if (mySelectedRegion == null) {
return null;
}
- final ArrayList elementRegions =
+ final ArrayList elementRegions =
myCurrentPage.TextElementMap.ElementRegions;
if (elementRegions.isEmpty()) {
return null;
@@ -1346,8 +1346,8 @@ public abstract class ZLTextView extends ZLTextViewBase {
return index >= 0 ? elementRegions.get(index) : null;
}
- protected ZLTextElementRegion nextRegion(Direction direction, ZLTextElementRegion.Filter filter) {
- final ArrayList elementRegions =
+ protected ZLTextRegion nextRegion(Direction direction, ZLTextRegion.Filter filter) {
+ final ArrayList elementRegions =
myCurrentPage.TextElementMap.ElementRegions;
if (elementRegions.isEmpty()) {
return null;
@@ -1380,7 +1380,7 @@ public abstract class ZLTextView extends ZLTextViewBase {
switch (direction) {
case rightToLeft:
for (; index >= 0; --index) {
- final ZLTextElementRegion candidate = elementRegions.get(index);
+ final ZLTextRegion candidate = elementRegions.get(index);
if (filter.accepts(candidate) && candidate.isAtLeftOf(mySelectedRegion)) {
return candidate;
}
@@ -1388,7 +1388,7 @@ public abstract class ZLTextView extends ZLTextViewBase {
break;
case leftToRight:
for (; index < elementRegions.size(); ++index) {
- final ZLTextElementRegion candidate = elementRegions.get(index);
+ final ZLTextRegion candidate = elementRegions.get(index);
if (filter.accepts(candidate) && candidate.isAtRightOf(mySelectedRegion)) {
return candidate;
}
@@ -1396,9 +1396,9 @@ public abstract class ZLTextView extends ZLTextViewBase {
break;
case down:
{
- ZLTextElementRegion firstCandidate = null;
+ ZLTextRegion firstCandidate = null;
for (; index < elementRegions.size(); ++index) {
- final ZLTextElementRegion candidate = elementRegions.get(index);
+ final ZLTextRegion candidate = elementRegions.get(index);
if (!filter.accepts(candidate)) {
continue;
}
@@ -1415,9 +1415,9 @@ public abstract class ZLTextView extends ZLTextViewBase {
break;
}
case up:
- ZLTextElementRegion firstCandidate = null;
+ ZLTextRegion firstCandidate = null;
for (; index >= 0; --index) {
- final ZLTextElementRegion candidate = elementRegions.get(index);
+ final ZLTextRegion candidate = elementRegions.get(index);
if (!filter.accepts(candidate)) {
continue;
}
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextWordRegion.java b/src/org/geometerplus/zlibrary/text/view/ZLTextWordRegion.java
index 97583bb8a..cb21ecaad 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextWordRegion.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextWordRegion.java
@@ -21,7 +21,7 @@ package org.geometerplus.zlibrary.text.view;
import java.util.List;
-public class ZLTextWordRegion extends ZLTextElementRegion {
+public class ZLTextWordRegion extends ZLTextRegion {
public final ZLTextWord Word;
ZLTextWordRegion(ZLTextWord word, List list, int fromIndex) {