import be.nikiroo.fanfix.Instance;
import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.data.Story;
-import be.nikiroo.utils.IOUtils;
+import be.nikiroo.utils.ImageUtils;
import be.nikiroo.utils.ui.UIUtils;
/**
* @param reader
* the associated reader
* @param meta
- * the story {@link MetaData}
+ * the story {@link MetaData} or source (if no LUID)
* @param cached
* TRUE if it is locally cached
* @param seeWordCount
String optSecondary = meta.getAuthor();
if (seeWordCount) {
if (meta.getWords() >= 4000) {
- optSecondary = (meta.getWords() / 1000) + "k words";
+ optSecondary = "" + (meta.getWords() / 1000) + "k";
} else if (meta.getWords() > 0) {
- optSecondary = meta.getWords() + " words";
+ optSecondary = "" + meta.getWords();
} else {
optSecondary = "";
}
+
+ if (!optSecondary.isEmpty()) {
+ if (meta.isImageDocument()) {
+ optSecondary += " images";
+ } else {
+ optSecondary += " words";
+ }
+ }
}
if (optSecondary != null && !optSecondary.isEmpty()) {
optSecondary = "(" + optSecondary + ")";
+ } else {
+ optSecondary = "";
}
icon = new JLabel(generateCoverIcon(meta));
private void setupListeners() {
listeners = new ArrayList<GuiReaderBook.BookActionListener>();
addMouseListener(new MouseListener() {
+ @Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
popup(e);
}
}
+ @Override
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
popup(e);
}
}
+ @Override
public void mouseExited(MouseEvent e) {
setHovered(false);
}
+ @Override
public void mouseEntered(MouseEvent e) {
setHovered(true);
}
+ @Override
public void mouseClicked(MouseEvent e) {
if (isEnabled()) {
Date now = new Date();
* Generate a cover icon based upon the given {@link MetaData}.
*
* @param meta
- * the {@link MetaData} about the target {@link Story}
+ * the {@link MetaData} about the target {@link Story} or source
+ * (if no LUID)
*
* @return the icon
*/
private ImageIcon generateCoverIcon(MetaData meta) {
- String id = meta.getUuid() + ".thumb_" + SPINE_WIDTH + "x"
- + COVER_WIDTH + "+" + SPINE_HEIGHT + "+" + COVER_HEIGHT + "@"
- + HOFFSET;
BufferedImage resizedImage = null;
+ String id = null;
+
+ String key = meta.getUuid();
+ if (key == null) {
+ // a fake meta (a source)
+ key = "source_" + meta.getSource();
+ }
+ id = key + ".thumb_" + SPINE_WIDTH + "x" + COVER_WIDTH + "+"
+ + SPINE_HEIGHT + "+" + COVER_HEIGHT + "@" + HOFFSET;
InputStream in = Instance.getCache().getFromCache(id);
if (in != null) {
try {
- resizedImage = IOUtils.toImage(in);
+ resizedImage = ImageUtils.fromStream(in);
in.close();
in = null;
} catch (IOException e) {
if (resizedImage == null) {
try {
- BufferedImage cover = reader.getLibrary().getCover(
- meta.getLuid());
+ BufferedImage cover = null;
+ if (meta.getLuid() == null) {
+ cover = reader.getLibrary()
+ .getSourceCover(meta.getSource());
+ } else {
+ cover = reader.getLibrary().getCover(meta.getLuid());
+ }
resizedImage = new BufferedImage(SPINE_WIDTH + COVER_WIDTH,
SPINE_HEIGHT + COVER_HEIGHT + HOFFSET,
}
g.dispose();
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ImageIO.write(resizedImage, "png", out);
- byte[] imageBytes = out.toByteArray();
- in = new ByteArrayInputStream(imageBytes);
- Instance.getCache().addToCache(in, id);
- in.close();
- in = null;
+ if (id != null) {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ ImageIO.write(resizedImage, "png", out);
+ byte[] imageBytes = out.toByteArray();
+ in = new ByteArrayInputStream(imageBytes);
+ Instance.getCache().addToCache(in, id);
+ in.close();
+ in = null;
+ }
} catch (MalformedURLException e) {
Instance.syserr(e);
} catch (IOException e) {