X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Ftui%2FTuiReaderMainWindow.java;h=932cbcbb03fb33a5bf1a3721282c1866a41e801e;hb=350bc060516184774f8116e61696a8c3c45ba85d;hp=e4323f08fe21ce836fa20d30b1275a2d3aea187b;hpb=b22742622bd40df205649d00a2e3671774b51985;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java index e4323f0..932cbcb 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,9 +50,9 @@ class TuiReaderMainWindow extends TWindow { private List sizeConstraints = new ArrayList(); - // TODO: because no way to find out the current index!! - private TComboBox select; - private TComboBox option; + // The 2 comboboxes used to select by source/author + private TComboBox selectTargetBox; + private TComboBox selectBox; /** * Create a new {@link TuiReaderMainWindow} without any stories in the list. @@ -70,9 +70,9 @@ class TuiReaderMainWindow extends TWindow { listKeys = new ArrayList(); listItems = new ArrayList(); - addSearch(); addList(); - addSelect(); // TODO: last so it can draw over the rest + addSearch(); + addSelect(); TStatusBar statusBar = reader.setStatusBar(this, "Library"); statusBar.addShortcutKeypress(TKeypress.kbCtrlF, CMD_SEARCH, "Search"); @@ -138,90 +138,78 @@ class TuiReaderMainWindow extends TWindow { } private void addSelect() { - // TODO: make a full list - final List options = new ArrayList(); - options.add("(show all)"); - options.add("Sources"); - options.add("Author"); - - // TODO + // TODO: i18n final List selects = new ArrayList(); selects.add("(show all)"); - for (String source : reader.getLibrary().getSources()) { - selects.add(source); - } + selects.add("Sources"); + selects.add("Author"); + + final List selectTargets = new ArrayList(); + selectTargets.add(""); TLabel lblSelect = addLabel("Select: ", 0, 0); - // TODO: why must be last so to be able to draw over the rest - // TODO: make it so we cannot add manual entries - // TODO: how to select the item via keyboard? why double-click via - // mouse? - // TODO: how to change the values size on resize? - // TODO: setWidth() does not impact the display width, only the control - // and the down arrow on the right - // TODO: width 1 +resize + click on down arrow = bad format exception - select = addComboBox(0, 0, 10, selects, 0, - Math.min(selects.size() + 1, getHeight() - 1 - 1), - new TAction() { - @Override - public void DO() { - // TODO: detect (show all) - if (select.getText().equals("(show all)")) { - setMode(mode, null); - } else { - setMode(mode, select.getText()); - } + TAction onSelect = new TAction() { + @Override + public void DO() { + String smode = selectBox.getText(); + boolean showTarget; + if (smode == null || smode.equals("(show all)")) { + showTarget = false; + } else if (smode.equals("Sources")) { + selectTargets.clear(); + selectTargets.add("(show all)"); + for (String source : reader.getLibrary().getSources()) { + selectTargets.add(source); + } + showTarget = true; + } else { + selectTargets.clear(); + selectTargets.add("(show all)"); + for (String author : reader.getLibrary().getAuthors()) { + selectTargets.add(author); } - }); - option = addComboBox(0, 0, 10, options, 0, - Math.min(selects.size() + 1, getHeight() - 1 - 1), + showTarget = true; + } + + selectTargetBox.setVisible(showTarget); + selectTargetBox.setEnabled(showTarget); + if (showTarget) { + selectTargetBox.reflowData(); + } + + selectTargetBox.setText(selectTargets.get(0)); + if (showTarget) { + TuiReaderMainWindow.this.activate(selectTargetBox); + } else { + TuiReaderMainWindow.this.activate(list); + } + } + }; + + selectBox = addComboBox(0, 0, 10, selects, 0, -1, onSelect); + + selectTargetBox = addComboBox(0, 0, 0, selectTargets, 0, -1, new TAction() { @Override public void DO() { - // TODO clear not working!! - - String smode = option.getText(); - Mode mode; - if (smode == null || smode.equals("(show all)")) { - mode = null; - select.setVisible(false); - select.setEnabled(false); - } else if (smode.equals("Sources")) { - mode = Mode.SOURCE; - select.setVisible(true); - select.setEnabled(true); - selects.clear(); - selects.add("(show all)"); - for (String source : reader.getLibrary() - .getSources()) { - selects.add(source); - } - } else { - mode = Mode.AUTHOR; - select.setVisible(true); - select.setEnabled(true); - selects.clear(); - selects.add("(show all)"); - for (String author : reader.getLibrary() - .getAuthors()) { - selects.add(author); - } - } - - // TODO: detect (show all) - if (select.getText().equals("(show all)")) { + if (selectTargetBox.getText().equals( + selectTargets.get(0))) { setMode(mode, null); } else { - setMode(mode, select.getText()); + setMode(mode, selectTargetBox.getText()); } } }); + // Set defaults + onSelect.DO(); + TSizeConstraint.setSize(sizeConstraints, lblSelect, 5, 3, null, null); - TSizeConstraint.setSize(sizeConstraints, option, 15, 3, -5, null); - TSizeConstraint.setSize(sizeConstraints, select, 15, 4, -5, null); + TSizeConstraint.setSize(sizeConstraints, selectBox, 15, 3, -5, null); + TSizeConstraint.setSize(sizeConstraints, selectTargetBox, 15, 4, -5, + null); } @Override @@ -294,6 +282,9 @@ class TuiReaderMainWindow extends TWindow { } list.setList(listItems); + if (listItems.size() > 0) { + list.setSelectedIndex(0); + } } public MetaData getSelectedMeta() { @@ -308,7 +299,7 @@ class TuiReaderMainWindow extends TWindow { try { reader.setChapter(-1); reader.setMeta(meta); - reader.read(); + reader.read(false); } catch (IOException e) { Instance.getTraceHandler().error(e); }