From c1df1ccc52de0d1ecfa9d85d4b0fbdc8e513e4d8 Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Fri, 25 Sep 2015 13:22:17 +0100 Subject: [PATCH] 'max number of TOC marks' option --- ChangeLog | 3 ++- assets/resources/application/ar.xml | 1 + assets/resources/application/be.xml | 1 + assets/resources/application/bg.xml | 1 + assets/resources/application/ca.xml | 1 + assets/resources/application/cs.xml | 1 + assets/resources/application/da.xml | 1 + assets/resources/application/de.xml | 1 + assets/resources/application/el.xml | 1 + assets/resources/application/en.xml | 1 + assets/resources/application/en_US.xml | 1 + assets/resources/application/es.xml | 1 + assets/resources/application/eu.xml | 1 + assets/resources/application/fa.xml | 1 + assets/resources/application/fr.xml | 1 + assets/resources/application/gl.xml | 1 + assets/resources/application/hu.xml | 1 + assets/resources/application/hy.xml | 1 + assets/resources/application/it.xml | 1 + assets/resources/application/ja.xml | 1 + assets/resources/application/ka.xml | 1 + assets/resources/application/ko.xml | 1 + assets/resources/application/nb.xml | 1 + assets/resources/application/nl.xml | 1 + assets/resources/application/pl.xml | 1 + assets/resources/application/pt.xml | 1 + assets/resources/application/ro.xml | 1 + assets/resources/application/ru.xml | 1 + assets/resources/application/sr.xml | 1 + assets/resources/application/th.xml | 1 + assets/resources/application/tr.xml | 1 + assets/resources/application/uk.xml | 1 + assets/resources/application/vi.xml | 1 + assets/resources/application/zh.xml | 1 + assets/resources/application/zh_TW.xml | 1 + .../preferences/PreferenceActivity.java | 27 ++++++++++++++++++- .../fbreader/fbreader/FBView.java | 17 ++++++------ .../fbreader/options/FooterOptions.java | 2 ++ 38 files changed, 73 insertions(+), 10 deletions(-) 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(