From 379a497e6fd2b959c57b2ff4023413e2daf36232 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Tue, 26 May 2020 21:03:01 +0200 Subject: [PATCH] update to master --- data/MetaData.java | 12 ++--- library/WebLibrary.java | 18 +++---- library/WebLibraryServer.java | 5 +- library/WebLibraryServerHtml.java | 47 ++++++++++++----- library/web/fit_to_width_limited-32x32.png | Bin 0 -> 5501 bytes library/web/fit_to_width_limited-64x64.png | Bin 0 -> 8899 bytes library/web/index.pre.html | 48 ------------------ library/web/style.css | 25 +++++---- .../templates/WebLibraryServerTemplates.java | 16 +++--- library/web/templates/index.html | 2 +- library/web/templates/index.post.html | 2 - .../web/templates/viewer.image.nolink.html | 5 ++ supported/BasicSupport.java | 6 ++- supported/BasicSupport_Deprecated.java | 4 +- 14 files changed, 88 insertions(+), 102 deletions(-) create mode 100644 library/web/fit_to_width_limited-32x32.png create mode 100644 library/web/fit_to_width_limited-64x64.png delete mode 100644 library/web/index.pre.html delete mode 100644 library/web/templates/index.post.html create mode 100644 library/web/templates/viewer.image.nolink.html diff --git a/data/MetaData.java b/data/MetaData.java index 1c6ad42..5989604 100644 --- a/data/MetaData.java +++ b/data/MetaData.java @@ -320,7 +320,7 @@ public class MetaData implements Cloneable, Comparable, Serializable { * output type this {@link Story} is in (see {@link SupportType}). *

* It allows you to know where the {@link Story} comes from, and is not - * supposed to change. + * supposed to change, even when re-imported. *

* It's the user representation of the enum * ({@link SupportType#getSourceName()}, not @@ -337,7 +337,7 @@ public class MetaData implements Cloneable, Comparable, Serializable { * output type this {@link Story} is in (see {@link SupportType}). *

* It allows you to know where the {@link Story} comes from, and is not - * supposed to change. + * supposed to change, even when re-imported. *

* It's the user representation of the enum * ({@link SupportType#getSourceName()}, not @@ -353,8 +353,8 @@ public class MetaData implements Cloneable, Comparable, Serializable { /** * The output type this {@link Story} is in (see {@link SupportType}). *

- * It allows you to know where the {@link Story} comes from, and is not - * supposed to change. + * It allows you to know where the {@link Story} comes from, and is supposed + * to only change when it is imported anew. *

* It's the direct representation of the enum * ({@link SupportType#toString()}, not @@ -369,8 +369,8 @@ public class MetaData implements Cloneable, Comparable, Serializable { /** * The output type this {@link Story} is in (see {@link SupportType}). *

- * It allows you to know where the {@link Story} comes from, and is not - * supposed to change. + * It allows you to know where the {@link Story} comes from, and is supposed + * to only change when it is imported anew. *

* It's the direct representation of the enum * ({@link SupportType#toString()}, not diff --git a/library/WebLibrary.java b/library/WebLibrary.java index 9af38e2..7381ae3 100644 --- a/library/WebLibrary.java +++ b/library/WebLibrary.java @@ -173,12 +173,12 @@ public class WebLibrary extends BasicLibrary { InputStream in = post(WebLibraryUrls.getStoryUrlCover(luid)); try { Image img = new Image(in); - if (img.getSize() > 0) { + if (img.getSize() == 0) { img.close(); - return img; + img = null; } - return null; + return img; } finally { in.close(); } @@ -189,12 +189,12 @@ public class WebLibrary extends BasicLibrary { InputStream in = post(WebLibraryUrls.getCoverUrlSource(source)); try { Image img = new Image(in); - if (img.getSize() > 0) { + if (img.getSize() == 0) { img.close(); - return img; + img = null; } - return null; + return img; } finally { in.close(); } @@ -205,12 +205,12 @@ public class WebLibrary extends BasicLibrary { InputStream in = post(WebLibraryUrls.getCoverUrlAuthor(author)); try { Image img = new Image(in); - if (img.getSize() > 0) { + if (img.getSize() == 0) { img.close(); - return img; + img = null; } - return null; + return img; } finally { in.close(); } diff --git a/library/WebLibraryServer.java b/library/WebLibraryServer.java index 22f36e9..56d78ed 100644 --- a/library/WebLibraryServer.java +++ b/library/WebLibraryServer.java @@ -217,9 +217,8 @@ public class WebLibraryServer extends WebLibraryServerHtml { jsons.add(JsonIO.toJson(meta)); } - return newInputStreamResponse("application/json", - new ByteArrayInputStream( - new JSONArray(jsons).toString().getBytes())); + return NanoHTTPD.newFixedLengthResponse(Status.OK, + "application/json", new JSONArray(jsons).toString()); } return NanoHTTPD.newFixedLengthResponse(Status.BAD_REQUEST, diff --git a/library/WebLibraryServerHtml.java b/library/WebLibraryServerHtml.java index d5ba533..63c50c5 100644 --- a/library/WebLibraryServerHtml.java +++ b/library/WebLibraryServerHtml.java @@ -247,6 +247,12 @@ abstract class WebLibraryServerHtml implements Runnable { mimeType = "text/html"; } else if (uri.endsWith(".js")) { mimeType = "text/javascript"; + } else if (uri.endsWith(".png")) { + mimeType = "image/png"; + } else if (uri.endsWith(".ico")) { + mimeType = "image/x-icon"; + } else if (uri.endsWith(".java")) { + mimeType = "text/plain"; } rep = newChunkedResponse(Status.OK, mimeType, in); @@ -326,7 +332,8 @@ abstract class WebLibraryServerHtml implements Runnable { content.add(templates.login(uri)); return NanoHTTPD.newChunkedResponse(Status.FORBIDDEN, - NanoHTTPD.MIME_HTML, templates.index(true, content).read()); + NanoHTTPD.MIME_HTML, + templates.index(true, false, content).read()); } private Response root(IHTTPSession session, Map cookies, @@ -469,7 +476,7 @@ abstract class WebLibraryServerHtml implements Runnable { booklines.add(0, templates.browser(browser, filter, selects)); return newInputStreamResponse(NanoHTTPD.MIME_HTML, - templates.index(true, booklines).read()); + templates.index(true, false, booklines).read()); } private Response getViewer(Map cookies, String uri, @@ -546,6 +553,7 @@ abstract class WebLibraryServerHtml implements Runnable { boolean disabledRight = false; boolean disabledZoomReal = false; boolean disabledZoomWidth = false; + boolean disabledZoomWidthLimited = false; boolean disabledZoomHeight = false; Template viewerItem = null; @@ -623,27 +631,36 @@ abstract class WebLibraryServerHtml implements Runnable { } if (para.getType() == ParagraphType.IMAGE) { - String zoomStyle = "max-width: 100%;"; - disabledZoomWidth = true; + // default values: + String zoomStyle = "max-width: 800px;"; + disabledZoomWidthLimited = true; + String zoomOption = cookies.get("zoom"); if (zoomOption != null && !zoomOption.isEmpty()) { if (zoomOption.equals("real")) { zoomStyle = ""; - disabledZoomWidth = false; + disabledZoomWidthLimited = false; disabledZoomReal = true; + } else if (zoomOption.equals("widthlimited")) { + // default } else if (zoomOption.equals("width")) { zoomStyle = "max-width: 100%;"; + disabledZoomWidthLimited = false; + disabledZoomWidth = true; } else if (zoomOption.equals("height")) { // see height of navbar + optionbar zoomStyle = "max-height: calc(100% - 128px);"; - disabledZoomWidth = false; + disabledZoomWidthLimited = false; disabledZoomHeight = true; } } - viewerItem = templates.viewerImage(WebLibraryUrls - .getStoryUrl(luid, chapter, paragraph), next, - zoomStyle); + viewerItem = templates.viewerImage( + WebLibraryUrls.getStoryUrl(luid, chapter, + paragraph), // + disabledRight ? null : next, // + zoomStyle // + ); } else { viewerItem = templates.viewerText(null, new TextOutput(false).convert(para)); @@ -708,25 +725,29 @@ abstract class WebLibraryServerHtml implements Runnable { buttons.add(templates.viewerOptionbarButton( // "1:1", uri + "?optionName=zoom&optionValue=real", "zoomreal", disabledZoomReal)); + buttons.add(templates.viewerOptionbarButton( // + "]width[", + uri + "?optionName=zoom&optionValue=widthlimited", + "zoomwidthlimited", disabledZoomWidthLimited)); buttons.add(templates.viewerOptionbarButton( // "Width", uri + "?optionName=zoom&optionValue=width", "zoomwidth", disabledZoomWidth)); buttons.add(templates.viewerOptionbarButton( // "Height", uri + "?optionName=zoom&optionValue=height", - "zoomHeight", disabledZoomHeight)); + "zoomheight", disabledZoomHeight)); } // Optionbar Template optionbar = templates.viewerOptionbar( // - (paragraph > 0) ? 4 : 1, // + (paragraph > 0) ? 5 : 1, // buttons // ); // Full content return newInputStreamResponse(NanoHTTPD.MIME_HTML, // - templates.index(false, Arrays.asList( // + templates.index(false, (paragraph > 0), Arrays.asList( // navbar, // viewerItem, // optionbar // @@ -738,7 +759,7 @@ abstract class WebLibraryServerHtml implements Runnable { NanoHTTPD.MIME_PLAINTEXT, "Error when processing request"); } } - + protected Response newInputStreamResponse(String mimeType, InputStream in) { if (in == null) { return NanoHTTPD.newFixedLengthResponse(Status.NO_CONTENT, "", diff --git a/library/web/fit_to_width_limited-32x32.png b/library/web/fit_to_width_limited-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..49710461e7d07bc986dca901078481b6f1672cc6 GIT binary patch literal 5501 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 literal 0 HcmV?d00001 diff --git a/library/web/index.pre.html b/library/web/index.pre.html deleted file mode 100644 index 1e626ab..0000000 --- a/library/web/index.pre.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - ${title} - - - - -

diff --git a/library/web/style.css b/library/web/style.css index bb91002..5a4c51f 100644 --- a/library/web/style.css +++ b/library/web/style.css @@ -227,6 +227,7 @@ h3 { .bar.optionbar.s1 { padding-left: calc(50% - (1 * (64px + 5px) / 2)); } .bar.optionbar.s4 { padding-left: calc(50% - (4 * (64px + 5px) / 2)); } +.bar.optionbar.s5 { padding-left: calc(50% - (5 * (64px + 5px) / 2)); } .bar.optionbar { bottom: 0; @@ -258,10 +259,11 @@ h3 { .bar .button.next { color: transparent; background-image: url('/arrow_right-32x32.png'); } .bar .button.last { color: transparent; background-image: url('/arrow_double_right-32x32.png'); } -.bar .button.back { color: transparent; background-image: url('/back-32x32.png'); } -.bar .button.zoomreal { color: transparent; background-image: url('/actual_size-32x32.png'); } -.bar .button.zoomwidth { color: transparent; background-image: url('/fit_to_width-32x32.png'); } -.bar .button.zoomheight { color: transparent; background-image: url('/fit_to_height-32x32.png'); } +.bar .button.back { color: transparent; background-image: url('/back-32x32.png'); } +.bar .button.zoomreal { color: transparent; background-image: url('/actual_size-32x32.png'); } +.bar .button.zoomwidth { color: transparent; background-image: url('/fit_to_width-32x32.png'); } +.bar .button.zoomwidthlimited { color: transparent; background-image: url('/fit_to_width_limited-32x32.png'); } +.bar .button.zoomheight { color: transparent; background-image: url('/fit_to_height-32x32.png'); } .viewer { padding-top: 64px; @@ -316,18 +318,19 @@ a.viewer.link:hover { color: #AAA391; } -@media(min-width: 800px) { - .main { +@media(min-width: 800px) { + .main:not(.fullscreen) { max-width: 800px; } - .bar.navbar { padding-left: calc(400px - (5 * (64px + 5px) / 2)); } + .main:not(.fullscreen) .bar.navbar { padding-left: calc(400px - (5 * (64px + 5px) / 2)); } - .bar.optionbar.s1 { padding-left: calc(400px - (1 * (64px + 5px) / 2)); } - .bar.optionbar.s4 { padding-left: calc(400px - (4 * (64px + 5px) / 2)); } + .main:not(.fullscreen) .bar.optionbar.s1 { padding-left: calc(400px - (1 * (64px + 5px) / 2)); } + .main:not(.fullscreen) .bar.optionbar.s4 { padding-left: calc(400px - (4 * (64px + 5px) / 2)); } + .main:not(.fullscreen) .bar.optionbar.s5 { padding-left: calc(400px - (5 * (64px + 5px) / 2)); } - .desc { flex-direction: row; } - .desc .cover img { + .main:not(.fullscreen) .desc { flex-direction: row; } + .main:not(.fullscreen) .desc .cover img { width: 200px; padding-right: 10px; } diff --git a/library/web/templates/WebLibraryServerTemplates.java b/library/web/templates/WebLibraryServerTemplates.java index 59e7020..2564444 100644 --- a/library/web/templates/WebLibraryServerTemplates.java +++ b/library/web/templates/WebLibraryServerTemplates.java @@ -44,7 +44,8 @@ public class WebLibraryServerTemplates { ; } - public Template index(boolean banner, List