瀏覽代碼

Merge remote-tracking branch 'inorichi/master'

Yuri Revich 9 年之前
父節點
當前提交
c62fc05f8b

+ 15 - 0
app/src/main/java/eu/kanade/mangafeed/data/database/DatabaseHelper.java

@@ -226,6 +226,21 @@ public class DatabaseHelper {
                 .prepare();
     }
 
+    public PreparedGetListOfObjects<Chapter> getNextUnreadChapter(Manga manga) {
+        return db.get()
+                .listOfObjects(Chapter.class)
+                .withQuery(Query.builder()
+                        .table(ChapterTable.TABLE)
+                        .where(ChapterTable.COLUMN_MANGA_ID + "=? AND " +
+                                ChapterTable.COLUMN_READ + "=? AND " +
+                                ChapterTable.COLUMN_CHAPTER_NUMBER + ">=?")
+                        .whereArgs(manga.id, 0, 0)
+                        .orderBy(ChapterTable.COLUMN_CHAPTER_NUMBER)
+                        .limit(1)
+                        .build())
+                .prepare();
+    }
+
     public PreparedPutObject<Chapter> insertChapter(Chapter chapter) {
         return db.put()
                 .object(chapter)

+ 23 - 3
app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Kissmanga.java

@@ -36,6 +36,7 @@ public class Kissmanga extends Source {
     public static final String IP = "93.174.95.110";
     public static final String BASE_URL = "http://" + IP;
     public static final String POPULAR_MANGAS_URL = BASE_URL + "/MangaList/MostPopular?page=%s";
+    public static final String SEARCH_URL = BASE_URL + "/AdvanceSearch";
 
     public Kissmanga(Context context) {
         super(context);
@@ -75,7 +76,7 @@ public class Kissmanga extends Source {
 
     @Override
     protected String getInitialSearchUrl(String query) {
-        return null;
+        return SEARCH_URL;
     }
 
     @Override
@@ -111,12 +112,31 @@ public class Kissmanga extends Source {
         if (next == null)
             return null;
 
-        return String.format(POPULAR_MANGAS_URL, next.attr("href"));
+        return BASE_URL + next.attr("href");
+    }
+
+    public Observable<MangasPage> searchMangasFromNetwork(MangasPage page, String query) {
+        if (page.page == 1)
+            page.url = getInitialSearchUrl(query);
+
+        FormEncodingBuilder form = new FormEncodingBuilder();
+        form.add("authorArtist", "");
+        form.add("mangaName", query);
+        form.add("status", "");
+        form.add("genres", "");
+
+        return networkService
+                .postData(page.url, form.build(), requestHeaders)
+                .flatMap(networkService::mapResponseToString)
+                .map(Jsoup::parse)
+                .doOnNext(doc -> page.mangas = parseSearchFromHtml(doc))
+                .doOnNext(doc -> page.nextPageUrl = parseNextSearchUrl(doc, page, query))
+                .map(response -> page);
     }
 
     @Override
     protected List<Manga> parseSearchFromHtml(Document parsedHtml) {
-        return null;
+        return parsePopularMangasFromHtml(parsedHtml);
     }
 
     @Override

+ 2 - 3
app/src/main/res/layout/item_chapter.xml

@@ -55,7 +55,7 @@
         android:layout_height="wrap_content"
         android:layout_alignWithParentIfMissing="true"
         android:gravity="center_vertical"
-        android:textSize="18dp"
+        android:textSize="17sp"
         android:ellipsize="end"
         android:maxLines="1"
         tools:text="Title"
@@ -64,8 +64,7 @@
         android:layout_above="@+id/relativeLayout"
         android:layout_alignParentRight="true"
         android:layout_alignParentEnd="true"
-        android:layout_alignParentTop="true"
-        android:paddingRight="30dp"/>
+        android:layout_alignParentTop="true"/>
 
     <RelativeLayout
         android:id="@+id/chapter_menu"