X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Fui%2FGuiReaderBookInfo.java;h=3cef8cfddcd48232875e64be1ee5315abfac9616;hb=1387a30ab59dbf4071f2c5e5e0e08ca98c75b726;hp=eb6dfbf36294a1f8711b173b394d25187222ba8a;hpb=596ed3d65b2585c4358935d6fbb130f50e237787;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/ui/GuiReaderBookInfo.java b/src/be/nikiroo/fanfix/reader/ui/GuiReaderBookInfo.java index eb6dfbf..3cef8cf 100644 --- a/src/be/nikiroo/fanfix/reader/ui/GuiReaderBookInfo.java +++ b/src/be/nikiroo/fanfix/reader/ui/GuiReaderBookInfo.java @@ -1,5 +1,7 @@ package be.nikiroo.fanfix.reader.ui; +import java.io.IOException; + import be.nikiroo.fanfix.bundles.StringIdGui; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; @@ -15,6 +17,12 @@ import be.nikiroo.utils.StringUtils; * @author niki */ public class GuiReaderBookInfo { + /** + * The type of {@link GuiReaderBook} (i.e., related to a story or to something else that + * can encompass stories). + * + * @author niki + */ public enum Type { /** A normal story, which can be "read". */ STORY, @@ -51,6 +59,15 @@ public class GuiReaderBookInfo { this.id = id; this.value = value; } + + /** + * The type of {@link GuiReaderBookInfo}. + * + * @return the type + */ + public Type getType() { + return type; + } /** * Get the main info to display for this book (a title, an author, a @@ -123,11 +140,22 @@ public class GuiReaderBookInfo { * the {@link BasicLibrary} to use to fetch the image * * @return the base image + * + * @throws IOException + * in case of I/O error */ - public Image getBaseImage(BasicLibrary lib) { + public Image getBaseImage(BasicLibrary lib) throws IOException { switch (type) { case STORY: - return lib.getCover(meta.getLuid()); + if (meta.getCover() != null) { + return meta.getCover(); + } + + if (meta.getLuid() != null) { + return lib.getCover(meta.getLuid()); + } + + return null; case SOURCE: return lib.getSourceCover(value); case AUTHOR: @@ -150,12 +178,15 @@ public class GuiReaderBookInfo { if (uid == null || uid.trim().isEmpty()) { uid = meta.getLuid(); } + if (uid == null || uid.trim().isEmpty()) { + uid = meta.getUrl(); + } GuiReaderBookInfo info = new GuiReaderBookInfo(Type.STORY, uid, meta.getTitle()); info.meta = meta; - info.count = formatNumber(meta.getWords()); + info.count = StringUtils.formatNumber(meta.getWords()); if (!info.count.isEmpty()) { info.count = GuiReader.trans( meta.isImageDocument() ? StringIdGui.BOOK_COUNT_IMAGES @@ -180,7 +211,13 @@ public class GuiReaderBookInfo { GuiReaderBookInfo info = new GuiReaderBookInfo(Type.SOURCE, "source_" + source, source); - info.count = formatNumber(lib.getListBySource(source).size()); + int size = 0; + try { + size = lib.getList().filter(source, null, null).size(); + } catch (IOException e) { + } + + info.count = StringUtils.formatNumber(size); if (!info.count.isEmpty()) { info.count = GuiReader.trans(StringIdGui.BOOK_COUNT_STORIES, info.count); @@ -204,7 +241,13 @@ public class GuiReaderBookInfo { GuiReaderBookInfo info = new GuiReaderBookInfo(Type.AUTHOR, "author_" + author, author); - info.count = formatNumber(lib.getListByAuthor(author).size()); + int size = 0; + try { + size = lib.getList().filter(null, author, null).size(); + } catch (IOException e) { + } + + info.count = StringUtils.formatNumber(size); if (!info.count.isEmpty()) { info.count = GuiReader.trans(StringIdGui.BOOK_COUNT_STORIES, info.count); @@ -212,30 +255,4 @@ public class GuiReaderBookInfo { return info; } - - /** - * Format a number for display (use the "k" notation if higher or equal to - * 4000). - * - * @param number - * the number to parse - * - * @return the displayable version of the number - * - * @deprecated use {@link StringUtils} after update instead - */ - @Deprecated - static private String formatNumber(long number) { - // TODO: replace with StringUtils after update - String displayNumber; - if (number >= 4000) { - displayNumber = "" + (number / 1000) + "k"; - } else if (number > 0) { - displayNumber = "" + number; - } else { - displayNumber = ""; - } - - return displayNumber; - } }