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()