GUI search, step 3
[fanfix.git] / src / be / nikiroo / fanfix / reader / ui / GuiReader.java
index 62de6ceebde36142656697ac5bdb7bc720927f25..7d9ee81fd7ffd2eae35167c89e310410f342aba6 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;
@@ -221,17 +223,19 @@ class GuiReader extends BasicReader {
 
        @Override
        public void search(boolean sync) throws IOException {
-               // TODO
+               GuiReaderSearch search = new GuiReaderSearch(this);
                if (sync) {
-                       throw new java.lang.IllegalStateException("Not implemented yet.");
+                       sync(search);
+               } else {
+                       search.setVisible(true);
                }
        }
 
        @Override
        public void search(SupportType searchOn, String keywords, int page,
                        int item, boolean sync) {
-               // TODO: add parameters!
                GuiReaderSearch search = new GuiReaderSearch(this);
+               search.search(searchOn, keywords, page, item);
                if (sync) {
                        sync(search);
                } else {
@@ -240,11 +244,37 @@ class GuiReader extends BasicReader {
        }
 
        @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);
+                               } 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();
                }
        }