TODO update, gui: jdoc + small rename
authorNiki Roo <niki@nikiroo.be>
Wed, 13 Mar 2019 20:48:18 +0000 (21:48 +0100)
committerNiki Roo <niki@nikiroo.be>
Wed, 13 Mar 2019 20:48:18 +0000 (21:48 +0100)
TODO.md
src/be/nikiroo/fanfix/library/CacheLibrary.java
src/be/nikiroo/fanfix/reader/ui/GuiReader.java
src/be/nikiroo/fanfix/reader/ui/GuiReaderFrame.java

diff --git a/TODO.md b/TODO.md
index 4789436a7390d347000f76bf234a249abcda8c79..19202dc8969507636cb14b575edb9e92bd2fb57e 100644 (file)
--- 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
index 8b1a3c7e65ea570bf01407f73dea984956cadc97..c8721ddae3719cae169e00112efc1308d76177a1 100644 (file)
@@ -249,6 +249,9 @@ public class CacheLibrary extends BasicLibrary {
 
        /**
         * Clear the {@link Story} from the cache.
+        * <p>
+        * The next time we try to retrieve the {@link Story}, it may be required to
+        * cache it again.
         * 
         * @param luid
         *            the story to clear
index 576ac9cc80191c492e2e50572568ec0eaa79d9b7..519a507ea7d0fc1d080d3c04f602736a26afb45a 100644 (file)
@@ -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.
+ * <p>
+ * It can thus be themed to look native-like, or metal-like, or use any other
+ * theme you may want to try.
+ * <p>
+ * 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 <b>NOT</b>
+        * from the main library.
+        * <p>
+        * 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.
+        * <p>
+        * 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).
+        * <p>
+        * In other words, <b>move</b> the {@link Story} into other source.
+        * <p>
+        * 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) {
index b98bed22cd8c42b0d290639015814f56b0d29dda..39187b968b39a970849294f4fe1ac1f046f0199e 100644 (file)
@@ -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());
                                                        }
                                                }