From ec5e0c7b25e628e21010b49d6c00cc3c2f7b6ae1 Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 6 Jan 2023 09:55:09 +0800 Subject: [PATCH] Fuck you Jetbrains! --- .../ehviewer/client/data/GalleryDetail.kt | 13 ++- .../hippo/ehviewer/client/data/GalleryInfo.kt | 99 +++++-------------- .../ehviewer/client/data/GalleryInfoImpl.kt | 89 +++++++++++++++++ .../client/parser/GalleryDetailParser.java | 5 +- .../client/parser/GalleryListParser.java | 3 +- .../com/hippo/ehviewer/dao/BookmarkInfo.kt | 3 +- .../com/hippo/ehviewer/dao/DownloadInfo.kt | 3 +- .../com/hippo/ehviewer/dao/HistoryInfo.kt | 3 +- .../hippo/ehviewer/dao/LocalFavoriteInfo.kt | 3 +- .../ehviewer/download/DownloadManager.java | 3 +- .../preference/RestoreDownloadPreference.kt | 3 +- 11 files changed, 141 insertions(+), 86 deletions(-) create mode 100644 app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfoImpl.kt diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/GalleryDetail.kt b/app/src/main/java/com/hippo/ehviewer/client/data/GalleryDetail.kt index 5da4ce457..5b3ecc5cd 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/GalleryDetail.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/data/GalleryDetail.kt @@ -15,8 +15,13 @@ */ package com.hippo.ehviewer.client.data -// This is wrong Parcelize usage, TODO: use delegate and move galleryinfo to primary constructor +import kotlinx.parcelize.Parcelize + +// @Parcelize class GalleryDetail( + // @JvmField + // val galleryInfo: GalleryInfo, + @JvmField var apiUid: Long = -1L, @@ -67,4 +72,8 @@ class GalleryDetail( @JvmField var previewSet: PreviewSet? = null, -) : GalleryInfo() \ No newline at end of file +) : GalleryInfoImpl() +// ) : GalleryInfo by galleryInfo + +// Delegating 'Parcelable' is not allowed +// Fuck you Jetbrains! \ No newline at end of file diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfo.kt b/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfo.kt index b9f15cc06..410ab35d4 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfo.kt @@ -16,84 +16,34 @@ package com.hippo.ehviewer.client.data import android.os.Parcelable -import androidx.room.ColumnInfo -import androidx.room.Ignore -import androidx.room.PrimaryKey -import kotlinx.parcelize.Parcelize import java.util.regex.Pattern -@Parcelize -open class GalleryInfo( - @PrimaryKey - @ColumnInfo(name = "GID") - var gid: Long = 0, +interface GalleryInfo : Parcelable { + var gid: Long + var token: String? + var title: String? + var titleJpn: String? + var thumb: String? + var category: Int + var posted: String? + var uploader: String? + var disowned: Boolean + var rating: Float + var rated: Boolean + var simpleTags: Array? + var pages: Int + var thumbWidth: Int + var thumbHeight: Int + var spanSize: Int + var spanIndex: Int + var spanGroupIndex: Int + var simpleLanguage: String? + var favoriteSlot: Int + var favoriteName: String? - @ColumnInfo(name = "TOKEN") - var token: String? = null, - - @ColumnInfo(name = "TITLE") - var title: String? = null, - - @ColumnInfo(name = "TITLE_JPN") - var titleJpn: String? = null, - - @ColumnInfo(name = "THUMB") - var thumb: String? = null, - - @ColumnInfo(name = "CATEGORY") - var category: Int = 0, - - @ColumnInfo(name = "POSTED") - var posted: String? = null, - - @ColumnInfo(name = "UPLOADER") - var uploader: String? = null, - - @Ignore - var disowned: Boolean = false, - - @ColumnInfo(name = "RATING") - var rating: Float = 0f, - - @Ignore - var rated: Boolean = false, - - @Ignore - var simpleTags: Array? = null, - - @Ignore - var pages: Int = 0, - - @Ignore - var thumbWidth: Int = 0, - - @Ignore - var thumbHeight: Int = 0, - - @Ignore - var spanSize: Int = 0, - - @Ignore - var spanIndex: Int = 0, - - @Ignore - var spanGroupIndex: Int = 0, - - /** - * language from title - */ - @ColumnInfo(name = "SIMPLE_LANGUAGE") - var simpleLanguage: String? = null, - - @Ignore - var favoriteSlot: Int = -2, - - @Ignore - var favoriteName: String? = null - -) : Parcelable { fun generateSLang() { - simpleLanguage = simpleTags?.let { generateSLangFromTags(it) } ?: title?.let { generateSLangFromTitle(it) } + simpleLanguage = simpleTags?.let { generateSLangFromTags(it) } + ?: title?.let { generateSLangFromTitle(it) } } private fun generateSLangFromTags(simpleTags: Array): String? { @@ -136,7 +86,6 @@ open class GalleryInfo( const val S_LANG_TH = "TH" const val S_LANG_VI = "VI" - @JvmField val S_LANGS = arrayOf( S_LANG_EN, S_LANG_ZH, diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfoImpl.kt b/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfoImpl.kt new file mode 100644 index 000000000..d0690eca3 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/client/data/GalleryInfoImpl.kt @@ -0,0 +1,89 @@ +/* + * Copyright 2016 Hippo Seven + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.hippo.ehviewer.client.data + +import androidx.room.ColumnInfo +import androidx.room.Ignore +import androidx.room.PrimaryKey +import kotlinx.parcelize.Parcelize + +@Parcelize +open class GalleryInfoImpl( + @PrimaryKey + @ColumnInfo(name = "GID") + override var gid: Long = 0, + + @ColumnInfo(name = "TOKEN") + override var token: String? = null, + + @ColumnInfo(name = "TITLE") + override var title: String? = null, + + @ColumnInfo(name = "TITLE_JPN") + override var titleJpn: String? = null, + + @ColumnInfo(name = "THUMB") + override var thumb: String? = null, + + @ColumnInfo(name = "CATEGORY") + override var category: Int = 0, + + @ColumnInfo(name = "POSTED") + override var posted: String? = null, + + @ColumnInfo(name = "UPLOADER") + override var uploader: String? = null, + + @Ignore + override var disowned: Boolean = false, + + @ColumnInfo(name = "RATING") + override var rating: Float = 0f, + + @Ignore + override var rated: Boolean = false, + + @Ignore + override var simpleTags: Array? = null, + + @Ignore + override var pages: Int = 0, + + @Ignore + override var thumbWidth: Int = 0, + + @Ignore + override var thumbHeight: Int = 0, + + @Ignore + override var spanSize: Int = 0, + + @Ignore + override var spanIndex: Int = 0, + + @Ignore + override var spanGroupIndex: Int = 0, + + @ColumnInfo(name = "SIMPLE_LANGUAGE") + override var simpleLanguage: String? = null, + + @Ignore + override var favoriteSlot: Int = -2, + + @Ignore + override var favoriteName: String? = null + +) : GalleryInfo \ No newline at end of file diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java index 6295b5eb7..cabb416c8 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java @@ -26,6 +26,7 @@ import com.hippo.ehviewer.client.data.GalleryComment; import com.hippo.ehviewer.client.data.GalleryCommentList; import com.hippo.ehviewer.client.data.GalleryDetail; import com.hippo.ehviewer.client.data.GalleryInfo; +import com.hippo.ehviewer.client.data.GalleryInfoImpl; import com.hippo.ehviewer.client.data.GalleryTagGroup; import com.hippo.ehviewer.client.data.LargePreviewSet; import com.hippo.ehviewer.client.data.NormalPreviewSet; @@ -124,7 +125,7 @@ public class GalleryDetailParser { // Generate simpleLanguage for local favorites for (int i = 0; i < LANGUAGES.length; i++) { if (galleryDetail.language.equals(LANGUAGES[i])) { - galleryDetail.setSimpleLanguage(GalleryInfo.S_LANGS[i]); + galleryDetail.setSimpleLanguage(GalleryInfo.Companion.getS_LANGS()[i]); break; } } @@ -289,7 +290,7 @@ public class GalleryDetailParser { Elements elements = gnd.select("a"); for (int i = 0; i < elements.size(); i++) { Element element = elements.get(i); - GalleryInfo gi = new GalleryInfo(); + GalleryInfo gi = new GalleryInfoImpl(); GalleryDetailUrlParser.Result result = GalleryDetailUrlParser.parse(element.attr("href")); if (result != null) { gi.setGid(result.gid); diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java index 06dec932a..b69d53aab 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java @@ -24,6 +24,7 @@ import androidx.annotation.NonNull; import com.hippo.ehviewer.EhDB; import com.hippo.ehviewer.client.EhUtils; import com.hippo.ehviewer.client.data.GalleryInfo; +import com.hippo.ehviewer.client.data.GalleryInfoImpl; import com.hippo.ehviewer.client.exception.ParseException; import com.hippo.util.ExceptionUtils; import com.hippo.util.JsoupUtils; @@ -110,7 +111,7 @@ public class GalleryListParser { } private static GalleryInfo parseGalleryInfo(Element e) { - GalleryInfo gi = new GalleryInfo(); + GalleryInfo gi = new GalleryInfoImpl(); // Title, gid, token (required), tags Element glname = JsoupUtils.getElementByClass(e, "glname"); diff --git a/app/src/main/java/com/hippo/ehviewer/dao/BookmarkInfo.kt b/app/src/main/java/com/hippo/ehviewer/dao/BookmarkInfo.kt index 9389190d0..9258fa0b4 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/BookmarkInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/BookmarkInfo.kt @@ -3,9 +3,10 @@ package com.hippo.ehviewer.dao import androidx.room.ColumnInfo import androidx.room.Entity import com.hippo.ehviewer.client.data.GalleryInfo +import com.hippo.ehviewer.client.data.GalleryInfoImpl @Entity(tableName = "BOOKMARKS") -class BookmarkInfo : GalleryInfo() { +class BookmarkInfo : GalleryInfoImpl() { @JvmField @ColumnInfo(name = "PAGE") var page = 0 diff --git a/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt b/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt index ff361df9a..7eb7a887a 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt @@ -4,9 +4,10 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Ignore import com.hippo.ehviewer.client.data.GalleryInfo +import com.hippo.ehviewer.client.data.GalleryInfoImpl @Entity(tableName = "DOWNLOADS") -class DownloadInfo() : GalleryInfo() { +class DownloadInfo() : GalleryInfoImpl() { @JvmField @ColumnInfo(name = "STATE") var state = 0 diff --git a/app/src/main/java/com/hippo/ehviewer/dao/HistoryInfo.kt b/app/src/main/java/com/hippo/ehviewer/dao/HistoryInfo.kt index 11a223ace..7b43e212a 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/HistoryInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/HistoryInfo.kt @@ -3,9 +3,10 @@ package com.hippo.ehviewer.dao import androidx.room.ColumnInfo import androidx.room.Entity import com.hippo.ehviewer.client.data.GalleryInfo +import com.hippo.ehviewer.client.data.GalleryInfoImpl @Entity(tableName = "HISTORY") -class HistoryInfo() : GalleryInfo() { +class HistoryInfo() : GalleryInfoImpl() { @JvmField @ColumnInfo(name = "TIME") var time: Long = 0 diff --git a/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoriteInfo.kt b/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoriteInfo.kt index 8f76077af..ebf4c61c4 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoriteInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoriteInfo.kt @@ -3,9 +3,10 @@ package com.hippo.ehviewer.dao import androidx.room.ColumnInfo import androidx.room.Entity import com.hippo.ehviewer.client.data.GalleryInfo +import com.hippo.ehviewer.client.data.GalleryInfoImpl @Entity(tableName = "LOCAL_FAVORITES") -class LocalFavoriteInfo() : GalleryInfo() { +class LocalFavoriteInfo() : GalleryInfoImpl() { @JvmField @ColumnInfo(name = "TIME") var time: Long = 0 diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java index 2225728cd..b734792d3 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java @@ -25,6 +25,7 @@ import androidx.annotation.Nullable; import com.hippo.ehviewer.EhDB; import com.hippo.ehviewer.client.data.GalleryInfo; +import com.hippo.ehviewer.client.data.GalleryInfoImpl; import com.hippo.ehviewer.dao.DownloadInfo; import com.hippo.ehviewer.dao.DownloadLabel; import com.hippo.ehviewer.spider.SpiderDen; @@ -577,7 +578,7 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { new AsyncTask() { @Override protected Void doInBackground(Void... voids) { - GalleryInfo galleryInfo = new GalleryInfo(); + GalleryInfo galleryInfo = new GalleryInfoImpl(); for (DownloadInfo downloadInfo : list) { galleryInfo.setGid(downloadInfo.getGid()); galleryInfo.setToken(downloadInfo.getToken()); diff --git a/app/src/main/java/com/hippo/ehviewer/preference/RestoreDownloadPreference.kt b/app/src/main/java/com/hippo/ehviewer/preference/RestoreDownloadPreference.kt index 62698a1f5..f5b1bea94 100644 --- a/app/src/main/java/com/hippo/ehviewer/preference/RestoreDownloadPreference.kt +++ b/app/src/main/java/com/hippo/ehviewer/preference/RestoreDownloadPreference.kt @@ -27,6 +27,7 @@ import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhEngine.fillGalleryListByApi import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.data.GalleryInfo +import com.hippo.ehviewer.client.data.GalleryInfoImpl import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.spider.SpiderInfo import com.hippo.ehviewer.spider.SpiderQueen @@ -163,7 +164,7 @@ class RestoreDownloadPreference constructor( } } - private class RestoreItem : GalleryInfo() { + private class RestoreItem : GalleryInfoImpl() { var dirname: String? = null } } \ No newline at end of file