X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Ftui%2FTuiReaderApplication.java;h=177c12ab867094cbd61292d88314662a569b0ecc;hb=91b82a5cbd8a9c90798d1bd49bfa9a061e652a6a;hp=52bc531ad803202904f9e78076d5da5df837b7c2;hpb=d5a3b60634af7e3cbd0b698e6369072751ee1518;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java index 52bc531..177c12a 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java +++ b/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java @@ -10,6 +10,8 @@ import jexer.TApplication; 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; @@ -23,6 +25,7 @@ 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.fanfix.supported.SupportType; import be.nikiroo.utils.Progress; /** @@ -38,8 +41,9 @@ class TuiReaderApplication extends TApplication implements Reader { 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) { }; @@ -53,9 +57,8 @@ class TuiReaderApplication extends TApplication implements Reader { super(backend); init(reader); - MetaData meta = getMeta(); - if (meta != null) { - read(); + if (getMeta() != null) { + read(false); } } @@ -69,8 +72,8 @@ class TuiReaderApplication extends TApplication implements Reader { } @Override - public void read() throws IOException { - read(getStory(null)); + public void read(boolean sync) throws IOException { + read(getStory(null), sync); } @Override @@ -122,8 +125,31 @@ class TuiReaderApplication extends TApplication implements Reader { 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"); } @@ -134,7 +160,7 @@ class TuiReaderApplication extends TApplication implements Reader { 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); @@ -182,8 +208,9 @@ class TuiReaderApplication extends TApplication implements Reader { // 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..."); @@ -226,7 +253,7 @@ class TuiReaderApplication extends TApplication implements Reader { try { openfile = fileOpenBox("."); reader.setMeta(BasicReader.getUrl(openfile), null); - read(); + read(false); } catch (IOException e) { // TODO: i18n error("Fail to open file" @@ -234,6 +261,35 @@ class TuiReaderApplication extends TApplication implements Reader { "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 = ""; @@ -309,8 +365,9 @@ class TuiReaderApplication extends TApplication implements Reader { } @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); } /**