Instance: use getInstance()
[nikiroo-utils.git] / src / be / nikiroo / fanfix / reader / tui / TuiReaderMainWindow.java
index 76c05d0cff6a4f72c3c5bfbd68daf5727c2f1bd9..b1ebcc2e6971de4c25e119c5e6fbbb7a32043844 100644 (file)
@@ -22,7 +22,7 @@ import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.library.BasicLibrary;
 import be.nikiroo.fanfix.output.BasicOutput.OutputType;
-import be.nikiroo.fanfix.reader.Reader;
+import be.nikiroo.jexer.TSizeConstraint;
 
 /**
  * The library window, that will list all the (filtered) stories available in
@@ -42,7 +42,7 @@ class TuiReaderMainWindow extends TWindow {
        private TList list;
        private List<MetaData> listKeys;
        private List<String> listItems;
-       private Reader reader;
+       private TuiReaderApplication reader;
 
        private Mode mode = Mode.SOURCE;
        private String target = null;
@@ -50,7 +50,7 @@ class TuiReaderMainWindow extends TWindow {
 
        private List<TSizeConstraint> sizeConstraints = new ArrayList<TSizeConstraint>();
 
-       // TODO: because no way to find out the current index!!
+       // The 2 comboboxes used to select by source/author
        private TComboBox selectTargetBox;
        private TComboBox selectBox;
 
@@ -72,7 +72,7 @@ class TuiReaderMainWindow extends TWindow {
 
                addList();
                addSearch();
-               addSelect(); // last so we can see the drop down over the list
+               addSelect();
 
                TStatusBar statusBar = reader.setStatusBar(this, "Library");
                statusBar.addShortcutKeypress(TKeypress.kbCtrlF, CMD_SEARCH, "Search");
@@ -153,25 +153,30 @@ class TuiReaderMainWindow extends TWindow {
                        @Override
                        public void DO() {
                                String smode = selectBox.getText();
-                               Mode mode;
                                boolean showTarget;
                                if (smode == null || smode.equals("(show all)")) {
-                                       mode = null;
                                        showTarget = false;
                                } else if (smode.equals("Sources")) {
-                                       mode = Mode.SOURCE;
                                        selectTargets.clear();
                                        selectTargets.add("(show all)");
-                                       for (String source : reader.getLibrary().getSources()) {
-                                               selectTargets.add(source);
+                                       try {
+                                               for (String source : reader.getLibrary().getSources()) {
+                                                       selectTargets.add(source);
+                                               }
+                                       } catch (IOException e) {
+                                               Instance.getInstance().getTraceHandler().error(e);
                                        }
+
                                        showTarget = true;
                                } else {
-                                       mode = Mode.AUTHOR;
                                        selectTargets.clear();
                                        selectTargets.add("(show all)");
-                                       for (String author : reader.getLibrary().getAuthors()) {
-                                               selectTargets.add(author);
+                                       try {
+                                               for (String author : reader.getLibrary().getAuthors()) {
+                                                       selectTargets.add(author);
+                                               }
+                                       } catch (IOException e) {
+                                               Instance.getInstance().getTraceHandler().error(e);
                                        }
 
                                        showTarget = true;
@@ -184,7 +189,11 @@ class TuiReaderMainWindow extends TWindow {
                                }
 
                                selectTargetBox.setText(selectTargets.get(0));
-                               setMode(mode, null);
+                               if (showTarget) {
+                                       TuiReaderMainWindow.this.activate(selectTargetBox);
+                               } else {
+                                       TuiReaderMainWindow.this.activate(list);
+                               }
                        }
                };
 
@@ -194,8 +203,8 @@ class TuiReaderMainWindow extends TWindow {
                                new TAction() {
                                        @Override
                                        public void DO() {
-                                               // TODO: detect (show all)
-                                               if (selectTargetBox.getText().equals("(show all)")) {
+                                               if (selectTargetBox.getText().equals(
+                                                               selectTargets.get(0))) {
                                                        setMode(mode, null);
                                                } else {
                                                        setMode(mode, selectTargetBox.getText());
@@ -231,12 +240,18 @@ class TuiReaderMainWindow extends TWindow {
         */
        public void refreshStories() {
                List<MetaData> metas;
-               if (mode == Mode.SOURCE) {
-                       metas = reader.getLibrary().getListBySource(target);
-               } else if (mode == Mode.AUTHOR) {
-                       metas = reader.getLibrary().getListByAuthor(target);
-               } else {
-                       metas = reader.getLibrary().getList();
+
+               try {
+                       if (mode == Mode.SOURCE) {
+                               metas = reader.getLibrary().getListBySource(target);
+                       } else if (mode == Mode.AUTHOR) {
+                               metas = reader.getLibrary().getListByAuthor(target);
+                       } else {
+                               metas = reader.getLibrary().getList();
+                       }
+               } catch (IOException e) {
+                       Instance.getInstance().getTraceHandler().error(e);
+                       metas = new ArrayList<MetaData>();
                }
 
                setMetas(metas);
@@ -282,6 +297,9 @@ class TuiReaderMainWindow extends TWindow {
                }
 
                list.setList(listItems);
+               if (listItems.size() > 0) {
+                       list.setSelectedIndex(0);
+               }
        }
 
        public MetaData getSelectedMeta() {
@@ -296,9 +314,9 @@ class TuiReaderMainWindow extends TWindow {
                try {
                        reader.setChapter(-1);
                        reader.setMeta(meta);
-                       reader.read();
+                       reader.read(false);
                } catch (IOException e) {
-                       Instance.getTraceHandler().error(e);
+                       Instance.getInstance().getTraceHandler().error(e);
                }
        }
 
@@ -321,11 +339,11 @@ class TuiReaderMainWindow extends TWindow {
                MetaData meta = getSelectedMeta();
                if (meta != null) {
                        switch (menu.getId()) {
-                       case TuiReaderApplication.MENU_OPEN:
+                       case TuiReaderApplication.MENU_FILE_OPEN:
                                readStory(meta);
 
                                return;
-                       case TuiReaderApplication.MENU_EXPORT:
+                       case TuiReaderApplication.MENU_FILE_EXPORT:
 
                                try {
                                        // TODO: choose type, pg, error