import be.nikiroo.fanfix.library.CacheLibrary;
import be.nikiroo.fanfix.reader.BasicReader;
import be.nikiroo.fanfix.reader.Reader;
+import be.nikiroo.fanfix.searchable.BasicSearchable;
+import be.nikiroo.fanfix.searchable.SearchableTag;
import be.nikiroo.fanfix.supported.SupportType;
import be.nikiroo.utils.Progress;
import be.nikiroo.utils.Version;
nativeLookLoaded = true;
}
- cacheDir = Instance.getReaderDir();
+ cacheDir = Instance.getInstance().getReaderDir();
cacheDir.mkdirs();
if (!cacheDir.exists()) {
throw new IOException(
if (lib instanceof CacheLibrary) {
cacheLib = (CacheLibrary) lib;
} else {
- cacheLib = new CacheLibrary(cacheDir, lib);
+ cacheLib = new CacheLibrary(cacheDir, lib, Instance.getInstance().getUiConfig());
}
}
try {
Desktop.getDesktop().browse(e.getURL().toURI());
} catch (IOException ee) {
- Instance.getTraceHandler().error(ee);
+ Instance.getInstance().getTraceHandler().error(ee);
} catch (URISyntaxException ee) {
- Instance.getTraceHandler().error(ee);
+ Instance.getInstance().getTraceHandler().error(ee);
}
}
});
GuiReader.this, typeFinal);
sync(gui);
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
} finally {
done[0] = true;
}
super.start(target, program, sync);
}
}
-
+
@Override
- public void search(SupportType searchOn, String keywords, int page, int item) {
- // TODO: !!!
- throw new java.lang.IllegalStateException("Not implemented yet.");
+ public void search(boolean sync) throws IOException {
+ GuiReaderSearchFrame search = new GuiReaderSearchFrame(this);
+ if (sync) {
+ sync(search);
+ } else {
+ search.setVisible(true);
+ }
}
-
+
+ @Override
+ public void search(SupportType searchOn, String keywords, int page,
+ int item, boolean sync) {
+ GuiReaderSearchFrame search = new GuiReaderSearchFrame(this);
+ search.search(searchOn, keywords, page, item);
+ if (sync) {
+ sync(search);
+ } else {
+ search.setVisible(true);
+ }
+ }
+
@Override
- public void searchTag(SupportType searchOn, int page, int item, String... tags) {
- // TODO: !!!
- throw new java.lang.IllegalStateException("Not implemented yet.");
+ public void searchTag(final SupportType searchOn, final int page,
+ final int item, final boolean sync, final Integer... tags) {
+
+ final GuiReaderSearchFrame search = new GuiReaderSearchFrame(this);
+
+ final BasicSearchable searchable = BasicSearchable
+ .getSearchable(searchOn);
+
+ Runnable action = new Runnable() {
+ @Override
+ public void run() {
+ SearchableTag tag = null;
+ try {
+ tag = searchable.getTag(tags);
+ } catch (IOException e) {
+ Instance.getInstance().getTraceHandler().error(e);
+ }
+
+ search.searchTag(searchOn, page, item, tag);
+
+ if (sync) {
+ sync(search);
+ } else {
+ search.setVisible(true);
+ }
+ }
+ };
+
+ if (sync) {
+ action.run();
+ } else {
+ new Thread(action).start();
+ }
}
/**
try {
cacheLib.clearFromCache(luid);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
cacheLib.delete(luid);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
/**
* "Open" the given {@link Story}. It usually involves starting an external
* program adapted to the given file type.
- * <p>
- * Asynchronous method.
*
* @param luid
* the luid of the {@link Story} to open
void read(String luid, boolean sync, Progress pg) throws IOException {
MetaData meta = cacheLib.getInfo(luid);
- boolean textInternal = Instance.getUiConfig().getBoolean(
- UiConfig.NON_IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
- boolean imageInternal = Instance.getUiConfig().getBoolean(
- UiConfig.IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
+ boolean textInternal = Instance.getInstance().getUiConfig()
+ .getBoolean(UiConfig.NON_IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
+ boolean imageInternal = Instance.getInstance().getUiConfig()
+ .getBoolean(UiConfig.IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
boolean useInternalViewer = true;
if (meta.isImageDocument() && !imageInternal) {
}
}
+
+ /**
+ * "Prefetch" the given {@link Story}.
+ * <p>
+ * Synchronous method.
+ *
+ * @param luid
+ * the luid of the {@link Story} to prefetch
+ * @param pg
+ * the optional progress (we may need to prepare the
+ * {@link Story} for reading
+ *
+ * @throws IOException
+ * in case of I/O errors
+ */
+ void prefetch(String luid, Progress pg) throws IOException {
+ cacheLib.getFile(luid, pg);
+ }
/**
* Change the source of the given {@link Story} (the source is the main
* information used to group the stories together).
try {
cacheLib.changeSource(luid, newSource, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
cacheLib.changeTitle(luid, newTitle, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
cacheLib.changeAuthor(luid, newAuthor, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
* @return the translated result
*/
static String trans(StringIdGui id, Object... params) {
- return Instance.getTransGui().getString(id, params);
+ return Instance.getInstance().getTransGui().getString(id, params);
}
/**
EventQueue.invokeLater(run);
}
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
done[0] = true;
}