import jexer.TStatusBar;
import jexer.TWidget;
import jexer.TWindow;
+import jexer.event.TCommandEvent;
import jexer.event.TMenuEvent;
import jexer.menu.TMenu;
import be.nikiroo.fanfix.Instance;
import be.nikiroo.fanfix.library.BasicLibrary;
import be.nikiroo.fanfix.reader.BasicReader;
import be.nikiroo.fanfix.reader.Reader;
+import be.nikiroo.fanfix.reader.tui.TuiReaderMainWindow.Mode;
import be.nikiroo.utils.Progress;
/**
private Reader reader;
private TuiReaderMainWindow main;
- private MetaData meta;
- private String source;
- private boolean useMeta;
-
// start reading if meta present
public TuiReaderApplication(Reader reader, BackendType backend)
throws Exception {
super(backend);
init(reader);
- showMain(getMeta(), null, true);
+ MetaData meta = getMeta();
+ if (meta != null) {
+ read();
+ }
}
public TuiReaderApplication(Reader reader, String source,
super(backend);
init(reader);
- showMain(null, source, false);
+ showMain();
+ main.setMode(Mode.SOURCE, source);
}
@Override
public void read() throws IOException {
- MetaData meta = getMeta();
-
- if (meta == null) {
- throw new IOException("No story to read");
- }
-
- // TODO: open in editor + external option
- if (!meta.isImageDocument()) {
- TWindow window = new TuiReaderStoryWindow(this, getLibrary(), meta,
- getChapter());
- window.maximize();
- } else {
- try {
- openExternal(getLibrary(), meta.getLuid());
- } catch (IOException e) {
- messageBox("Error when trying to open the story",
- e.getMessage(), TMessageBox.Type.OK);
- }
- }
+ read(getStory(null));
}
@Override
reader.setChapter(chapter);
}
+ public void read(Story story) throws IOException {
+ if (story == null) {
+ throw new IOException("No story to read");
+ }
+
+ // TODO: open in editor + external option
+ if (!story.getMeta().isImageDocument()) {
+ TWindow window = new TuiReaderStoryWindow(this, story, getChapter());
+ window.maximize();
+ } else {
+ try {
+ openExternal(getLibrary(), story.getMeta().getLuid());
+ } catch (IOException e) {
+ messageBox("Error when trying to open the story",
+ e.getMessage(), TMessageBox.Type.OK);
+ }
+ }
+ }
+
/**
* Set the default status bar when this window appear.
* <p>
}
- private void showMain(MetaData meta, String source, boolean useMeta)
- throws IOException {
- // TODO: thread-safety
- this.meta = meta;
- this.source = source;
- this.useMeta = useMeta;
-
+ private void showMain() {
if (main != null && main.isVisible()) {
main.activate();
} else {
main.close();
}
main = new TuiReaderMainWindow(this);
- if (useMeta) {
- main.setMeta(meta);
- if (meta != null) {
- read();
- }
- } else {
- main.setSource(source);
- }
main.maximize();
}
}
getBackend().setTitle("Fanfix");
}
+ @Override
+ protected boolean onCommand(TCommandEvent command) {
+ if (command.getCmd().equals(TuiReaderMainWindow.CMD_SEARCH)) {
+ messageBox("title", "caption");
+ return true;
+ }
+ return super.onCommand(command);
+ }
+
@Override
protected boolean onMenu(TMenuEvent menu) {
// TODO: i18n
switch (menu.getId()) {
case MENU_EXIT:
close(this);
+ return true;
+ case MENU_OPEN:
+ String openfile = null;
+ try {
+ openfile = fileOpenBox(".");
+ reader.setMeta(BasicReader.getUrl(openfile), null);
+ read();
+ } catch (IOException e) {
+ // TODO: i18n
+ error("Fail to open file"
+ + (openfile == null ? "" : ": " + openfile),
+ "Import error", e);
+ }
+
return true;
case MENU_IMPORT_URL:
String clipboard = "";
try {
if (!imprt(url)) {
- // TODO: i18n + error
+ // TODO: i18n
error("URK not supported: " + url, "Import error");
}
} catch (IOException e) {
- // TODO: i18n + error
+ // TODO: i18n
error("Fail to import URL: " + url, "Import error", e);
}
try {
filename = fileOpenBox(".");
if (!imprt(filename)) {
- // TODO: i18n + error
+ // TODO: i18n
error("File not supported: " + filename, "Import error");
}
} catch (IOException e) {
- // TODO: i18n + error
+ // TODO: i18n
error("Fail to import file"
+ (filename == null ? "" : ": " + filename),
"Import error", e);
}
return true;
case MENU_LIBRARY:
- try {
- showMain(meta, source, useMeta);
- } catch (IOException e) {
- // i18n
- error("Cannot show the library", "ERROR", e);
- }
-
+ showMain();
return true;
}