Merge branch 'master' into android
authorNiki Roo <niki@nikiroo.be>
Tue, 9 Apr 2019 06:27:08 +0000 (08:27 +0200)
committerNiki Roo <niki@nikiroo.be>
Tue, 9 Apr 2019 06:27:08 +0000 (08:27 +0200)
VERSION
changelog-fr.md
changelog.md
src/be/nikiroo/fanfix/data/Paragraph.java
src/be/nikiroo/fanfix/supported/Cbz.java

diff --git a/VERSION b/VERSION
index 1e4ec5ed3defcc638cdbaca227a5b39cbd81e233..94245d2b704183c269836223e280a09588b0dd7b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.1-dev
+2.0.2-dev
index e7989d0b32aa101cb1133707da8d1508ceddd6f0..efe992f46ea23e1d3952a02f3edae2b85f7870d9 100644 (file)
@@ -1,10 +1,10 @@
 # Fanfix
 
-# Version WIP
+# Version 2.0.2
 
 - i18n: changer la langue dans les options fonctionne aussi quand $LANG existe
 - gui: traduction en français
-- gui: ReDownloader ne supprimer plus le livre original
+- gui: ReDownloader ne supprime plus le livre original
 - fix: corrections pour le visionneur interne
 - fix: quelques corrections pour les traductions
 
index 4bf7154412e3c87695f159eb4fcf5bcc67abc190..6a7256521ce097b015dccc2964acc9e014b035c4 100644 (file)
@@ -1,6 +1,6 @@
 # Fanfix
 
-# Version WIP
+# Version 2.0.2
 
 - i18n: setting the language in the option panel now works even with $LANG set
 - gui: translated into French
index e7ef04581fc3b2d70c05d19d1b203971ba2136b2..0ed61fbb614f494725ebbc0f1c632a7ffcd7a29a 100644 (file)
@@ -23,7 +23,19 @@ public class Paragraph implements Cloneable {
                /** Quotation (dialogue) */
                QUOTE,
                /** An image (no text) */
-               IMAGE,
+               IMAGE, ;
+
+               /**
+                * This paragraph type is of a text kind (quote or not).
+                * 
+                * @param allowEmpty
+                *            allow empty text as text, too (blanks, breaks...)
+                * @return TRUE if it is
+                */
+               public boolean isText(boolean allowEmpty) {
+                       return (this == NORMAL || this == QUOTE)
+                                       || (allowEmpty && (this == BLANK || this == BREAK));
+               }
        }
 
        private ParagraphType type;
index 3aaa355b7b0827015e8334af7362f56c2bdc966d..062adf0fac71550a8946257f9123e2d178ba7d98 100644 (file)
@@ -17,6 +17,7 @@ import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.data.Chapter;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.data.Paragraph;
+import be.nikiroo.fanfix.data.Paragraph.ParagraphType;
 import be.nikiroo.fanfix.data.Story;
 import be.nikiroo.utils.IOUtils;
 import be.nikiroo.utils.Image;
@@ -126,7 +127,7 @@ class Cbz extends Epub {
 
                        pg.setProgress(90);
 
-                       // only the description is kept, we do not support hybrid CBZ
+                       // only the description is kept
                        Story origStory = getStoryFromTxt(tmpDir, basename);
                        if (origStory != null) {
                                if (origStory.getMeta().getCover() == null) {
@@ -136,6 +137,29 @@ class Cbz extends Epub {
                        }
                        story.setChapters(new ArrayList<Chapter>());
 
+                       // Check if we can find non-images chapters, for hybrid-cbz support
+                       for (Chapter chap : origStory) {
+                               Boolean isImages = null;
+                               for (Paragraph para : chap) {
+                                       ParagraphType t = para.getType();
+                                       if (isImages == null && !t.isText(true)) {
+                                               isImages = true;
+                                       }
+                                       if (t.isText(false)) {
+                                               String line = para.getContent();
+                                               // Images are saved in text mode as "[image-link]"
+                                               if (!(line.startsWith("[") && line.endsWith("]"))) {
+                                                       isImages = false;
+                                               }
+                                       }
+                               }
+
+                               if (isImages != null && !isImages) {
+                                       story.getChapters().add(chap);
+                                       chap.setNumber(story.getChapters().size());
+                               }
+                       }
+
                        if (!imagesList.isEmpty()) {
                                Chapter chap = new Chapter(story.getChapters().size() + 1, null);
                                story.getChapters().add(chap);