diff --git a/ChangeLog b/ChangeLog
index e9e06a04b..c336b4278 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,7 +9,8 @@
* Simple widgets
===== 2.5.10 (Sep ??, 2015) =====
-* Options for displaying current reading progress as percentage (by Danie Roux, danieroux@github)
+* Option for displaying current reading progress as percentage (by Danie Roux, danieroux@github)
+* Option for max number of TOC marks on progress indicator
===== 2.5.9 (Sep 11, 2015) =====
* Fixed cache access issue
diff --git a/assets/resources/application/ar.xml b/assets/resources/application/ar.xml
index c1f0d40ad..da7187fc7 100644
--- a/assets/resources/application/ar.xml
+++ b/assets/resources/application/ar.xml
@@ -708,6 +708,7 @@
+
diff --git a/assets/resources/application/be.xml b/assets/resources/application/be.xml
index b3bf57685..f7631d2fe 100644
--- a/assets/resources/application/be.xml
+++ b/assets/resources/application/be.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/bg.xml b/assets/resources/application/bg.xml
index c27cafece..0d89d7322 100644
--- a/assets/resources/application/bg.xml
+++ b/assets/resources/application/bg.xml
@@ -716,6 +716,7 @@
+
diff --git a/assets/resources/application/ca.xml b/assets/resources/application/ca.xml
index 8262da956..8e579f58e 100644
--- a/assets/resources/application/ca.xml
+++ b/assets/resources/application/ca.xml
@@ -716,6 +716,7 @@
+
diff --git a/assets/resources/application/cs.xml b/assets/resources/application/cs.xml
index 6492ecaf4..f2d94b3e6 100644
--- a/assets/resources/application/cs.xml
+++ b/assets/resources/application/cs.xml
@@ -719,6 +719,7 @@
+
diff --git a/assets/resources/application/da.xml b/assets/resources/application/da.xml
index 57619731c..32f2f152a 100644
--- a/assets/resources/application/da.xml
+++ b/assets/resources/application/da.xml
@@ -709,6 +709,7 @@
+
diff --git a/assets/resources/application/de.xml b/assets/resources/application/de.xml
index c6604d034..25e4b9e5c 100644
--- a/assets/resources/application/de.xml
+++ b/assets/resources/application/de.xml
@@ -715,6 +715,7 @@
+
diff --git a/assets/resources/application/el.xml b/assets/resources/application/el.xml
index 895d61805..7bef6f814 100644
--- a/assets/resources/application/el.xml
+++ b/assets/resources/application/el.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml
index 372f300d0..a57e62fd5 100644
--- a/assets/resources/application/en.xml
+++ b/assets/resources/application/en.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/en_US.xml b/assets/resources/application/en_US.xml
index 3a6b6ebf3..151306c9d 100644
--- a/assets/resources/application/en_US.xml
+++ b/assets/resources/application/en_US.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/es.xml b/assets/resources/application/es.xml
index d72d7c7b0..7ed53cd4e 100644
--- a/assets/resources/application/es.xml
+++ b/assets/resources/application/es.xml
@@ -716,6 +716,7 @@
+
diff --git a/assets/resources/application/eu.xml b/assets/resources/application/eu.xml
index c9fd87710..2b01a6cd4 100644
--- a/assets/resources/application/eu.xml
+++ b/assets/resources/application/eu.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/fa.xml b/assets/resources/application/fa.xml
index ea570037f..b4d3746d2 100644
--- a/assets/resources/application/fa.xml
+++ b/assets/resources/application/fa.xml
@@ -709,6 +709,7 @@
+
diff --git a/assets/resources/application/fr.xml b/assets/resources/application/fr.xml
index e32492ac8..d967f90ee 100644
--- a/assets/resources/application/fr.xml
+++ b/assets/resources/application/fr.xml
@@ -703,6 +703,7 @@
+
diff --git a/assets/resources/application/gl.xml b/assets/resources/application/gl.xml
index 5cf7dc6c9..d9798ff4b 100644
--- a/assets/resources/application/gl.xml
+++ b/assets/resources/application/gl.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/hu.xml b/assets/resources/application/hu.xml
index 076311025..2bb9e5dcc 100644
--- a/assets/resources/application/hu.xml
+++ b/assets/resources/application/hu.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/hy.xml b/assets/resources/application/hy.xml
index da15ca98a..2060b5290 100644
--- a/assets/resources/application/hy.xml
+++ b/assets/resources/application/hy.xml
@@ -716,6 +716,7 @@
+
diff --git a/assets/resources/application/it.xml b/assets/resources/application/it.xml
index bc2eed2a7..8fc9cf528 100644
--- a/assets/resources/application/it.xml
+++ b/assets/resources/application/it.xml
@@ -701,6 +701,7 @@
+
diff --git a/assets/resources/application/ja.xml b/assets/resources/application/ja.xml
index 4852da98d..baf26bf4c 100644
--- a/assets/resources/application/ja.xml
+++ b/assets/resources/application/ja.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/ka.xml b/assets/resources/application/ka.xml
index 60076fb16..66cf13c86 100644
--- a/assets/resources/application/ka.xml
+++ b/assets/resources/application/ka.xml
@@ -715,6 +715,7 @@
+
diff --git a/assets/resources/application/ko.xml b/assets/resources/application/ko.xml
index 50b555203..99a8c337d 100644
--- a/assets/resources/application/ko.xml
+++ b/assets/resources/application/ko.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/nb.xml b/assets/resources/application/nb.xml
index f73a62fe2..20a19ca1a 100644
--- a/assets/resources/application/nb.xml
+++ b/assets/resources/application/nb.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/nl.xml b/assets/resources/application/nl.xml
index 8a41e3fe6..2d273b0ea 100644
--- a/assets/resources/application/nl.xml
+++ b/assets/resources/application/nl.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/pl.xml b/assets/resources/application/pl.xml
index 8183274fb..4da972a25 100644
--- a/assets/resources/application/pl.xml
+++ b/assets/resources/application/pl.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/pt.xml b/assets/resources/application/pt.xml
index 756f89786..6e0aeb530 100755
--- a/assets/resources/application/pt.xml
+++ b/assets/resources/application/pt.xml
@@ -714,6 +714,7 @@
+
diff --git a/assets/resources/application/ro.xml b/assets/resources/application/ro.xml
index 572941fde..8e020419c 100644
--- a/assets/resources/application/ro.xml
+++ b/assets/resources/application/ro.xml
@@ -703,6 +703,7 @@
+
diff --git a/assets/resources/application/ru.xml b/assets/resources/application/ru.xml
index 1aba0f21a..552917350 100644
--- a/assets/resources/application/ru.xml
+++ b/assets/resources/application/ru.xml
@@ -715,6 +715,7 @@
+
diff --git a/assets/resources/application/sr.xml b/assets/resources/application/sr.xml
index 1c30223f6..31c7c7d33 100644
--- a/assets/resources/application/sr.xml
+++ b/assets/resources/application/sr.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/th.xml b/assets/resources/application/th.xml
index 2ac75ef3b..887d22552 100644
--- a/assets/resources/application/th.xml
+++ b/assets/resources/application/th.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/tr.xml b/assets/resources/application/tr.xml
index fc38f9276..29a966136 100644
--- a/assets/resources/application/tr.xml
+++ b/assets/resources/application/tr.xml
@@ -710,6 +710,7 @@
+
diff --git a/assets/resources/application/uk.xml b/assets/resources/application/uk.xml
index a79b5d625..4e38a50e4 100644
--- a/assets/resources/application/uk.xml
+++ b/assets/resources/application/uk.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/vi.xml b/assets/resources/application/vi.xml
index b00f00512..d68461a28 100644
--- a/assets/resources/application/vi.xml
+++ b/assets/resources/application/vi.xml
@@ -701,6 +701,7 @@
+
diff --git a/assets/resources/application/zh.xml b/assets/resources/application/zh.xml
index fa71c0ed7..3190baa79 100644
--- a/assets/resources/application/zh.xml
+++ b/assets/resources/application/zh.xml
@@ -700,6 +700,7 @@
+
diff --git a/assets/resources/application/zh_TW.xml b/assets/resources/application/zh_TW.xml
index 9a7ad2ed5..96b4774ab 100644
--- a/assets/resources/application/zh_TW.xml
+++ b/assets/resources/application/zh_TW.xml
@@ -700,6 +700,7 @@
+
diff --git a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
index df1e42bce..6c565822e 100644
--- a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
+++ b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
@@ -509,6 +509,18 @@ public class PreferenceActivity extends ZLPreferenceActivity {
}
}
};
+ final PreferenceSet tocPreferences = new PreferenceSet.Enabler() {
+ @Override
+ protected Boolean detectState() {
+ switch (viewOptions.ScrollbarType.getValue()) {
+ case FBView.SCROLLBAR_SHOW_AS_FOOTER:
+ case FBView.SCROLLBAR_SHOW_AS_FOOTER_OLD_STYLE:
+ return footerOptions.ShowTOCMarks.getValue();
+ default:
+ return false;
+ }
+ }
+ };
final PreferenceSet oldStyleFooterPreferences = new PreferenceSet.Enabler() {
@Override
protected Boolean detectState() {
@@ -542,6 +554,7 @@ public class PreferenceActivity extends ZLPreferenceActivity {
protected void onDialogClosed(boolean result) {
super.onDialogClosed(result);
footerPreferences.run();
+ tocPreferences.run();
oldStyleFooterPreferences.run();
newStyleFooterPreferences.run();
}
@@ -555,7 +568,18 @@ public class PreferenceActivity extends ZLPreferenceActivity {
newStyleFooterPreferences.add(statusLineScreen.addOption(profile.FooterNGBackgroundOption, "footerBackgroundColor"));
newStyleFooterPreferences.add(statusLineScreen.addOption(profile.FooterNGForegroundOption, "footerForegroundColor"));
newStyleFooterPreferences.add(statusLineScreen.addOption(profile.FooterNGForegroundUnreadOption, "footerForegroundUnreadColor"));
- footerPreferences.add(statusLineScreen.addOption(footerOptions.ShowTOCMarks, "tocMarks"));
+ footerPreferences.add(statusLineScreen.addPreference(new ZLBooleanPreference(
+ PreferenceActivity.this,
+ footerOptions.ShowTOCMarks,
+ statusLineScreen.Resource.getResource("tocMarks")
+ ) {
+ @Override
+ protected void onClick() {
+ super.onClick();
+ tocPreferences.run();
+ }
+ }));
+ tocPreferences.add(statusLineScreen.addOption(footerOptions.MaxTOCMarks, "tocMarksMaxNumber"));
footerPreferences.add(statusLineScreen.addOption(footerOptions.ShowProgress, "showProgress"));
footerPreferences.add(statusLineScreen.addOption(footerOptions.ShowClock, "showClock"));
footerPreferences.add(statusLineScreen.addOption(footerOptions.ShowBattery, "showBattery"));
@@ -564,6 +588,7 @@ public class PreferenceActivity extends ZLPreferenceActivity {
footerOptions.Font, false
)));
footerPreferences.run();
+ tocPreferences.run();
oldStyleFooterPreferences.run();
newStyleFooterPreferences.run();
diff --git a/src/org/geometerplus/fbreader/fbreader/FBView.java b/src/org/geometerplus/fbreader/fbreader/FBView.java
index 7c078e6a7..e86505494 100644
--- a/src/org/geometerplus/fbreader/fbreader/FBView.java
+++ b/src/org/geometerplus/fbreader/fbreader/FBView.java
@@ -499,15 +499,14 @@ public final class FBView extends ZLTextView {
myTOCMarks = null;
}
- private final int MAX_TOC_MARKS_NUMBER = 100;
- protected synchronized void updateTOCMarks(BookModel model) {
+ protected synchronized void updateTOCMarks(BookModel model, int maxNumber) {
myTOCMarks = new ArrayList();
TOCTree toc = model.TOCTree;
if (toc == null) {
return;
}
int maxLevel = Integer.MAX_VALUE;
- if (toc.getSize() >= MAX_TOC_MARKS_NUMBER) {
+ if (toc.getSize() >= maxNumber) {
final int[] sizes = new int[10];
for (TOCTree tocItem : toc) {
if (tocItem.Level < 10) {
@@ -518,7 +517,7 @@ public final class FBView extends ZLTextView {
sizes[i] += sizes[i - 1];
}
for (maxLevel = sizes.length - 1; maxLevel >= 0; --maxLevel) {
- if (sizes[maxLevel] < MAX_TOC_MARKS_NUMBER) {
+ if (sizes[maxLevel] < maxNumber) {
break;
}
}
@@ -645,9 +644,10 @@ public final class FBView extends ZLTextView {
context.setFillColor(fillColor);
context.fillRectangle(left + 1, height - 2 * lineWidth, gaugeInternalRight, lineWidth + 1);
- if (myViewOptions.getFooterOptions().ShowTOCMarks.getValue()) {
+ final FooterOptions footerOptions = myViewOptions.getFooterOptions();
+ if (footerOptions.ShowTOCMarks.getValue()) {
if (myTOCMarks == null) {
- updateTOCMarks(model);
+ updateTOCMarks(model, footerOptions.MaxTOCMarks.getValue());
}
final int fullLength = sizeOfFullText();
for (TOCTree tocItem : myTOCMarks) {
@@ -706,12 +706,13 @@ public final class FBView extends ZLTextView {
}
// draw labels
- if (myViewOptions.getFooterOptions().ShowTOCMarks.getValue()) {
+ final FooterOptions footerOptions = myViewOptions.getFooterOptions();
+ if (footerOptions.ShowTOCMarks.getValue()) {
final TreeSet labels = new TreeSet();
labels.add(left);
labels.add(gaugeRight);
if (myTOCMarks == null) {
- updateTOCMarks(model);
+ updateTOCMarks(model, footerOptions.MaxTOCMarks.getValue());
}
final int fullLength = sizeOfFullText();
for (TOCTree tocItem : myTOCMarks) {
diff --git a/src/org/geometerplus/fbreader/fbreader/options/FooterOptions.java b/src/org/geometerplus/fbreader/fbreader/options/FooterOptions.java
index 5d6293c01..583a99086 100644
--- a/src/org/geometerplus/fbreader/fbreader/options/FooterOptions.java
+++ b/src/org/geometerplus/fbreader/fbreader/options/FooterOptions.java
@@ -30,6 +30,7 @@ public class FooterOptions {
}
public final ZLBooleanOption ShowTOCMarks;
+ public final ZLIntegerRangeOption MaxTOCMarks;
public final ZLBooleanOption ShowClock;
public final ZLBooleanOption ShowBattery;
public final ZLEnumOption ShowProgress;
@@ -37,6 +38,7 @@ public class FooterOptions {
public FooterOptions() {
ShowTOCMarks = new ZLBooleanOption("Options", "FooterShowTOCMarks", true);
+ MaxTOCMarks = new ZLIntegerRangeOption("Options", "FooterMaxTOCMarks", 10, 1000, 100);
ShowClock = new ZLBooleanOption("Options", "ShowClockInFooter", true);
ShowBattery = new ZLBooleanOption("Options", "ShowBatteryInFooter", true);
ShowProgress = new ZLEnumOption(