import jexer.TCommand;
import jexer.TKeypress;
import jexer.TMessageBox;
+import jexer.TMessageBox.Result;
+import jexer.TMessageBox.Type;
import jexer.TStatusBar;
import jexer.TWidget;
import jexer.TWindow;
import be.nikiroo.fanfix.reader.BasicReader;
import be.nikiroo.fanfix.reader.Reader;
import be.nikiroo.fanfix.reader.tui.TuiReaderMainWindow.Mode;
+import be.nikiroo.fanfix.supported.SupportType;
import be.nikiroo.utils.Progress;
/**
public static final int MENU_IMPORT_URL = 1026;
public static final int MENU_IMPORT_FILE = 1027;
public static final int MENU_EXPORT = 1028;
- public static final int MENU_LIBRARY = 1029;
- public static final int MENU_EXIT = 1030;
+ public static final int MENU_DELETE = 1029;
+ public static final int MENU_LIBRARY = 1030;
+ public static final int MENU_EXIT = 1031;
public static final TCommand CMD_EXIT = new TCommand(MENU_EXIT) {
};
super(backend);
init(reader);
- MetaData meta = getMeta();
- if (meta != null) {
- read();
+ if (getMeta() != null) {
+ read(false);
}
}
}
@Override
- public void read() throws IOException {
- read(getStory(null));
+ public void read(boolean sync) throws IOException {
+ read(getStory(null), sync);
}
@Override
public void setChapter(int chapter) {
reader.setChapter(chapter);
}
+
+ @Override
+ public void search(SupportType searchOn, String keywords, int page, int item) {
+ reader.search(searchOn, keywords, page,item);
+ }
+
+ @Override
+ public void searchTag(SupportType searchOn, int page, int item, String... tags) {
+ reader.searchTag(searchOn, page, item, tags);
+ }
- public void read(Story story) throws IOException {
+ /**
+ * Open the given {@link Story} for reading. This may or may not start an
+ * external program to read said {@link Story}.
+ *
+ * @param story
+ * the {@link Story} to read
+ * @param sync
+ * execute the process synchronously (wait until it is terminated
+ * before returning)
+ *
+ * @throws IOException
+ * in case of I/O errors
+ */
+ public void read(Story story, boolean sync) throws IOException {
if (story == null) {
throw new IOException("No story to read");
}
window.maximize();
} else {
try {
- openExternal(getLibrary(), story.getMeta().getLuid());
+ openExternal(getLibrary(), story.getMeta().getLuid(), sync);
} catch (IOException e) {
messageBox("Error when trying to open the story",
e.getMessage(), TMessageBox.Type.OK);
// Add the menus TODO: i18n
TMenu fileMenu = addMenu("&File");
- fileMenu.addItem(MENU_OPEN, "&Open");
+ fileMenu.addItem(MENU_OPEN, "&Open...");
fileMenu.addItem(MENU_EXPORT, "&Save as...");
+ fileMenu.addItem(MENU_DELETE, "&Delete...");
// TODO: Move to...
fileMenu.addSeparator();
fileMenu.addItem(MENU_IMPORT_URL, "Import &URL...");
try {
openfile = fileOpenBox(".");
reader.setMeta(BasicReader.getUrl(openfile), null);
- read();
+ read(false);
} catch (IOException e) {
// TODO: i18n
error("Fail to open file"
"Import error", e);
}
+ return true;
+ case MENU_DELETE:
+ String luid = null;
+ String story = null;
+ MetaData meta = null;
+ if (main != null) {
+ meta = main.getSelectedMeta();
+ }
+ if (meta != null) {
+ luid = meta.getLuid();
+ story = luid + ": " + meta.getTitle();
+ }
+
+ // TODO: i18n
+ TMessageBox mbox = messageBox("Delete story", "Delete story \""
+ + story + "\"", Type.OKCANCEL);
+ if (mbox.getResult() == Result.OK) {
+ try {
+ reader.getLibrary().delete(luid);
+ if (main != null) {
+ main.refreshStories();
+ }
+ } catch (IOException e) {
+ // TODO: i18n
+ error("Fail to delete the story: \"" + story + "\"",
+ "Error", e);
+ }
+ }
+
return true;
case MENU_IMPORT_URL:
String clipboard = "";
}
@Override
- public void openExternal(BasicLibrary lib, String luid) throws IOException {
- reader.openExternal(lib, luid);
+ public void openExternal(BasicLibrary lib, String luid, boolean sync)
+ throws IOException {
+ reader.openExternal(lib, luid, sync);
}
/**