From c3b229a10b147a2ca104a13ad0b43e49549b4ed9 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Wed, 13 Mar 2019 21:48:18 +0100 Subject: [PATCH] TODO update, gui: jdoc + small rename --- TODO.md | 11 +-- .../nikiroo/fanfix/library/CacheLibrary.java | 3 + .../nikiroo/fanfix/reader/ui/GuiReader.java | 71 +++++++++++++++++-- .../fanfix/reader/ui/GuiReaderFrame.java | 7 +- 4 files changed, 80 insertions(+), 12 deletions(-) diff --git a/TODO.md b/TODO.md index 4789436..19202dc 100644 --- a/TODO.md +++ b/TODO.md @@ -23,15 +23,16 @@ My current planning for Fanfix (but not everything appears on this list): - [x] Choose an output (Jexer) - [x] Implement it from --set-reader to the actual window - [x] List the stories - - [ ] Fix the UI layout + - [x] Fix the UI layout - [x] Status bar - - [ ] Real menus + - [x] Real menus - [ ] Store the long lists in [A-B], [BA-BB], ... - [x] Open a story in the reader and/or natively - [ ] Update the screenshots - [ ] Remember the current chapter and current read status of stories - [ ] Support progress events - - [ ] Add a property pages + - [x] Add a properties pages + - [ ] Deal with comics (properties page + external launcher? jexer?) - [x] Network support - [x] A server that can send the stories - [x] A network implementation of the Library @@ -54,7 +55,9 @@ My current planning for Fanfix (but not everything appears on this list): - [ ] support progress events - [ ] Translations - [x] i18n system in place - - [x] Make use of it + - [x] Make use of it in text + - [x] Make use of it in gui + - [ ] Make use of it in tui - [ ] Use it for all user output - [ ] French translation - [x] French manual/readme diff --git a/src/be/nikiroo/fanfix/library/CacheLibrary.java b/src/be/nikiroo/fanfix/library/CacheLibrary.java index 8b1a3c7..c8721dd 100644 --- a/src/be/nikiroo/fanfix/library/CacheLibrary.java +++ b/src/be/nikiroo/fanfix/library/CacheLibrary.java @@ -249,6 +249,9 @@ public class CacheLibrary extends BasicLibrary { /** * Clear the {@link Story} from the cache. + *

+ * The next time we try to retrieve the {@link Story}, it may be required to + * cache it again. * * @param luid * the story to clear diff --git a/src/be/nikiroo/fanfix/reader/ui/GuiReader.java b/src/be/nikiroo/fanfix/reader/ui/GuiReader.java index 576ac9c..519a507 100644 --- a/src/be/nikiroo/fanfix/reader/ui/GuiReader.java +++ b/src/be/nikiroo/fanfix/reader/ui/GuiReader.java @@ -19,10 +19,22 @@ import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.library.BasicLibrary; import be.nikiroo.fanfix.library.CacheLibrary; import be.nikiroo.fanfix.reader.BasicReader; +import be.nikiroo.fanfix.reader.Reader; import be.nikiroo.utils.Progress; import be.nikiroo.utils.Version; import be.nikiroo.utils.ui.UIUtils; +/** + * This class implements a graphical {@link Reader} using the Swing library from + * Java. + *

+ * It can thus be themed to look native-like, or metal-like, or use any other + * theme you may want to try. + *

+ * We actually try to enable native look-alike mode on start. + * + * @author niki + */ class GuiReader extends BasicReader { static private boolean nativeLookLoaded; @@ -30,7 +42,14 @@ class GuiReader extends BasicReader { private File cacheDir; + /** + * Create a new graphical {@link Reader}. + * + * @throws IOException + * in case of I/O errors + */ public GuiReader() throws IOException { + // TODO: allow different themes? if (!nativeLookLoaded) { UIUtils.setLookAndFeel(); nativeLookLoaded = true; @@ -161,7 +180,16 @@ class GuiReader extends BasicReader { } } - // delete from local reader library + /** + * Delete the {@link Story} from the cache if it is present, but NOT + * from the main library. + *

+ * The next time we try to retrieve the {@link Story}, it may be required to + * cache it again. + * + * @param luid + * the luid of the {@link Story} + */ void clearLocalReaderCache(String luid) { try { cacheLib.clearFromCache(luid); @@ -170,7 +198,15 @@ class GuiReader extends BasicReader { } } - // delete from main library + /** + * Forward the delete operation to the main library. + *

+ * The {@link Story} will be deleted from the main library as well as the + * cache if present. + * + * @param luid + * the {@link Story} to delete + */ void delete(String luid) { try { cacheLib.delete(luid); @@ -179,15 +215,42 @@ class GuiReader extends BasicReader { } } - // open the given book + /** + * "Open" the given {@link Story}. It usually involves starting an external + * program adapted to the given file type. + * + * @param luid + * the luid of the {@link Story} to open + * @param pg + * the optional progress (we may need to prepare the + * {@link Story} for reading + * + * @throws IOException + * in case of I/O errors + */ void read(String luid, Progress pg) throws IOException { File file = cacheLib.getFile(luid, pg); // TODO: show a special page for the chapter? + // We could also implement an internal viewer, both for image and + // non-image documents openExternal(getLibrary().getInfo(luid), file); } - void changeType(String luid, String newSource) { + /** + * Change the source of the given {@link Story} (the source is the main + * information used to group the stories together). + *

+ * In other words, move the {@link Story} into other source. + *

+ * The source can be a new one, it needs not exist before hand. + * + * @param luid + * the luid of the {@link Story} to move + * @param newSource + * the new source + */ + void changeSource(String luid, String newSource) { try { cacheLib.changeSource(luid, newSource, null); } catch (IOException e) { diff --git a/src/be/nikiroo/fanfix/reader/ui/GuiReaderFrame.java b/src/be/nikiroo/fanfix/reader/ui/GuiReaderFrame.java index b98bed2..39187b9 100644 --- a/src/be/nikiroo/fanfix/reader/ui/GuiReaderFrame.java +++ b/src/be/nikiroo/fanfix/reader/ui/GuiReaderFrame.java @@ -184,7 +184,7 @@ class GuiReaderFrame extends JFrame { break; case UNAVAILABLE: - err += "Library currently unavilable"; + err += "Library currently unavailable"; break; default: @@ -330,7 +330,6 @@ class GuiReaderFrame extends JFrame { /** * Refresh the list of {@link GuiReaderBook}s from disk. - * */ private void refreshBooks() { for (GuiReaderGroup group : booksByType.keySet()) { @@ -720,7 +719,7 @@ class GuiReaderFrame extends JFrame { outOfUi(null, new Runnable() { @Override public void run() { - reader.changeType(selectedBook.getMeta() + reader.changeSource(selectedBook.getMeta() .getLuid(), ftype); selectedBook = null; @@ -760,7 +759,7 @@ class GuiReaderFrame extends JFrame { GuiReaderFrame.this.selectedBook = null; MetaData newMeta = story.getMeta(); if (!newMeta.getSource().equals(meta.getSource())) { - reader.changeType(newMeta.getLuid(), + reader.changeSource(newMeta.getLuid(), meta.getSource()); } } -- 2.27.0