GUI: search: step x + 1
[fanfix.git] / src / be / nikiroo / fanfix / reader / ui / GuiReader.java
index 6c3a35e5198827c603393f4c5c77d5bea9f3b6d9..0cace9cd992b2fe317642316255a7dfcbf174b36 100644 (file)
@@ -25,6 +25,8 @@ import be.nikiroo.fanfix.library.BasicLibrary;
 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;
@@ -219,21 +221,63 @@ class GuiReader extends BasicReader {
                }
        }
 
+       @Override
+       public void search(boolean sync) throws IOException {
+               GuiReaderSearch search = new GuiReaderSearch(this);
+               if (sync) {
+                       sync(search);
+               } else {
+                       search.setVisible(true);
+               }
+       }
+
        @Override
        public void search(SupportType searchOn, String keywords, int page,
                        int item, boolean sync) {
-               // TODO
+               GuiReaderSearch search = new GuiReaderSearch(this);
+               search.search(searchOn, keywords, page, item);
                if (sync) {
-                       throw new java.lang.IllegalStateException("Not implemented yet.");
+                       sync(search);
+               } else {
+                       search.setVisible(true);
                }
        }
 
        @Override
-       public void searchTag(SupportType searchOn, int page, int item,
-                       boolean sync, Integer... tags) {
-               // TODO
+       public void searchTag(final SupportType searchOn, final int page,
+                       final int item, final boolean sync, final Integer... tags) {
+
+               final GuiReaderSearch search = new GuiReaderSearch(GuiReader.this);
+               final BasicSearchable searchable = BasicSearchable
+                               .getSearchable(searchOn);
+
+               Runnable action = new Runnable() {
+                       @Override
+                       public void run() {
+                               SearchableTag tag = null;
+                               try {
+                                       tag = searchable.getTag(tags);
+                                       if (tag != null) {
+                                               searchable.fillTag(tag);
+                                       }
+                               } catch (IOException e) {
+                                       Instance.getTraceHandler().error(e);
+                               }
+
+                               search.searchTag(searchOn, page, item, tag);
+
+                               if (sync) {
+                                       sync(search);
+                               } else {
+                                       search.setVisible(true);
+                               }
+                       }
+               };
+
                if (sync) {
-                       throw new java.lang.IllegalStateException("Not implemented yet.");
+                       action.run();
+               } else {
+                       new Thread(action).start();
                }
        }