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)
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();
+ setSource(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();
}
}
+ private void setSource(String source) {
+ this.source = source;
+ showMain();
+ main.setSource(source);
+ }
+
private void init(Reader reader) {
this.reader = reader;
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();
+ setSource(source);
return true;
}
import be.nikiroo.fanfix.data.Paragraph;
import be.nikiroo.fanfix.data.Paragraph.ParagraphType;
import be.nikiroo.fanfix.data.Story;
-import be.nikiroo.fanfix.library.BasicLibrary;
import be.nikiroo.utils.StringUtils;
/**
* @author niki
*/
class TuiReaderStoryWindow extends TWindow {
- private BasicLibrary lib;
- private MetaData meta;
private Story story;
private TLabel titleField;
private TText textField;
private TLabel currentChapter;
// chapter: -1 for "none" (0 is desc)
- public TuiReaderStoryWindow(TuiReaderApplication app, BasicLibrary lib,
- MetaData meta, int chapter) {
- super(app, desc(meta), 0, 0, 60, 18, CENTERED | RESIZABLE);
+ public TuiReaderStoryWindow(TuiReaderApplication app, Story story,
+ int chapter) {
+ super(app, desc(story.getMeta()), 0, 0, 60, 18, CENTERED | RESIZABLE);
- this.lib = lib;
- this.meta = meta;
+ this.story = story;
- app.setStatusBar(this, desc(meta));
+ app.setStatusBar(this, desc(story.getMeta()));
// last = use window background
titleField = new TLabel(this, " Title", 0, 1, "tlabel", false);
}
private Story getStory() {
- if (story == null) {
- // TODO: progress bar?
- story = lib.getStory(meta.getLuid(), null);
- }
return story;
}