From 663f853e8109a217787271867e3943114b81d0b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 17 Oct 2022 22:49:43 +0800 Subject: [PATCH] =?UTF-8?q?2.0.beta13=201.=20=E8=A7=A3=E5=86=B3=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E9=97=AA=E9=80=80=202.=20=E5=A2=9E=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=203.=20=E5=8D=87=E7=BA=A7ABI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 4 ++ app/build.gradle | 23 +++++------ .../general/MangaPagesFragmentTemplate.kt | 1 - .../copymanga/template/ui/InfoCardLoader.kt | 4 +- .../top/fumiama/copymanga/tools/api/CMApi.kt | 4 +- .../copymanga/tools/http/DownloadPool.kt | 6 +-- .../copymanga/tools/http/DownloadTools.kt | 3 +- .../fumiama/copymanga/ui/book/BookHandler.kt | 2 + .../ui/cardflow/sort/SortFragment.kt | 5 +++ .../ui/cardflow/topic/TopicFragment.kt | 2 + .../copymanga/ui/settings/SettingsFragment.kt | 19 +++++++-- .../top/fumiama/copymanga/ui/vm/VMHandler.kt | 3 -- .../copymanga/ui/vm/ViewMangaActivity.kt | 7 +--- .../fumiama/copymanga/views/ScaleImageView.kt | 2 +- app/src/main/res/layout/fragment_settings.xml | 4 +- app/src/main/res/values/strings.xml | 12 ++++++ app/src/main/res/xml/pref_setting.xml | 40 +++++++++++++++++++ build.gradle | 2 +- 18 files changed, 108 insertions(+), 35 deletions(-) create mode 100644 app/src/main/res/xml/pref_setting.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 6957712..90b07e1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -10,6 +10,7 @@ + @@ -18,6 +19,7 @@ + @@ -28,7 +30,9 @@ + + diff --git a/app/build.gradle b/app/build.gradle index b18a0e6..787153d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,12 +3,12 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId 'top.fumiama.copymanga' minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 24 versionName '2.0.beta12' resConfigs "zh", "zh-rCN" @@ -53,18 +53,17 @@ android { dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'androidx.core:core-ktx:1.9.0' + implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.android.material:material:1.5.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' - implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1' - implementation 'androidx.navigation:navigation-ui-ktx:2.4.1' - implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1' - implementation 'androidx.navigation:navigation-ui-ktx:2.4.1' + implementation 'com.google.android.material:material:1.6.1' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.navigation:navigation-fragment-ktx:2.5.2' + implementation 'androidx.navigation:navigation-ui-ktx:2.5.2' + implementation 'androidx.navigation:navigation-fragment-ktx:2.5.2' + implementation 'androidx.navigation:navigation-ui-ktx:2.5.2' testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation "androidx.preference:preference-ktx:1.2.0" implementation 'com.afollestad.material-dialogs:input:3.3.0' implementation 'com.github.yalantis:ucrop:2.2.6' implementation 'com.to.aboomy:pager2banner:1.0.1' diff --git a/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt b/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt index 2b8969e..594d65c 100644 --- a/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt +++ b/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt @@ -28,7 +28,6 @@ open class MangaPagesFragmentTemplate(inflateRes:Int, val isLazy: Boolean = true var isRefresh = false @SuppressLint("ClickableViewAccessibility") - @ExperimentalStdlibApi override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt b/app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt index 98aa74f..71b4e51 100644 --- a/app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt +++ b/app/src/main/java/top/fumiama/copymanga/template/ui/InfoCardLoader.kt @@ -16,7 +16,7 @@ import java.lang.ref.WeakReference open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isTypeBook: Boolean = false): MangaPagesFragmentTemplate(inflateRes) { var offset = 0 private val subUrl get() = getApiUrl() - private var ad: AutoDownloadThread? = null + var ad: AutoDownloadThread? = null init { pageHandler = object : PageHandler { override fun addPage(){ @@ -32,6 +32,7 @@ open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isT if(results.offset < results.total) { if(code == 200) { results.list.forEach { book -> + if(ad?.exit == true) return@AutoDownloadThread cardList.addCard(book.comic.name, null, book.comic.cover, book.comic.path_word, null, null, false) } offset += results.list.size @@ -46,6 +47,7 @@ open class InfoCardLoader(inflateRes:Int, private val navId:Int, private val isT if(results.offset < results.total) { if(code == 200) { results.list.forEach{ book -> + if(ad?.exit == true) return@AutoDownloadThread cardList.addCard(book.name, null, book.cover, book.path_word, null, null, false) } offset += results.list.size diff --git a/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt index dcfe8a4..338d266 100644 --- a/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt +++ b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt @@ -3,7 +3,7 @@ package top.fumiama.copymanga.tools.api import com.bumptech.glide.load.model.LazyHeaders import top.fumiama.dmzj.copymanga.R import top.fumiama.copymanga.MainActivity -import top.fumiama.copymanga.json.Chapter2Return +import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref import java.io.File object CMApi { @@ -15,7 +15,7 @@ object CMApi { .addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!) .addHeader("source", "copyApp") .addHeader("webp", "1") - .addHeader("region", "1") + .addHeader("region", if(settingsPref?.getBoolean("", false) == false) "1" else "0") .addHeader("platform", "3") .build() return field diff --git a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadPool.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadPool.kt index 1644368..d33f804 100644 --- a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadPool.kt +++ b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadPool.kt @@ -29,13 +29,13 @@ class DownloadPool(folder: String) { } operator fun plusAssign(quest: Quest) { - packZipFile(quest.fileName, quest.imgUrl, quest.refer?:"") + packZipFile(quest.fileName, quest.imgUrl, quest.refer) } operator fun plusAssign(quests: Array) { Thread{ quests.forEach { quest -> - packZipFile(quest.fileName, quest.imgUrl, quest.refer?:"") + packZipFile(quest.fileName, quest.imgUrl, quest.refer) sleep(1000) } }.start() @@ -49,7 +49,7 @@ class DownloadPool(folder: String) { mOnPageDownloadListener = onPageDownloadListener } - private fun packZipFile(fileName: String, imgUrls: Array, refer: String) { + private fun packZipFile(fileName: String, imgUrls: Array, refer: String?) { Thread{ File(saveFolder, fileName).let { f -> f.parentFile?.let { if(!it.exists()) it.mkdirs() } diff --git a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt index 4b91fe2..74cae1d 100644 --- a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt +++ b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt @@ -3,6 +3,7 @@ package top.fumiama.copymanga.tools.http import android.util.Log import top.fumiama.copymanga.tools.ssl.AllTrustManager import top.fumiama.copymanga.tools.ssl.IgnoreHostNameVerifier +import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref import java.io.File import java.net.HttpURLConnection import java.net.URL @@ -44,7 +45,7 @@ object DownloadTools { refer?.let { setRequestProperty("referer", it) } setRequestProperty("source", "copyApp") setRequestProperty("webp", "1") - setRequestProperty("region", "0") + setRequestProperty("region", if(settingsPref?.getBoolean("", false) == false) "1" else "0") setRequestProperty("authorization", "Token") setRequestProperty("platform", "3") ua?.let { setRequestProperty("User-agent", it) } diff --git a/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt index a1beaa0..f731815 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt @@ -232,9 +232,11 @@ class BookHandler(that: WeakReference, private val path: String) that?.apply { book?.results?.apply { mainWeakReference?.get()?.runOnUiThread{ + if(exit) return@runOnUiThread ViewMangaActivity.fileArray = arrayOf() ViewMangaActivity.urlArray = arrayOf() vols?.forEachIndexed { iv, v -> + if(exit) return@runOnUiThread fbl.addView(layoutInflater.inflate(R.layout.div_h, fbl, false)) val t = layoutInflater.inflate(R.layout.line_caption, fbl, false) t.tcptn.text = keys[iv] diff --git a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/sort/SortFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/sort/SortFragment.kt index f2805f2..95f1068 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/sort/SortFragment.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/sort/SortFragment.kt @@ -36,8 +36,10 @@ class SortFragment : InfoCardLoader(R.layout.fragment_sort, R.id.action_nav_sort setUpdate() setHot() AutoDownloadThread(getString(R.string.filterApiUrl)) { + if(ad?.exit == true) return@AutoDownloadThread it?.let { filter = Gson().fromJson(it.inputStream().reader(), FilterStructure::class.java) + if(ad?.exit == true) return@AutoDownloadThread mainWeakReference?.get()?.runOnUiThread{ setClasses() } @@ -53,6 +55,7 @@ class SortFragment : InfoCardLoader(R.layout.fragment_sort, R.id.action_nav_sort } private fun setUpdate(){ + if(ad?.exit == true) return line_sort_time.apt.setText(R.string.menu_update_time) line_sort_time.setOnClickListener { sortValue = if(it.apim.rotation == 0f) { @@ -71,6 +74,7 @@ class SortFragment : InfoCardLoader(R.layout.fragment_sort, R.id.action_nav_sort private fun setClasses(){ filter?.results?.theme?.let { items -> + if(ad?.exit == true) return@let line_sort_class.apt.text = "全部" line_sort_class.setOnClickListener { val popupMenu = popupMenu { @@ -108,6 +112,7 @@ class SortFragment : InfoCardLoader(R.layout.fragment_sort, R.id.action_nav_sort } private fun setHot() { + if(ad?.exit == true) return line_sort_hot.apt.setText(R.string.menu_hot) line_sort_hot.setOnClickListener { sortValue = if (it.apim.rotation == 0f) { diff --git a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/topic/TopicFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/topic/TopicFragment.kt index 04ba8ff..8def3a1 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/cardflow/topic/TopicFragment.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/cardflow/topic/TopicFragment.kt @@ -25,10 +25,12 @@ class TopicFragment : InfoCardLoader(R.layout.fragment_topic, R.id.action_nav_to AutoDownloadThread(getString(R.string.topicApiUrl).let { String.format(it, arguments?.getString("path")) }) { + if(ad?.exit == true) return@AutoDownloadThread it?.apply { val r = inputStream().reader() val topic = Gson().fromJson(r, TopicStructure::class.java) topic?.apply { + if(ad?.exit == true) return@AutoDownloadThread mainWeakReference?.get()?.let { it.runOnUiThread { it.toolbar.title = results.title diff --git a/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt index d986ec0..9c3de13 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt @@ -1,7 +1,20 @@ package top.fumiama.copymanga.ui.settings +import android.content.SharedPreferences +import android.os.Bundle +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.PreferenceManager +import androidx.preference.SeekBarPreference import top.fumiama.dmzj.copymanga.R -import top.fumiama.copymanga.template.general.NoBackRefreshFragment -class SettingsFragment: NoBackRefreshFragment(R.layout.fragment_settings) { -} \ No newline at end of file +class SettingsFragment: PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.pref_setting, rootKey) + settingsPref = context?.let { PreferenceManager.getDefaultSharedPreferences(it) } + } + + companion object { + var settingsPref: SharedPreferences? = null + } +} diff --git a/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt index a4c6f6d..f6f7377 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt @@ -120,14 +120,12 @@ class VMHandler(activity: ViewMangaActivity, url: String) : AutoDownloadHandler( wv.get()?.toolsBox?.toastError("下载章节信息失败") } - @ExperimentalStdlibApi override fun doWhenFinishDownload() { super.doWhenFinishDownload() if(exit) return prepareManga() } - @ExperimentalStdlibApi fun loadFromFile(file: File): Boolean { return try { val jsonFile = File(file.parentFile, "${file.nameWithoutExtension}.json") @@ -157,7 +155,6 @@ class VMHandler(activity: ViewMangaActivity, url: String) : AutoDownloadHandler( } } - @ExperimentalStdlibApi private fun prepareManga(){ if(comicName == null) { comicName = manga?.results?.comic?.name diff --git a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt index d94b4fd..29856a6 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt @@ -87,7 +87,6 @@ class ViewMangaActivity : TitleActivityTemplate() { private var pm: PagesManager? = null val realCount get() = if(cut) indexMap.size else count - @ExperimentalStdlibApi @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { setContentView(R.layout.activity_viewmanga) @@ -131,7 +130,7 @@ class ViewMangaActivity : TitleActivityTemplate() { } } - @ExperimentalStdlibApi + @OptIn(ExperimentalStdlibApi::class) override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { var flag = false if(volTurnPage) when(keyCode) { @@ -220,7 +219,7 @@ class ViewMangaActivity : TitleActivityTemplate() { } } - @ExperimentalStdlibApi + @OptIn(ExperimentalStdlibApi::class) fun initManga(){ handler.manga?.results?.chapter?.uuid?.let { pn = getPreferences(MODE_PRIVATE).getInt(it, pn) @@ -230,7 +229,6 @@ class ViewMangaActivity : TitleActivityTemplate() { if (!isVertical) restorePN() } - @ExperimentalStdlibApi private fun prepareImgFromWeb() { if(!noCellarAlert && toolsBox.netinfo == "移动数据") alertCellar() else handler.startLoad() @@ -244,7 +242,6 @@ class ViewMangaActivity : TitleActivityTemplate() { return op.outWidth.toFloat() / op.outHeight.toFloat() > 1 } - @ExperimentalStdlibApi fun countZipEntries(doWhenFinish : (count: Int) -> Unit) = Thread{ if (zipFile != null) try { Log.d("Myvm", "zip: $zipFile") diff --git a/app/src/main/java/top/fumiama/copymanga/views/ScaleImageView.kt b/app/src/main/java/top/fumiama/copymanga/views/ScaleImageView.kt index d6f293e..c9cb265 100644 --- a/app/src/main/java/top/fumiama/copymanga/views/ScaleImageView.kt +++ b/app/src/main/java/top/fumiama/copymanga/views/ScaleImageView.kt @@ -698,7 +698,7 @@ class ScaleImageView : ImageView { private val isBig: Boolean get() = getMatrixScale(mOuterMatrix)[0] > 1f - @ExperimentalStdlibApi + @OptIn(ExperimentalStdlibApi::class) @SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean { super.onTouchEvent(event) diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 61a4490..80f7c69 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1,6 +1,6 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 010c6bf..8436c71 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -80,4 +80,16 @@ 作者 标签 + + 网络 + 使用海外线路 + 不管使用什么线路, API访问均是海外, 只有图片CDN可能会变化, 请酌情选择使用 + + 漫画浏览 + 音量键翻页 + 使用音量上下键前后翻页 + 竖向翻页一次加载页数 + 默认为20 + 图片质量 + 默认为100 \ No newline at end of file diff --git a/app/src/main/res/xml/pref_setting.xml b/app/src/main/res/xml/pref_setting.xml new file mode 100644 index 0000000..ffda7ad --- /dev/null +++ b/app/src/main/res/xml/pref_setting.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index a0c493b..2874ddb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.5.31' + ext.kotlin_version = '1.6.10' repositories { google() jcenter()