X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Ftui%2FTuiReaderMainWindow.java;h=2ee319ab678b2f5c8b60c0edb2552ec0f88b4ff4;hb=1387a30ab59dbf4071f2c5e5e0e08ca98c75b726;hp=c10317167189e53256a6c6cae8d83cc75cbfe6f1;hpb=4162793727db52a12e0efeaca48ac5dbdcb57bdf;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java index c103171..2ee319a 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java +++ b/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java @@ -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 listKeys; private List 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 sizeConstraints = new ArrayList(); - // 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,26 +189,28 @@ class TuiReaderMainWindow extends TWindow { } selectTargetBox.setText(selectTargets.get(0)); - setMode(mode, null); + if (showTarget) { + TuiReaderMainWindow.this.activate(selectTargetBox); + } else { + TuiReaderMainWindow.this.activate(list); + } } }; selectBox = addComboBox(0, 0, 10, selects, 0, -1, onSelect); - selectBox.setReadOnly(true); selectTargetBox = addComboBox(0, 0, 0, selectTargets, 0, -1, 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()); } } }); - selectTargetBox.setReadOnly(true); // Set defaults onSelect.DO(); @@ -233,12 +240,18 @@ class TuiReaderMainWindow extends TWindow { */ public void refreshStories() { List 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().getList().filter(target, null, null); + } else if (mode == Mode.AUTHOR) { + metas = reader.getLibrary().getList().filter(null, target, null); + } else { + metas = reader.getLibrary().getList().getMetas(); + } + } catch (IOException e) { + Instance.getInstance().getTraceHandler().error(e); + metas = new ArrayList(); } setMetas(metas); @@ -284,6 +297,9 @@ class TuiReaderMainWindow extends TWindow { } list.setList(listItems); + if (listItems.size() > 0) { + list.setSelectedIndex(0); + } } public MetaData getSelectedMeta() { @@ -298,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); } } @@ -323,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